Steve Lhomme pushed to branch master at VideoLAN / VLC


Commits:
f7d6475b by Claudio Cambra at 2024-06-05T11:32:31+00:00
macosx: Move reloadMediaLibraryFoldersForInputItems to VLCLibraryController

Signed-off-by: Claudio Cambra <develo...@claudiocambra.com>

- - - - -
fbf88140 by Claudio Cambra at 2024-06-05T11:32:31+00:00
macosx: Reload parent media library folder when deleting media item

Signed-off-by: Claudio Cambra <develo...@claudiocambra.com>

- - - - -
fbe9fe34 by Claudio Cambra at 2024-06-05T11:32:31+00:00
macosx: Reload parent media library folder when input item moved to trash

Signed-off-by: Claudio Cambra <develo...@claudiocambra.com>

- - - - -
a2cc2440 by Claudio Cambra at 2024-06-05T11:32:31+00:00
macosx: Use decodedMrls to check if input item is inside monitored folder

Disparities between formatting of the monitored folder non decoded MRL
and the input item's can otherwise cause issues

Signed-off-by: Claudio Cambra <develo...@claudiocambra.com>

- - - - -


5 changed files:

- modules/gui/macosx/library/VLCInputItem.m
- modules/gui/macosx/library/VLCLibraryController.h
- modules/gui/macosx/library/VLCLibraryController.m
- modules/gui/macosx/library/VLCLibraryDataTypes.m
- modules/gui/macosx/panels/VLCInformationWindowController.m


Changes:

=====================================
modules/gui/macosx/library/VLCInputItem.m
=====================================
@@ -27,6 +27,8 @@
 #import "extensions/NSImage+VLCAdditions.h"
 #import "extensions/NSString+Helpers.h"
 
+#import "library/VLCLibraryController.h"
+
 #import <vlc_url.h>
 
 NSString *VLCInputItemParsingSucceeded = @"VLCInputItemParsingSucceeded";
@@ -654,7 +656,7 @@ static const struct vlc_metadata_cbs preparseCallbacks = {
         return;
     }
 
-    NSURL *pathUrl = [NSURL URLWithString:self.path];
+    NSURL * const pathUrl = [NSURL URLWithString:self.path];
     if (pathUrl == nil) {
         return;
     }
@@ -662,6 +664,9 @@ static const struct vlc_metadata_cbs preparseCallbacks = {
     [NSFileManager.defaultManager trashItemAtURL:pathUrl
                                 resultingItemURL:nil
                                            error:nil];
+    
+    VLCLibraryController * const libraryController = 
VLCMain.sharedInstance.libraryController;
+    [libraryController reloadMediaLibraryFoldersForInputItems:@[self]];
 }
 
 - (void)revealInFinder


=====================================
modules/gui/macosx/library/VLCLibraryController.h
=====================================
@@ -24,6 +24,7 @@
 
 #import <vlc_media_library.h>
 
+@class VLCInputItem;
 @class VLCLibraryModel;
 @class VLCMediaLibraryMediaItem;
 
@@ -36,6 +37,8 @@ NS_ASSUME_NONNULL_BEGIN
 - (int)appendItemToPlaylist:(VLCMediaLibraryMediaItem *)mediaItem 
playImmediately:(BOOL)playImmediately;
 - (int)appendItemsToPlaylist:(NSArray <VLCMediaLibraryMediaItem *> 
*)mediaItemArray playFirstItemImmediately:(BOOL)playFirstItemImmediately;
 
+- (void)reloadMediaLibraryFoldersForInputItems:(NSArray<VLCInputItem *> 
*)inputItems;
+
 - (int)addFolderWithFileURL:(NSURL *)fileURL;
 - (int)banFolderWithFileURL:(NSURL *)fileURL;
 - (int)unbanFolderWithFileURL:(NSURL *)fileURL;


=====================================
modules/gui/macosx/library/VLCLibraryController.m
=====================================
@@ -23,8 +23,11 @@
 #import "VLCLibraryController.h"
 
 #import "main/VLCMain.h"
+
 #import "playlist/VLCPlaylistController.h"
 #import "playlist/VLCPlayerController.h"
+
+#import "library/VLCInputItem.h"
 #import "library/VLCLibraryModel.h"
 #import "library/VLCLibraryDataTypes.h"
 
@@ -165,6 +168,32 @@ typedef int (*folder_action_f)(vlc_medialibrary_t*, const 
char*);
     return vlc_ml_reload_folder(_p_libraryInstance, 
fileURL.absoluteString.UTF8String);
 }
 
+- (void)reloadMediaLibraryFoldersForInputItems:(NSArray<VLCInputItem *> 
*)inputItems
+{
+    NSArray<VLCMediaLibraryEntryPoint *> * const entryPoints = 
self.libraryModel.listOfMonitoredFolders;
+    NSMutableSet<NSString *> * const reloadMRLs = NSMutableSet.set;
+    NSMutableSet<VLCInputItem *> * const checkedInputItems = NSMutableSet.set;
+
+    for (VLCMediaLibraryEntryPoint * const entryPoint in entryPoints) {
+        for (VLCInputItem * const inputItem in inputItems) {
+            if ([checkedInputItems containsObject:inputItem]) {
+                continue;
+            }
+
+            if ([inputItem.decodedMRL hasPrefix:entryPoint.decodedMRL]) {
+                [reloadMRLs addObject:entryPoint.MRL];
+                [checkedInputItems addObject:inputItem];
+                break;
+            }
+        }
+    }
+
+    for (NSString * const entryPointMRL in reloadMRLs) {
+        NSURL * const entryPointURL = [NSURL URLWithString:entryPointMRL];
+        [self reloadFolderWithFileURL:entryPointURL];
+    }
+}
+
 - (int)clearHistory
 {
     if (!_p_libraryInstance) {


=====================================
modules/gui/macosx/library/VLCLibraryDataTypes.m
=====================================
@@ -25,6 +25,7 @@
 #import "main/VLCMain.h"
 #import "extensions/NSString+Helpers.h"
 #import "library/VLCInputItem.h"
+#import "library/VLCLibraryController.h"
 
 #import <vlc_media_library.h>
 #import <vlc_url.h>
@@ -1354,12 +1355,15 @@ static NSString 
*genreArrayDisplayString(NSArray<VLCMediaLibraryGenre *> * const
 
 - (void)moveToTrash
 {
-    NSFileManager *fileManager = [NSFileManager defaultManager];
-    for (VLCMediaLibraryFile *fileToTrash in _files) {
+    NSFileManager * const fileManager = NSFileManager.defaultManager;
+    for (VLCMediaLibraryFile * const fileToTrash in self.files) {
         [fileManager trashItemAtURL:fileToTrash.fileURL
                    resultingItemURL:nil
                               error:nil];
     }
+
+    VLCLibraryController * const libraryController = 
VLCMain.sharedInstance.libraryController;
+    [libraryController 
reloadMediaLibraryFoldersForInputItems:@[self.inputItem]];
 }
 
 @end


=====================================
modules/gui/macosx/panels/VLCInformationWindowController.m
=====================================
@@ -489,28 +489,7 @@ settingsChanged = settingsChanged || 
_##field##TextField.settingChanged;
 - (void)reloadMediaLibraryFoldersForInputItems:(NSArray<VLCInputItem *> 
*)inputItems
 {
     VLCLibraryController * const libraryController = 
VLCMain.sharedInstance.libraryController;
-    NSArray<VLCMediaLibraryEntryPoint *> * const entryPoints = 
libraryController.libraryModel.listOfMonitoredFolders;
-    NSMutableSet<NSString *> * const reloadMRLs = NSMutableSet.set;
-    NSMutableSet<VLCInputItem *> * const checkedInputItems = NSMutableSet.set;
-
-    for (VLCMediaLibraryEntryPoint * const entryPoint in entryPoints) {
-        for (VLCInputItem * const inputItem in inputItems) {
-            if ([checkedInputItems containsObject:inputItem]) {
-                continue;
-            }
-
-            if ([inputItem.MRL hasPrefix:entryPoint.MRL]) {
-                [reloadMRLs addObject:entryPoint.MRL];
-                [checkedInputItems addObject:inputItem];
-                break;
-            }
-        }
-    }
-
-    for (NSString * const entryPointMRL in reloadMRLs) {
-        NSURL * const entryPointURL = [NSURL URLWithString:entryPointMRL];
-        [libraryController reloadFolderWithFileURL:entryPointURL];
-    }
+    [libraryController reloadMediaLibraryFoldersForInputItems:inputItems];
 }
 
 - (void)saveInputItemsMetadata:(NSArray<VLCInputItem *> *)inputItems



View it on GitLab: 
https://code.videolan.org/videolan/vlc/-/compare/bcc33a20200f02826abf91da8d9287f41c30d4ac...a2cc24400faee2d93a480fac63883017c4fd9873

-- 
This project does not include diff previews in email notifications.
View it on GitLab: 
https://code.videolan.org/videolan/vlc/-/compare/bcc33a20200f02826abf91da8d9287f41c30d4ac...a2cc24400faee2d93a480fac63883017c4fd9873
You're receiving this email because of your account on code.videolan.org.


VideoLAN code repository instance
_______________________________________________
vlc-commits mailing list
vlc-commits@videolan.org
https://mailman.videolan.org/listinfo/vlc-commits

Reply via email to