From b3e1ee11d928d8ce7be8732178649119f12a399b Mon Sep 17 00:00:00 2001 From: MSOB7YY Date: Wed, 25 Oct 2023 04:56:48 +0300 Subject: [PATCH] feat: prioritize embedded lyrics option --- lib/controller/lyrics_controller.dart | 10 ++++++++++ lib/controller/settings_controller.dart | 7 +++++++ lib/core/translations/keys.dart | 1 + lib/core/translations/language.dart | 3 +++ lib/ui/widgets/settings/extra_settings.dart | 8 ++++++++ 5 files changed, 29 insertions(+) diff --git a/lib/controller/lyrics_controller.dart b/lib/controller/lyrics_controller.dart index 06cb6c6c..e6fe38e0 100644 --- a/lib/controller/lyrics_controller.dart +++ b/lib/controller/lyrics_controller.dart @@ -36,6 +36,16 @@ class Lyrics { final embedded = track.lyrics; + if (settings.prioritizeEmbeddedLyrics.value && embedded != '') { + try { + final lrc = embedded.toLrc(); + currentLyricsLRC.value = lrc; + } catch (e) { + currentLyricsText.value = embedded; + } + return; + } + /// 1. device lrc /// 2. cached lrc /// 3. track embedded lrc diff --git a/lib/controller/settings_controller.dart b/lib/controller/settings_controller.dart index 16f43ca7..5771a452 100644 --- a/lib/controller/settings_controller.dart +++ b/lib/controller/settings_controller.dart @@ -150,6 +150,7 @@ class SettingsController { final RxBool groupArtworksByAlbum = false.obs; final RxBool enableM3USync = false.obs; final RxBool canAskForBatteryOptimizations = true.obs; + final RxBool prioritizeEmbeddedLyrics = true.obs; final RxList tagFieldsToEdit = [ TagField.trackNumber, TagField.year, @@ -390,6 +391,7 @@ class SettingsController { groupArtworksByAlbum.value = json['groupArtworksByAlbum'] ?? groupArtworksByAlbum.value; enableM3USync.value = json['enableM3USync'] ?? enableM3USync.value; canAskForBatteryOptimizations.value = json['canAskForBatteryOptimizations'] ?? canAskForBatteryOptimizations.value; + prioritizeEmbeddedLyrics.value = json['prioritizeEmbeddedLyrics'] ?? prioritizeEmbeddedLyrics.value; final listFromStorage = List.from(json['tagFieldsToEdit'] ?? []); tagFieldsToEdit.value = listFromStorage.isNotEmpty ? List.from(listFromStorage.map((e) => TagField.values.getEnum(e))) : tagFieldsToEdit; @@ -586,6 +588,7 @@ class SettingsController { 'groupArtworksByAlbum': groupArtworksByAlbum.value, 'enableM3USync': enableM3USync.value, 'canAskForBatteryOptimizations': canAskForBatteryOptimizations.value, + 'prioritizeEmbeddedLyrics': prioritizeEmbeddedLyrics.value, 'tagFieldsToEdit': tagFieldsToEdit.mapped((element) => element.convertToString), 'wakelockMode': wakelockMode.value.convertToString, 'localVideoMatchingType': localVideoMatchingType.value.convertToString, @@ -753,6 +756,7 @@ class SettingsController { bool? groupArtworksByAlbum, bool? enableM3USync, bool? canAskForBatteryOptimizations, + bool? prioritizeEmbeddedLyrics, List? tagFieldsToEdit, WakelockMode? wakelockMode, LocalVideoMatchingType? localVideoMatchingType, @@ -1176,6 +1180,9 @@ class SettingsController { if (canAskForBatteryOptimizations != null) { this.canAskForBatteryOptimizations.value = canAskForBatteryOptimizations; } + if (prioritizeEmbeddedLyrics != null) { + this.prioritizeEmbeddedLyrics.value = prioritizeEmbeddedLyrics; + } if (tagFieldsToEdit != null) { tagFieldsToEdit.loop((d, index) { if (!this.tagFieldsToEdit.contains(d)) { diff --git a/lib/core/translations/keys.dart b/lib/core/translations/keys.dart index 04eb9f6f..f540750f 100644 --- a/lib/core/translations/keys.dart +++ b/lib/core/translations/keys.dart @@ -401,6 +401,7 @@ class LanguageKeys { late String PREVENT_DUPLICATED_TRACKS_SUBTITLE; late String PREVENT_DUPLICATED_TRACKS; late String PREVIEW; + late String PRIORITIZE_EMBEDDED_LYRICS; late String PROGRESS; late String PROMPT_INDEXING_REFRESH; late String PROMPT_TO_CHANGE_TRACK_PATH; diff --git a/lib/core/translations/language.dart b/lib/core/translations/language.dart index 4651bde9..ab4a3e4b 100644 --- a/lib/core/translations/language.dart +++ b/lib/core/translations/language.dart @@ -468,6 +468,7 @@ class Language extends LanguageKeys { PREVENT_DUPLICATED_TRACKS_SUBTITLE = getKey("PREVENT_DUPLICATED_TRACKS_SUBTITLE"); PREVENT_DUPLICATED_TRACKS = getKey("PREVENT_DUPLICATED_TRACKS"); PREVIEW = getKey("PREVIEW"); + PRIORITIZE_EMBEDDED_LYRICS = getKey("PRIORITIZE_EMBEDDED_LYRICS"); PROGRESS = getKey("PROGRESS"); PROMPT_INDEXING_REFRESH = getKey("PROMPT_INDEXING_REFRESH"); PROMPT_TO_CHANGE_TRACK_PATH = getKey("PROMPT_TO_CHANGE_TRACK_PATH"); @@ -755,6 +756,8 @@ class Language extends LanguageKeys { + + diff --git a/lib/ui/widgets/settings/extra_settings.dart b/lib/ui/widgets/settings/extra_settings.dart index b974ab7b..70627e90 100644 --- a/lib/ui/widgets/settings/extra_settings.dart +++ b/lib/ui/widgets/settings/extra_settings.dart @@ -227,6 +227,14 @@ class ExtrasSettings extends StatelessWidget { onChanged: (p0) => settings.save(enableSearchCleanup: !p0), ), ), + Obx( + () => CustomSwitchListTile( + icon: Broken.mobile_programming, + title: lang.PRIORITIZE_EMBEDDED_LYRICS, + value: settings.prioritizeEmbeddedLyrics.value, + onChanged: (p0) => settings.save(prioritizeEmbeddedLyrics: !p0), + ), + ), CustomListTile( icon: Broken.colorfilter, title: lang.EXTRACT_ALL_COLOR_PALETTES,