]> git.sesse.net Git - vlc/commitdiff
macosx: simplify revealInFinder action
authorDavid Fuhrmann <dfuhrmann@videolan.org>
Fri, 2 Jan 2015 14:39:00 +0000 (15:39 +0100)
committerDavid Fuhrmann <dfuhrmann@videolan.org>
Fri, 2 Jan 2015 18:36:36 +0000 (19:36 +0100)
modules/gui/macosx/playlist.m

index 66d72a133efd0ff1d1bdbea772bf07c9f030f03f..212aa0092f989fd3d9325e441e1bc23ac35563d6 100644 (file)
 
 - (IBAction)revealItemInFinder:(id)sender
 {
-    NSIndexSet * selectedRows = [o_outline_view selectedRowIndexes];
-    NSUInteger count = [selectedRows count];
-    NSUInteger indexes[count];
-    [selectedRows getIndexes:indexes maxCount:count inIndexRange:nil];
+    NSIndexSet *selectedRows = [o_outline_view selectedRowIndexes];
+    [selectedRows enumerateIndexesUsingBlock:^(NSUInteger idx, BOOL *stop) {
 
-    NSMutableString * o_mrl;
-    for (NSUInteger i = 0; i < count; i++) {
-        PLItem *o_item = [o_outline_view itemAtRow:indexes[i]];
-
-        char * psz_url = decode_URI(input_item_GetURI([o_item input]));
-        o_mrl = [[NSMutableString alloc] initWithString: [NSString stringWithUTF8String:psz_url ? psz_url : ""]];
-        if (psz_url != NULL)
-            free( psz_url );
+        PLItem *o_item = [o_outline_view itemAtRow:idx];
 
         /* perform some checks whether it is a file and if it is local at all... */
-        if ([o_mrl length] > 0) {
-            NSRange prefix_range = [o_mrl rangeOfString: @"file:"];
-            if (prefix_range.location != NSNotFound)
-                [o_mrl deleteCharactersInRange: prefix_range];
+        char *psz_url = input_item_GetURI([o_item input]);
+        NSURL *url = [NSURL URLWithString:toNSStr(psz_url)];
+        free(psz_url);
+        if (![url isFileURL])
+            return;
+        if (![[NSFileManager defaultManager] fileExistsAtPath:[url path]])
+            return;
 
-            if ([o_mrl characterAtIndex:0] == '/')
-                [[NSWorkspace sharedWorkspace] selectFile: o_mrl inFileViewerRootedAtPath: o_mrl];
-        }
+        msg_Dbg(VLCIntf, "Reveal url %s in finder", [[url path] UTF8String]);
+        [[NSWorkspace sharedWorkspace] selectFile: [url path] inFileViewerRootedAtPath: [url path]];
+    }];
 
-        [o_mrl release];
-    }
 }
 
 /* When called retrieves the selected outlineview row and plays that node or item */