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 extends Fragment> cls) {
+ protected Fragment setupFragment(String tag, int container, Class extends Fragment> 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;
}