Neue Melo-UI Phase 1: 4 Tabs (Meine Musik/Suche/Favoriten/Download) + Sortierung
- Meine Musik als Startbildschirm ohne Topbar: Kopfzeile (Einstellungen, Suche, Musikerkennung), Schnellzugriffe, Shuffle + Sortieren, Liederliste - Sortierung nach Zuletzt hinzugefuegt / Name (A-Z-#) / Wie oft abgespielt, auf- und absteigend, pro Liste gespeichert (SortStore) - Favoriten als eigener Tab mit gleicher Shuffle-/Sortier-Leiste - Download-Tab uebernimmt den Navidrome-Server-Browser - DB-Schema 3: playCount, gezaehlt beim Titelstart - Theme auf #0B0B10 / #c0392b - Scan-Aktionen aus der entfallenen Topbar jetzt in den Einstellungen Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011snPXPafPC5i87o68H14W7
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
|
||||
import '../library/song_sort.dart';
|
||||
|
||||
/// Sortier-Wahl einer Liederliste: Kriterium + Richtung.
|
||||
class SortSetting {
|
||||
const SortSetting(this.mode, {required this.ascending});
|
||||
final SortMode mode;
|
||||
final bool ascending;
|
||||
}
|
||||
|
||||
/// Merkt sich die Sortier-Wahl pro Liste ([key] z. B. 'meine_musik'),
|
||||
/// damit sie einen App-Neustart überlebt.
|
||||
class SortStore {
|
||||
static const meineMusik = 'meine_musik';
|
||||
static const favoriten = 'favoriten';
|
||||
|
||||
static const _standard = SortSetting(SortMode.dateAdded, ascending: false);
|
||||
|
||||
static Future<SortSetting> load(String key) async {
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
final index = prefs.getInt('sort_${key}_mode');
|
||||
if (index == null || index < 0 || index >= SortMode.values.length) {
|
||||
return _standard;
|
||||
}
|
||||
final mode = SortMode.values[index];
|
||||
return SortSetting(
|
||||
mode,
|
||||
ascending: prefs.getBool('sort_${key}_asc') ?? defaultAscending(mode),
|
||||
);
|
||||
}
|
||||
|
||||
static Future<void> save(String key, SortSetting setting) async {
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
await prefs.setInt('sort_${key}_mode', setting.mode.index);
|
||||
await prefs.setBool('sort_${key}_asc', setting.ascending);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user