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();
|
actionDeleteDownloadStorage();
|
||||||
actionKeepScreenOn();
|
actionKeepScreenOn();
|
||||||
actionAutoDownloadLyrics();
|
actionAutoDownloadLyrics();
|
||||||
|
actionMiniPlayerHeart();
|
||||||
|
|
||||||
bindMediaService();
|
bindMediaService();
|
||||||
actionAppEqualizer();
|
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() {
|
private void actionAutoDownloadLyrics() {
|
||||||
SwitchPreference preference = findPreference("auto_download_lyrics");
|
SwitchPreference preference = findPreference("auto_download_lyrics");
|
||||||
if (preference == null) {
|
if (preference == null) {
|
||||||
|
|
|
||||||
|
|
@ -73,6 +73,7 @@ object Preferences {
|
||||||
private const val LAST_INSTANT_MIX = "last_instant_mix"
|
private const val LAST_INSTANT_MIX = "last_instant_mix"
|
||||||
private const val EQUALIZER_ENABLED = "equalizer_enabled"
|
private const val EQUALIZER_ENABLED = "equalizer_enabled"
|
||||||
private const val EQUALIZER_BAND_LEVELS = "equalizer_band_levels"
|
private const val EQUALIZER_BAND_LEVELS = "equalizer_band_levels"
|
||||||
|
private const val MINI_SHUFFLE_BUTTON_VISIBILITY = "mini_shuffle_button_visibility"
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun getServer(): String? {
|
fun getServer(): String? {
|
||||||
|
|
@ -359,6 +360,16 @@ object Preferences {
|
||||||
).apply()
|
).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
|
@JvmStatic
|
||||||
fun showServerUnreachableDialog(): Boolean {
|
fun showServerUnreachableDialog(): Boolean {
|
||||||
return App.getInstance().preferences.getLong(
|
return App.getInstance().preferences.getLong(
|
||||||
|
|
|
||||||
|
|
@ -335,6 +335,8 @@
|
||||||
<string name="settings_queue_syncing_countdown">Sync timer</string>
|
<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_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_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">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_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>
|
<string name="settings_auto_download_lyrics">Auto download lyrics</string>
|
||||||
|
|
|
||||||
|
|
@ -97,6 +97,13 @@
|
||||||
android:defaultValue="true"
|
android:defaultValue="true"
|
||||||
android:summary="@string/settings_music_directory_summary"
|
android:summary="@string/settings_music_directory_summary"
|
||||||
android:key="music_directory_section_visibility" />
|
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>
|
||||||
|
|
||||||
<PreferenceCategory app:title="@string/settings_title_data">
|
<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_OFF
|
||||||
import com.cappielloantonio.tempo.util.Constants.CUSTOM_COMMAND_TOGGLE_SHUFFLE_MODE_ON
|
import com.cappielloantonio.tempo.util.Constants.CUSTOM_COMMAND_TOGGLE_SHUFFLE_MODE_ON
|
||||||
import com.google.common.collect.ImmutableList
|
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.Futures
|
||||||
import com.google.common.util.concurrent.ListenableFuture
|
import com.google.common.util.concurrent.ListenableFuture
|
||||||
import retrofit2.Call
|
import retrofit2.Call
|
||||||
|
|
@ -180,11 +181,22 @@ open class MediaLibrarySessionCallback(
|
||||||
private fun buildCustomLayout(player: Player, isRatingPending: Boolean = false): ImmutableList<CommandButton> {
|
private fun buildCustomLayout(player: Player, isRatingPending: Boolean = false): ImmutableList<CommandButton> {
|
||||||
val customLayout = mutableListOf<CommandButton>()
|
val customLayout = mutableListOf<CommandButton>()
|
||||||
|
|
||||||
//TODO: create a user setting to decide which of the buttons to show on the mini player
|
val showShuffle = Preferences.showShuffleInsteadOfHeart()
|
||||||
// // Add shuffle button
|
|
||||||
// customLayout.add(
|
if (!showShuffle) {
|
||||||
// if (player.shuffleModeEnabled) customCommandToggleShuffleModeOff else customCommandToggleShuffleModeOn
|
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
|
// Add repeat button
|
||||||
val repeatButton = when (player.repeatMode) {
|
val repeatButton = when (player.repeatMode) {
|
||||||
|
|
@ -194,25 +206,6 @@ open class MediaLibrarySessionCallback(
|
||||||
}
|
}
|
||||||
|
|
||||||
customLayout.add(repeatButton)
|
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)
|
return ImmutableList.copyOf(customLayout)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue