Save task before switching filter

pull/384/head
Alex Baker 10 years ago
parent 120639ff4e
commit 1fc2c1603c

@ -122,7 +122,7 @@ public class ShortcutActivity extends InjectingAppCompatActivity {
} else { } else {
filter = new Filter(title, sql, values); filter = new Filter(title, sql, values);
} }
taskListIntent.putExtra(TaskListFragment.TOKEN_FILTER, filter); taskListIntent.putExtra(TaskListActivity.OPEN_FILTER, filter);
} }
startActivity(taskListIntent); startActivity(taskListIntent);

@ -340,7 +340,7 @@ public final class TaskEditFragment extends InjectingFragment implements EditNot
* ====================================================================== * ======================================================================
*/ */
private List<TaskEditControlFragment> getFragments() { public List<TaskEditControlFragment> getFragments() {
List<TaskEditControlFragment> fragments = new ArrayList<>(); List<TaskEditControlFragment> fragments = new ArrayList<>();
for (int fragmentId : rowIds) { for (int fragmentId : rowIds) {
TaskEditControlFragment fragment = (TaskEditControlFragment) getFragmentManager().findFragmentById(fragmentId); TaskEditControlFragment fragment = (TaskEditControlFragment) getFragmentManager().findFragmentById(fragmentId);

@ -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 = "createNewList"; //$NON-NLS-1$
public static final String TOKEN_CREATE_NEW_LIST_NAME = "newListName"; //$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) * @see android.app.Activity#onCreate(Bundle)
@ -118,7 +119,7 @@ public class TaskListActivity extends InjectingAppCompatActivity implements
controlOrder = BeastModePreferences.constructOrderedControlList(preferences, this); controlOrder = BeastModePreferences.constructOrderedControlList(preferences, this);
controlOrder.add(0, getString(EditTitleControlSet.TAG)); controlOrder.add(0, getString(EditTitleControlSet.TAG));
readIntent(); handleIntent();
} }
@Override @Override
@ -127,51 +128,35 @@ public class TaskListActivity extends InjectingAppCompatActivity implements
setIntent(intent); setIntent(intent);
readIntent(); handleIntent();
} }
private void readIntent() { private void handleIntent() {
Intent intent = getIntent(); Intent intent = getIntent();
Bundle extras = intent.getExtras();
if (extras != null) {
extras = (Bundle) extras.clone();
}
if (extras == null) { TaskEditFragment taskEditFragment = getTaskEditFragment();
extras = new Bundle(); List<TaskEditControlFragment> 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; TaskListFragment taskListFragment;
if (intent.hasExtra(TaskListFragment.TOKEN_FILTER)) { if (intent.hasExtra(OPEN_FILTER)) {
Filter filter = intent.getParcelableExtra(TaskListFragment.TOKEN_FILTER); Filter filter = intent.getParcelableExtra(OPEN_FILTER);
extras.putAll(configureIntentAndExtrasWithFilter(intent, filter)); intent.removeExtra(OPEN_FILTER);
taskListFragment = newTaskListFragment(filter, extras); taskListFragment = newTaskListFragment(filter);
intent.removeExtra(TaskListFragment.TOKEN_FILTER);
} else { } else {
taskListFragment = getTaskListFragment(); taskListFragment = getTaskListFragment();
if (taskListFragment == null) { if (taskListFragment == null) {
Filter filter = getDefaultFilter(); taskListFragment = newTaskListFragment(getDefaultFilter());
Bundle bundle = configureIntentAndExtrasWithFilter(intent, filter);
if (bundle != null) {
extras.putAll(bundle);
}
taskListFragment = newTaskListFragment(filter, extras);
}
}
TaskEditFragment taskEditFragment = getTaskEditFragment();
List<TaskEditControlFragment> taskEditControlFragments = new ArrayList<>();
if (taskEditFragment != null) {
for (int rowId : TaskEditFragment.rowIds) {
TaskEditControlFragment fragment = (TaskEditControlFragment) getFragmentManager().findFragmentById(rowId);
if (fragment == null) {
break;
}
taskEditControlFragments.add(fragment);
} }
} }
loadTaskListFragment(taskListFragment);
loadTaskListFragment(true, taskListFragment);
if (isDoublePaneLayout()) { if (isDoublePaneLayout()) {
getFragmentManager().beginTransaction() 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(); FragmentManager fragmentManager = getFragmentManager();
if (onCreate) {
fragmentManager.popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE); fragmentManager.popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
} else {
fragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
}
fragmentManager.beginTransaction() fragmentManager.beginTransaction()
.replace(isDoublePaneLayout() ? R.id.master_dual : R.id.single_pane, taskListFragment, TaskListFragment.TAG_TASKLIST_FRAGMENT) .replace(isDoublePaneLayout() ? R.id.master_dual : R.id.single_pane, taskListFragment, TaskListFragment.TAG_TASKLIST_FRAGMENT)
.addToBackStack(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; Class<?> customTaskList = null;
if (subtasksHelper.shouldUseSubtasksFragmentForFilter(filter)) { if (subtasksHelper.shouldUseSubtasksFragmentForFilter(filter)) {
@ -283,7 +264,7 @@ public class TaskListActivity extends InjectingAppCompatActivity implements
Timber.e(e, e.getMessage()); Timber.e(e, e.getMessage());
newFragment = new TaskListFragment(); newFragment = new TaskListFragment();
} }
newFragment.initialize(filter, extras); newFragment.initialize(filter);
return newFragment; return newFragment;
} }
@ -292,18 +273,15 @@ public class TaskListActivity extends InjectingAppCompatActivity implements
super.onPostResume(); super.onPostResume();
if (getIntent().hasExtra(OPEN_TASK)) { if (getIntent().hasExtra(OPEN_TASK)) {
long id = getIntent().getLongExtra(OPEN_TASK, 0); long taskId = getIntent().getLongExtra(OPEN_TASK, 0);
if (id > 0) { getIntent().removeExtra(OPEN_TASK);
onTaskListItemClicked(id); if (taskId > 0) {
onTaskListItemClicked(taskId);
} else { } else {
TaskListFragment tlf = getTaskListFragment(); Task task = getTaskListFragment().addTask("");
if (tlf != null) {
Task task = tlf.addTask("");//$NON-NLS-1$
onTaskListItemClicked(task.getId()); onTaskListItemClicked(task.getId());
} }
} }
getIntent().removeExtra(OPEN_TASK);
}
if (getIntent().getBooleanExtra(TOKEN_CREATE_NEW_LIST, false)) { if (getIntent().getBooleanExtra(TOKEN_CREATE_NEW_LIST, false)) {
Intent thisIntent = getIntent(); Intent thisIntent = getIntent();
@ -472,25 +450,6 @@ public class TaskListActivity extends InjectingAppCompatActivity implements
.findFragmentByTag(TaskEditFragment.TAG_TASKEDIT_FRAGMENT); .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 * Loads action item from the given intent
*/ */

@ -52,6 +52,7 @@ import com.todoroo.astrid.adapter.TaskAdapter.ViewHolder;
import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.api.CustomFilter; import com.todoroo.astrid.api.CustomFilter;
import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.api.FilterWithCustomIntent;
import com.todoroo.astrid.core.BuiltInFilterExposer; import com.todoroo.astrid.core.BuiltInFilterExposer;
import com.todoroo.astrid.core.SortHelper; import com.todoroo.astrid.core.SortHelper;
import com.todoroo.astrid.dao.TagDataDao; 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_UNDELETE_TASK_ID = R.string.TAd_contextUndeleteTask;
protected static final int CONTEXT_MENU_PURGE_TASK_ID = R.string.TAd_contextPurgeTask; 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 // --- instance variables
@Inject TaskService taskService; @Inject TaskService taskService;
@ -226,9 +222,11 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr
setTaskAdapter(); setTaskAdapter();
} }
public void initialize(Filter filter, Bundle extras) { public void initialize(Filter filter) {
this.filter = filter; this.filter = filter;
this.extras = extras; this.extras = filter instanceof FilterWithCustomIntent
? ((FilterWithCustomIntent) filter).getCustomIntent().getExtras()
: new Bundle();
} }
@Override @Override

@ -45,12 +45,9 @@ public class FilterWithCustomIntent extends Filter {
public Intent getCustomIntent() { public Intent getCustomIntent() {
Intent intent = new Intent(); 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) { if(customExtras != null) {
intent.putExtras(customExtras); intent.putExtras(customExtras);
} }
return intent; return intent;
} }

@ -9,7 +9,6 @@ import android.view.View;
import android.view.View.OnClickListener; import android.view.View.OnClickListener;
import android.widget.TextView; import android.widget.TextView;
import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.astrid.activity.TaskListActivity; import com.todoroo.astrid.activity.TaskListActivity;
import com.todoroo.astrid.activity.TaskListFragment; import com.todoroo.astrid.activity.TaskListFragment;
@ -202,7 +201,7 @@ public class CalendarReminderActivity extends InjectingAppCompatActivity {
FilterWithCustomIntent filter = TagFilterExposer.filterFromTagData(CalendarReminderActivity.this, tag); FilterWithCustomIntent filter = TagFilterExposer.filterFromTagData(CalendarReminderActivity.this, tag);
Intent listIntent = new Intent(CalendarReminderActivity.this, TaskListActivity.class); Intent listIntent = new Intent(CalendarReminderActivity.this, TaskListActivity.class);
listIntent.putExtra(TaskListFragment.TOKEN_FILTER, filter); listIntent.putExtra(TaskListActivity.OPEN_FILTER, filter);
listIntent.putExtras(filter.customExtras); listIntent.putExtras(filter.customExtras);
startActivity(listIntent); startActivity(listIntent);

@ -34,7 +34,7 @@ public class TasksWidget extends InjectingAppWidgetProvider {
public static final String EDIT_TASK = "EDIT_TASK"; public static final String EDIT_TASK = "EDIT_TASK";
public static final String EXTRA_FILTER = "extra_filter"; 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 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; 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)); broadcaster.toggleCompletedState(intent.getLongExtra(EXTRA_ID, 0));
break; break;
case EDIT_TASK: case EDIT_TASK:
getEditTaskStack( long taskId = intent.getLongExtra(EXTRA_ID, 0);
context, Filter filter = intent.getParcelableExtra(EXTRA_FILTER);
(Filter) intent.getParcelableExtra(EXTRA_FILTER), getEditTaskStack(context, filter, taskId).startActivities();
intent.getLongExtra(EXTRA_ID, 0))
.startActivities();
break; break;
case BROADCAST_EVENT_REFRESH: case BROADCAST_EVENT_REFRESH:
updateWidgets(context); updateWidgets(context);

@ -158,7 +158,7 @@ public class Notifier {
PendingIntent pendingIntent = PendingIntent.getActivity(context, (title + query).hashCode(), new Intent(context, TaskListActivity.class) {{ PendingIntent pendingIntent = PendingIntent.getActivity(context, (title + query).hashCode(), new Intent(context, TaskListActivity.class) {{
setFlags(FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_MULTIPLE_TASK); 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); }}, PendingIntent.FLAG_UPDATE_CURRENT);
Notification notification = new NotificationCompat.Builder(context) Notification notification = new NotificationCompat.Builder(context)

@ -7,18 +7,17 @@ import android.support.v4.app.TaskStackBuilder;
import com.todoroo.astrid.activity.TaskListActivity; import com.todoroo.astrid.activity.TaskListActivity;
import com.todoroo.astrid.activity.TaskListFragment; import com.todoroo.astrid.activity.TaskListFragment;
import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.api.FilterWithCustomIntent;
public class TaskIntents { 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) { public static TaskStackBuilder getEditTaskStack(Context context, final Filter filter, final long taskId) {
return TaskStackBuilder.create(context).addNextIntent(getEditTaskIntent(context, filter, 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) { public static Intent getEditTaskIntent(Context context, final Filter filter, final long taskId) {
Intent taskListIntent = getTaskListIntent(context, filter); Intent taskListIntent = getTaskListIntent(context, filter);
taskListIntent.putExtra(TaskListActivity.OPEN_TASK, taskId); taskListIntent.putExtra(TaskListActivity.OPEN_TASK, taskId);
@ -26,13 +25,10 @@ public class TaskIntents {
} }
public static Intent getTaskListIntent(Context context, final Filter filter) { public static Intent getTaskListIntent(Context context, final Filter filter) {
return new Intent(context, TaskListActivity.class) {{ Intent intent = new Intent(context, TaskListActivity.class);
if (filter != null) { if (filter != null) {
if (filter instanceof FilterWithCustomIntent) { intent.putExtra(TaskListActivity.OPEN_FILTER, filter);
putExtras(((FilterWithCustomIntent) filter).customExtras);
}
putExtra(TaskListFragment.TOKEN_FILTER, filter);
} }
}}; return intent;
} }
} }

@ -18,10 +18,10 @@ import com.todoroo.astrid.dao.Database;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.service.TaskService;
import com.todoroo.astrid.subtasks.SubtasksHelper; import com.todoroo.astrid.subtasks.SubtasksHelper;
import com.todoroo.astrid.utility.Constants;
import com.todoroo.astrid.widget.TasksWidget; import com.todoroo.astrid.widget.TasksWidget;
import com.todoroo.astrid.widget.WidgetConfigActivity; import com.todoroo.astrid.widget.WidgetConfigActivity;
import org.tasks.BuildConfig;
import org.tasks.R; import org.tasks.R;
import org.tasks.preferences.Preferences; import org.tasks.preferences.Preferences;
import org.tasks.ui.WidgetCheckBoxes; import org.tasks.ui.WidgetCheckBoxes;
@ -135,13 +135,13 @@ public class ScrollableViewsFactory implements RemoteViewsService.RemoteViewsFac
textContent = task.getTitle(); 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()) { if (task.isCompleted()) {
textColor = r.getColor(R.color.task_list_done); 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 { } else {
row.setInt(R.id.text, "setPaintFlags", Paint.ANTI_ALIAS_FLAG); row.setInt(R.id.widget_text, "setPaintFlags", Paint.ANTI_ALIAS_FLAG);
} }
if (showDueDates) { if (showDueDates) {
@ -150,23 +150,22 @@ public class ScrollableViewsFactory implements RemoteViewsService.RemoteViewsFac
textColor = r.getColor(R.color.overdue); textColor = r.getColor(R.color.overdue);
} }
final long taskId = task.getId(); row.setTextViewText(R.id.widget_text, textContent);
row.setTextViewText(R.id.text, textContent); row.setTextColor(R.id.widget_text, textColor);
row.setTextColor(R.id.text, textColor); row.setImageViewBitmap(R.id.widget_complete_box, getCheckbox(task));
row.setImageViewBitmap(R.id.completeBox, getCheckbox(task));
row.setOnClickFillInIntent(R.id.widget_body, new Intent() {{ long taskId = task.getId();
setAction(TasksWidget.EDIT_TASK); Intent editIntent = new Intent(TasksWidget.EDIT_TASK);
putExtra(TasksWidget.EXTRA_FILTER, filter); editIntent.putExtra(TasksWidget.EXTRA_FILTER, filter);
putExtra(TasksWidget.EXTRA_ID, taskId); editIntent.putExtra(TasksWidget.EXTRA_ID, taskId);
}}); row.setOnClickFillInIntent(R.id.widget_row, editIntent);
if (hideCheckboxes) { if (hideCheckboxes) {
row.setViewVisibility(R.id.completeBox, View.GONE); row.setViewVisibility(R.id.widget_complete_box, View.GONE);
} else { } else {
row.setOnClickFillInIntent(R.id.completeBox, new Intent() {{ Intent completeIntent = new Intent(TasksWidget.COMPLETE_TASK);
setAction(TasksWidget.COMPLETE_TASK); completeIntent.putExtra(TasksWidget.EXTRA_ID, taskId);
putExtra(TasksWidget.EXTRA_ID, taskId); row.setOnClickFillInIntent(R.id.widget_complete_box, completeIntent);
}});
} }
return row; return row;
@ -210,13 +209,13 @@ public class ScrollableViewsFactory implements RemoteViewsService.RemoteViewsFac
public void formatDueDate(RemoteViews row, Task task, int textColor) { public void formatDueDate(RemoteViews row, Task task, int textColor) {
if (task.hasDueDate()) { if (task.hasDueDate()) {
Resources resources = context.getResources(); Resources resources = context.getResources();
row.setViewVisibility(R.id.dueDate, View.VISIBLE); row.setViewVisibility(R.id.widget_due_date, View.VISIBLE);
row.setTextViewText(R.id.dueDate, task.isCompleted() row.setTextViewText(R.id.widget_due_date, task.isCompleted()
? resources.getString(R.string.TAd_completed, DateUtilities.getRelativeDateStringWithTime(context, task.getCompletionDate())) ? resources.getString(R.string.TAd_completed, DateUtilities.getRelativeDateStringWithTime(context, task.getCompletionDate()))
: DateUtilities.getRelativeDateStringWithTime(context, task.getDueDate())); : 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 { } else {
row.setViewVisibility(R.id.dueDate, View.GONE); row.setViewVisibility(R.id.widget_due_date, View.GONE);
} }
} }
} }

@ -77,35 +77,25 @@ public class WidgetHelper {
remoteViews.setEmptyView(R.id.list_view, R.id.empty_view); 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_title, getOpenListIntent(context, filter, id));
remoteViews.setOnClickPendingIntent(R.id.widget_button, getNewTaskIntent(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; return remoteViews;
} }
private PendingIntent getFillInIntent(Context context, Filter filter, int widgetId) { private PendingIntent getPendingIntentTemplate(Context context) {
Intent intent = new Intent(context, TasksWidget.class); Intent intent = new Intent(context, TasksWidget.class);
if (filter != null && filter instanceof FilterWithCustomIntent) { return PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
Bundle customExtras = ((FilterWithCustomIntent) filter).customExtras;
intent.putExtras(customExtras);
}
return PendingIntent.getBroadcast(context, -widgetId, intent, 0);
} }
public PendingIntent getOpenListIntent(Context context, Filter filter, int widgetId) { public PendingIntent getOpenListIntent(Context context, Filter filter, int widgetId) {
Intent listIntent = TaskIntents.getTaskListIntent(context, filter); Intent intent = TaskIntents.getTaskListIntent(context, filter);
listIntent.setFlags(flags); intent.setFlags(flags);
String customIntent = preferences.getStringValue(WidgetConfigActivity.PREF_CUSTOM_INTENT + widgetId); return PendingIntent.getActivity(context, widgetId, intent, PendingIntent.FLAG_UPDATE_CURRENT);
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);
} }
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 intent = TaskIntents.getNewTaskIntent(context, filter);
intent.setFlags(flags); 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) { public Filter getFilter(Context context, int widgetId) {
@ -151,14 +141,12 @@ public class WidgetHelper {
contentValuesString = AndroidUtilities.contentValuesToSerializedString(newTaskValues); contentValuesString = AndroidUtilities.contentValuesToSerializedString(newTaskValues);
} }
preferences.setString(WidgetConfigActivity.PREF_VALUES + widgetId, contentValuesString); preferences.setString(WidgetConfigActivity.PREF_VALUES + widgetId, contentValuesString);
if (filter != null) {
String flattenedExtras = AndroidUtilities.bundleToSerializedString(((FilterWithCustomIntent) filter).customExtras); String flattenedExtras = AndroidUtilities.bundleToSerializedString(((FilterWithCustomIntent) filter).customExtras);
if (flattenedExtras != null) { if (flattenedExtras != null) {
preferences.setString(WidgetConfigActivity.PREF_CUSTOM_EXTRAS + widgetId, preferences.setString(WidgetConfigActivity.PREF_CUSTOM_EXTRAS + widgetId,
flattenedExtras); flattenedExtras);
} }
} }
}
} else { } else {
tagData = tagDataDao.getTagByName(filter.listingTitle, TagData.ID); tagData = tagDataDao.getTagByName(filter.listingTitle, TagData.ID);
if (tagData != null) { if (tagData != null) {

@ -4,11 +4,13 @@
** See the file "LICENSE" for the full license governing this code. ** See the file "LICENSE" for the full license governing this code.
--> -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/widget_row"
android:clickable="false"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content">
<ImageView <ImageView
android:id="@+id/completeBox" android:id="@+id/widget_complete_box"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" android:layout_gravity="center"
@ -20,7 +22,6 @@
android:paddingEnd="5dp"/> android:paddingEnd="5dp"/>
<LinearLayout <LinearLayout
android:id="@+id/widget_body"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical" android:orientation="vertical"
@ -28,7 +29,7 @@
android:gravity="center_vertical"> android:gravity="center_vertical">
<TextView <TextView
android:id="@+id/text" android:id="@+id/widget_text"
style="@style/TextAppearance.Widget" style="@style/TextAppearance.Widget"
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -37,7 +38,7 @@
android:singleLine="true" /> android:singleLine="true" />
<TextView <TextView
android:id="@+id/dueDate" android:id="@+id/widget_due_date"
style="@style/TextAppearance.WidgetDueDate" style="@style/TextAppearance.WidgetDueDate"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"

Loading…
Cancel
Save