mirror of
https://github.com/antebudimir/tempus.git
synced 2025-12-31 09:33:33 +00:00
feat: added preference to disable heart and show shuffle instead
This commit is contained in:
parent
791190f681
commit
9a64eeabe6
5 changed files with 53 additions and 24 deletions
|
|
@ -117,6 +117,7 @@ public class SettingsFragment extends PreferenceFragmentCompat {
|
|||
actionDeleteDownloadStorage();
|
||||
actionKeepScreenOn();
|
||||
actionAutoDownloadLyrics();
|
||||
actionMiniPlayerHeart();
|
||||
|
||||
bindMediaService();
|
||||
actionAppEqualizer();
|
||||
|
|
@ -358,6 +359,21 @@ public class SettingsFragment extends PreferenceFragmentCompat {
|
|||
});
|
||||
}
|
||||
|
||||
private void actionMiniPlayerHeart() {
|
||||
SwitchPreference preference = findPreference("mini_shuffle_button_visibility");
|
||||
if (preference == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
preference.setChecked(Preferences.showShuffleInsteadOfHeart());
|
||||
preference.setOnPreferenceChangeListener((pref, newValue) -> {
|
||||
if (newValue instanceof Boolean) {
|
||||
Preferences.setShuffleInsteadOfHeart((Boolean) newValue);
|
||||
}
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
private void actionAutoDownloadLyrics() {
|
||||
SwitchPreference preference = findPreference("auto_download_lyrics");
|
||||
if (preference == null) {
|
||||
|
|
|
|||
|
|
@ -73,6 +73,7 @@ object Preferences {
|
|||
private const val LAST_INSTANT_MIX = "last_instant_mix"
|
||||
private const val EQUALIZER_ENABLED = "equalizer_enabled"
|
||||
private const val EQUALIZER_BAND_LEVELS = "equalizer_band_levels"
|
||||
private const val MINI_SHUFFLE_BUTTON_VISIBILITY = "mini_shuffle_button_visibility"
|
||||
|
||||
@JvmStatic
|
||||
fun getServer(): String? {
|
||||
|
|
@ -359,6 +360,16 @@ object Preferences {
|
|||
).apply()
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun showShuffleInsteadOfHeart(): Boolean {
|
||||
return App.getInstance().preferences.getBoolean(MINI_SHUFFLE_BUTTON_VISIBILITY, false)
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun setShuffleInsteadOfHeart(enabled: Boolean) {
|
||||
App.getInstance().preferences.edit().putBoolean(MINI_SHUFFLE_BUTTON_VISIBILITY, enabled).apply()
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun showServerUnreachableDialog(): Boolean {
|
||||
return App.getInstance().preferences.getLong(
|
||||
|
|
|
|||
|
|
@ -335,6 +335,8 @@
|
|||
<string name="settings_queue_syncing_countdown">Sync timer</string>
|
||||
<string name="settings_queue_syncing_summary">If enabled, the user will have the ability to save their play queue and will have the ability to load state when opening the application.</string>
|
||||
<string name="settings_queue_syncing_title">Sync play queue for this user [Not Fully Baked]</string>
|
||||
<string name="settings_show_mini_shuffle_button">Show Shuffle button</string>
|
||||
<string name="settings_show_mini_shuffle_button_summary">If enabled, show the shuffle button, remove the heart in the mini player</string>
|
||||
<string name="settings_radio">Show radio</string>
|
||||
<string name="settings_radio_summary">If enabled, show the radio section. Restart the app for it to take full effect.</string>
|
||||
<string name="settings_auto_download_lyrics">Auto download lyrics</string>
|
||||
|
|
|
|||
|
|
@ -97,6 +97,13 @@
|
|||
android:defaultValue="true"
|
||||
android:summary="@string/settings_music_directory_summary"
|
||||
android:key="music_directory_section_visibility" />
|
||||
|
||||
<SwitchPreference
|
||||
android:title="@string/settings_show_mini_shuffle_button"
|
||||
android:defaultValue="false"
|
||||
android:summary="@string/settings_show_mini_shuffle_button_summary"
|
||||
android:key="mini_shuffle_button_visibility" />
|
||||
|
||||
</PreferenceCategory>
|
||||
|
||||
<PreferenceCategory app:title="@string/settings_title_data">
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@ import com.cappielloantonio.tempo.util.Constants.CUSTOM_COMMAND_TOGGLE_REPEAT_MO
|
|||
import com.cappielloantonio.tempo.util.Constants.CUSTOM_COMMAND_TOGGLE_SHUFFLE_MODE_OFF
|
||||
import com.cappielloantonio.tempo.util.Constants.CUSTOM_COMMAND_TOGGLE_SHUFFLE_MODE_ON
|
||||
import com.google.common.collect.ImmutableList
|
||||
import com.cappielloantonio.tempo.util.Preferences
|
||||
import com.google.common.util.concurrent.Futures
|
||||
import com.google.common.util.concurrent.ListenableFuture
|
||||
import retrofit2.Call
|
||||
|
|
@ -180,11 +181,22 @@ open class MediaLibrarySessionCallback(
|
|||
private fun buildCustomLayout(player: Player, isRatingPending: Boolean = false): ImmutableList<CommandButton> {
|
||||
val customLayout = mutableListOf<CommandButton>()
|
||||
|
||||
//TODO: create a user setting to decide which of the buttons to show on the mini player
|
||||
// // Add shuffle button
|
||||
// customLayout.add(
|
||||
// if (player.shuffleModeEnabled) customCommandToggleShuffleModeOff else customCommandToggleShuffleModeOn
|
||||
// )
|
||||
val showShuffle = Preferences.showShuffleInsteadOfHeart()
|
||||
|
||||
if (!showShuffle) {
|
||||
if (player.currentMediaItem != null && !isRatingPending) {
|
||||
// Heart button
|
||||
if ((player.mediaMetadata.userRating as HeartRating?)?.isHeart == true) {
|
||||
customLayout.add(customCommandToggleHeartOff)
|
||||
} else {
|
||||
customLayout.add(customCommandToggleHeartOn)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
customLayout.add(
|
||||
if (player.shuffleModeEnabled) customCommandToggleShuffleModeOff else customCommandToggleShuffleModeOn
|
||||
)
|
||||
}
|
||||
|
||||
// Add repeat button
|
||||
val repeatButton = when (player.repeatMode) {
|
||||
|
|
@ -194,25 +206,6 @@ open class MediaLibrarySessionCallback(
|
|||
}
|
||||
|
||||
customLayout.add(repeatButton)
|
||||
|
||||
// HEART_DEBUG logging
|
||||
Log.d("HEART_DEBUG:", "Current media item: ${player.currentMediaItem}")
|
||||
Log.d("HEART_DEBUG:", "User rating: ${player.mediaMetadata.userRating}")
|
||||
Log.d("HEART_DEBUG:", "Is rating pending: $isRatingPending")
|
||||
|
||||
// Add heart button if there's a current media item
|
||||
if (player.currentMediaItem != null) {
|
||||
if (isRatingPending) {
|
||||
customLayout.add(customCommandToggleHeartLoading)
|
||||
} else if ((player.mediaMetadata.userRating as HeartRating?)?.isHeart == true) {
|
||||
customLayout.add(customCommandToggleHeartOff)
|
||||
} else {
|
||||
customLayout.add(customCommandToggleHeartOn)
|
||||
}
|
||||
} else {
|
||||
Log.d("HEART_DEBUG:", "No current media item - skipping heart button")
|
||||
}
|
||||
|
||||
return ImmutableList.copyOf(customLayout)
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue