diff options
author | Scott Jackson <daneren2005@gmail.com> | 2013-05-17 19:49:43 -0700 |
---|---|---|
committer | Scott Jackson <daneren2005@gmail.com> | 2013-05-17 19:49:43 -0700 |
commit | 60a8fcaf8ece49d7ca6fcfda792f8935380d0223 (patch) | |
tree | 08956293fa27ed38bc99f9f596043c6f9dbf9523 /subsonic-android/src | |
parent | 5838e895af7df225caa1b5f43cfe668102fbe3de (diff) | |
download | dsub-60a8fcaf8ece49d7ca6fcfda792f8935380d0223.tar.gz dsub-60a8fcaf8ece49d7ca6fcfda792f8935380d0223.tar.bz2 dsub-60a8fcaf8ece49d7ca6fcfda792f8935380d0223.zip |
Added a 4x2 widget
Diffstat (limited to 'subsonic-android/src')
4 files changed, 93 insertions, 13 deletions
diff --git a/subsonic-android/src/github/daneren2005/dsub/provider/DSubWidget4x1.java b/subsonic-android/src/github/daneren2005/dsub/provider/DSubWidget4x1.java new file mode 100644 index 00000000..5461d076 --- /dev/null +++ b/subsonic-android/src/github/daneren2005/dsub/provider/DSubWidget4x1.java @@ -0,0 +1,30 @@ +/*
+ This file is part of Subsonic.
+
+ Subsonic is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Subsonic is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Subsonic. If not, see <http://www.gnu.org/licenses/>.
+
+ Copyright 2010 (C) Sindre Mehus
+ */
+package github.daneren2005.dsub.provider;
+
+import android.appwidget.AppWidgetManager;
+import android.content.Context;
+import github.daneren2005.dsub.R;
+
+public class DSubWidget4x1 extends DSubWidgetProvider {
+ @Override
+ protected int getLayout() {
+ return R.layout.appwidget4x1;
+ }
+}
diff --git a/subsonic-android/src/github/daneren2005/dsub/provider/DSubWidget4x2.java b/subsonic-android/src/github/daneren2005/dsub/provider/DSubWidget4x2.java new file mode 100644 index 00000000..376a3084 --- /dev/null +++ b/subsonic-android/src/github/daneren2005/dsub/provider/DSubWidget4x2.java @@ -0,0 +1,30 @@ +/*
+ This file is part of Subsonic.
+
+ Subsonic is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Subsonic is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Subsonic. If not, see <http://www.gnu.org/licenses/>.
+
+ Copyright 2010 (C) Sindre Mehus
+ */
+package github.daneren2005.dsub.provider;
+
+import android.appwidget.AppWidgetManager;
+import android.content.Context;
+import github.daneren2005.dsub.R;
+
+public class DSubWidget4x2 extends DSubWidgetProvider {
+ @Override
+ protected int getLayout() {
+ return R.layout.appwidget4x2;
+ }
+}
diff --git a/subsonic-android/src/github/daneren2005/dsub/provider/DSubWidgetProvider.java b/subsonic-android/src/github/daneren2005/dsub/provider/DSubWidgetProvider.java index c61e215a..be91fe17 100644 --- a/subsonic-android/src/github/daneren2005/dsub/provider/DSubWidgetProvider.java +++ b/subsonic-android/src/github/daneren2005/dsub/provider/DSubWidgetProvider.java @@ -45,6 +45,7 @@ import github.daneren2005.dsub.service.DownloadService; import github.daneren2005.dsub.service.DownloadServiceImpl; import github.daneren2005.dsub.util.Constants; import github.daneren2005.dsub.util.FileUtil; +import java.util.HashMap; /** * Simple widget to show currently playing album art along @@ -55,21 +56,30 @@ import github.daneren2005.dsub.util.FileUtil; * @author Sindre Mehus */ public class DSubWidgetProvider extends AppWidgetProvider { - - private static DSubWidgetProvider instance; private static final String TAG = DSubWidgetProvider.class.getSimpleName(); + private static DSubWidget4x1 instance4x1; + private static DSubWidget4x2 instance4x2; - public static synchronized DSubWidgetProvider getInstance() { - if (instance == null) { - instance = new DSubWidgetProvider(); - } - return instance; - } + public static synchronized void notifyInstances(Context context, DownloadService service, boolean playing) { + if(instance4x1 == null) { + instance4x1 = new DSubWidget4x1(); + } + if(instance4x2 == null) { + instance4x2 = new DSubWidget4x2(); + } + + instance4x1.notifyChange(context, service, playing); + instance4x2.notifyChange(context, service, playing); + } @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { defaultAppWidget(context, appWidgetIds); } + + protected int getLayout() { + return 0; + } /** * Initialize given widgets to default state, where we launch Subsonic on default click @@ -77,9 +87,12 @@ public class DSubWidgetProvider extends AppWidgetProvider { */ private void defaultAppWidget(Context context, int[] appWidgetIds) { final Resources res = context.getResources(); - final RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.appwidget); + final RemoteViews views = new RemoteViews(context.getPackageName(), getLayout()); views.setTextViewText(R.id.artist, res.getText(R.string.widget_initial_text)); + if(getLayout() != R.layout.appwidget4x1) { + views.setTextViewText(R.id.album, ""); + } linkButtons(context, views, false); pushUpdate(context, appWidgetIds, views); @@ -118,11 +131,12 @@ public class DSubWidgetProvider extends AppWidgetProvider { */ private void performUpdate(Context context, DownloadService service, int[] appWidgetIds, boolean playing) { final Resources res = context.getResources(); - final RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.appwidget); + final RemoteViews views = new RemoteViews(context.getPackageName(), getLayout()); MusicDirectory.Entry currentPlaying = service.getCurrentPlaying() == null ? null : service.getCurrentPlaying().getSong(); String title = currentPlaying == null ? null : currentPlaying.getTitle(); CharSequence artist = currentPlaying == null ? null : currentPlaying.getArtist(); + CharSequence album = currentPlaying == null ? null : currentPlaying.getAlbum(); CharSequence errorState = null; // Show error message? @@ -140,11 +154,17 @@ public class DSubWidgetProvider extends AppWidgetProvider { // Show error state to user views.setTextViewText(R.id.title,null); views.setTextViewText(R.id.artist, errorState); - views.setImageViewResource(R.id.appwidget_coverart, R.drawable.appwidget_art_default); + views.setTextViewText(R.id.album, ""); + if(getLayout() != R.layout.appwidget4x1) { + views.setImageViewResource(R.id.appwidget_coverart, R.drawable.appwidget_art_default); + } } else { // No error, so show normal titles views.setTextViewText(R.id.title, title); views.setTextViewText(R.id.artist, artist); + if(getLayout() != R.layout.appwidget4x1) { + views.setTextViewText(R.id.album, album); + } } // Set correct drawable for pause state diff --git a/subsonic-android/src/github/daneren2005/dsub/util/Util.java b/subsonic-android/src/github/daneren2005/dsub/util/Util.java index 43aad67b..48cb7276 100644 --- a/subsonic-android/src/github/daneren2005/dsub/util/Util.java +++ b/subsonic-android/src/github/daneren2005/dsub/util/Util.java @@ -672,7 +672,7 @@ public final class Util { }); // Update widget - DSubWidgetProvider.getInstance().notifyChange(context, downloadService, true); + DSubWidgetProvider.notifyInstances(context, downloadService, true); } private static void setupViews(RemoteViews rv, Context context, MusicDirectory.Entry song, boolean playing){ @@ -754,7 +754,7 @@ public final class Util { }); // Update widget - DSubWidgetProvider.getInstance().notifyChange(context, downloadService, false); + DSubWidgetProvider.notifyInstances(context, downloadService, false); } public static void sleepQuietly(long millis) { |