Extract tag activity classes

pull/189/head
Alex Baker 12 years ago
parent 6254d61fd8
commit a49e6e7ffc

@ -340,11 +340,11 @@
android:theme="@style/Tasks.FullTransparent" /> android:theme="@style/Tasks.FullTransparent" />
<activity <activity
android:name="com.todoroo.astrid.tags.TagFilterExposer$DeleteTagActivity" android:name="com.todoroo.astrid.tags.DeleteTagActivity"
android:theme="@style/Tasks.FullTransparent" /> android:theme="@style/Tasks.FullTransparent" />
<activity <activity
android:name="com.todoroo.astrid.tags.TagFilterExposer$RenameTagActivity" android:name="com.todoroo.astrid.tags.RenameTagActivity"
android:theme="@style/Tasks.FullTransparent" /> android:theme="@style/Tasks.FullTransparent" />
<!-- alarms --> <!-- alarms -->

@ -39,6 +39,8 @@ import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.gtasks.GtasksListFragment; import com.todoroo.astrid.gtasks.GtasksListFragment;
import com.todoroo.astrid.service.ThemeService; import com.todoroo.astrid.service.ThemeService;
import com.todoroo.astrid.tags.DeleteTagActivity;
import com.todoroo.astrid.tags.RenameTagActivity;
import com.todoroo.astrid.tags.TagFilterExposer; import com.todoroo.astrid.tags.TagFilterExposer;
import com.todoroo.astrid.tags.TagService; import com.todoroo.astrid.tags.TagService;
import com.todoroo.astrid.tags.TagsPlugin; import com.todoroo.astrid.tags.TagsPlugin;
@ -509,14 +511,14 @@ public class TaskListActivity extends AstridActivity implements OnPageChangeList
return true; return true;
case R.id.menu_delete_list: case R.id.menu_delete_list:
TagService.Tag deleteTag = new TagService.Tag(tlf.getActiveTagData()); TagService.Tag deleteTag = new TagService.Tag(tlf.getActiveTagData());
Intent ret = new Intent(this, TagFilterExposer.DeleteTagActivity.class); Intent ret = new Intent(this, DeleteTagActivity.class);
ret.putExtra("tag", deleteTag.tag); ret.putExtra("tag", deleteTag.tag);
ret.putExtra(TagViewFragment.EXTRA_TAG_UUID, deleteTag.uuid); ret.putExtra(TagViewFragment.EXTRA_TAG_UUID, deleteTag.uuid);
startActivityForResult(ret, FilterListFragment.REQUEST_CUSTOM_INTENT); startActivityForResult(ret, FilterListFragment.REQUEST_CUSTOM_INTENT);
return true; return true;
case R.id.menu_rename_list: case R.id.menu_rename_list:
TagService.Tag renameTag = new TagService.Tag(tlf.getActiveTagData()); TagService.Tag renameTag = new TagService.Tag(tlf.getActiveTagData());
Intent rename = new Intent(this, TagFilterExposer.RenameTagActivity.class); Intent rename = new Intent(this, RenameTagActivity.class);
rename.putExtra("tag", renameTag.tag); rename.putExtra("tag", renameTag.tag);
rename.putExtra(TagViewFragment.EXTRA_TAG_UUID, renameTag.uuid); rename.putExtra(TagViewFragment.EXTRA_TAG_UUID, renameTag.uuid);
startActivityForResult(rename, FilterListFragment.REQUEST_CUSTOM_INTENT); startActivityForResult(rename, FilterListFragment.REQUEST_CUSTOM_INTENT);

@ -0,0 +1,60 @@
package com.todoroo.astrid.tags;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.astrid.actfm.TagViewFragment;
import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.dao.MetadataDao;
import com.todoroo.astrid.dao.TagDataDao;
import com.todoroo.astrid.data.Metadata;
import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.service.TagDataService;
import org.tasks.R;
import javax.inject.Inject;
public class DeleteTagActivity extends TagActivity {
@Inject TagDataDao tagDataDao;
@Inject TagDataService tagDataService;
@Inject MetadataDao metadataDao;
@Override
protected void showDialog() {
DialogUtilities.okCancelDialog(this, getString(R.string.DLG_delete_this_tag_question, tag), getOkListener(), getCancelListener());
}
@Override
protected Intent ok() {
return deleteOrLeaveTag(this, tag, uuid);
}
private Intent deleteOrLeaveTag(Context context, String tag, String uuid) {
int deleted = deleteTagMetadata(uuid);
TagData tagData = tagDataDao.fetch(uuid, TagData.ID, TagData.UUID, TagData.DELETION_DATE, TagData.MEMBER_COUNT, TagData.USER_ID);
Intent tagDeleted = new Intent(AstridApiConstants.BROADCAST_EVENT_TAG_DELETED);
if(tagData != null) {
tagData.setDeletionDate(DateUtilities.now());
tagDataService.save(tagData);
tagDeleted.putExtra(TagViewFragment.EXTRA_TAG_UUID, tagData.getUuid());
}
Toast.makeText(context, context.getString(R.string.TEA_tags_deleted, tag, deleted), Toast.LENGTH_SHORT).show();
context.sendBroadcast(tagDeleted);
return tagDeleted;
}
private int deleteTagMetadata(String uuid) {
Metadata deleted = new Metadata();
deleted.setDeletionDate(DateUtilities.now());
return metadataDao.update(Criterion.and(MetadataDao.MetadataCriteria.withKey(TaskToTagMetadata.KEY), TaskToTagMetadata.TAG_UUID.eq(uuid)), deleted);
}
}

@ -0,0 +1,47 @@
package com.todoroo.astrid.tags;
import android.content.Intent;
import android.widget.EditText;
import android.widget.Toast;
import com.todoroo.andlib.service.ContextManager;
import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.astrid.actfm.TagViewFragment;
import com.todoroo.astrid.api.AstridApiConstants;
import org.tasks.R;
public class RenameTagActivity extends TagActivity {
private EditText editor;
@Override
protected void showDialog() {
editor = new EditText(this);
DialogUtilities.viewDialog(this, getString(R.string.DLG_rename_this_tag_header, tag), editor, getOkListener(), getCancelListener());
}
@Override
protected Intent ok() {
if(editor == null) {
return null;
}
String text = editor.getText().toString();
if (text == null || text.length() == 0) {
return null;
} else {
int renamed = tagService.rename(uuid, text);
Toast.makeText(this, getString(R.string.TEA_tags_renamed, tag, text, renamed),
Toast.LENGTH_SHORT).show();
if (renamed > 0) {
Intent intent = new Intent(AstridApiConstants.BROADCAST_EVENT_TAG_RENAMED);
intent.putExtra(TagViewFragment.EXTRA_TAG_UUID, uuid);
ContextManager.getContext().sendBroadcast(intent);
return intent;
}
return null;
}
}
}

@ -0,0 +1,81 @@
package com.todoroo.astrid.tags;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Toast;
import com.todoroo.astrid.actfm.TagViewFragment;
import com.todoroo.astrid.data.RemoteModel;
import org.tasks.R;
import org.tasks.injection.InjectingActivity;
import javax.inject.Inject;
public abstract class TagActivity extends InjectingActivity {
String tag;
String uuid;
@Inject TagService tagService;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
tag = getIntent().getStringExtra(TagFilterExposer.TAG);
uuid = getIntent().getStringExtra(TagViewFragment.EXTRA_TAG_UUID);
if(tag == null || RemoteModel.isUuidEmpty(uuid)) {
finish();
return;
}
showDialog();
}
protected DialogInterface.OnClickListener getOkListener() {
return new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
try {
Intent result = ok();
if (result != null) {
setResult(RESULT_OK, result);
} else {
toastNoChanges();
setResult(RESULT_CANCELED);
}
} finally {
finish();
}
}
};
}
protected DialogInterface.OnClickListener getCancelListener() {
return new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
try {
toastNoChanges();
} finally {
setResult(RESULT_CANCELED);
finish();
}
}
};
}
private void toastNoChanges() {
Toast.makeText(this, R.string.TEA_no_tags_modified,
Toast.LENGTH_SHORT).show();
}
protected abstract void showDialog();
protected abstract Intent ok();
}

@ -9,14 +9,11 @@ import android.app.Activity;
import android.content.ComponentName; import android.content.ComponentName;
import android.content.ContentValues; import android.content.ContentValues;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.content.res.Resources; import android.content.res.Resources;
import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle; import android.os.Bundle;
import android.text.TextUtils; import android.text.TextUtils;
import android.widget.EditText;
import android.widget.Toast;
import com.todoroo.andlib.service.ContextManager; import com.todoroo.andlib.service.ContextManager;
import com.todoroo.andlib.sql.Criterion; import com.todoroo.andlib.sql.Criterion;
@ -39,7 +36,6 @@ import com.todoroo.astrid.service.ThemeService;
import com.todoroo.astrid.tags.TagService.Tag; import com.todoroo.astrid.tags.TagService.Tag;
import org.tasks.R; import org.tasks.R;
import org.tasks.injection.InjectingActivity;
import org.tasks.injection.InjectingBroadcastReceiver; import org.tasks.injection.InjectingBroadcastReceiver;
import org.tasks.injection.Injector; import org.tasks.injection.Injector;
@ -56,7 +52,7 @@ import javax.inject.Inject;
*/ */
public class TagFilterExposer extends InjectingBroadcastReceiver implements AstridFilterExposer { public class TagFilterExposer extends InjectingBroadcastReceiver implements AstridFilterExposer {
private static final String TAG = "tag"; //$NON-NLS-1$ public static final String TAG = "tag"; //$NON-NLS-1$
@Inject TagService tagService; @Inject TagService tagService;
@ -175,123 +171,6 @@ public class TagFilterExposer extends InjectingBroadcastReceiver implements Astr
return filterFromTag(context, tag, TaskCriteria.activeAndVisible()); return filterFromTag(context, tag, TaskCriteria.activeAndVisible());
} }
// --- tag manipulation activities
public abstract static class TagActivity extends InjectingActivity {
String tag;
String uuid;
@Inject TagService tagService;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
tag = getIntent().getStringExtra(TAG);
uuid = getIntent().getStringExtra(TagViewFragment.EXTRA_TAG_UUID);
if(tag == null || RemoteModel.isUuidEmpty(uuid)) {
finish();
return;
}
showDialog();
}
protected DialogInterface.OnClickListener getOkListener() {
return new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
try {
Intent result = ok();
if (result != null) {
setResult(RESULT_OK, result);
} else {
toastNoChanges();
setResult(RESULT_CANCELED);
}
} finally {
finish();
}
}
};
}
protected DialogInterface.OnClickListener getCancelListener() {
return new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
try {
toastNoChanges();
} finally {
setResult(RESULT_CANCELED);
finish();
}
}
};
}
private void toastNoChanges() {
Toast.makeText(this, R.string.TEA_no_tags_modified,
Toast.LENGTH_SHORT).show();
}
protected abstract void showDialog();
protected abstract Intent ok();
}
public static class DeleteTagActivity extends TagActivity {
@Override
protected void showDialog() {
DialogUtilities.okCancelDialog(this, getString(R.string.DLG_delete_this_tag_question, tag), getOkListener(), getCancelListener());
}
@Override
protected Intent ok() {
return tagService.deleteOrLeaveTag(this, tag, uuid);
}
}
public static class RenameTagActivity extends TagActivity {
private EditText editor;
@Override
protected void showDialog() {
editor = new EditText(this);
DialogUtilities.viewDialog(this, getString(R.string.DLG_rename_this_tag_header, tag), editor, getOkListener(), getCancelListener());
}
@Override
protected Intent ok() {
if(editor == null) {
return null;
}
String text = editor.getText().toString();
if (text == null || text.length() == 0) {
return null;
} else {
int renamed = tagService.rename(uuid, text);
Toast.makeText(this, getString(R.string.TEA_tags_renamed, tag, text, renamed),
Toast.LENGTH_SHORT).show();
if (renamed > 0) {
Intent intent = new Intent(AstridApiConstants.BROADCAST_EVENT_TAG_RENAMED);
intent.putExtra(TagViewFragment.EXTRA_TAG_UUID, uuid);
ContextManager.getContext().sendBroadcast(intent);
return intent;
}
return null;
}
}
}
@Override @Override
public FilterListItem[] getFilters(Injector injector) { public FilterListItem[] getFilters(Injector injector) {
if (ContextManager.getContext() == null) { if (ContextManager.getContext() == null) {

@ -5,10 +5,7 @@
*/ */
package com.todoroo.astrid.tags; package com.todoroo.astrid.tags;
import android.content.Context;
import android.content.Intent;
import android.text.TextUtils; import android.text.TextUtils;
import android.widget.Toast;
import com.todoroo.andlib.data.Property; import com.todoroo.andlib.data.Property;
import com.todoroo.andlib.data.Property.CountProperty; import com.todoroo.andlib.data.Property.CountProperty;
@ -21,8 +18,6 @@ import com.todoroo.andlib.sql.Order;
import com.todoroo.andlib.sql.Query; import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.sql.QueryTemplate; import com.todoroo.andlib.sql.QueryTemplate;
import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.astrid.actfm.TagViewFragment;
import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.dao.MetadataDao; import com.todoroo.astrid.dao.MetadataDao;
import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria; import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria;
import com.todoroo.astrid.dao.TagDataDao; import com.todoroo.astrid.dao.TagDataDao;
@ -265,21 +260,6 @@ public final class TagService {
return tagBuilder.toString(); return tagBuilder.toString();
} }
public Intent deleteOrLeaveTag(Context context, String tag, String uuid) {
int deleted = deleteTagMetadata(uuid);
TagData tagData = tagDataDao.fetch(uuid, TagData.ID, TagData.UUID, TagData.DELETION_DATE, TagData.MEMBER_COUNT, TagData.USER_ID);
Intent tagDeleted = new Intent(AstridApiConstants.BROADCAST_EVENT_TAG_DELETED);
if(tagData != null) {
tagData.setDeletionDate(DateUtilities.now());
tagDataService.save(tagData);
tagDeleted.putExtra(TagViewFragment.EXTRA_TAG_UUID, tagData.getUuid());
}
Toast.makeText(context, context.getString(R.string.TEA_tags_deleted, tag, deleted), Toast.LENGTH_SHORT).show();
context.sendBroadcast(tagDeleted);
return tagDeleted;
}
/** /**
* Return all tags (including metadata tags and TagData tags) in an array list * Return all tags (including metadata tags and TagData tags) in an array list
*/ */
@ -380,13 +360,6 @@ public final class TagService {
return null; return null;
} }
public int deleteTagMetadata(String uuid) {
Metadata deleted = new Metadata();
deleted.setDeletionDate(DateUtilities.now());
return metadataDao.update(Criterion.and(MetadataCriteria.withKey(TaskToTagMetadata.KEY), TaskToTagMetadata.TAG_UUID.eq(uuid)), deleted);
}
public int rename(String uuid, String newName) { public int rename(String uuid, String newName) {
TagData template = new TagData(); TagData template = new TagData();
template.setName(newName); template.setName(newName);

@ -20,6 +20,8 @@ import com.todoroo.astrid.gtasks.GtasksFilterExposer;
import com.todoroo.astrid.gtasks.GtasksListAdder; import com.todoroo.astrid.gtasks.GtasksListAdder;
import com.todoroo.astrid.gtasks.GtasksPreferences; import com.todoroo.astrid.gtasks.GtasksPreferences;
import com.todoroo.astrid.gtasks.auth.GtasksLoginActivity; import com.todoroo.astrid.gtasks.auth.GtasksLoginActivity;
import com.todoroo.astrid.tags.DeleteTagActivity;
import com.todoroo.astrid.tags.RenameTagActivity;
import com.todoroo.astrid.tags.TagFilterExposer; import com.todoroo.astrid.tags.TagFilterExposer;
import com.todoroo.astrid.timers.TimerFilterExposer; import com.todoroo.astrid.timers.TimerFilterExposer;
import com.todoroo.astrid.widget.WidgetConfigActivity; import com.todoroo.astrid.widget.WidgetConfigActivity;
@ -52,8 +54,8 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME;
CustomFilterExposer.DeleteActivity.class, CustomFilterExposer.DeleteActivity.class,
CalendarReminderActivity.class, CalendarReminderActivity.class,
GtasksListAdder.class, GtasksListAdder.class,
TagFilterExposer.DeleteTagActivity.class, DeleteTagActivity.class,
TagFilterExposer.RenameTagActivity.class, RenameTagActivity.class,
VoiceCommandActivity.class, VoiceCommandActivity.class,
GtasksLoginActivity.class, GtasksLoginActivity.class,
WidgetConfigActivity.class, WidgetConfigActivity.class,

Loading…
Cancel
Save