]> granicus.if.org Git - transmission/commitdiff
enable/disable the quicklook menu item/toolbar item
authorMitchell Livingston <livings124@transmissionbt.com>
Wed, 21 May 2008 18:59:18 +0000 (18:59 +0000)
committerMitchell Livingston <livings124@transmissionbt.com>
Wed, 21 May 2008 18:59:18 +0000 (18:59 +0000)
macosx/Controller.h
macosx/Controller.m
macosx/InfoWindowController.h
macosx/InfoWindowController.m
macosx/QuickLookController.h
macosx/QuickLookController.m

index d4358633919012bd3663e1fd20d853442c41dcef..6a50e3d87aa1042695f174210646c336b3083d7f 100644 (file)
@@ -256,6 +256,7 @@ typedef enum
 - (void) showMainWindow: (id) sender;
 
 - (NSArray *) quickLookURLs;
+- (BOOL) canQuickLook;
 - (NSRect) quickLookFrameWithURL: (NSURL*) url;
 - (void) toggleQuickLook: (id) sender;
 
index 5c51f81fe5bc3f1d4feb1204ad373e3a205af5b6..054826c8b74f5e1b00976abc5e22b75e7d12a943 100644 (file)
@@ -3408,6 +3408,10 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy
         [toolbarItem setImage: ![fFilterBar isHidden] ? [NSImage imageNamed: @"FilterBlue.png"] : [NSImage imageNamed: @"Filter.png"]];
         return YES;
     }
+    
+    //enable quicklook item
+    if ([ident isEqualToString: TOOLBAR_QUICKLOOK])
+        return [[QuickLookController quickLook] canQuickLook];
 
     return YES;
 }
@@ -3603,7 +3607,11 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy
     //enable prev/next filter button
     if (action == @selector(switchFilter:))
         return [fWindow isVisible] && ![fFilterBar isHidden];
-
+    
+    //enable quicklook item
+    if (action == @selector(toggleQuickLook:))
+        return [[QuickLookController quickLook] canQuickLook];
+    
     //enable reveal in finder
     if (action == @selector(revealFile:))
         return canUseTable && [fTableView numberOfSelectedRows] > 0;
@@ -4041,7 +4049,6 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy
 {
     NSArray * selectedTorrents = [fTableView selectedTorrents];
     NSMutableArray * urlArray = [NSMutableArray arrayWithCapacity: [selectedTorrents count]];
-    
     NSEnumerator * enumerator = [selectedTorrents objectEnumerator];
     Torrent * torrent;
     
@@ -4054,6 +4061,21 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy
     return urlArray;
 }
 
+- (BOOL) canQuickLook
+{
+    NSArray * selectedTorrents = [fTableView selectedTorrents];
+    NSEnumerator * enumerator = [selectedTorrents objectEnumerator];
+    Torrent * torrent;
+    
+    while ((torrent = [enumerator nextObject]))
+    {
+        if ([torrent folder] || [torrent isComplete])
+            return YES;
+    }
+    
+    return NO;
+}
+
 - (NSRect) quickLookFrameWithURL: (NSURL *) url
 {
     if ([fWindow isVisible])
index f2ed63fbfe20f7c86dad18dcff43145bbe61ea60..b0781ddaf7d3ea9cbbc4aaf01fa952744152c893 100644 (file)
@@ -80,6 +80,7 @@
 
 - (BOOL) shouldQuickLookFileView;
 - (NSArray *) quickLookURLs;
+- (BOOL) canQuickLook;
 - (NSRect) quickLookFrameWithURL: (NSURL*) url;
 
 - (void) setPiecesView: (id) sender;
index d7cd9d5d80ebdbff0142bc0adc7c0bb64d3292db..1480958226a9e52f43a1de2aedf2762eddcf9fb0 100644 (file)
@@ -907,14 +907,30 @@ typedef enum
     for (i = [indexes firstIndex]; i != NSNotFound; i = [indexes indexGreaterThanIndex: i])
     {
         NSDictionary * item = [fileOutlineView itemAtRow: i];
-        if ([[item objectForKey: @"IsFolder"] boolValue]
-            || [torrent fileProgress: [[item objectForKey: @"Indexes"] firstIndex]] == 1.0)
+        if ([[item objectForKey: @"IsFolder"] boolValue] || [torrent fileProgress: [[item objectForKey: @"Indexes"] firstIndex]] == 1.0)
             [urlArray addObject: [NSURL fileURLWithPath: [folder stringByAppendingPathComponent: [item objectForKey: @"Path"]]]];
     }
     
     return urlArray;
 }
 
+- (BOOL) canQuickLook
+{
+    FileOutlineView * fileOutlineView = [fFileController outlineView];
+    Torrent * torrent = [fTorrents objectAtIndex: 0];
+    NSIndexSet * indexes = [fileOutlineView selectedRowIndexes];
+
+    int i;
+    for (i = [indexes firstIndex]; i != NSNotFound; i = [indexes indexGreaterThanIndex: i])
+    {
+        NSDictionary * item = [fileOutlineView itemAtRow: i];
+        if ([[item objectForKey: @"IsFolder"] boolValue] || [torrent fileProgress: [[item objectForKey: @"Indexes"] firstIndex]] == 1.0)
+            return YES;
+    }
+    
+    return NO;
+}
+
 - (NSRect) quickLookFrameWithURL: (NSURL *) url
 {
     FileOutlineView * fileOutlineView = [fFileController outlineView];
index ae3091deaefd9b088ea79f635d21934032fb72ee..a1ed8fbedaa527f104f2a3eaa2d899e6c7f41037 100644 (file)
@@ -42,6 +42,7 @@
 + (QuickLookController *) quickLook;
 
 - (BOOL) quickLookSelectItems;
+- (BOOL) canQuickLook;
 
 - (void) toggleQuickLook;
 - (void) updateQuickLook;
index 58645b39195510664a65f93445a8d7431ab7930f..96e738e0612e55878b5cec756e602c952837dd92 100644 (file)
@@ -81,6 +81,14 @@ QuickLookController * fQuickLookInstance = nil;
         return NO;
 }
 
+- (BOOL) canQuickLook
+{
+    if ([fInfoController shouldQuickLookFileView])
+        return [fInfoController canQuickLook];
+    else
+        return [fMainController canQuickLook];
+}
+
 - (void) toggleQuickLook
 {
     if (!fQuickLookAvailable)