[vlc-commits] [Git][videolan/vlc][master] macosx: Fix year · duration strings in media item supplementary views, have...

Jean-Baptiste Kempf (@jbk) gitlab at videolan.org
Fri Nov 11 02:00:13 UTC 2022



Jean-Baptiste Kempf pushed to branch master at VideoLAN / VLC


Commits:
dfc57131 by Claudio Cambra at 2022-11-11T01:45:47+00:00
macosx: Fix year · duration strings in media item supplementary views, have fallbacks for items with no set year

Signed-off-by: Claudio Cambra <developer at claudiocambra.com>

- - - - -


3 changed files:

- modules/gui/macosx/library/VLCLibraryCollectionViewMediaItemSupplementaryDetailView.m
- modules/gui/macosx/library/VLCLibraryDataTypes.h
- modules/gui/macosx/library/VLCLibraryDataTypes.m


Changes:

=====================================
modules/gui/macosx/library/VLCLibraryCollectionViewMediaItemSupplementaryDetailView.m
=====================================
@@ -61,6 +61,24 @@ NSCollectionViewSupplementaryElementKind const VLCLibraryCollectionViewMediaItem
     [self updateRepresentation];
 }
 
+- (NSString*)formattedYearAndDurationString
+{
+    if (_representedMediaItem.year > 0) {
+        return [NSString stringWithFormat:@"%u · %@", _representedMediaItem.year, _representedMediaItem.durationString];
+    } else if (_representedMediaItem.files.count > 0) {
+        VLCMediaLibraryFile *firstFile = _representedMediaItem.files.firstObject;
+        time_t fileLastModTime = firstFile.lastModificationDate;
+        
+        if (fileLastModTime > 0) {
+            NSDate *lastModDate = [NSDate dateWithTimeIntervalSince1970:fileLastModTime];
+            NSDateComponents *components = [[NSCalendar currentCalendar] components:NSCalendarUnitYear fromDate:lastModDate];
+            return [NSString stringWithFormat:@"%ld · %@", components.year, _representedMediaItem.durationString];
+        }
+    }
+    
+    return _representedMediaItem.durationString;
+}
+
 - (void)updateRepresentation
 {
     if (_representedMediaItem == nil) {
@@ -69,7 +87,7 @@ NSCollectionViewSupplementaryElementKind const VLCLibraryCollectionViewMediaItem
     }
 
     _mediaItemTitleTextField.stringValue = _representedMediaItem.displayString;
-    _mediaItemYearAndDurationTextField.stringValue = [NSString stringWithFormat:@"%u · %@", _representedMediaItem.year, _representedMediaItem.durationString];
+    _mediaItemYearAndDurationTextField.stringValue = [self formattedYearAndDurationString];
     _mediaItemFileNameTextField.stringValue = _representedMediaItem.inputItem.name;
     _mediaItemPathTextField.stringValue = _representedMediaItem.inputItem.decodedMRL;
     _mediaItemArtworkImageView.image = _representedMediaItem.smallArtworkImage;


=====================================
modules/gui/macosx/library/VLCLibraryDataTypes.h
=====================================
@@ -49,6 +49,7 @@ extern const long long int VLCMediaLibraryMediaItemDurationDenominator;
 @property (readonly) BOOL external;
 @property (readonly) BOOL removable;
 @property (readonly) BOOL present;
+ at property (readonly) time_t lastModificationDate;
 
 @end
 


=====================================
modules/gui/macosx/library/VLCLibraryDataTypes.m
=====================================
@@ -123,6 +123,7 @@ static NSArray<VLCMediaLibraryArtist *> *fetchArtistsForLibraryItem(library_arti
         _external = p_file->b_external;
         _removable = p_file->b_removable;
         _present = p_file->b_present;
+        _lastModificationDate = p_file->i_last_modification_date;
     }
     return self;
 }



View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/dfc57131228ac2795d0ce6942c60ab1735e6ab3c

-- 
View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/dfc57131228ac2795d0ce6942c60ab1735e6ab3c
You're receiving this email because of your account on code.videolan.org.


VideoLAN code repository instance


More information about the vlc-commits mailing list