|
|
@ -42,12 +42,21 @@ import com.todoroo.astrid.widget.WidgetUpdateService;
|
|
|
|
|
|
|
|
|
|
|
|
import org.tasks.R;
|
|
|
|
import org.tasks.R;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import static android.content.Intent.*;
|
|
|
|
|
|
|
|
|
|
|
|
public class WidgetHelper {
|
|
|
|
public class WidgetHelper {
|
|
|
|
|
|
|
|
|
|
|
|
static {
|
|
|
|
static {
|
|
|
|
AstridDependencyInjector.initialize();
|
|
|
|
AstridDependencyInjector.initialize();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private static int flags = FLAG_ACTIVITY_NEW_TASK
|
|
|
|
|
|
|
|
| FLAG_ACTIVITY_MULTIPLE_TASK
|
|
|
|
|
|
|
|
| FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET
|
|
|
|
|
|
|
|
| FLAG_ACTIVITY_NO_HISTORY
|
|
|
|
|
|
|
|
| FLAG_ACTIVITY_PREVIOUS_IS_TOP;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static void startWidgetService(Context context) {
|
|
|
|
public static void startWidgetService(Context context) {
|
|
|
|
Class widgetServiceClass = android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH
|
|
|
|
Class widgetServiceClass = android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH
|
|
|
|
? WidgetUpdateService.class
|
|
|
|
? WidgetUpdateService.class
|
|
|
@ -62,6 +71,9 @@ public class WidgetHelper {
|
|
|
|
|
|
|
|
|
|
|
|
public static void triggerUpdate(Context context) {
|
|
|
|
public static void triggerUpdate(Context context) {
|
|
|
|
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
|
|
|
|
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
|
|
|
|
|
|
|
|
if (appWidgetManager == null) {
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
ComponentName thisWidget = new ComponentName(context, TasksWidget.class);
|
|
|
|
ComponentName thisWidget = new ComponentName(context, TasksWidget.class);
|
|
|
|
Intent intent = new Intent(context, TasksWidget.class);
|
|
|
|
Intent intent = new Intent(context, TasksWidget.class);
|
|
|
|
intent.setAction("android.appwidget.action.APPWIDGET_UPDATE");
|
|
|
|
intent.setAction("android.appwidget.action.APPWIDGET_UPDATE");
|
|
|
@ -91,11 +103,14 @@ public class WidgetHelper {
|
|
|
|
PendingIntent listIntent = getListIntent(context, filter, id);
|
|
|
|
PendingIntent listIntent = getListIntent(context, filter, id);
|
|
|
|
if (listIntent != null) {
|
|
|
|
if (listIntent != null) {
|
|
|
|
remoteViews.setOnClickPendingIntent(R.id.widget_title, listIntent);
|
|
|
|
remoteViews.setOnClickPendingIntent(R.id.widget_title, listIntent);
|
|
|
|
remoteViews.setPendingIntentTemplate(R.id.list_view, listIntent);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
PendingIntent editIntent = getEditIntent(context, filter, id);
|
|
|
|
PendingIntent newTaskIntent = getNewTaskIntent(context, filter, id);
|
|
|
|
if (editIntent != null) {
|
|
|
|
if (newTaskIntent != null) {
|
|
|
|
remoteViews.setOnClickPendingIntent(R.id.widget_button, editIntent);
|
|
|
|
remoteViews.setOnClickPendingIntent(R.id.widget_button, newTaskIntent);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
PendingIntent editTaskIntent = getEditTaskIntent(context, filter, id);
|
|
|
|
|
|
|
|
if (editTaskIntent != null) {
|
|
|
|
|
|
|
|
remoteViews.setPendingIntentTemplate(R.id.list_view, editTaskIntent);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return remoteViews;
|
|
|
|
return remoteViews;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -126,38 +141,53 @@ public class WidgetHelper {
|
|
|
|
listIntent, PendingIntent.FLAG_CANCEL_CURRENT);
|
|
|
|
listIntent, PendingIntent.FLAG_CANCEL_CURRENT);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public PendingIntent getEditIntent(Context context, Filter filter, int id) {
|
|
|
|
private PendingIntent getEditTaskIntent(Context context, Filter filter, int widgetId) {
|
|
|
|
Intent editIntent;
|
|
|
|
Intent intent;
|
|
|
|
|
|
|
|
if (AstridPreferences.useTabletLayout(context)) {
|
|
|
|
|
|
|
|
intent = new Intent(context, TaskListActivity.class);
|
|
|
|
|
|
|
|
if (filter != null && filter instanceof FilterWithCustomIntent) {
|
|
|
|
|
|
|
|
Bundle customExtras = ((FilterWithCustomIntent) filter).customExtras;
|
|
|
|
|
|
|
|
intent.putExtras(customExtras);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
intent = new Intent(context, TaskEditActivity.class);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
intent.setFlags(flags);
|
|
|
|
|
|
|
|
intent.putExtra(TaskEditFragment.OVERRIDE_FINISH_ANIM, false);
|
|
|
|
|
|
|
|
return PendingIntent.getActivity(context, widgetId, intent, PendingIntent.FLAG_CANCEL_CURRENT);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public PendingIntent getNewTaskIntent(Context context, Filter filter, int id) {
|
|
|
|
|
|
|
|
Intent intent;
|
|
|
|
boolean tablet = AstridPreferences.useTabletLayout(context);
|
|
|
|
boolean tablet = AstridPreferences.useTabletLayout(context);
|
|
|
|
if (tablet) {
|
|
|
|
if (tablet) {
|
|
|
|
editIntent = new Intent(context, TaskListActivity.class);
|
|
|
|
intent = new Intent(context, TaskListActivity.class);
|
|
|
|
editIntent.putExtra(TaskListActivity.OPEN_TASK, 0L);
|
|
|
|
intent.putExtra(TaskListActivity.OPEN_TASK, 0L);
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
else {
|
|
|
|
intent = new Intent(context, TaskEditActivity.class);
|
|
|
|
editIntent = new Intent(context, TaskEditActivity.class);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
editIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
|
|
|
|
intent.setFlags(flags);
|
|
|
|
editIntent.putExtra(TaskEditFragment.OVERRIDE_FINISH_ANIM, false);
|
|
|
|
intent.putExtra(TaskEditFragment.OVERRIDE_FINISH_ANIM, false);
|
|
|
|
if (filter != null) {
|
|
|
|
if (filter != null) {
|
|
|
|
editIntent.putExtra(TaskListFragment.TOKEN_FILTER, filter);
|
|
|
|
intent.putExtra(TaskListFragment.TOKEN_FILTER, filter);
|
|
|
|
if (filter.valuesForNewTasks != null) {
|
|
|
|
if (filter.valuesForNewTasks != null) {
|
|
|
|
String values = AndroidUtilities.contentValuesToSerializedString(filter.valuesForNewTasks);
|
|
|
|
String values = AndroidUtilities.contentValuesToSerializedString(filter.valuesForNewTasks);
|
|
|
|
values = PermaSql.replacePlaceholders(values);
|
|
|
|
values = PermaSql.replacePlaceholders(values);
|
|
|
|
editIntent.putExtra(TaskEditFragment.TOKEN_VALUES, values);
|
|
|
|
intent.putExtra(TaskEditFragment.TOKEN_VALUES, values);
|
|
|
|
editIntent.setAction("E" + id + values);
|
|
|
|
intent.setAction("E" + id + values);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (tablet) {
|
|
|
|
if (tablet) {
|
|
|
|
if (filter instanceof FilterWithCustomIntent) {
|
|
|
|
if (filter instanceof FilterWithCustomIntent) {
|
|
|
|
Bundle customExtras = ((FilterWithCustomIntent) filter).customExtras;
|
|
|
|
Bundle customExtras = ((FilterWithCustomIntent) filter).customExtras;
|
|
|
|
editIntent.putExtras(customExtras);
|
|
|
|
intent.putExtras(customExtras);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
editIntent.setAction("E" + id);
|
|
|
|
intent.setAction("E" + id);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return PendingIntent.getActivity(context, -id, editIntent, 0);
|
|
|
|
return PendingIntent.getActivity(context, -id, intent, 0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public Filter getFilter(Context context, int widgetId) {
|
|
|
|
public Filter getFilter(Context context, int widgetId) {
|
|
|
@ -203,7 +233,7 @@ 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 instanceof FilterWithCustomIntent) {
|
|
|
|
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,
|
|
|
|