From a89cd79fdf3911c14d01b25cfe9ea4361e8deb2e Mon Sep 17 00:00:00 2001 From: Trevor Slocum Date: Fri, 20 Sep 2019 00:06:15 -0700 Subject: [PATCH] Add peset widgets --- .../src/main/AndroidManifest.xml | 52 +++++++++++++--- .../MeditationAssistant.java | 4 +- .../MeditationProvider1.java | 5 -- .../MeditationProvider2.java | 5 -- .../MeditationProvider3.java | 5 -- .../meditationassistant/SettingsActivity.java | 8 +-- ...rovider.java => WidgetPresetProvider.java} | 11 ++-- .../WidgetPresetProvider1.java | 5 ++ .../WidgetPresetProvider2.java | 5 ++ .../WidgetPresetProvider3.java | 5 ++ .../WidgetPresetService.java | 60 +++++++++++++++++++ .../WidgetStreakProvider.java | 48 +++++++++++++++ .../WidgetStreakProvider1.java | 5 ++ .../WidgetStreakProvider2.java | 5 ++ .../WidgetStreakProvider3.java | 5 ++ ...tService.java => WidgetStreakService.java} | 23 +++---- .../src/main/res/layout/widget_preset.xml | 26 ++++++++ .../{widget_layout.xml => widget_streak.xml} | 4 +- .../src/main/res/values/strings.xml | 9 ++- .../src/main/res/xml/widget_preset_1.xml | 13 ++++ .../src/main/res/xml/widget_preset_2.xml | 13 ++++ .../src/main/res/xml/widget_preset_3.xml | 13 ++++ .../xml/{widget_1.xml => widget_streak_1.xml} | 2 +- .../xml/{widget_2.xml => widget_streak_2.xml} | 2 +- .../xml/{widget_3.xml => widget_streak_3.xml} | 2 +- 25 files changed, 281 insertions(+), 54 deletions(-) delete mode 100644 MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/MeditationProvider1.java delete mode 100644 MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/MeditationProvider2.java delete mode 100644 MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/MeditationProvider3.java rename MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/{MeditationProvider.java => WidgetPresetProvider.java} (80%) create mode 100644 MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/WidgetPresetProvider1.java create mode 100644 MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/WidgetPresetProvider2.java create mode 100644 MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/WidgetPresetProvider3.java create mode 100644 MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/WidgetPresetService.java create mode 100644 MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/WidgetStreakProvider.java create mode 100644 MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/WidgetStreakProvider1.java create mode 100644 MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/WidgetStreakProvider2.java create mode 100644 MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/WidgetStreakProvider3.java rename MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/{WidgetService.java => WidgetStreakService.java} (76%) create mode 100644 MeditationAssistant/src/main/res/layout/widget_preset.xml rename MeditationAssistant/src/main/res/layout/{widget_layout.xml => widget_streak.xml} (91%) create mode 100644 MeditationAssistant/src/main/res/xml/widget_preset_1.xml create mode 100644 MeditationAssistant/src/main/res/xml/widget_preset_2.xml create mode 100644 MeditationAssistant/src/main/res/xml/widget_preset_3.xml rename MeditationAssistant/src/main/res/xml/{widget_1.xml => widget_streak_1.xml} (86%) rename MeditationAssistant/src/main/res/xml/{widget_2.xml => widget_streak_2.xml} (87%) rename MeditationAssistant/src/main/res/xml/{widget_3.xml => widget_streak_3.xml} (87%) diff --git a/MeditationAssistant/src/main/AndroidManifest.xml b/MeditationAssistant/src/main/AndroidManifest.xml index 0663408..fc4d9fe 100644 --- a/MeditationAssistant/src/main/AndroidManifest.xml +++ b/MeditationAssistant/src/main/AndroidManifest.xml @@ -53,7 +53,7 @@ + android:name=".WidgetPresetProvider1" + android:label="@string/widgetpreset1x1"> + android:resource="@xml/widget_preset_1" /> + android:name=".WidgetPresetProvider2" + android:label="@string/widgetpreset2x1"> + android:resource="@xml/widget_preset_2" /> - + + + + + + + + + + + + + + + + + + + + + + + 0) { + for (int widgetId : allWidgetIds) { + RemoteViews updateViews = new RemoteViews(this.getPackageName(), + R.layout.widget_preset); + + Log.d("MA", "Update view class " + updateViews.getClass()); + + MeditationAssistant ma = (MeditationAssistant) this + .getApplication(); + + updateViews.setTextColor(R.id.txtWidgetPresetText, ma.getPrefs().getInt("pref_widgetcolor", -16777216)); + + String label = ma.getPrefs().getString("pref_preset_1_label", ""); + if (label.equals("")) { + label = "Preset"; + } + // TODO: How to identify different preset widgets? + updateViews.setTextViewText(R.id.txtWidgetPresetText, label); + + Intent clickintent = new Intent(getApplicationContext(), MainActivity.class); + clickintent.setAction("widgetclick"); + PendingIntent pendingIntent = PendingIntent.getActivity( + getApplicationContext(), 0, clickintent, 0); + updateViews.setOnClickPendingIntent(R.id.layWidget, pendingIntent); + updateViews.setOnClickPendingIntent(R.id.txtWidgetPresetText, pendingIntent); + + appWidgetManager.updateAppWidget(widgetId, updateViews); + } + } + + return START_STICKY; + } +} diff --git a/MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/WidgetStreakProvider.java b/MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/WidgetStreakProvider.java new file mode 100644 index 0000000..bd37fe5 --- /dev/null +++ b/MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/WidgetStreakProvider.java @@ -0,0 +1,48 @@ +package sh.ftp.rocketninelabs.meditationassistant; + +import android.appwidget.AppWidgetManager; +import android.appwidget.AppWidgetProvider; +import android.content.ComponentName; +import android.content.Context; +import android.content.Intent; +import android.util.Log; + +public class WidgetStreakProvider extends AppWidgetProvider { + + private int[] mergeInts(int[] arg1, int[] arg2) { + int[] result = new int[arg1.length + arg2.length]; + System.arraycopy(arg1, 0, result, 0, arg1.length); + System.arraycopy(arg2, 0, result, arg1.length, arg2.length); + return result; + } + + @Override + public void onEnabled(Context context) { + Log.d("MeditationAssistant", "Widget onEnabled"); + super.onEnabled(context); + } + + @Override + public void onReceive(Context context, Intent intent) { + super.onReceive(context, intent); + + if (intent != null && intent.getAction() != null && intent.getAction().equals(AppWidgetManager.ACTION_APPWIDGET_UPDATE)) { + AppWidgetManager gm = AppWidgetManager.getInstance(context); + int[] ids = gm.getAppWidgetIds(new ComponentName(context, WidgetStreakProvider.class)); + ids = mergeInts(ids, gm.getAppWidgetIds(new ComponentName(context, WidgetStreakProvider1.class))); + ids = mergeInts(ids, gm.getAppWidgetIds(new ComponentName(context, WidgetStreakProvider2.class))); + ids = mergeInts(ids, gm.getAppWidgetIds(new ComponentName(context, WidgetStreakProvider3.class))); + + onUpdate(context, gm, ids); + } + } + + @Override + public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { + Intent intent = new Intent(context, WidgetStreakService.class); + intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds); + context.startService(intent); + + super.onUpdate(context, appWidgetManager, appWidgetIds); + } +} diff --git a/MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/WidgetStreakProvider1.java b/MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/WidgetStreakProvider1.java new file mode 100644 index 0000000..7964e45 --- /dev/null +++ b/MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/WidgetStreakProvider1.java @@ -0,0 +1,5 @@ +package sh.ftp.rocketninelabs.meditationassistant; + +public class WidgetStreakProvider1 extends WidgetStreakProvider { + +} diff --git a/MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/WidgetStreakProvider2.java b/MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/WidgetStreakProvider2.java new file mode 100644 index 0000000..3eaf65a --- /dev/null +++ b/MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/WidgetStreakProvider2.java @@ -0,0 +1,5 @@ +package sh.ftp.rocketninelabs.meditationassistant; + +public class WidgetStreakProvider2 extends WidgetStreakProvider { + +} diff --git a/MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/WidgetStreakProvider3.java b/MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/WidgetStreakProvider3.java new file mode 100644 index 0000000..698f4d4 --- /dev/null +++ b/MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/WidgetStreakProvider3.java @@ -0,0 +1,5 @@ +package sh.ftp.rocketninelabs.meditationassistant; + +public class WidgetStreakProvider3 extends WidgetStreakProvider { + +} diff --git a/MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/WidgetService.java b/MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/WidgetStreakService.java similarity index 76% rename from MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/WidgetService.java rename to MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/WidgetStreakService.java index 59f08ba..ac9e627 100644 --- a/MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/WidgetService.java +++ b/MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/WidgetStreakService.java @@ -8,7 +8,7 @@ import android.os.IBinder; import android.util.Log; import android.widget.RemoteViews; -public class WidgetService extends Service { +public class WidgetStreakService extends Service { public IBinder onBind(Intent intent) { return null; } @@ -28,28 +28,29 @@ public class WidgetService extends Service { if (allWidgetIds != null && allWidgetIds.length > 0) { for (int widgetId : allWidgetIds) { RemoteViews updateViews = new RemoteViews(this.getPackageName(), - R.layout.widget_layout); - getApplication(); + R.layout.widget_streak); + + Log.d("MA", "Update view class " + updateViews.getClass()); MeditationAssistant ma = (MeditationAssistant) this .getApplication(); - updateViews.setTextColor(R.id.txtWidgetDays, ma.getPrefs().getInt("pref_widgetcolor", -16777216)); - updateViews.setTextColor(R.id.txtWidgetText, ma.getPrefs().getInt("pref_widgetcolor", -16777216)); + updateViews.setTextColor(R.id.txtWidgetStreakDays, ma.getPrefs().getInt("pref_widgetcolor", -16777216)); + updateViews.setTextColor(R.id.txtWidgetStreakText, ma.getPrefs().getInt("pref_widgetcolor", -16777216)); if (ma.getMeditationStreak().get(0) > 0) { - updateViews.setTextViewText(R.id.txtWidgetDays, + updateViews.setTextViewText(R.id.txtWidgetStreakDays, String.valueOf(ma.getMeditationStreak().get(0))); updateViews.setTextViewText( - R.id.txtWidgetText, + R.id.txtWidgetStreakText, getResources().getQuantityString( R.plurals.daysOfMeditationWithoutCount, ma.getMeditationStreak().get(0).intValue()) ); } else { - updateViews.setTextViewText(R.id.txtWidgetDays, + updateViews.setTextViewText(R.id.txtWidgetStreakDays, getString(R.string.ignore_om)); - updateViews.setTextViewText(R.id.txtWidgetText, + updateViews.setTextViewText(R.id.txtWidgetStreakText, getString(R.string.meditateToday)); } @@ -58,8 +59,8 @@ public class WidgetService extends Service { PendingIntent pendingIntent = PendingIntent.getActivity( getApplicationContext(), 0, clickintent, 0); updateViews.setOnClickPendingIntent(R.id.layWidget, pendingIntent); - updateViews.setOnClickPendingIntent(R.id.txtWidgetDays, pendingIntent); - updateViews.setOnClickPendingIntent(R.id.txtWidgetText, pendingIntent); + updateViews.setOnClickPendingIntent(R.id.txtWidgetStreakDays, pendingIntent); + updateViews.setOnClickPendingIntent(R.id.txtWidgetStreakText, pendingIntent); appWidgetManager.updateAppWidget(widgetId, updateViews); } diff --git a/MeditationAssistant/src/main/res/layout/widget_preset.xml b/MeditationAssistant/src/main/res/layout/widget_preset.xml new file mode 100644 index 0000000..c39843a --- /dev/null +++ b/MeditationAssistant/src/main/res/layout/widget_preset.xml @@ -0,0 +1,26 @@ + + + + + + + + \ No newline at end of file diff --git a/MeditationAssistant/src/main/res/layout/widget_layout.xml b/MeditationAssistant/src/main/res/layout/widget_streak.xml similarity index 91% rename from MeditationAssistant/src/main/res/layout/widget_layout.xml rename to MeditationAssistant/src/main/res/layout/widget_streak.xml index 683525a..9747d5b 100644 --- a/MeditationAssistant/src/main/res/layout/widget_layout.xml +++ b/MeditationAssistant/src/main/res/layout/widget_streak.xml @@ -12,7 +12,7 @@ android:orientation="horizontal"> Are you interested in assisting with translating Meditation Assistant? - Meditation Assistant 1x1 - Meditation Assistant 2x1 - Meditation Assistant 3x1 + Preset 1x1 + Preset 2x1 + Preset 3x1 + Streak 1x1 + Streak 2x1 + Streak 3x1 Feature packed meditation session timer and recorder - Automatic device mode while meditating. diff --git a/MeditationAssistant/src/main/res/xml/widget_preset_1.xml b/MeditationAssistant/src/main/res/xml/widget_preset_1.xml new file mode 100644 index 0000000..ea16ac9 --- /dev/null +++ b/MeditationAssistant/src/main/res/xml/widget_preset_1.xml @@ -0,0 +1,13 @@ + + + + \ No newline at end of file diff --git a/MeditationAssistant/src/main/res/xml/widget_preset_2.xml b/MeditationAssistant/src/main/res/xml/widget_preset_2.xml new file mode 100644 index 0000000..c3bf6ca --- /dev/null +++ b/MeditationAssistant/src/main/res/xml/widget_preset_2.xml @@ -0,0 +1,13 @@ + + + + \ No newline at end of file diff --git a/MeditationAssistant/src/main/res/xml/widget_preset_3.xml b/MeditationAssistant/src/main/res/xml/widget_preset_3.xml new file mode 100644 index 0000000..21ec128 --- /dev/null +++ b/MeditationAssistant/src/main/res/xml/widget_preset_3.xml @@ -0,0 +1,13 @@ + + + + \ No newline at end of file diff --git a/MeditationAssistant/src/main/res/xml/widget_1.xml b/MeditationAssistant/src/main/res/xml/widget_streak_1.xml similarity index 86% rename from MeditationAssistant/src/main/res/xml/widget_1.xml rename to MeditationAssistant/src/main/res/xml/widget_streak_1.xml index f5a0d39..59f67db 100644 --- a/MeditationAssistant/src/main/res/xml/widget_1.xml +++ b/MeditationAssistant/src/main/res/xml/widget_streak_1.xml @@ -1,7 +1,7 @@