diff options
author | Daniel Bailey <daniel.bailey@grappleIT.co.uk> | 2018-09-21 19:04:08 +0300 |
---|---|---|
committer | Niedermann IT-Dienstleistungen <stefan-niedermann@users.noreply.github.com> | 2018-09-24 15:38:09 +0300 |
commit | b5ca773e21c579aac0cb50310b4cd05c68bf0368 (patch) | |
tree | 98b834c7a3476531f75c28e57766eecd37476c89 /app/src | |
parent | 831ce86deda013a00e3c274afa8d80dd73e31984 (diff) |
Appwidgets' onUpdate and onReceive functions will call updateAppWidget
when making any updates.
Diffstat (limited to 'app/src')
-rw-r--r-- | app/src/main/java/it/niedermann/owncloud/notes/android/appwidget/NoteListWidget.java | 27 | ||||
-rw-r--r-- | app/src/main/java/it/niedermann/owncloud/notes/android/appwidget/SingleNoteWidget.java | 71 |
2 files changed, 43 insertions, 55 deletions
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/android/appwidget/NoteListWidget.java b/app/src/main/java/it/niedermann/owncloud/notes/android/appwidget/NoteListWidget.java index 4050d505..55f95d67 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/android/appwidget/NoteListWidget.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/android/appwidget/NoteListWidget.java @@ -24,10 +24,7 @@ public class NoteListWidget extends AppWidgetProvider { public static final int NLW_DISPLAY_CATEGORY = 2; private static boolean darkTheme; - @Override - public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { - super.onUpdate(context, appWidgetManager, appWidgetIds); - + static void updateAppWidget(Context context, AppWidgetManager awm, int[] appWidgetIds) { RemoteViews views; for (int appWidgetId : appWidgetIds) { @@ -88,24 +85,26 @@ public class NoteListWidget extends AppWidgetProvider { views.setEmptyView(R.id.note_list_widget_lv, R.id.widget_note_list_placeholder_tv); } - appWidgetManager.updateAppWidget(appWidgetId, views); + awm.updateAppWidget(appWidgetId, views); } } @Override + public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { + super.onUpdate(context, appWidgetManager, appWidgetIds); + updateAppWidget(context, appWidgetManager, appWidgetIds); + } + + @Override public void onReceive(Context context, Intent intent) { super.onReceive(context, intent); - AppWidgetManager awm = AppWidgetManager.getInstance(context); - int appWidgetIds[] = awm.getAppWidgetIds(new ComponentName(context, NoteListWidget.class)); - for (int appWidgetId : appWidgetIds) { - if (intent.getAction().equals(awm.ACTION_APPWIDGET_UPDATE)) { - if (darkTheme) { - awm.notifyAppWidgetViewDataChanged(appWidgetId, R.id.note_list_widget_lv_dark); - } else { - awm.notifyAppWidgetViewDataChanged(appWidgetId, R.id.note_list_widget_lv); - } + if (intent.getAction().equals(awm.ACTION_APPWIDGET_UPDATE)) { + if (intent.hasExtra(AppWidgetManager.EXTRA_APPWIDGET_ID)) { + updateAppWidget(context, awm, new int[] { intent.getExtras().getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, -1) }); + } else { + updateAppWidget(context, awm, awm.getAppWidgetIds(new ComponentName(context, NoteListWidget.class))); } } } diff --git a/app/src/main/java/it/niedermann/owncloud/notes/android/appwidget/SingleNoteWidget.java b/app/src/main/java/it/niedermann/owncloud/notes/android/appwidget/SingleNoteWidget.java index 73de2914..f1feaf1a 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/android/appwidget/SingleNoteWidget.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/android/appwidget/SingleNoteWidget.java @@ -20,68 +20,57 @@ public class SingleNoteWidget extends AppWidgetProvider { public static final String DARK_THEME_KEY = "SNW_darkTheme"; public static final String WIDGET_KEY = "single_note_widget"; - static void updateAppWidget(Context context, AppWidgetManager awm, int appWidgetId) { + static void updateAppWidget(Context context, AppWidgetManager awm, int[] appWidgetIds) { SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context); Intent templateIntent = new Intent(context, EditNoteActivity.class); templateIntent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); - // onUpdate has been triggered before the user finished configuring the widget - if ((sp.getLong(WIDGET_KEY + appWidgetId, -1)) == -1) { - return; - } + for (int appWidgetId : appWidgetIds) { + // onUpdate has been triggered before the user finished configuring the widget + if ((sp.getLong(WIDGET_KEY + appWidgetId, -1)) == -1) { + return; + } - darkTheme = sp.getBoolean(DARK_THEME_KEY + appWidgetId, false); + darkTheme = sp.getBoolean(DARK_THEME_KEY + appWidgetId, false); - PendingIntent templatePendingIntent = PendingIntent.getActivity(context, appWidgetId, templateIntent, - PendingIntent.FLAG_UPDATE_CURRENT); + PendingIntent templatePendingIntent = PendingIntent.getActivity(context, appWidgetId, templateIntent, + PendingIntent.FLAG_UPDATE_CURRENT); - Intent serviceIntent = new Intent(context, SingleNoteWidgetService.class); - serviceIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); - serviceIntent.setData(Uri.parse(serviceIntent.toUri(Intent.URI_INTENT_SCHEME))); + Intent serviceIntent = new Intent(context, SingleNoteWidgetService.class); + serviceIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); + serviceIntent.setData(Uri.parse(serviceIntent.toUri(Intent.URI_INTENT_SCHEME))); - RemoteViews views; + RemoteViews views; - if (darkTheme) { - views = new RemoteViews(context.getPackageName(), R.layout.widget_single_note_dark); - views.setPendingIntentTemplate(R.id.single_note_widget_lv_dark, templatePendingIntent); - views.setRemoteAdapter(R.id.single_note_widget_lv_dark, serviceIntent); - views.setEmptyView(R.id.single_note_widget_lv_dark, R.id.widget_single_note_placeholder_tv_dark); - } else { - views = new RemoteViews(context.getPackageName(), R.layout.widget_single_note); - views.setPendingIntentTemplate(R.id.single_note_widget_lv, templatePendingIntent); - views.setRemoteAdapter(R.id.single_note_widget_lv, serviceIntent); - views.setEmptyView(R.id.single_note_widget_lv, R.id.widget_single_note_placeholder_tv); - } + if (darkTheme) { + views = new RemoteViews(context.getPackageName(), R.layout.widget_single_note_dark); + views.setPendingIntentTemplate(R.id.single_note_widget_lv_dark, templatePendingIntent); + views.setRemoteAdapter(R.id.single_note_widget_lv_dark, serviceIntent); + views.setEmptyView(R.id.single_note_widget_lv_dark, R.id.widget_single_note_placeholder_tv_dark); + } else { + views = new RemoteViews(context.getPackageName(), R.layout.widget_single_note); + views.setPendingIntentTemplate(R.id.single_note_widget_lv, templatePendingIntent); + views.setRemoteAdapter(R.id.single_note_widget_lv, serviceIntent); + views.setEmptyView(R.id.single_note_widget_lv, R.id.widget_single_note_placeholder_tv); + } - awm.updateAppWidget(appWidgetId, views); + awm.updateAppWidget(appWidgetId, views); + } } @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { - for (int appWidgetId : appWidgetIds) { - updateAppWidget(context, appWidgetManager, appWidgetId); - } - super.onUpdate(context, appWidgetManager, appWidgetIds); + updateAppWidget(context, appWidgetManager, appWidgetIds); } @Override public void onReceive(Context context, Intent intent) { + super.onReceive(context, intent); AppWidgetManager awm = AppWidgetManager.getInstance(context); - int ids[] = awm.getAppWidgetIds(new ComponentName(context, - SingleNoteWidget.class)); - - for (int appWidgetId : ids) { - if (intent.getAction().equals(awm.ACTION_APPWIDGET_UPDATE)) { - if (darkTheme) { - awm.notifyAppWidgetViewDataChanged(appWidgetId, R.id.single_note_widget_lv_dark); - } else { - awm.notifyAppWidgetViewDataChanged(appWidgetId, R.id.single_note_widget_lv); - } - } - } - super.onReceive(context, intent); + updateAppWidget(context, AppWidgetManager.getInstance(context), + (awm.getAppWidgetIds(new ComponentName(context, SingleNoteWidget.class)))); } @Override |