mirror of
https://github.com/antebudimir/tempus.git
synced 2026-04-15 16:27:26 +00:00
feat: sort preference for playlists (#370)
This commit is contained in:
parent
75513d3bd4
commit
3cd5843c4b
5 changed files with 42 additions and 3 deletions
|
|
@ -74,6 +74,8 @@ object Preferences {
|
||||||
private const val CONTINUOUS_PLAY = "continuous_play"
|
private const val CONTINUOUS_PLAY = "continuous_play"
|
||||||
private const val LAST_INSTANT_MIX = "last_instant_mix"
|
private const val LAST_INSTANT_MIX = "last_instant_mix"
|
||||||
private const val ALLOW_PLAYLIST_DUPLICATES = "allow_playlist_duplicates"
|
private const val ALLOW_PLAYLIST_DUPLICATES = "allow_playlist_duplicates"
|
||||||
|
private const val HOME_SORT_PLAYLISTS = "home_sort_playlists"
|
||||||
|
private const val DEFAULT_HOME_SORT_PLAYLISTS_SORT_ORDER = Constants.PLAYLIST_ORDER_BY_RANDOM
|
||||||
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"
|
private const val MINI_SHUFFLE_BUTTON_VISIBILITY = "mini_shuffle_button_visibility"
|
||||||
|
|
@ -625,6 +627,16 @@ object Preferences {
|
||||||
return App.getInstance().preferences.getBoolean(ALLOW_PLAYLIST_DUPLICATES, false)
|
return App.getInstance().preferences.getBoolean(ALLOW_PLAYLIST_DUPLICATES, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@JvmStatic
|
||||||
|
fun getHomeSortPlaylists(): String {
|
||||||
|
return App.getInstance().preferences.getString(HOME_SORT_PLAYLISTS, DEFAULT_HOME_SORT_PLAYLISTS_SORT_ORDER) ?: DEFAULT_HOME_SORT_PLAYLISTS_SORT_ORDER
|
||||||
|
}
|
||||||
|
|
||||||
|
@JvmStatic
|
||||||
|
fun getHomeSortPlaylists(sortOrder: String) {
|
||||||
|
App.getInstance().preferences.edit().putString(HOME_SORT_PLAYLISTS, sortOrder).apply()
|
||||||
|
}
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun setEqualizerEnabled(enabled: Boolean) {
|
fun setEqualizerEnabled(enabled: Boolean) {
|
||||||
App.getInstance().preferences.edit().putBoolean(EQUALIZER_ENABLED, enabled).apply()
|
App.getInstance().preferences.edit().putBoolean(EQUALIZER_ENABLED, enabled).apply()
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,7 @@ import com.cappielloantonio.tempo.subsonic.models.ArtistID3;
|
||||||
import com.cappielloantonio.tempo.subsonic.models.Child;
|
import com.cappielloantonio.tempo.subsonic.models.Child;
|
||||||
import com.cappielloantonio.tempo.subsonic.models.Playlist;
|
import com.cappielloantonio.tempo.subsonic.models.Playlist;
|
||||||
import com.cappielloantonio.tempo.subsonic.models.Share;
|
import com.cappielloantonio.tempo.subsonic.models.Share;
|
||||||
|
import com.cappielloantonio.tempo.util.Constants;
|
||||||
import com.cappielloantonio.tempo.util.Constants.SeedType;
|
import com.cappielloantonio.tempo.util.Constants.SeedType;
|
||||||
import com.cappielloantonio.tempo.util.Preferences;
|
import com.cappielloantonio.tempo.util.Preferences;
|
||||||
import com.google.common.reflect.TypeToken;
|
import com.google.common.reflect.TypeToken;
|
||||||
|
|
@ -250,12 +251,19 @@ public class HomeViewModel extends AndroidViewModel {
|
||||||
playlistRepository.getPlaylists(false, -1).observe(owner, remotes -> {
|
playlistRepository.getPlaylists(false, -1).observe(owner, remotes -> {
|
||||||
if (remotes != null && !remotes.isEmpty()) {
|
if (remotes != null && !remotes.isEmpty()) {
|
||||||
List<Playlist> playlists = new ArrayList<>(remotes);
|
List<Playlist> playlists = new ArrayList<>(remotes);
|
||||||
Collections.shuffle(playlists);
|
String result = Preferences.getHomeSortPlaylists();
|
||||||
List<Playlist> randomPlaylists = playlists.size() > 5
|
if (Preferences.getHomeSortPlaylists().equals(Constants.PLAYLIST_ORDER_BY_RANDOM))
|
||||||
|
{
|
||||||
|
Collections.shuffle(playlists);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
playlists.sort(Comparator.comparing(Playlist::getName));
|
||||||
|
}
|
||||||
|
List<Playlist> subsetPlaylists = playlists.size() > 5
|
||||||
? playlists.subList(0, 5)
|
? playlists.subList(0, 5)
|
||||||
: playlists;
|
: playlists;
|
||||||
|
|
||||||
pinnedPlaylists.setValue(randomPlaylists);
|
pinnedPlaylists.setValue(subsetPlaylists);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -240,6 +240,16 @@
|
||||||
<item>8</item>
|
<item>8</item>
|
||||||
</string-array>
|
</string-array>
|
||||||
|
|
||||||
|
<string-array name="playlist_sort_option_titles">
|
||||||
|
<item>Name</item>
|
||||||
|
<item>Random</item>
|
||||||
|
</string-array>
|
||||||
|
<string-array name="playlist_sort_option_values">
|
||||||
|
<item>ORDER_BY_NAME</item>
|
||||||
|
<item>ORDER_BY_RANDOM</item>
|
||||||
|
</string-array>
|
||||||
|
|
||||||
|
|
||||||
<string-array name="skip_min_star_rating_titles">
|
<string-array name="skip_min_star_rating_titles">
|
||||||
<item>0 star minimum</item>
|
<item>0 star minimum</item>
|
||||||
<item>1 star minimum</item>
|
<item>1 star minimum</item>
|
||||||
|
|
|
||||||
|
|
@ -361,6 +361,7 @@
|
||||||
<string name="settings_music_directory_summary">If enabled, show the music directory section. Please note that for folder navigation to work properly, the server must support this feature.</string>
|
<string name="settings_music_directory_summary">If enabled, show the music directory section. Please note that for folder navigation to work properly, the server must support this feature.</string>
|
||||||
<string name="settings_podcast">Show podcast</string>
|
<string name="settings_podcast">Show podcast</string>
|
||||||
<string name="settings_podcast_summary">If enabled, show the podcast section. Restart the app for it to take full effect.</string>
|
<string name="settings_podcast_summary">If enabled, show the podcast section. Restart the app for it to take full effect.</string>
|
||||||
|
<string name="settings_playlist_sort">Playlist sorting</string>
|
||||||
<string name="settings_audio_quality">Show audio quality</string>
|
<string name="settings_audio_quality">Show audio quality</string>
|
||||||
<string name="settings_audio_quality_summary">The bitrate and audio format will be shown for each audio track.</string>
|
<string name="settings_audio_quality_summary">The bitrate and audio format will be shown for each audio track.</string>
|
||||||
<string name="settings_song_rating">Show song star rating</string>
|
<string name="settings_song_rating">Show song star rating</string>
|
||||||
|
|
|
||||||
|
|
@ -136,6 +136,14 @@
|
||||||
android:defaultValue="false"
|
android:defaultValue="false"
|
||||||
android:summary="@string/settings_allow_playlist_duplicates_summary"
|
android:summary="@string/settings_allow_playlist_duplicates_summary"
|
||||||
android:key="allow_playlist_duplicates" />
|
android:key="allow_playlist_duplicates" />
|
||||||
|
<ListPreference
|
||||||
|
app:defaultValue="ORDER_BY_NAME"
|
||||||
|
app:dialogTitle="@string/settings_playlist_sort"
|
||||||
|
app:entries="@array/playlist_sort_option_titles"
|
||||||
|
app:entryValues="@array/playlist_sort_option_values"
|
||||||
|
app:key="home_sort_playlists"
|
||||||
|
app:title="@string/settings_playlist_sort"
|
||||||
|
app:useSimpleSummaryProvider="true" />
|
||||||
</PreferenceCategory>
|
</PreferenceCategory>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue