From 251d40c6387ef3e30e2f3f11612b9cd08dc89090 Mon Sep 17 00:00:00 2001 From: Sam Bosley Date: Wed, 11 Jan 2012 16:05:41 -0800 Subject: [PATCH] Rapidly switch between editing tasks when in landscape mode --- .../activity/AstridWrapperActivity.java | 12 +++++-- .../astrid/activity/TaskEditActivity.java | 8 ++++- .../todoroo/astrid/adapter/TaskAdapter.java | 36 +++++++++++-------- 3 files changed, 38 insertions(+), 18 deletions(-) diff --git a/astrid/src/com/todoroo/astrid/activity/AstridWrapperActivity.java b/astrid/src/com/todoroo/astrid/activity/AstridWrapperActivity.java index ce5aaa474..17de718ef 100644 --- a/astrid/src/com/todoroo/astrid/activity/AstridWrapperActivity.java +++ b/astrid/src/com/todoroo/astrid/activity/AstridWrapperActivity.java @@ -39,20 +39,27 @@ public class AstridWrapperActivity extends FragmentActivity */ protected boolean mMultipleFragments = false; - protected FilterListActivity getFilterListFragment() { + public FilterListActivity getFilterListFragment() { FilterListActivity frag = (FilterListActivity) getSupportFragmentManager() .findFragmentById(R.id.filterlist_fragment); return frag; } - protected TaskListActivity getTaskListFragment() { + public TaskListActivity getTaskListFragment() { TaskListActivity frag = (TaskListActivity) getSupportFragmentManager() .findFragmentByTag(TaskListActivity.TAG_TASKLIST_FRAGMENT); return frag; } + public TaskEditActivity getTaskEditFragment() { + TaskEditActivity frag = (TaskEditActivity) getSupportFragmentManager() + .findFragmentByTag(TaskEditActivity.TAG_TASKEDIT_FRAGMENT); + + return frag; + } + /* (non-Javadoc) * @see android.support.v4.app.FragmentActivity#onCreate(android.os.Bundle) */ @@ -157,6 +164,7 @@ public class AstridWrapperActivity extends FragmentActivity @Override public void onTaskListItemClicked(int category, int position) { + } @Override diff --git a/astrid/src/com/todoroo/astrid/activity/TaskEditActivity.java b/astrid/src/com/todoroo/astrid/activity/TaskEditActivity.java index 885b3622d..363a30fcc 100755 --- a/astrid/src/com/todoroo/astrid/activity/TaskEditActivity.java +++ b/astrid/src/com/todoroo/astrid/activity/TaskEditActivity.java @@ -654,6 +654,12 @@ public final class TaskEditActivity extends Fragment { Notifications.cancelNotifications(model.getId()); } + /** Convenience method to populate fields after setting model to null */ + public void repopulateFromScratch(Intent intent) { + model = null; + populateFields(intent); + } + /** Populate UI component values from the model */ public void populateFields(Intent intent) { loadItem(intent); @@ -676,7 +682,7 @@ public final class TaskEditActivity extends Fragment { } /** Save task model from values in UI components */ - private void save(boolean onPause) { + public void save(boolean onPause) { if(title.getText().length() > 0) model.setValue(Task.DELETION_DATE, 0L); diff --git a/astrid/src/com/todoroo/astrid/adapter/TaskAdapter.java b/astrid/src/com/todoroo/astrid/adapter/TaskAdapter.java index 5f7df08ac..6449e6efd 100644 --- a/astrid/src/com/todoroo/astrid/adapter/TaskAdapter.java +++ b/astrid/src/com/todoroo/astrid/adapter/TaskAdapter.java @@ -17,7 +17,9 @@ import java.util.concurrent.atomic.AtomicReference; import org.json.JSONException; import org.json.JSONObject; +import android.app.Activity; import android.content.BroadcastReceiver; +import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; @@ -927,11 +929,7 @@ public class TaskAdapter extends CursorAdapter implements Filterable { mBar = null; if(position == 0) { - Intent intent = new Intent(fragment.getActivity(), TaskEditWrapperActivity.class); - intent.putExtra(TaskEditActivity.TOKEN_ID, taskId); - intent.putExtra(TaskListActivity.TOKEN_FILTER, fragment.getFilter()); - fragment.startActivityForResult(intent, TaskListActivity.ACTIVITY_EDIT_TASK); - AndroidUtilities.callOverridePendingTransition(fragment.getActivity(), R.anim.slide_left_in, R.anim.slide_left_out); + editTask(taskId); } else { flushSpecific(taskId); try { @@ -988,11 +986,7 @@ public class TaskAdapter extends CursorAdapter implements Filterable { if (actions.size() > 0) mBar.show(v); else { - Intent intent = new Intent(fragment.getActivity(), TaskEditWrapperActivity.class); - intent.putExtra(TaskEditActivity.TOKEN_ID, taskId); - intent.putExtra(TaskListActivity.TOKEN_FILTER, fragment.getFilter()); - fragment.getActivity().startActivityForResult(intent, TaskListActivity.ACTIVITY_EDIT_TASK); - AndroidUtilities.callOverridePendingTransition(fragment.getActivity(), R.anim.slide_left_in, R.anim.slide_left_out); + editTask(taskId); } } else if (!viewHolder.task.getFlag(Task.FLAGS, Task.FLAG_IS_READONLY)) { // Register a temporary receiver in case we clicked a task with no actions forthcoming and should start @@ -1016,11 +1010,7 @@ public class TaskAdapter extends CursorAdapter implements Filterable { if (taskId != -1) { Collection actions = taskActionManager.get(taskId); if (actions != null && actions.size() == 0) { - Intent editIntent = new Intent(fragment.getActivity(), TaskEditWrapperActivity.class); - editIntent.putExtra(TaskEditActivity.TOKEN_ID, taskId); - editIntent.putExtra(TaskListActivity.TOKEN_FILTER, fragment.getFilter()); - fragment.getActivity().startActivityForResult(editIntent, TaskListActivity.ACTIVITY_EDIT_TASK); - AndroidUtilities.callOverridePendingTransition(fragment.getActivity(), R.anim.slide_left_in, R.anim.slide_left_out); + editTask(taskId); } } fragment.getActivity().unregisterReceiver(this); @@ -1028,6 +1018,22 @@ public class TaskAdapter extends CursorAdapter implements Filterable { } + private void editTask(long taskId) { + Activity activity = fragment.getActivity(); + Intent intent = (Intent) activity.getIntent().clone(); + intent.setComponent(new ComponentName(activity, TaskEditWrapperActivity.class)); + intent.putExtra(TaskEditActivity.TOKEN_ID, taskId); + intent.putExtra(TaskListActivity.TOKEN_FILTER, fragment.getFilter()); + if (activity instanceof TaskEditWrapperActivity) { + TaskEditActivity editActivity = ((TaskEditWrapperActivity) activity).getTaskEditFragment(); + editActivity.save(true); + editActivity.repopulateFromScratch(intent); + } else { + fragment.startActivityForResult(intent, TaskListActivity.ACTIVITY_EDIT_TASK); + AndroidUtilities.callOverridePendingTransition(fragment.getActivity(), R.anim.slide_left_in, R.anim.slide_left_out); + } + } + /** * Call me when the parent presses trackpad */