diff --git a/astrid/res/layout-large/task_list_wrapper_activity.xml b/astrid/res/layout-large/task_list_wrapper_activity.xml index fdc694d06..29bfff3b6 100644 --- a/astrid/res/layout-large/task_list_wrapper_activity.xml +++ b/astrid/res/layout-large/task_list_wrapper_activity.xml @@ -25,4 +25,17 @@ android:layout_weight="33" android:id="@+id/tasklist_fragment_container" /> + + + + + \ No newline at end of file diff --git a/astrid/src/com/todoroo/astrid/activity/AstridWrapperActivity.java b/astrid/src/com/todoroo/astrid/activity/AstridWrapperActivity.java index 219eaaabc..c03030f70 100644 --- a/astrid/src/com/todoroo/astrid/activity/AstridWrapperActivity.java +++ b/astrid/src/com/todoroo/astrid/activity/AstridWrapperActivity.java @@ -143,17 +143,46 @@ public class AstridWrapperActivity extends FragmentActivity if (getIntent().hasExtra(TaskListActivity.TOKEN_FILTER)) intent.putExtra(TaskListActivity.TOKEN_FILTER, getIntent().getParcelableExtra(TaskListActivity.TOKEN_FILTER)); - if (this instanceof TaskEditWrapperActivity || fragmentLayout == LAYOUT_TRIPLE) { - findViewById(R.id.taskedit_fragment_container).setVisibility(View.VISIBLE); + if (fragmentLayout != LAYOUT_SINGLE) { TaskEditActivity editActivity = getTaskEditFragment(); + findViewById(R.id.taskedit_fragment_container).setVisibility(View.VISIBLE); + + if(fragmentLayout == LAYOUT_DOUBLE) { + findViewById(R.id.filterlist_fragment_container).setVisibility(View.GONE); + } + + if(editActivity == null) { + editActivity = new TaskEditActivity(); + FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); + transaction.add(R.id.taskedit_fragment_container, editActivity, TaskEditActivity.TAG_TASKEDIT_FRAGMENT); + transaction.addToBackStack(null); + transaction.commit(); + } + editActivity.save(true); editActivity.repopulateFromScratch(intent); + } else { startActivityForResult(intent, TaskListActivity.ACTIVITY_EDIT_TASK); AndroidUtilities.callOverridePendingTransition(this, R.anim.slide_left_in, R.anim.slide_left_out); } } + @Override + public void onBackPressed() { + // manage task edit visibility + if(findViewById(R.id.taskedit_fragment_container).getVisibility() == View.VISIBLE) { + if(fragmentLayout == LAYOUT_DOUBLE) { + findViewById(R.id.taskedit_fragment_container).setVisibility(View.GONE); + findViewById(R.id.filterlist_fragment_container).setVisibility(View.VISIBLE); + } else { + findViewById(R.id.taskedit_fragment_container).setVisibility(View.INVISIBLE); + } + onPostResume(); + } + super.onBackPressed(); + } + @Override public void onTaskEditDetailsClicked(int category, int position) { // @@ -172,7 +201,7 @@ public class AstridWrapperActivity extends FragmentActivity } } - protected void setupFragment(String tag, int container, Class cls) { + protected Fragment setupFragment(String tag, int container, Class cls) { FragmentManager fm = getSupportFragmentManager(); Fragment fragment = fm.findFragmentByTag(tag); if(fragment == null) { @@ -180,15 +209,16 @@ public class AstridWrapperActivity extends FragmentActivity try { fragment = cls.newInstance(); } catch (InstantiationException e) { - return; + return null; } catch (IllegalAccessException e) { - return; + return null; } FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ft.replace(container, fragment, tag); ft.commit(); } + return fragment; } /** diff --git a/astrid/src/com/todoroo/astrid/activity/TaskEditActivity.java b/astrid/src/com/todoroo/astrid/activity/TaskEditActivity.java index 428d2a242..8100c4246 100755 --- a/astrid/src/com/todoroo/astrid/activity/TaskEditActivity.java +++ b/astrid/src/com/todoroo/astrid/activity/TaskEditActivity.java @@ -608,7 +608,7 @@ public final class TaskEditActivity extends Fragment { if(model == null) { exceptionService.reportError("task-edit-no-task", new NullPointerException("model")); - getActivity().finish(); + getActivity().onBackPressed(); return; } @@ -639,6 +639,9 @@ public final class TaskEditActivity extends Fragment { /** Save task model from values in UI components */ public void save(boolean onPause) { + if(title == null) + return; + if(title.getText().length() > 0) model.setValue(Task.DELETION_DATE, 0L); @@ -672,7 +675,7 @@ public final class TaskEditActivity extends Fragment { } shouldSaveState = false; - getActivity().finish(); + getActivity().onBackPressed(); } } @@ -769,8 +772,7 @@ public final class TaskEditActivity extends Fragment { } showCancelToast(); - getActivity().setResult(Activity.RESULT_CANCELED); - getActivity().finish(); + getActivity().onBackPressed(); } /** @@ -793,7 +795,7 @@ public final class TaskEditActivity extends Fragment { shouldSaveState = false; showDeleteToast(); getActivity().setResult(Activity.RESULT_CANCELED); - getActivity().finish(); + getActivity().onBackPressed(); } }) .setNegativeButton(android.R.string.cancel, null) @@ -847,11 +849,11 @@ public final class TaskEditActivity extends Fragment { item = menu.add(Menu.NONE, MENU_DISCARD_ID, 0, R.string.TEA_menu_discard); item.setIcon(android.R.drawable.ic_menu_close_clear_cancel); - item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); + item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); item = menu.add(Menu.NONE, MENU_SAVE_ID, 0, R.string.TEA_menu_save); item.setIcon(android.R.drawable.ic_menu_save); - item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); + item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); item = menu.add(Menu.NONE, MENU_DELETE_ID, 0, R.string.TEA_menu_delete); item.setIcon(android.R.drawable.ic_menu_delete); diff --git a/astrid/src/com/todoroo/astrid/activity/TaskEditWrapperActivity.java b/astrid/src/com/todoroo/astrid/activity/TaskEditWrapperActivity.java index a286d3c9e..d87f3d847 100644 --- a/astrid/src/com/todoroo/astrid/activity/TaskEditWrapperActivity.java +++ b/astrid/src/com/todoroo/astrid/activity/TaskEditWrapperActivity.java @@ -6,6 +6,7 @@ import android.support.v4.app.Fragment; import android.view.KeyEvent; import android.widget.TextView; +import com.timsu.astrid.R; import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.astrid.service.ThemeService; diff --git a/astrid/src/com/todoroo/astrid/activity/TaskListWrapperActivity.java b/astrid/src/com/todoroo/astrid/activity/TaskListWrapperActivity.java index 1087e6fc3..c34577e4b 100644 --- a/astrid/src/com/todoroo/astrid/activity/TaskListWrapperActivity.java +++ b/astrid/src/com/todoroo/astrid/activity/TaskListWrapperActivity.java @@ -66,10 +66,8 @@ public class TaskListWrapperActivity extends AstridWrapperActivity { actionBar.getCustomView().findViewById(R.id.list_disclosure_arrow).setVisibility(View.GONE); listsNav.setOnClickListener(null); - if(editFragment != null) { + if(editFragment != null && editFragment.getVisibility() == View.INVISIBLE) { fragmentLayout = LAYOUT_TRIPLE; - setupFragment(TaskEditActivity.TAG_TASKEDIT_FRAGMENT, - R.id.taskedit_fragment_container, TaskEditActivity.class); } else { fragmentLayout = LAYOUT_DOUBLE; }