Revision: 27332
          http://sourceforge.net/p/bibdesk/svn/27332
Author:   hofman
Date:     2022-03-28 14:43:45 +0000 (Mon, 28 Mar 2022)
Log Message:
-----------
Return URL as display value for URL field, get image in datasource method

Modified Paths:
--------------
    trunk/bibdesk/BibDocument_DataSource.m
    trunk/bibdesk/BibItem.h
    trunk/bibdesk/BibItem.m

Modified: trunk/bibdesk/BibDocument_DataSource.m
===================================================================
--- trunk/bibdesk/BibDocument_DataSource.m      2022-03-28 06:30:37 UTC (rev 
27331)
+++ trunk/bibdesk/BibDocument_DataSource.m      2022-03-28 14:43:45 UTC (rev 
27332)
@@ -161,13 +161,17 @@
             [imageView setObjectValue:[value valueForKey:@"image"]];
         } else if ([tcID isURLField]) {
             // URL field
-            BDSKASSERT(value == nil || [value isKindOfClass:[NSImage class]]);
-            NSURL *url = [pub URLForField:tcID];
-            [imageView setToolTip:[url isFileURL] ? [[url path] 
stringByAbbreviatingWithTildeInPath] : [url absoluteString]];
-            [imageView setObjectValue:value];
+            BDSKASSERT(value == nil || [value isKindOfClass:[NSURL class]]);
+            [imageView setToolTip:[value isFileURL] ? [[value path] 
stringByAbbreviatingWithTildeInPath] : [value absoluteString]];
+            if ([value isFileURL] == NO)
+                [imageView setObjectValue:value ? [NSImage imageForURL:value] 
: nil];
+            else if ((value = [value fileURLByStrictlyResolvingAliases]))
+                [imageView setObjectValue:[[NSWorkspace sharedWorkspace] 
iconForFileType:[value pathExtension]]];
+            else
+                [imageView setObjectValue:[NSImage missingFileImage]];
         } else {
             // content is overridden by cell image
-            [imageView setToolTip:[value isKindOfClass:[NSString class]] ? 
value : nil];
+            [imageView setToolTip:[value isKindOfClass:[NSString class]] ? 
value : [value isKindOfClass:[NSDictionary class]] ? [value 
objectForKey:@"toolTip"] : nil];
             [imageView setObjectValue:[value isNotEmpty] ? [tableView 
cellImageForField:tcID] : nil];
         }
         return view;

Modified: trunk/bibdesk/BibItem.h
===================================================================
--- trunk/bibdesk/BibItem.h     2022-03-28 06:30:37 UTC (rev 27331)
+++ trunk/bibdesk/BibItem.h     2022-03-28 14:43:45 UTC (rev 27332)
@@ -738,15 +738,6 @@
 */
 @property (nonatomic, readonly) NSString *localUrlPath; 
 
-/*!
-    @method     imageForURLField:
-    @abstract   Returns an icon representation of a URL field.
-    @discussion (comprehensive description)
-    @param      field Needs to be a local or remote URL field.
-    @result     Returns nil if the item has an empty field, and returns a 
question mark image if a file could not be found.
-*/
-- (NSImage *)imageForURLField:(NSString *)field;
-
 // NSURL equivalents of the localFilePath... methods
 - (NSURL *)localFileURLForField:(NSString *)field;
 

Modified: trunk/bibdesk/BibItem.m
===================================================================
--- trunk/bibdesk/BibItem.m     2022-03-28 06:30:37 UTC (rev 27331)
+++ trunk/bibdesk/BibItem.m     2022-03-28 14:43:45 UTC (rev 27332)
@@ -1356,19 +1356,19 @@
 }
 
 - (id)displayValueOfField:(NSString *)field{
-    if([field isEqualToString:BDSKCiteKeyString]){
+    if ([field isEqualToString:BDSKCiteKeyString]) {
         return [self citeKey];
-    }else if([field isEqualToString:BDSKItemNumberString]){
+    } else if([field isEqualToString:BDSKItemNumberString]) {
         return [self fileOrder];
-    }else if([field isEqualToString: BDSKTitleString] ){
+    } else if([field isEqualToString: BDSKTitleString]) {
         return [self displayTitle];
-    }else if([field isEqualToString: BDSKContainerString] ){
+    } else if([field isEqualToString: BDSKContainerString]) {
         return [self container];
-    }else if([field isEqualToString: BDSKDateAddedString]){
+    } else if([field isEqualToString: BDSKDateAddedString]) {
         return [[self dateAdded] shortDateDescription];
-    }else if([field isEqualToString: BDSKDateModifiedString]){
+    } else if([field isEqualToString: BDSKDateModifiedString]) {
         return [[self dateModified]shortDateDescription];
-    }else if([field isEqualToString: BDSKPubDateString] ){
+    } else if([field isEqualToString: BDSKPubDateString]) {
         NSDate *date = [self date];
         if(nil == date) 
             return nil;
@@ -1380,48 +1380,48 @@
         }
         [formatter setDateFormat:[NSString isEmptyString:[self 
valueOfField:BDSKMonthString]] ? @"yyyy" : @"MMM yyyy"];
         return [formatter stringFromDate:date];
-     }else if([field isEqualToString: BDSKFirstAuthorString] ){
+    } else if([field isEqualToString: BDSKFirstAuthorString]) {
         return [[self authorAtIndex:0] displayName];
-    }else if([field isEqualToString: BDSKSecondAuthorString] ){
+    } else if([field isEqualToString: BDSKSecondAuthorString]){
         return [[self authorAtIndex:1] displayName]; 
-    }else if([field isEqualToString: BDSKThirdAuthorString] ){
+    } else if([field isEqualToString: BDSKThirdAuthorString]){
         return [[self authorAtIndex:2] displayName];
-    }else if([field isEqualToString:BDSKLastAuthorString] ){
+    } else if([field isEqualToString:BDSKLastAuthorString]) {
         return [[self lastAuthor] displayName];
-    }else if([field isEqualToString: BDSKFirstAuthorEditorString] ){
+    } else if([field isEqualToString: BDSKFirstAuthorEditorString]) {
         return [[self authorOrEditorAtIndex:0] displayName];
-    }else if([field isEqualToString: BDSKSecondAuthorEditorString] ){
+    } else if([field isEqualToString: BDSKSecondAuthorEditorString]) {
         return [[self authorOrEditorAtIndex:1] displayName]; 
-    }else if([field isEqualToString: BDSKThirdAuthorEditorString] ){
+    } else if([field isEqualToString: BDSKThirdAuthorEditorString]) {
         return [[self authorOrEditorAtIndex:2] displayName];
-    }else if([field isEqualToString:BDSKLastAuthorEditorString] ){
+    } else if([field isEqualToString:BDSKLastAuthorEditorString]) {
         return [[self lastAuthorOrEditor] displayName];
     } else if([field isPersonField]) {
         return [self peopleStringForDisplayFromField:field];
-    } else if([field isEqualToString:BDSKAuthorEditorString]){
+    } else if([field isEqualToString:BDSKAuthorEditorString]) {
         NSString *string = [self 
peopleStringForDisplayFromField:BDSKAuthorString];
         if ([NSString isEmptyString:string])
             string = [self peopleStringForDisplayFromField:BDSKEditorString];
         return string;
-    }else if([field isURLField]){
-        return [self imageForURLField:field];
-    }else if([field isRatingField]){
+    } else if([field isURLField]) {
+        return [self URLForField:field];
+    } else if([field isRatingField]) {
         return [NSNumber numberWithInteger:[self ratingValueOfField:field]];
-    }else if([field isBooleanField]){
+    } else if([field isBooleanField]) {
         return [NSNumber numberWithBool:[self boolValueOfField:field]];
-    }else if([field isTriStateField]){
+    } else if([field isTriStateField]) {
         return [NSNumber numberWithInteger:[self triStateValueOfField:field]];
-    }else if([field isCitationField]){
+    } else if([field isCitationField]) {
         return [[self valueOfField:field inherit:NO] expandedString];
-    }else if([field isEqualToString:BDSKPubTypeString]){
+    } else if([field isEqualToString:BDSKPubTypeString]) {
         return [self pubType];
-    }else if([field isEqualToString:BDSKCrossrefString]){
+    } else if([field isEqualToString:BDSKCrossrefString]) {
         return nil;
-    }else if([field isEqualToString:BDSKImportOrderString]){
+    } else if([field isEqualToString:BDSKImportOrderString]) {
         return nil;
-    }else if([field isEqualToString:BDSKRelevanceString]){
+    } else if([field isEqualToString:BDSKRelevanceString]) {
         return [NSNumber numberWithDouble:[self searchScore]];
-    }else if([field isEqualToString:BDSKLocalFileString]){
+    } else if([field isEqualToString:BDSKLocalFileString]) {
         NSArray *localFiles = [self localFiles];
         NSUInteger count = [localFiles count];
         NSDictionary *cellDictionary = nil;
@@ -1440,7 +1440,7 @@
             cellDictionary = [NSDictionary dictionaryWithObjectsAndKeys:image, 
@"image", label, @"string", toolTip, @"toolTip", nil];
         }
         return cellDictionary;
-    }else if([field isEqualToString:BDSKRemoteURLString]){
+    } else if ([field isEqualToString:BDSKRemoteURLString]) {
         NSUInteger count = [[self remoteURLs] count];
         NSDictionary *cellDictionary = nil;
         if (count > 0) {
@@ -1449,9 +1449,9 @@
             cellDictionary = [NSDictionary 
dictionaryWithObjectsAndKeys:[[NSWorkspace sharedWorkspace] 
iconForFileType:NSFileTypeForHFSTypeCode(kGenericURLIcon)], @"image", label, 
@"string", toolTip, @"toolTip", nil];
         }
         return cellDictionary;
-    }else if([field isEqualToString:BDSKColorString] || [field 
isEqualToString:BDSKColorLabelString]){
+    } else if ([field isEqualToString:BDSKColorString] || [field 
isEqualToString:BDSKColorLabelString]) {
         return [self color];
-    }else{
+    } else {
         // the tableColumn isn't something we handle in a custom way.
         return [[self valueOfField:field] expandedString];
     }
@@ -2788,18 +2788,6 @@
                                                       userInfo:notifInfo];
 }
 
-- (NSImage *)imageForURLField:(NSString *)field{
-    NSURL *url = [self URLForField:field];
-    if (nil == url)
-        return nil;
-    else if ([field isRemoteURLField])
-        return [NSImage imageForURL:url];
-    else if ((url = [url fileURLByStrictlyResolvingAliases]) == nil)
-        return [NSImage missingFileImage];
-    else
-        return [[NSWorkspace sharedWorkspace] iconForFileType:[url 
pathExtension]];
-}
-
 - (NSURL *)URLForField:(NSString *)field{
     return ([field isLocalFileField] ? [self localFileURLForField:field] : 
[self remoteURLForField:field]);
 }

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.



_______________________________________________
Bibdesk-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bibdesk-commit

Reply via email to