Fixed favorite button in Circle widget

This commit is contained in:
Prathamesh More 2022-01-24 14:33:08 +05:30
parent 2557b6950b
commit c96dad999a
5 changed files with 12 additions and 3 deletions

View file

@ -69,8 +69,8 @@
<h2>v5.7.0</h2> <h2>v5.7.0</h2>
<h3>What's New</h3> <h3>What's New</h3>
<ul> <ul>
<li>Added new Circle widget</li>
<li>Added accent color extraction on Android 8.1+ devices</li> <li>Added accent color extraction on Android 8.1+ devices</li>
<li>Added new Circle widget</li>
<li>Added Collapsing appbar to library tabs with an option to switch back to simple appbar <li>Added Collapsing appbar to library tabs with an option to switch back to simple appbar
</li> </li>
<li>Added Search tab</li> <li>Added Search tab</li>

View file

@ -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.ACTION_TOGGLE_PAUSE
import code.name.monkey.retromusic.service.MusicService.TOGGLE_FAVORITE import code.name.monkey.retromusic.service.MusicService.TOGGLE_FAVORITE
import code.name.monkey.retromusic.util.ImageUtil 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.PreferenceUtil
import code.name.monkey.retromusic.util.RetroUtil import code.name.monkey.retromusic.util.RetroUtil
import com.bumptech.glide.Glide 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.SimpleTarget
import com.bumptech.glide.request.target.Target import com.bumptech.glide.request.target.Target
import com.bumptech.glide.request.transition.Transition import com.bumptech.glide.request.transition.Transition
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.runBlocking
class AppWidgetCircle : BaseAppWidget() { class AppWidgetCircle : BaseAppWidget() {
private var target: Target<BitmapPaletteWrapper>? = null // for cancellation private var target: Target<BitmapPaletteWrapper>? = null // for cancellation
@ -89,7 +92,9 @@ class AppWidgetCircle : BaseAppWidget() {
), 1f ), 1f
) )
) )
val isFavorite = true val isFavorite = runBlocking(Dispatchers.IO) {
return@runBlocking MusicUtil.repository.isSongFavorite(song.id)
}
val favoriteRes = val favoriteRes =
if (isFavorite) R.drawable.ic_favorite else R.drawable.ic_favorite_border if (isFavorite) R.drawable.ic_favorite else R.drawable.ic_favorite_border
appWidgetView.setImageViewBitmap( appWidgetView.setImageViewBitmap(

View file

@ -58,7 +58,7 @@ abstract class BaseAppWidget : AppWidgetProvider() {
*/ */
fun notifyChange(service: MusicService, what: String) { fun notifyChange(service: MusicService, what: String) {
if (hasInstances(service)) { 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) performUpdate(service, null)
} }
} }

View file

@ -141,6 +141,7 @@ public class MusicService extends MediaBrowserServiceCompat
public static final String META_CHANGED = RETRO_MUSIC_PACKAGE_NAME + ".metachanged"; 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 QUEUE_CHANGED = RETRO_MUSIC_PACKAGE_NAME + ".queuechanged";
public static final String PLAY_STATE_CHANGED = RETRO_MUSIC_PACKAGE_NAME + ".playstatechanged"; public static final String PLAY_STATE_CHANGED = RETRO_MUSIC_PACKAGE_NAME + ".playstatechanged";
public static final String FAVORITE_STATE_CHANGED = public static final String FAVORITE_STATE_CHANGED =
RETRO_MUSIC_PACKAGE_NAME + "favoritestatechanged"; RETRO_MUSIC_PACKAGE_NAME + "favoritestatechanged";
public static final String REPEAT_MODE_CHANGED = RETRO_MUSIC_PACKAGE_NAME + ".repeatmodechanged"; 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) { public void onReceive(final Context context, final Intent intent) {
playingNotification.updateFavorite(getCurrentSong(), MusicService.this::startForegroundOrNotify); playingNotification.updateFavorite(getCurrentSong(), MusicService.this::startForegroundOrNotify);
startForegroundOrNotify(); startForegroundOrNotify();
appWidgetCircle.notifyChange(MusicService.this, FAVORITE_STATE_CHANGED);
} }
}; };
private final BroadcastReceiver lockScreenReceiver = private final BroadcastReceiver lockScreenReceiver =

View file

@ -23,6 +23,7 @@
android:layout_alignEnd="@+id/image" android:layout_alignEnd="@+id/image"
android:layout_margin="4dp" android:layout_margin="4dp"
android:background="@drawable/circle_widget_background" android:background="@drawable/circle_widget_background"
android:backgroundTint="?attr/colorSurface"
android:clickable="false" android:clickable="false"
android:padding="14dp" android:padding="14dp"
android:scaleType="centerInside" android:scaleType="centerInside"
@ -36,6 +37,7 @@
android:layout_alignBottom="@+id/image" android:layout_alignBottom="@+id/image"
android:layout_margin="4dp" android:layout_margin="4dp"
android:background="@drawable/widget_button_background" android:background="@drawable/widget_button_background"
android:backgroundTint="?attr/colorSurface"
android:clickable="false" android:clickable="false"
android:padding="18dp" android:padding="18dp"
android:scaleType="centerInside" android:scaleType="centerInside"