From 1fc2c1603cf26da333dceead53789b1173c61d29 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Thu, 4 Feb 2016 09:08:17 -0600 Subject: [PATCH] Save task before switching filter --- .../astrid/activity/ShortcutActivity.java | 2 +- .../astrid/activity/TaskEditFragment.java | 2 +- .../astrid/activity/TaskListActivity.java | 101 ++++++------------ .../astrid/activity/TaskListFragment.java | 12 +-- .../astrid/api/FilterWithCustomIntent.java | 3 - .../astrid/gcal/CalendarReminderActivity.java | 3 +- .../todoroo/astrid/widget/TasksWidget.java | 10 +- src/main/java/org/tasks/Notifier.java | 2 +- .../java/org/tasks/intents/TaskIntents.java | 22 ++-- .../tasks/widget/ScrollableViewsFactory.java | 43 ++++---- .../java/org/tasks/widget/WidgetHelper.java | 36 +++---- src/main/res/layout/widget_row.xml | 9 +- 12 files changed, 90 insertions(+), 155 deletions(-) diff --git a/src/main/java/com/todoroo/astrid/activity/ShortcutActivity.java b/src/main/java/com/todoroo/astrid/activity/ShortcutActivity.java index 90047f250..3288745d1 100644 --- a/src/main/java/com/todoroo/astrid/activity/ShortcutActivity.java +++ b/src/main/java/com/todoroo/astrid/activity/ShortcutActivity.java @@ -122,7 +122,7 @@ public class ShortcutActivity extends InjectingAppCompatActivity { } else { filter = new Filter(title, sql, values); } - taskListIntent.putExtra(TaskListFragment.TOKEN_FILTER, filter); + taskListIntent.putExtra(TaskListActivity.OPEN_FILTER, filter); } startActivity(taskListIntent); diff --git a/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java b/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java index a60d1d19d..8134f8158 100755 --- a/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java +++ b/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java @@ -340,7 +340,7 @@ public final class TaskEditFragment extends InjectingFragment implements EditNot * ====================================================================== */ - private List getFragments() { + public List getFragments() { List fragments = new ArrayList<>(); for (int fragmentId : rowIds) { TaskEditControlFragment fragment = (TaskEditControlFragment) getFragmentManager().findFragmentById(fragmentId); diff --git a/src/main/java/com/todoroo/astrid/activity/TaskListActivity.java b/src/main/java/com/todoroo/astrid/activity/TaskListActivity.java index 8a624e097..4a798ba6f 100644 --- a/src/main/java/com/todoroo/astrid/activity/TaskListActivity.java +++ b/src/main/java/com/todoroo/astrid/activity/TaskListActivity.java @@ -86,7 +86,8 @@ public class TaskListActivity extends InjectingAppCompatActivity implements public static final String TOKEN_CREATE_NEW_LIST = "createNewList"; //$NON-NLS-1$ public static final String TOKEN_CREATE_NEW_LIST_NAME = "newListName"; //$NON-NLS-1$ - public static final String OPEN_TASK = "openTask"; //$NON-NLS-1$ + public static final String OPEN_FILTER = "open_filter"; //$NON-NLS-1$ + public static final String OPEN_TASK = "open_task"; //$NON-NLS-1$ /** * @see android.app.Activity#onCreate(Bundle) @@ -118,7 +119,7 @@ public class TaskListActivity extends InjectingAppCompatActivity implements controlOrder = BeastModePreferences.constructOrderedControlList(preferences, this); controlOrder.add(0, getString(EditTitleControlSet.TAG)); - readIntent(); + handleIntent(); } @Override @@ -127,51 +128,35 @@ public class TaskListActivity extends InjectingAppCompatActivity implements setIntent(intent); - readIntent(); + handleIntent(); } - private void readIntent() { + private void handleIntent() { Intent intent = getIntent(); - Bundle extras = intent.getExtras(); - if (extras != null) { - extras = (Bundle) extras.clone(); - } - if (extras == null) { - extras = new Bundle(); + TaskEditFragment taskEditFragment = getTaskEditFragment(); + List taskEditControlFragments = new ArrayList<>(); + if (taskEditFragment != null) { + if (intent.hasExtra(OPEN_FILTER) || intent.hasExtra(OPEN_TASK)) { + taskEditFragment.save(); + taskEditFragment = null; + } else { + taskEditControlFragments.addAll(taskEditFragment.getFragments()); + } } TaskListFragment taskListFragment; - if (intent.hasExtra(TaskListFragment.TOKEN_FILTER)) { - Filter filter = intent.getParcelableExtra(TaskListFragment.TOKEN_FILTER); - extras.putAll(configureIntentAndExtrasWithFilter(intent, filter)); - taskListFragment = newTaskListFragment(filter, extras); - intent.removeExtra(TaskListFragment.TOKEN_FILTER); + if (intent.hasExtra(OPEN_FILTER)) { + Filter filter = intent.getParcelableExtra(OPEN_FILTER); + intent.removeExtra(OPEN_FILTER); + taskListFragment = newTaskListFragment(filter); } else { taskListFragment = getTaskListFragment(); if (taskListFragment == null) { - Filter filter = getDefaultFilter(); - Bundle bundle = configureIntentAndExtrasWithFilter(intent, filter); - if (bundle != null) { - extras.putAll(bundle); - } - taskListFragment = newTaskListFragment(filter, extras); - } - } - - TaskEditFragment taskEditFragment = getTaskEditFragment(); - List taskEditControlFragments = new ArrayList<>(); - if (taskEditFragment != null) { - for (int rowId : TaskEditFragment.rowIds) { - TaskEditControlFragment fragment = (TaskEditControlFragment) getFragmentManager().findFragmentById(rowId); - if (fragment == null) { - break; - } - taskEditControlFragments.add(fragment); + taskListFragment = newTaskListFragment(getDefaultFilter()); } } - - loadTaskListFragment(true, taskListFragment); + loadTaskListFragment(taskListFragment); if (isDoublePaneLayout()) { getFragmentManager().beginTransaction() @@ -184,13 +169,9 @@ public class TaskListActivity extends InjectingAppCompatActivity implements } } - private void loadTaskListFragment(boolean onCreate, TaskListFragment taskListFragment) { + private void loadTaskListFragment(TaskListFragment taskListFragment) { FragmentManager fragmentManager = getFragmentManager(); - if (onCreate) { - fragmentManager.popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE); - } else { - fragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE); - } + fragmentManager.popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE); fragmentManager.beginTransaction() .replace(isDoublePaneLayout() ? R.id.master_dual : R.id.single_pane, taskListFragment, TaskListFragment.TAG_TASKLIST_FRAGMENT) .addToBackStack(TaskListFragment.TAG_TASKLIST_FRAGMENT) @@ -256,7 +237,7 @@ public class TaskListActivity extends InjectingAppCompatActivity implements } } - private TaskListFragment newTaskListFragment(Filter filter, Bundle extras) { + private TaskListFragment newTaskListFragment(Filter filter) { Class customTaskList = null; if (subtasksHelper.shouldUseSubtasksFragmentForFilter(filter)) { @@ -283,7 +264,7 @@ public class TaskListActivity extends InjectingAppCompatActivity implements Timber.e(e, e.getMessage()); newFragment = new TaskListFragment(); } - newFragment.initialize(filter, extras); + newFragment.initialize(filter); return newFragment; } @@ -292,17 +273,14 @@ public class TaskListActivity extends InjectingAppCompatActivity implements super.onPostResume(); if (getIntent().hasExtra(OPEN_TASK)) { - long id = getIntent().getLongExtra(OPEN_TASK, 0); - if (id > 0) { - onTaskListItemClicked(id); + long taskId = getIntent().getLongExtra(OPEN_TASK, 0); + getIntent().removeExtra(OPEN_TASK); + if (taskId > 0) { + onTaskListItemClicked(taskId); } else { - TaskListFragment tlf = getTaskListFragment(); - if (tlf != null) { - Task task = tlf.addTask("");//$NON-NLS-1$ - onTaskListItemClicked(task.getId()); - } + Task task = getTaskListFragment().addTask(""); + onTaskListItemClicked(task.getId()); } - getIntent().removeExtra(OPEN_TASK); } if (getIntent().getBooleanExtra(TOKEN_CREATE_NEW_LIST, false)) { @@ -472,25 +450,6 @@ public class TaskListActivity extends InjectingAppCompatActivity implements .findFragmentByTag(TaskEditFragment.TAG_TASKEDIT_FRAGMENT); } - protected Bundle configureIntentAndExtrasWithFilter(Intent intent, Filter filter) { - Bundle extras; - if(filter instanceof FilterWithCustomIntent) { - Intent customIntent = ((FilterWithCustomIntent)filter).getCustomIntent(); - customIntent.putExtra(NavigationDrawerFragment.TOKEN_LAST_SELECTED, intent.getIntExtra(NavigationDrawerFragment.TOKEN_LAST_SELECTED, 0)); - if (intent.hasExtra(OPEN_TASK)) { - customIntent.putExtra(OPEN_TASK, intent.getLongExtra(OPEN_TASK, 0)); - } - setIntent(customIntent); - extras = customIntent.getExtras(); - } else { - extras = intent.getExtras(); - } - if (extras != null) { - extras = (Bundle) extras.clone(); - } - return extras; - } - /** * Loads action item from the given intent */ diff --git a/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java b/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java index 2142c7048..3a9189f38 100644 --- a/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java +++ b/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java @@ -52,6 +52,7 @@ import com.todoroo.astrid.adapter.TaskAdapter.ViewHolder; import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.api.CustomFilter; import com.todoroo.astrid.api.Filter; +import com.todoroo.astrid.api.FilterWithCustomIntent; import com.todoroo.astrid.core.BuiltInFilterExposer; import com.todoroo.astrid.core.SortHelper; import com.todoroo.astrid.dao.TagDataDao; @@ -128,11 +129,6 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr protected static final int CONTEXT_MENU_UNDELETE_TASK_ID = R.string.TAd_contextUndeleteTask; protected static final int CONTEXT_MENU_PURGE_TASK_ID = R.string.TAd_contextPurgeTask; - // --- constants - - /** token for passing a {@link Filter} object through extras */ - public static final String TOKEN_FILTER = "filter"; //$NON-NLS-1$ - // --- instance variables @Inject TaskService taskService; @@ -226,9 +222,11 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr setTaskAdapter(); } - public void initialize(Filter filter, Bundle extras) { + public void initialize(Filter filter) { this.filter = filter; - this.extras = extras; + this.extras = filter instanceof FilterWithCustomIntent + ? ((FilterWithCustomIntent) filter).getCustomIntent().getExtras() + : new Bundle(); } @Override diff --git a/src/main/java/com/todoroo/astrid/api/FilterWithCustomIntent.java b/src/main/java/com/todoroo/astrid/api/FilterWithCustomIntent.java index 9e85004a4..449174ad1 100644 --- a/src/main/java/com/todoroo/astrid/api/FilterWithCustomIntent.java +++ b/src/main/java/com/todoroo/astrid/api/FilterWithCustomIntent.java @@ -45,12 +45,9 @@ public class FilterWithCustomIntent extends Filter { public Intent getCustomIntent() { Intent intent = new Intent(); - intent.putExtra("filter", this); //$NON-NLS-1$ - intent.setComponent(new ComponentName(BuildConfig.APPLICATION_ID, "com.todoroo.astrid.activity.TaskListActivity")); //$NON-NLS-1$ if(customExtras != null) { intent.putExtras(customExtras); } - return intent; } diff --git a/src/main/java/com/todoroo/astrid/gcal/CalendarReminderActivity.java b/src/main/java/com/todoroo/astrid/gcal/CalendarReminderActivity.java index 79daa2ffd..994e0e2d3 100644 --- a/src/main/java/com/todoroo/astrid/gcal/CalendarReminderActivity.java +++ b/src/main/java/com/todoroo/astrid/gcal/CalendarReminderActivity.java @@ -9,7 +9,6 @@ import android.view.View; import android.view.View.OnClickListener; import android.widget.TextView; -import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.astrid.activity.TaskListActivity; import com.todoroo.astrid.activity.TaskListFragment; @@ -202,7 +201,7 @@ public class CalendarReminderActivity extends InjectingAppCompatActivity { FilterWithCustomIntent filter = TagFilterExposer.filterFromTagData(CalendarReminderActivity.this, tag); Intent listIntent = new Intent(CalendarReminderActivity.this, TaskListActivity.class); - listIntent.putExtra(TaskListFragment.TOKEN_FILTER, filter); + listIntent.putExtra(TaskListActivity.OPEN_FILTER, filter); listIntent.putExtras(filter.customExtras); startActivity(listIntent); diff --git a/src/main/java/com/todoroo/astrid/widget/TasksWidget.java b/src/main/java/com/todoroo/astrid/widget/TasksWidget.java index 5fd3c6d8f..2262cec2f 100644 --- a/src/main/java/com/todoroo/astrid/widget/TasksWidget.java +++ b/src/main/java/com/todoroo/astrid/widget/TasksWidget.java @@ -34,7 +34,7 @@ public class TasksWidget extends InjectingAppWidgetProvider { public static final String EDIT_TASK = "EDIT_TASK"; public static final String EXTRA_FILTER = "extra_filter"; - public static final String EXTRA_ID = "id"; //$NON-NLS-1$ + public static final String EXTRA_ID = "extra_id"; //$NON-NLS-1$ public static long suppressUpdateFlag = 0; // Timestamp--don't update widgets if this flag is non-zero and now() is within 5 minutes private static final long SUPPRESS_TIME = DateUtilities.ONE_MINUTE * 5; @@ -48,11 +48,9 @@ public class TasksWidget extends InjectingAppWidgetProvider { broadcaster.toggleCompletedState(intent.getLongExtra(EXTRA_ID, 0)); break; case EDIT_TASK: - getEditTaskStack( - context, - (Filter) intent.getParcelableExtra(EXTRA_FILTER), - intent.getLongExtra(EXTRA_ID, 0)) - .startActivities(); + long taskId = intent.getLongExtra(EXTRA_ID, 0); + Filter filter = intent.getParcelableExtra(EXTRA_FILTER); + getEditTaskStack(context, filter, taskId).startActivities(); break; case BROADCAST_EVENT_REFRESH: updateWidgets(context); diff --git a/src/main/java/org/tasks/Notifier.java b/src/main/java/org/tasks/Notifier.java index 8bd32b61f..566f1c3d7 100644 --- a/src/main/java/org/tasks/Notifier.java +++ b/src/main/java/org/tasks/Notifier.java @@ -158,7 +158,7 @@ public class Notifier { PendingIntent pendingIntent = PendingIntent.getActivity(context, (title + query).hashCode(), new Intent(context, TaskListActivity.class) {{ setFlags(FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_MULTIPLE_TASK); - putExtra(TaskListFragment.TOKEN_FILTER, new Filter(title, query, AndroidUtilities.contentValuesFromSerializedString(valuesForNewTasks))); + putExtra(TaskListActivity.OPEN_FILTER, new Filter(title, query, AndroidUtilities.contentValuesFromSerializedString(valuesForNewTasks))); }}, PendingIntent.FLAG_UPDATE_CURRENT); Notification notification = new NotificationCompat.Builder(context) diff --git a/src/main/java/org/tasks/intents/TaskIntents.java b/src/main/java/org/tasks/intents/TaskIntents.java index 29318e9ab..3e0fc1fef 100644 --- a/src/main/java/org/tasks/intents/TaskIntents.java +++ b/src/main/java/org/tasks/intents/TaskIntents.java @@ -7,18 +7,17 @@ import android.support.v4.app.TaskStackBuilder; import com.todoroo.astrid.activity.TaskListActivity; import com.todoroo.astrid.activity.TaskListFragment; import com.todoroo.astrid.api.Filter; -import com.todoroo.astrid.api.FilterWithCustomIntent; public class TaskIntents { - public static Intent getNewTaskIntent(Context context, Filter filter) { - return getEditTaskIntent(context, filter, 0L); - } - public static TaskStackBuilder getEditTaskStack(Context context, final Filter filter, final long taskId) { return TaskStackBuilder.create(context).addNextIntent(getEditTaskIntent(context, filter, taskId)); } + public static Intent getNewTaskIntent(Context context, Filter filter) { + return getEditTaskIntent(context, filter, 0L); + } + public static Intent getEditTaskIntent(Context context, final Filter filter, final long taskId) { Intent taskListIntent = getTaskListIntent(context, filter); taskListIntent.putExtra(TaskListActivity.OPEN_TASK, taskId); @@ -26,13 +25,10 @@ public class TaskIntents { } public static Intent getTaskListIntent(Context context, final Filter filter) { - return new Intent(context, TaskListActivity.class) {{ - if (filter != null) { - if (filter instanceof FilterWithCustomIntent) { - putExtras(((FilterWithCustomIntent) filter).customExtras); - } - putExtra(TaskListFragment.TOKEN_FILTER, filter); - } - }}; + Intent intent = new Intent(context, TaskListActivity.class); + if (filter != null) { + intent.putExtra(TaskListActivity.OPEN_FILTER, filter); + } + return intent; } } diff --git a/src/main/java/org/tasks/widget/ScrollableViewsFactory.java b/src/main/java/org/tasks/widget/ScrollableViewsFactory.java index b02c38cd6..28282a50d 100644 --- a/src/main/java/org/tasks/widget/ScrollableViewsFactory.java +++ b/src/main/java/org/tasks/widget/ScrollableViewsFactory.java @@ -18,10 +18,10 @@ import com.todoroo.astrid.dao.Database; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.subtasks.SubtasksHelper; -import com.todoroo.astrid.utility.Constants; import com.todoroo.astrid.widget.TasksWidget; import com.todoroo.astrid.widget.WidgetConfigActivity; +import org.tasks.BuildConfig; import org.tasks.R; import org.tasks.preferences.Preferences; import org.tasks.ui.WidgetCheckBoxes; @@ -135,13 +135,13 @@ public class ScrollableViewsFactory implements RemoteViewsService.RemoteViewsFac textContent = task.getTitle(); - RemoteViews row = new RemoteViews(Constants.PACKAGE, R.layout.widget_row); + RemoteViews row = new RemoteViews(BuildConfig.APPLICATION_ID, R.layout.widget_row); if (task.isCompleted()) { textColor = r.getColor(R.color.task_list_done); - row.setInt(R.id.text, "setPaintFlags", Paint.STRIKE_THRU_TEXT_FLAG | Paint.ANTI_ALIAS_FLAG); + row.setInt(R.id.widget_text, "setPaintFlags", Paint.STRIKE_THRU_TEXT_FLAG | Paint.ANTI_ALIAS_FLAG); } else { - row.setInt(R.id.text, "setPaintFlags", Paint.ANTI_ALIAS_FLAG); + row.setInt(R.id.widget_text, "setPaintFlags", Paint.ANTI_ALIAS_FLAG); } if (showDueDates) { @@ -150,23 +150,22 @@ public class ScrollableViewsFactory implements RemoteViewsService.RemoteViewsFac textColor = r.getColor(R.color.overdue); } - final long taskId = task.getId(); - row.setTextViewText(R.id.text, textContent); - row.setTextColor(R.id.text, textColor); - row.setImageViewBitmap(R.id.completeBox, getCheckbox(task)); - row.setOnClickFillInIntent(R.id.widget_body, new Intent() {{ - setAction(TasksWidget.EDIT_TASK); - putExtra(TasksWidget.EXTRA_FILTER, filter); - putExtra(TasksWidget.EXTRA_ID, taskId); - }}); + row.setTextViewText(R.id.widget_text, textContent); + row.setTextColor(R.id.widget_text, textColor); + row.setImageViewBitmap(R.id.widget_complete_box, getCheckbox(task)); + + long taskId = task.getId(); + Intent editIntent = new Intent(TasksWidget.EDIT_TASK); + editIntent.putExtra(TasksWidget.EXTRA_FILTER, filter); + editIntent.putExtra(TasksWidget.EXTRA_ID, taskId); + row.setOnClickFillInIntent(R.id.widget_row, editIntent); if (hideCheckboxes) { - row.setViewVisibility(R.id.completeBox, View.GONE); + row.setViewVisibility(R.id.widget_complete_box, View.GONE); } else { - row.setOnClickFillInIntent(R.id.completeBox, new Intent() {{ - setAction(TasksWidget.COMPLETE_TASK); - putExtra(TasksWidget.EXTRA_ID, taskId); - }}); + Intent completeIntent = new Intent(TasksWidget.COMPLETE_TASK); + completeIntent.putExtra(TasksWidget.EXTRA_ID, taskId); + row.setOnClickFillInIntent(R.id.widget_complete_box, completeIntent); } return row; @@ -210,13 +209,13 @@ public class ScrollableViewsFactory implements RemoteViewsService.RemoteViewsFac public void formatDueDate(RemoteViews row, Task task, int textColor) { if (task.hasDueDate()) { Resources resources = context.getResources(); - row.setViewVisibility(R.id.dueDate, View.VISIBLE); - row.setTextViewText(R.id.dueDate, task.isCompleted() + row.setViewVisibility(R.id.widget_due_date, View.VISIBLE); + row.setTextViewText(R.id.widget_due_date, task.isCompleted() ? resources.getString(R.string.TAd_completed, DateUtilities.getRelativeDateStringWithTime(context, task.getCompletionDate())) : DateUtilities.getRelativeDateStringWithTime(context, task.getDueDate())); - row.setTextColor(R.id.dueDate, task.isOverdue() ? resources.getColor(R.color.overdue) : textColor); + row.setTextColor(R.id.widget_due_date, task.isOverdue() ? resources.getColor(R.color.overdue) : textColor); } else { - row.setViewVisibility(R.id.dueDate, View.GONE); + row.setViewVisibility(R.id.widget_due_date, View.GONE); } } } diff --git a/src/main/java/org/tasks/widget/WidgetHelper.java b/src/main/java/org/tasks/widget/WidgetHelper.java index 54da10eff..871cc993d 100644 --- a/src/main/java/org/tasks/widget/WidgetHelper.java +++ b/src/main/java/org/tasks/widget/WidgetHelper.java @@ -77,35 +77,25 @@ public class WidgetHelper { remoteViews.setEmptyView(R.id.list_view, R.id.empty_view); remoteViews.setOnClickPendingIntent(R.id.widget_title, getOpenListIntent(context, filter, id)); remoteViews.setOnClickPendingIntent(R.id.widget_button, getNewTaskIntent(context, filter, id)); - remoteViews.setPendingIntentTemplate(R.id.list_view, getFillInIntent(context, filter, id)); + remoteViews.setPendingIntentTemplate(R.id.list_view, getPendingIntentTemplate(context)); return remoteViews; } - private PendingIntent getFillInIntent(Context context, Filter filter, int widgetId) { + private PendingIntent getPendingIntentTemplate(Context context) { Intent intent = new Intent(context, TasksWidget.class); - if (filter != null && filter instanceof FilterWithCustomIntent) { - Bundle customExtras = ((FilterWithCustomIntent) filter).customExtras; - intent.putExtras(customExtras); - } - return PendingIntent.getBroadcast(context, -widgetId, intent, 0); + return PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); } public PendingIntent getOpenListIntent(Context context, Filter filter, int widgetId) { - Intent listIntent = TaskIntents.getTaskListIntent(context, filter); - listIntent.setFlags(flags); - String customIntent = preferences.getStringValue(WidgetConfigActivity.PREF_CUSTOM_INTENT + widgetId); - if (customIntent != null) { - String serializedExtras = preferences.getStringValue(WidgetConfigActivity.PREF_CUSTOM_EXTRAS + widgetId); - Bundle extras = AndroidUtilities.bundleFromSerializedString(serializedExtras); - listIntent.putExtras(extras); - } - return PendingIntent.getActivity(context, widgetId, listIntent, PendingIntent.FLAG_CANCEL_CURRENT); + Intent intent = TaskIntents.getTaskListIntent(context, filter); + intent.setFlags(flags); + return PendingIntent.getActivity(context, widgetId, intent, PendingIntent.FLAG_UPDATE_CURRENT); } - public PendingIntent getNewTaskIntent(Context context, Filter filter, int id) { + public PendingIntent getNewTaskIntent(Context context, Filter filter, int widgetId) { Intent intent = TaskIntents.getNewTaskIntent(context, filter); intent.setFlags(flags); - return PendingIntent.getActivity(context, -id, intent, PendingIntent.FLAG_CANCEL_CURRENT); + return PendingIntent.getActivity(context, -widgetId, intent, PendingIntent.FLAG_UPDATE_CURRENT); } public Filter getFilter(Context context, int widgetId) { @@ -151,12 +141,10 @@ public class WidgetHelper { contentValuesString = AndroidUtilities.contentValuesToSerializedString(newTaskValues); } preferences.setString(WidgetConfigActivity.PREF_VALUES + widgetId, contentValuesString); - if (filter != null) { - String flattenedExtras = AndroidUtilities.bundleToSerializedString(((FilterWithCustomIntent) filter).customExtras); - if (flattenedExtras != null) { - preferences.setString(WidgetConfigActivity.PREF_CUSTOM_EXTRAS + widgetId, - flattenedExtras); - } + String flattenedExtras = AndroidUtilities.bundleToSerializedString(((FilterWithCustomIntent) filter).customExtras); + if (flattenedExtras != null) { + preferences.setString(WidgetConfigActivity.PREF_CUSTOM_EXTRAS + widgetId, + flattenedExtras); } } } else { diff --git a/src/main/res/layout/widget_row.xml b/src/main/res/layout/widget_row.xml index a85d0c1a0..f80499316 100644 --- a/src/main/res/layout/widget_row.xml +++ b/src/main/res/layout/widget_row.xml @@ -4,11 +4,13 @@ ** See the file "LICENSE" for the full license governing this code. -->