Loading AndroidManifest.xml +2 −1 Original line number Diff line number Diff line Loading @@ -229,7 +229,7 @@ </intent-filter> </receiver> <receiver android:name="org.dmfs.tasks.homescreen.TaskListWidgetUpdaterService$TaskListViewsFactory" android:name="org.dmfs.tasks.homescreen.ProviderChangedBroadcastReceiver" android:enabled="@bool/enable_widget_provider" > <intent-filter> <action android:name="android.intent.action.PROVIDER_CHANGED" /> Loading @@ -246,6 +246,7 @@ android:mimeType="vnd.android.cursor.item/org.dmfs.tasks.tasks" /> </intent-filter> </receiver> <receiver android:name="org.dmfs.provider.tasks.broadcast.AccountsChangeBroadcastReceiver" > <intent-filter> <action android:name="android.accounts.LOGIN_ACCOUNTS_CHANGED" /> Loading src/org/dmfs/tasks/model/TaskList.java→src/org/dmfs/tasks/homescreen/ProviderChangedBroadcastReceiver.java +63 −0 Original line number Diff line number Diff line /* * * * Copyright (C) 2014 Marten Gajda <marten@dmfs.org> * * Licensed under the Apache License, Version 2.0 (the "License"); Loading @@ -17,15 +15,49 @@ * */ package org.dmfs.tasks.model; package org.dmfs.tasks.homescreen; import android.appwidget.AppWidgetManager; import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.net.Uri; /** * Wrapper class to handle task lists. * Listens for the ProviderChanged broadcast in order to update the app widgets. * * @author Tobias Reinsch <tobias@dmfs.org> * */ public class TaskList public class ProviderChangedBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // update all widgets ComponentName smallProvider = new ComponentName(context, TaskListWidgetProvider.class); int[] smallWidgetIds = AppWidgetManager.getInstance(context).getAppWidgetIds(smallProvider); ComponentName largeProvider = new ComponentName(context, TaskListWidgetProviderLarge.class); int[] largeWidgetIds = AppWidgetManager.getInstance(context).getAppWidgetIds(largeProvider); /** Create an Intent with the {@link RemoteViewsService } and pass it the Widget Id */ Intent remoteServiceIntent = new Intent(context, TaskListWidgetUpdaterService.class); remoteServiceIntent.setData(Uri.parse(remoteServiceIntent.toUri(Intent.URI_INTENT_SCHEME))); for (int id : smallWidgetIds) { remoteServiceIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, id); context.startService(remoteServiceIntent); } for (int id : largeWidgetIds) { public String accountName; public String listName; remoteServiceIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, id); context.startService(remoteServiceIntent); } } } src/org/dmfs/tasks/homescreen/TaskListSelectionFragment.java +2 −7 Original line number Diff line number Diff line Loading @@ -17,12 +17,11 @@ package org.dmfs.tasks.homescreen; import java.util.Collection; import java.util.ArrayList; import org.dmfs.provider.tasks.TaskContract; import org.dmfs.provider.tasks.TaskContract.TaskLists; import org.dmfs.tasks.R; import org.dmfs.tasks.model.TaskList; import org.dmfs.tasks.utils.TasksListCursorAdapter; import org.dmfs.tasks.utils.TasksListCursorAdapter.SelectionEnabledListener; Loading Loading @@ -84,7 +83,6 @@ public class TaskListSelectionFragment extends ListFragment implements LoaderMan super.onAttach(activity); mActivity = activity; mAuthority = getString(R.string.org_dmfs_tasks_authority); } Loading Loading @@ -134,12 +132,10 @@ public class TaskListSelectionFragment extends ListFragment implements LoaderMan mTaskListAdapter.setSelectionEnabledListener(new SelectionEnabledListener() { @Override public void onSelectionEnabled() { mButtonOk.setEnabled(true); } Loading Loading @@ -169,7 +165,6 @@ public class TaskListSelectionFragment extends ListFragment implements LoaderMan public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) { mTaskListAdapter.changeCursor(cursor); } Loading @@ -181,7 +176,7 @@ public class TaskListSelectionFragment extends ListFragment implements LoaderMan public interface onSelectionListener { public void onSelection(Collection<TaskList> selectedLists); public void onSelection(ArrayList<Long> selectedLists); public void onSelectionCancel(); Loading src/org/dmfs/tasks/homescreen/TaskListWidgetProvider.java +12 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import org.dmfs.tasks.R; import org.dmfs.tasks.TaskListActivity; import org.dmfs.tasks.model.TaskFieldAdapters; import org.dmfs.tasks.utils.DueDateFormatter; import org.dmfs.tasks.utils.WidgetConfigurationDatabaseHelper; import android.annotation.TargetApi; import android.app.PendingIntent; Loading Loading @@ -201,4 +202,15 @@ public class TaskListWidgetProvider extends AppWidgetProvider appWidgetManager.updateAppWidget(appWidgetIds[i], widget); } } @Override public void onDeleted(Context context, int[] appWidgetIds) { // Delete configuration WidgetConfigurationDatabaseHelper dbHelper = new WidgetConfigurationDatabaseHelper(context); dbHelper.deleteWidgetConfiguration(appWidgetIds); super.onDeleted(context, appWidgetIds); } } src/org/dmfs/tasks/homescreen/TaskListWidgetProviderLarge.java +12 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ package org.dmfs.tasks.homescreen; import org.dmfs.tasks.R; import org.dmfs.tasks.utils.WidgetConfigurationDatabaseHelper; import android.annotation.TargetApi; import android.appwidget.AppWidgetManager; Loading Loading @@ -64,6 +65,17 @@ public class TaskListWidgetProviderLarge extends TaskListWidgetProvider } @Override public void onDeleted(Context context, int[] appWidgetIds) { // Delete configuration WidgetConfigurationDatabaseHelper dbHelper = new WidgetConfigurationDatabaseHelper(context); dbHelper.deleteWidgetConfiguration(appWidgetIds); super.onDeleted(context, appWidgetIds); } static ComponentName getComponentName(Context context) { return new ComponentName(context, TaskListWidgetProviderLarge.class); Loading Loading
AndroidManifest.xml +2 −1 Original line number Diff line number Diff line Loading @@ -229,7 +229,7 @@ </intent-filter> </receiver> <receiver android:name="org.dmfs.tasks.homescreen.TaskListWidgetUpdaterService$TaskListViewsFactory" android:name="org.dmfs.tasks.homescreen.ProviderChangedBroadcastReceiver" android:enabled="@bool/enable_widget_provider" > <intent-filter> <action android:name="android.intent.action.PROVIDER_CHANGED" /> Loading @@ -246,6 +246,7 @@ android:mimeType="vnd.android.cursor.item/org.dmfs.tasks.tasks" /> </intent-filter> </receiver> <receiver android:name="org.dmfs.provider.tasks.broadcast.AccountsChangeBroadcastReceiver" > <intent-filter> <action android:name="android.accounts.LOGIN_ACCOUNTS_CHANGED" /> Loading
src/org/dmfs/tasks/model/TaskList.java→src/org/dmfs/tasks/homescreen/ProviderChangedBroadcastReceiver.java +63 −0 Original line number Diff line number Diff line /* * * * Copyright (C) 2014 Marten Gajda <marten@dmfs.org> * * Licensed under the Apache License, Version 2.0 (the "License"); Loading @@ -17,15 +15,49 @@ * */ package org.dmfs.tasks.model; package org.dmfs.tasks.homescreen; import android.appwidget.AppWidgetManager; import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.net.Uri; /** * Wrapper class to handle task lists. * Listens for the ProviderChanged broadcast in order to update the app widgets. * * @author Tobias Reinsch <tobias@dmfs.org> * */ public class TaskList public class ProviderChangedBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // update all widgets ComponentName smallProvider = new ComponentName(context, TaskListWidgetProvider.class); int[] smallWidgetIds = AppWidgetManager.getInstance(context).getAppWidgetIds(smallProvider); ComponentName largeProvider = new ComponentName(context, TaskListWidgetProviderLarge.class); int[] largeWidgetIds = AppWidgetManager.getInstance(context).getAppWidgetIds(largeProvider); /** Create an Intent with the {@link RemoteViewsService } and pass it the Widget Id */ Intent remoteServiceIntent = new Intent(context, TaskListWidgetUpdaterService.class); remoteServiceIntent.setData(Uri.parse(remoteServiceIntent.toUri(Intent.URI_INTENT_SCHEME))); for (int id : smallWidgetIds) { remoteServiceIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, id); context.startService(remoteServiceIntent); } for (int id : largeWidgetIds) { public String accountName; public String listName; remoteServiceIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, id); context.startService(remoteServiceIntent); } } }
src/org/dmfs/tasks/homescreen/TaskListSelectionFragment.java +2 −7 Original line number Diff line number Diff line Loading @@ -17,12 +17,11 @@ package org.dmfs.tasks.homescreen; import java.util.Collection; import java.util.ArrayList; import org.dmfs.provider.tasks.TaskContract; import org.dmfs.provider.tasks.TaskContract.TaskLists; import org.dmfs.tasks.R; import org.dmfs.tasks.model.TaskList; import org.dmfs.tasks.utils.TasksListCursorAdapter; import org.dmfs.tasks.utils.TasksListCursorAdapter.SelectionEnabledListener; Loading Loading @@ -84,7 +83,6 @@ public class TaskListSelectionFragment extends ListFragment implements LoaderMan super.onAttach(activity); mActivity = activity; mAuthority = getString(R.string.org_dmfs_tasks_authority); } Loading Loading @@ -134,12 +132,10 @@ public class TaskListSelectionFragment extends ListFragment implements LoaderMan mTaskListAdapter.setSelectionEnabledListener(new SelectionEnabledListener() { @Override public void onSelectionEnabled() { mButtonOk.setEnabled(true); } Loading Loading @@ -169,7 +165,6 @@ public class TaskListSelectionFragment extends ListFragment implements LoaderMan public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) { mTaskListAdapter.changeCursor(cursor); } Loading @@ -181,7 +176,7 @@ public class TaskListSelectionFragment extends ListFragment implements LoaderMan public interface onSelectionListener { public void onSelection(Collection<TaskList> selectedLists); public void onSelection(ArrayList<Long> selectedLists); public void onSelectionCancel(); Loading
src/org/dmfs/tasks/homescreen/TaskListWidgetProvider.java +12 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import org.dmfs.tasks.R; import org.dmfs.tasks.TaskListActivity; import org.dmfs.tasks.model.TaskFieldAdapters; import org.dmfs.tasks.utils.DueDateFormatter; import org.dmfs.tasks.utils.WidgetConfigurationDatabaseHelper; import android.annotation.TargetApi; import android.app.PendingIntent; Loading Loading @@ -201,4 +202,15 @@ public class TaskListWidgetProvider extends AppWidgetProvider appWidgetManager.updateAppWidget(appWidgetIds[i], widget); } } @Override public void onDeleted(Context context, int[] appWidgetIds) { // Delete configuration WidgetConfigurationDatabaseHelper dbHelper = new WidgetConfigurationDatabaseHelper(context); dbHelper.deleteWidgetConfiguration(appWidgetIds); super.onDeleted(context, appWidgetIds); } }
src/org/dmfs/tasks/homescreen/TaskListWidgetProviderLarge.java +12 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ package org.dmfs.tasks.homescreen; import org.dmfs.tasks.R; import org.dmfs.tasks.utils.WidgetConfigurationDatabaseHelper; import android.annotation.TargetApi; import android.appwidget.AppWidgetManager; Loading Loading @@ -64,6 +65,17 @@ public class TaskListWidgetProviderLarge extends TaskListWidgetProvider } @Override public void onDeleted(Context context, int[] appWidgetIds) { // Delete configuration WidgetConfigurationDatabaseHelper dbHelper = new WidgetConfigurationDatabaseHelper(context); dbHelper.deleteWidgetConfiguration(appWidgetIds); super.onDeleted(context, appWidgetIds); } static ComponentName getComponentName(Context context) { return new ComponentName(context, TaskListWidgetProviderLarge.class); Loading