diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 89573ad0..83bc053c 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -20,6 +20,7 @@
android:label="Vanilla Music 1x1">
+
-
-
-
-
-
diff --git a/res/layout/default_widget.xml b/res/layout/default_widget.xml
deleted file mode 100644
index 5ada747f..00000000
--- a/res/layout/default_widget.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
\ No newline at end of file
diff --git a/res/xml/one_cell_widget.xml b/res/xml/one_cell_widget.xml
index 6a7990b0..98867627 100644
--- a/res/xml/one_cell_widget.xml
+++ b/res/xml/one_cell_widget.xml
@@ -2,5 +2,5 @@
xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="72dip"
android:minHeight="72dip"
- android:initialLayout="@layout/default_widget"
+ android:initialLayout="@layout/one_cell_widget"
/>
\ No newline at end of file
diff --git a/src/org/kreed/vanilla/OneCellWidget.java b/src/org/kreed/vanilla/OneCellWidget.java
index 5ef32eb3..9cb505b2 100644
--- a/src/org/kreed/vanilla/OneCellWidget.java
+++ b/src/org/kreed/vanilla/OneCellWidget.java
@@ -6,6 +6,7 @@ import android.appwidget.AppWidgetProvider;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
+import android.util.Log;
import android.util.TypedValue;
import android.widget.RemoteViews;
@@ -13,34 +14,34 @@ public class OneCellWidget extends AppWidgetProvider {
@Override
public void onUpdate(Context context, AppWidgetManager manager, int[] ids)
{
- reset(context);
- context.sendBroadcast(new Intent(PlaybackService.APPWIDGET_SMALL_UPDATE));
+ Log.i("VanillaMusic", "initial update");
}
- private static void sendUpdate(Context context, RemoteViews views)
+ @Override
+ public void onReceive(Context context, Intent intent)
{
- AppWidgetManager manager = AppWidgetManager.getInstance(context);
- ComponentName widget = new ComponentName(context, OneCellWidget.class);
- manager.updateAppWidget(widget, views);
+ if (PlaybackService.EVENT_CHANGED.equals(intent.getAction())) {
+ Song song = intent.getParcelableExtra("song");
+ boolean playing = intent.getIntExtra("newState", 0) == PlaybackService.STATE_PLAYING;
+ update(context, song, playing);
+ } else {
+ super.onReceive(context, intent);
+ }
}
- public static void update(Context context, Song song)
+ public static void update(Context context, Song song, boolean playing)
{
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.one_cell_widget);
+ ComponentName widget = new ComponentName(context, OneCellWidget.class);
+
views.setOnClickPendingIntent(R.id.play_pause, PendingIntent.getBroadcast(context, 0, new Intent(PlaybackService.TOGGLE_PLAYBACK), 0));
views.setOnClickPendingIntent(R.id.next, PendingIntent.getBroadcast(context, 0, new Intent(PlaybackService.NEXT_SONG), 0));
+
if (song != null) {
int size = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 72, context.getResources().getDisplayMetrics());
views.setImageViewBitmap(R.id.cover_view, CoverView.createMiniBitmap(song, size, size));
}
- sendUpdate(context, views);
- }
-
- public static void reset(Context context)
- {
- RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.default_widget);
- views.setOnClickPendingIntent(R.id.stopped_text, PendingIntent.getService(context, 0, new Intent(context, PlaybackService.class), 0));
- sendUpdate(context, views);
+ AppWidgetManager.getInstance(context).updateAppWidget(widget, views);
}
}
\ No newline at end of file
diff --git a/src/org/kreed/vanilla/PlaybackService.java b/src/org/kreed/vanilla/PlaybackService.java
index d4a93150..200a846a 100644
--- a/src/org/kreed/vanilla/PlaybackService.java
+++ b/src/org/kreed/vanilla/PlaybackService.java
@@ -54,7 +54,6 @@ import android.util.Log;
public class PlaybackService extends Service implements Runnable, MediaPlayer.OnCompletionListener, MediaPlayer.OnErrorListener, SharedPreferences.OnSharedPreferenceChangeListener {
private static final int NOTIFICATION_ID = 2;
- public static final String APPWIDGET_SMALL_UPDATE = "org.kreed.vanilla.action.APPWIDGET_SMALL_UPDATE";
public static final String TOGGLE_PLAYBACK = "org.kreed.vanilla.action.TOGGLE_PLAYBACK";
public static final String NEXT_SONG = "org.kreed.vanilla.action.NEXT_SONG";
@@ -172,8 +171,6 @@ public class PlaybackService extends Service implements Runnable, MediaPlayer.On
}
mNotificationManager.cancel(NOTIFICATION_ID);
- resetWidgets();
-
if (mWakeLock != null && mWakeLock.isHeld())
mWakeLock.release();
}
@@ -240,9 +237,6 @@ public class PlaybackService extends Service implements Runnable, MediaPlayer.On
go(0);
} else if (NEXT_SONG.equals(action)) {
go(1);
- } else if (APPWIDGET_SMALL_UPDATE.equals(intent.getAction())) {
- OneCellWidget.update(PlaybackService.this, getSong(0));
- return;
}
}
};
@@ -336,12 +330,11 @@ public class PlaybackService extends Service implements Runnable, MediaPlayer.On
Song song = new Song(ids[mCurrentSong]);
song.populate();
- if (song.path == null) {
+ if (song.path == null)
stateLoaded = false;
- } else {
+ else
broadcastChange(mState, mState, song);
- updateWidgets(song);
- }
+
ArrayList timeline = new ArrayList(n);
for (int i = 0; i != n; ++i)
@@ -361,9 +354,7 @@ public class PlaybackService extends Service implements Runnable, MediaPlayer.On
if (!stateLoaded) {
retrieveSongs();
mSongTimeline = new ArrayList();
- Song song = getSong(0);
- broadcastChange(mState, mState, song);
- updateWidgets(song);
+ broadcastChange(mState, mState, getSong(0));
}
if (stateLoaded)
@@ -418,7 +409,6 @@ public class PlaybackService extends Service implements Runnable, MediaPlayer.On
filter.addAction(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
filter.addAction(TOGGLE_PLAYBACK);
filter.addAction(NEXT_SONG);
- filter.addAction(APPWIDGET_SMALL_UPDATE);
registerReceiver(mReceiver, filter);
TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
@@ -477,7 +467,6 @@ public class PlaybackService extends Service implements Runnable, MediaPlayer.On
broadcastChange(oldState, state, song);
boolean cancelNotification = updateNotification();
- updateWidgets(song);
if (mState != oldState) {
if (mState == STATE_PLAYING)
@@ -650,16 +639,6 @@ public class PlaybackService extends Service implements Runnable, MediaPlayer.On
return song;
}
- private void updateWidgets(Song song)
- {
- OneCellWidget.update(this, song);
- }
-
- private void resetWidgets()
- {
- OneCellWidget.reset(this);
- }
-
private static final String STATE_FILE = "state";
private static final long STATE_FILE_MAGIC = 0x8a9d3f9fca31L;