diff --git a/app/src/main/assets/retro-changelog.html b/app/src/main/assets/retro-changelog.html
index 6fdfc4e0d..3e99fcd2b 100644
--- a/app/src/main/assets/retro-changelog.html
+++ b/app/src/main/assets/retro-changelog.html
@@ -69,8 +69,8 @@
v5.7.0
What's New
- - Added new Circle widget
- Added accent color extraction on Android 8.1+ devices
+ - Added new Circle widget
- Added Collapsing appbar to library tabs with an option to switch back to simple appbar
- Added Search tab
diff --git a/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetCircle.kt b/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetCircle.kt
index 98e3da57a..5bd4f6bbf 100644
--- a/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetCircle.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetCircle.kt
@@ -33,6 +33,7 @@ import code.name.monkey.retromusic.service.MusicService
import code.name.monkey.retromusic.service.MusicService.ACTION_TOGGLE_PAUSE
import code.name.monkey.retromusic.service.MusicService.TOGGLE_FAVORITE
import code.name.monkey.retromusic.util.ImageUtil
+import code.name.monkey.retromusic.util.MusicUtil
import code.name.monkey.retromusic.util.PreferenceUtil
import code.name.monkey.retromusic.util.RetroUtil
import com.bumptech.glide.Glide
@@ -41,6 +42,8 @@ import com.bumptech.glide.request.RequestOptions
import com.bumptech.glide.request.target.SimpleTarget
import com.bumptech.glide.request.target.Target
import com.bumptech.glide.request.transition.Transition
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.runBlocking
class AppWidgetCircle : BaseAppWidget() {
private var target: Target? = null // for cancellation
@@ -89,7 +92,9 @@ class AppWidgetCircle : BaseAppWidget() {
), 1f
)
)
- val isFavorite = true
+ val isFavorite = runBlocking(Dispatchers.IO) {
+ return@runBlocking MusicUtil.repository.isSongFavorite(song.id)
+ }
val favoriteRes =
if (isFavorite) R.drawable.ic_favorite else R.drawable.ic_favorite_border
appWidgetView.setImageViewBitmap(
diff --git a/app/src/main/java/code/name/monkey/retromusic/appwidgets/base/BaseAppWidget.kt b/app/src/main/java/code/name/monkey/retromusic/appwidgets/base/BaseAppWidget.kt
index 897203f8e..0e1508757 100644
--- a/app/src/main/java/code/name/monkey/retromusic/appwidgets/base/BaseAppWidget.kt
+++ b/app/src/main/java/code/name/monkey/retromusic/appwidgets/base/BaseAppWidget.kt
@@ -58,7 +58,7 @@ abstract class BaseAppWidget : AppWidgetProvider() {
*/
fun notifyChange(service: MusicService, what: String) {
if (hasInstances(service)) {
- if (META_CHANGED == what || PLAY_STATE_CHANGED == what) {
+ if (META_CHANGED == what || PLAY_STATE_CHANGED == what || FAVORITE_STATE_CHANGED == what) {
performUpdate(service, null)
}
}
diff --git a/app/src/main/java/code/name/monkey/retromusic/service/MusicService.java b/app/src/main/java/code/name/monkey/retromusic/service/MusicService.java
index 6c382e419..f6a246610 100644
--- a/app/src/main/java/code/name/monkey/retromusic/service/MusicService.java
+++ b/app/src/main/java/code/name/monkey/retromusic/service/MusicService.java
@@ -141,6 +141,7 @@ public class MusicService extends MediaBrowserServiceCompat
public static final String META_CHANGED = RETRO_MUSIC_PACKAGE_NAME + ".metachanged";
public static final String QUEUE_CHANGED = RETRO_MUSIC_PACKAGE_NAME + ".queuechanged";
public static final String PLAY_STATE_CHANGED = RETRO_MUSIC_PACKAGE_NAME + ".playstatechanged";
+
public static final String FAVORITE_STATE_CHANGED =
RETRO_MUSIC_PACKAGE_NAME + "favoritestatechanged";
public static final String REPEAT_MODE_CHANGED = RETRO_MUSIC_PACKAGE_NAME + ".repeatmodechanged";
@@ -293,6 +294,7 @@ public class MusicService extends MediaBrowserServiceCompat
public void onReceive(final Context context, final Intent intent) {
playingNotification.updateFavorite(getCurrentSong(), MusicService.this::startForegroundOrNotify);
startForegroundOrNotify();
+ appWidgetCircle.notifyChange(MusicService.this, FAVORITE_STATE_CHANGED);
}
};
private final BroadcastReceiver lockScreenReceiver =
diff --git a/app/src/main/res/layout/app_widget_circle.xml b/app/src/main/res/layout/app_widget_circle.xml
index 1f0b73d6b..9569f525f 100644
--- a/app/src/main/res/layout/app_widget_circle.xml
+++ b/app/src/main/res/layout/app_widget_circle.xml
@@ -23,6 +23,7 @@
android:layout_alignEnd="@+id/image"
android:layout_margin="4dp"
android:background="@drawable/circle_widget_background"
+ android:backgroundTint="?attr/colorSurface"
android:clickable="false"
android:padding="14dp"
android:scaleType="centerInside"
@@ -36,6 +37,7 @@
android:layout_alignBottom="@+id/image"
android:layout_margin="4dp"
android:background="@drawable/widget_button_background"
+ android:backgroundTint="?attr/colorSurface"
android:clickable="false"
android:padding="18dp"
android:scaleType="centerInside"