[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