浏览代码

VideoGroup: Make prefix length configurable

Soomin Lee 5 年之前
父节点
当前提交
c178a275b2

+ 24 - 0
Resources/Settings.bundle/Root.inApp.plist

@@ -628,6 +628,30 @@
 		</dict>
 		<dict>
 			<key>Type</key>
+			<string>PSMultiValueSpecifier</string>
+			<key>Title</key>
+			<string>SETTINGS_MEDIA_LIBRARY_VIDEO_GROUP_PREFIX_LENGTH</string>
+			<key>Key</key>
+			<string>VideoGroupPrefixLength</string>
+			<key>DefaultValue</key>
+			<string>6</string>
+			<key>Titles</key>
+			<array>
+				<string>SETTINGS_MEDIA_LIBRARY_VIDEO_GROUP_PREFIX_LENGTH_SHORT</string>
+				<string>SETTINGS_MEDIA_LIBRARY_VIDEO_GROUP_PREFIX_LENGTH_NORMAL</string>
+				<string>SETTINGS_MEDIA_LIBRARY_VIDEO_GROUP_PREFIX_LENGTH_LONG</string>
+				<string>SETTINGS_MEDIA_LIBRARY_VIDEO_GROUP_PREFIX_LENGTH_EXTRA_LONG</string>
+			</array>
+			<key>Values</key>
+			<array>
+				<string>3</string>
+				<string>6</string>
+				<string>9</string>
+				<string>12</string>
+			</array>
+		</dict>
+		<dict>
+			<key>Type</key>
 			<string>PSGroupSpecifier</string>
 			<key>Title</key>
 			<string>SETTINGS_FILE_SYNC</string>

+ 5 - 0
Resources/Settings.bundle/en.lproj/Root.strings

@@ -89,6 +89,11 @@
 "SETTINGS_MEDIA_LIBRARY" = "Media library";
 "SETTINGS_MEDIA_LIBRARY_RESCAN" = "Force VLC to rescan the media library";
 "SETTINGS_DECRAPIFY" = "Optimize item names for display";
+"SETTINGS_MEDIA_LIBRARY_VIDEO_GROUP_PREFIX_LENGTH" = "Video groups detection length";
+"SETTINGS_MEDIA_LIBRARY_VIDEO_GROUP_PREFIX_LENGTH_SHORT" = "Video groups dectection short";
+"SETTINGS_MEDIA_LIBRARY_VIDEO_GROUP_PREFIX_LENGTH_NORMAL" = "Video groups detection default";
+"SETTINGS_MEDIA_LIBRARY_VIDEO_GROUP_PREFIX_LENGTH_LONG" = "Video groups detection long";
+"SETTINGS_MEDIA_LIBRARY_VIDEO_GROUP_PREFIX_LENGTH_EXTRA_LONG" = "Video groups detection extra long";
 
 "SETTINGS_FILE_SYNC" = "File Synchronization";
 "SETTINGS_WIFISHARING_IPv6" = "IPv6 support for WiFi Sharing";

+ 20 - 0
SharedSources/MediaLibraryModel/VideoGroupViewModel.swift

@@ -31,10 +31,14 @@ class VideoGroupViewModel: MLBaseModel {
 
     var indicatorName: String = NSLocalizedString("VIDEO_GROUPS", comment: "")
 
+    var prefixLength: UInt32 = 0
+
     required init(medialibrary: MediaLibraryService) {
         self.medialibrary = medialibrary
         self.files = medialibrary.medialib.videoGroups() ?? []
         medialibrary.medialib.setVideoGroupsAllowSingleVideo(false)
+
+        setPrefixLength()
     }
 
     func append(_ item: VLCMLVideoGroup) {
@@ -46,6 +50,7 @@ class VideoGroupViewModel: MLBaseModel {
     }
 
     func updateVideoGroups() {
+        setPrefixLength()
         files = medialibrary.medialib.videoGroups() ?? []
     }
 
@@ -57,6 +62,21 @@ class VideoGroupViewModel: MLBaseModel {
     }
 }
 
+// MARK: - Private helpers
+
+private extension VideoGroupViewModel {
+    private func setPrefixLength() {
+        let settingPrefixLength = UserDefaults.standard.integer(forKey:
+            kVLCSettingsMediaLibraryVideoGroupPrefixLength)
+
+        if prefixLength != settingPrefixLength {
+            prefixLength = UInt32(settingPrefixLength)
+            assert(prefixLength != 0, "VideoGroupViewModel: Failed to retrieve setting value.")
+            medialibrary.medialib.setVideoGroupPrefixLength(prefixLength)
+        }
+    }
+}
+
 // MARK: - Edit
 
 extension VideoGroupViewModel: EditableMLModel {

+ 3 - 1
Sources/VLCAppDelegate.m

@@ -85,7 +85,9 @@
                                   kVLCSettingPlaybackForwardSkipLength : kVLCSettingPlaybackForwardSkipLengthDefaultValue,
                                   kVLCSettingPlaybackBackwardSkipLength : kVLCSettingPlaybackBackwardSkipLengthDefaultValue,
                                   kVLCSettingOpenAppForPlayback : kVLCSettingOpenAppForPlaybackDefaultValue,
-                                  kVLCAutomaticallyPlayNextItem : @(YES)};
+                                  kVLCAutomaticallyPlayNextItem : @(YES),
+                                  kVLCSettingsMediaLibraryVideoGroupPrefixLength: kVLCSettingsMediaLibraryVideoGroupPrefixLengthDefaultValue
+    };
     [defaults registerDefaults:appDefaults];
 }
 

+ 3 - 0
Sources/VLCConstants.h

@@ -74,6 +74,9 @@
 #define kVLCSettingOpenAppForPlayback @"open-app-for-playback"
 #define kVLCSettingOpenAppForPlaybackDefaultValue @YES
 
+#define kVLCSettingsMediaLibraryVideoGroupPrefixLength @"VideoGroupPrefixLength"
+#define kVLCSettingsMediaLibraryVideoGroupPrefixLengthDefaultValue @"6"
+
 #define kVLCShowRemainingTime @"show-remaining-time"
 #define kVLCRecentURLs @"recent-urls"
 #define kVLCRecentURLTitles @"recent-url-titles"