Switch to local list after cloning featured list, fixed bug with managing list fragment

pull/14/head
Sam Bosley 13 years ago
parent 2834564e0e
commit 3baf494445

@ -59,6 +59,6 @@ public class PeopleFilterMode implements FilterModeSpec {
@Override @Override
public boolean showComments() { public boolean showComments() {
return true; return false;
} }
} }

@ -20,11 +20,16 @@ import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.sql.Query; import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.utility.DialogUtilities; import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.astrid.actfm.TagViewFragment; import com.todoroo.astrid.actfm.TagViewFragment;
import com.todoroo.astrid.activity.TaskListActivity;
import com.todoroo.astrid.adapter.TaskAdapter; import com.todoroo.astrid.adapter.TaskAdapter;
import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.dao.TaskDao.TaskCriteria;
import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.helper.AsyncImageView; import com.todoroo.astrid.helper.AsyncImageView;
import com.todoroo.astrid.service.TagDataService; import com.todoroo.astrid.service.TagDataService;
import com.todoroo.astrid.tags.TagFilterExposer;
import com.todoroo.astrid.tags.TagService.Tag;
import com.todoroo.astrid.utility.Flags; import com.todoroo.astrid.utility.Flags;
public class FeaturedTaskListFragment extends TagViewFragment { public class FeaturedTaskListFragment extends TagViewFragment {
@ -134,7 +139,7 @@ public class FeaturedTaskListFragment extends TagViewFragment {
new Thread(new Runnable() { new Thread(new Runnable() {
@Override @Override
public void run() { public void run() {
TodorooCursor<Task> tasks = taskService.fetchFiltered(taskAdapter.getQuery(), null, Task.PROPERTIES); final TodorooCursor<Task> tasks = taskService.fetchFiltered(taskAdapter.getQuery(), null, Task.PROPERTIES);
try { try {
Task t = new Task(); Task t = new Task();
for (tasks.moveToFirst(); !tasks.isAfterLast(); tasks.moveToNext()) { for (tasks.moveToFirst(); !tasks.isAfterLast(); tasks.moveToNext()) {
@ -142,13 +147,28 @@ public class FeaturedTaskListFragment extends TagViewFragment {
taskService.cloneReusableTask(t, taskService.cloneReusableTask(t,
localName, finalRemoteId); localName, finalRemoteId);
} }
Activity activity = getActivity(); final Activity activity = getActivity();
if (activity != null) { if (activity != null) {
DialogUtilities.dismissDialog(activity, pd); DialogUtilities.dismissDialog(activity, pd);
DialogUtilities.okDialog(activity, getString(R.string.actfm_feat_list_clone_success), null); DialogUtilities.okDialog(activity, getString(R.string.actfm_feat_list_clone_success), null);
} }
Flags.set(Flags.REFRESH); Flags.set(Flags.REFRESH);
if (activity instanceof TaskListActivity) {
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
TaskListActivity tla = (TaskListActivity) activity;
tla.setFilterMode(TaskListActivity.FILTER_MODE_NORMAL);
Filter clonedFilter;
Tag tag = new Tag(localName, tasks.getCount(), finalRemoteId);
clonedFilter = TagFilterExposer.filterFromTag(activity, tag, TaskCriteria.activeAndVisible());
tla.onFilterItemClicked(clonedFilter);
}
});
}
} finally { } finally {
tasks.close(); tasks.close();
} }

@ -303,6 +303,7 @@ public class AstridActivity extends FragmentActivity
final FragmentManager fm = getSupportFragmentManager(); final FragmentManager fm = getSupportFragmentManager();
Fragment fragment = fm.findFragmentByTag(tag); Fragment fragment = fm.findFragmentByTag(tag);
if(fragment == null || replace) { if(fragment == null || replace) {
Fragment oldFragment = fragment;
try { try {
fragment = cls.newInstance(); fragment = cls.newInstance();
} catch (InstantiationException e) { } catch (InstantiationException e) {
@ -312,8 +313,11 @@ public class AstridActivity extends FragmentActivity
} }
FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
if (container == 0) if (container == 0) {
if (oldFragment != null && replace)
ft.remove(oldFragment);
ft.add(fragment, tag); ft.add(fragment, tag);
}
else else
ft.replace(container, fragment, tag); ft.replace(container, fragment, tag);
ft.commit(); ft.commit();

@ -78,9 +78,9 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener
private static final String FILTER_MODE = "filterMode"; //$NON-NLS-1$ private static final String FILTER_MODE = "filterMode"; //$NON-NLS-1$
private static final int FILTER_MODE_NORMAL = 0; public static final int FILTER_MODE_NORMAL = 0;
private static final int FILTER_MODE_PEOPLE = 1; public static final int FILTER_MODE_PEOPLE = 1;
private static final int FILTER_MODE_FEATURED = 2; public static final int FILTER_MODE_FEATURED = 2;
@Autowired private ABTestEventReportingService abTestEventReportingService; @Autowired private ABTestEventReportingService abTestEventReportingService;
@ -703,9 +703,10 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener
tlf.handleOptionsMenuItemSelected(item, customIntent); tlf.handleOptionsMenuItemSelected(item, customIntent);
} }
private void setFilterMode(int mode) { public void setFilterMode(int mode) {
filterMode = mode; filterMode = mode;
updateFilterModeSpec(mode); updateFilterModeSpec(mode);
getIntent().putExtra(FILTER_MODE, mode);
refreshMainMenu(); refreshMainMenu();
if (fragmentLayout == LAYOUT_SINGLE) { if (fragmentLayout == LAYOUT_SINGLE) {
@ -728,7 +729,6 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener
onFilterItemClicked(getDefaultFilter()); onFilterItemClicked(getDefaultFilter());
if (fragmentLayout == LAYOUT_SINGLE) if (fragmentLayout == LAYOUT_SINGLE)
listsNav.performClick(); listsNav.performClick();
getIntent().putExtra(FILTER_MODE, mode);
} }
public void refreshMainMenu() { public void refreshMainMenu() {

Loading…
Cancel
Save