From a7e74e6eb11ad60f5efa5934ac3272bafba0225d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20Paul=20K=C3=BChne?= <felix@feepk.net> Date: Sun, 21 Apr 2019 18:30:19 +0200 Subject: [PATCH] macosx/library: split data types to their own file --- .../macosx/VLC.xcodeproj/project.pbxproj | 6 + modules/gui/macosx/Makefile.am | 2 + .../gui/macosx/library/VLCLibraryDataSource.m | 1 + .../gui/macosx/library/VLCLibraryDataTypes.h | 90 +++++++++++++ .../gui/macosx/library/VLCLibraryDataTypes.m | 127 ++++++++++++++++++ .../macosx/library/VLCLibraryMenuController.m | 1 + modules/gui/macosx/library/VLCLibraryModel.h | 64 +-------- modules/gui/macosx/library/VLCLibraryModel.m | 105 +-------------- po/POTFILES.in | 2 + 9 files changed, 232 insertions(+), 166 deletions(-) create mode 100644 modules/gui/macosx/library/VLCLibraryDataTypes.h create mode 100644 modules/gui/macosx/library/VLCLibraryDataTypes.m diff --git a/extras/package/macosx/VLC.xcodeproj/project.pbxproj b/extras/package/macosx/VLC.xcodeproj/project.pbxproj index 56076c2ca110..bba52781d46d 100644 --- a/extras/package/macosx/VLC.xcodeproj/project.pbxproj +++ b/extras/package/macosx/VLC.xcodeproj/project.pbxproj @@ -152,6 +152,7 @@ 7DFBDCAB2269E77F00B700A5 /* VLCLibraryModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 7DFBDCAA2269E77F00B700A5 /* VLCLibraryModel.m */; }; 7DFBDCAE2269ED0C00B700A5 /* VLCLibraryDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 7DFBDCAD2269ED0C00B700A5 /* VLCLibraryDataSource.m */; }; 7DFBDCB1226A518400B700A5 /* VLCLibraryMenuController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7DFBDCB0226A518400B700A5 /* VLCLibraryMenuController.m */; }; + 7DFBDCB4226CD00900B700A5 /* VLCLibraryDataTypes.m in Sources */ = {isa = PBXBuildFile; fileRef = 7DFBDCB3226CD00900B700A5 /* VLCLibraryDataTypes.m */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -515,6 +516,8 @@ 7DFBDCAD2269ED0C00B700A5 /* VLCLibraryDataSource.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = VLCLibraryDataSource.m; sourceTree = "<group>"; }; 7DFBDCAF226A518400B700A5 /* VLCLibraryMenuController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VLCLibraryMenuController.h; sourceTree = "<group>"; }; 7DFBDCB0226A518400B700A5 /* VLCLibraryMenuController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = VLCLibraryMenuController.m; sourceTree = "<group>"; }; + 7DFBDCB2226CD00900B700A5 /* VLCLibraryDataTypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VLCLibraryDataTypes.h; sourceTree = "<group>"; }; + 7DFBDCB3226CD00900B700A5 /* VLCLibraryDataTypes.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = VLCLibraryDataTypes.m; sourceTree = "<group>"; }; 8E49720006417F6800370C9F /* VLCInformationWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VLCInformationWindowController.h; sourceTree = "<group>"; }; 8E49720106417F6800370C9F /* VLCInformationWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VLCInformationWindowController.m; sourceTree = "<group>"; }; 8E55FB7F0459B0FD00FB3317 /* VLCOutput.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VLCOutput.h; sourceTree = "<group>"; }; @@ -925,6 +928,8 @@ 7DFBDCA72269E77500B700A5 /* VLCLibraryController.m */, 7DFBDCA92269E77F00B700A5 /* VLCLibraryModel.h */, 7DFBDCAA2269E77F00B700A5 /* VLCLibraryModel.m */, + 7DFBDCB2226CD00900B700A5 /* VLCLibraryDataTypes.h */, + 7DFBDCB3226CD00900B700A5 /* VLCLibraryDataTypes.m */, 7DFBDCAC2269ED0C00B700A5 /* VLCLibraryDataSource.h */, 7DFBDCAD2269ED0C00B700A5 /* VLCLibraryDataSource.m */, 7DFBDCAF226A518400B700A5 /* VLCLibraryMenuController.h */, @@ -1611,6 +1616,7 @@ 1C3113DD1E508C6900D4DD76 /* VLCTrackSynchronizationWindowController.m in Sources */, 7D0F5A9B2264EB410009C48A /* VLCHotkeysController.m in Sources */, 6B6FFF701EF9EC350001CEB1 /* CompatibilityFixes.m in Sources */, + 7DFBDCB4226CD00900B700A5 /* VLCLibraryDataTypes.m in Sources */, 1C3113DF1E508C6900D4DD76 /* VLCVideoEffectsWindowController.m in Sources */, 1C3113E11E508C6900D4DD76 /* VLCVoutView.m in Sources */, 1C3113E51E508C6900D4DD76 /* VLCInformationWindowController.m in Sources */, diff --git a/modules/gui/macosx/Makefile.am b/modules/gui/macosx/Makefile.am index db919c84a7ba..501fa05eea43 100644 --- a/modules/gui/macosx/Makefile.am +++ b/modules/gui/macosx/Makefile.am @@ -50,6 +50,8 @@ libmacosx_plugin_la_SOURCES = \ gui/macosx/library/VLCLibraryController.m \ gui/macosx/library/VLCLibraryDataSource.h \ gui/macosx/library/VLCLibraryDataSource.m \ + gui/macosx/library/VLCLibraryDataTypes.h \ + gui/macosx/library/VLCLibraryDataTypes.m \ gui/macosx/library/VLCLibraryMenuController.h \ gui/macosx/library/VLCLibraryMenuController.m \ gui/macosx/library/VLCLibraryModel.h \ diff --git a/modules/gui/macosx/library/VLCLibraryDataSource.m b/modules/gui/macosx/library/VLCLibraryDataSource.m index 0a2f9a189320..0902e6866c49 100644 --- a/modules/gui/macosx/library/VLCLibraryDataSource.m +++ b/modules/gui/macosx/library/VLCLibraryDataSource.m @@ -24,6 +24,7 @@ #import "library/VLCLibraryCollectionViewItem.h" #import "library/VLCLibraryModel.h" +#import "library/VLCLibraryDataTypes.h" #import "extensions/NSString+Helpers.h" diff --git a/modules/gui/macosx/library/VLCLibraryDataTypes.h b/modules/gui/macosx/library/VLCLibraryDataTypes.h new file mode 100644 index 000000000000..cb91ca7b2b27 --- /dev/null +++ b/modules/gui/macosx/library/VLCLibraryDataTypes.h @@ -0,0 +1,90 @@ +/***************************************************************************** + * VLCLibraryDataTypes.h: MacOS X interface module + ***************************************************************************** + * Copyright (C) 2019 VLC authors and VideoLAN + * + * Authors: Felix Paul Kühne <fkuehne # videolan -dot- org> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. + *****************************************************************************/ + +#import <Foundation/Foundation.h> +#import <vlc_media_library.h> + +NS_ASSUME_NONNULL_BEGIN + +@interface VLCMediaLibraryFile : NSObject + +- (instancetype)initWithFile:(struct vlc_ml_file_t *)file; + +@property (readonly) NSString *MRL; +@property (readonly) vlc_ml_file_type_t fileType; +@property (readonly) BOOL external; +@property (readonly) BOOL removable; +@property (readonly) BOOL present; + +@end + +@interface VLCMediaLibraryTrack : NSObject + +- (instancetype)initWithTrack:(struct vlc_ml_media_track_t *)track; + +@property (readonly) NSString *codec; +@property (readonly) NSString *language; +@property (readonly) NSString *trackDescription; +@property (readonly) vlc_ml_track_type_t trackType; +@property (readonly) uint32_t bitrate; + +@property (readonly) uint32_t numberOfAudioChannels; +@property (readonly) uint32_t audioSampleRate; + +@property (readonly) uint32_t videoHeight; +@property (readonly) uint32_t videoWidth; +@property (readonly) uint32_t sourceAspectRatio; +@property (readonly) uint32_t sourceAspectRatioDenominator; +@property (readonly) uint32_t frameRate; +@property (readonly) uint32_t frameRateDenominator; + +@end + +@interface VLCMediaLibraryMediaItem : NSObject + +- (instancetype)initWithMediaItem:(struct vlc_ml_media_t *)mediaItem; + +@property (readonly) int64_t libraryID; +@property (readonly) vlc_ml_media_type_t mediaType; +@property (readonly) vlc_ml_media_subtype_t mediaSubType; + +@property (readonly) NSArray <VLCMediaLibraryFile *> *files; +@property (readonly) NSArray <VLCMediaLibraryTrack *> *tracks; + +@property (readonly) int32_t year; +@property (readonly) int64_t duration; /* Duration in milliseconds */ +@property (readonly) uint32_t playCount; +@property (readonly) time_t lastPlayedDate; +@property (readonly) NSString *title; + +@property (readonly) NSString *artworkMRL; + +@property (readonly) BOOL artworkGenerated; +@property (readonly) BOOL favorited; + +@property (readonly) vlc_ml_show_episode_t showEpisode; +@property (readonly) vlc_ml_movie_t movie; +@property (readonly) vlc_ml_album_track_t albumTrack; + +@end + +NS_ASSUME_NONNULL_END diff --git a/modules/gui/macosx/library/VLCLibraryDataTypes.m b/modules/gui/macosx/library/VLCLibraryDataTypes.m new file mode 100644 index 000000000000..b3cf00fcbfa3 --- /dev/null +++ b/modules/gui/macosx/library/VLCLibraryDataTypes.m @@ -0,0 +1,127 @@ +/***************************************************************************** + * VLCLibraryDataTypes.m: MacOS X interface module + ***************************************************************************** + * Copyright (C) 2019 VLC authors and VideoLAN + * + * Authors: Felix Paul Kühne <fkuehne # videolan -dot- org> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. + *****************************************************************************/ + +#import "VLCLibraryDataTypes.h" + +#import "extensions/NSString+Helpers.h" + +@implementation VLCMediaLibraryFile + +- (instancetype)initWithFile:(struct vlc_ml_file_t *)file +{ + self = [super init]; + if (self && file != NULL) { + _MRL = toNSStr(file->psz_mrl); + _fileType = file->i_type; + _external = file->b_external; + _removable = file->b_removable; + _present = file->b_present; + } + return self; +} + +- (NSString *)description +{ + return [NSString stringWithFormat:@"%@ — type: %i, MRL: %@", NSStringFromClass([self class]), _fileType, _MRL]; +} + +@end + +@implementation VLCMediaLibraryTrack + +- (instancetype)initWithTrack:(struct vlc_ml_media_track_t *)track +{ + self = [super init]; + if (self && track != NULL) { + _codec = toNSStr(track->psz_codec); + _language = toNSStr(track->psz_language); + _trackDescription = toNSStr(track->psz_description); + _trackType = track->i_type; + _bitrate = track->i_bitrate; + + _numberOfAudioChannels = track->a.i_nbChannels; + _audioSampleRate = track->a.i_sampleRate; + + _videoHeight = track->v.i_height; + _videoWidth = track->v.i_width; + _sourceAspectRatio = track->v.i_sarNum; + _sourceAspectRatioDenominator = track->v.i_sarDen; + _frameRate = track->v.i_fpsNum; + _frameRateDenominator = track->v.i_fpsDen; + } + return self; +} + +- (NSString *)description +{ + return [NSString stringWithFormat:@"%@ — type: %i, codec %@", NSStringFromClass([self class]), _trackType, _codec]; +} + +@end + +@implementation VLCMediaLibraryMediaItem + +- (instancetype)initWithMediaItem:(struct vlc_ml_media_t *)p_mediaItem +{ + self = [super init]; + if (self) { + _libraryID = p_mediaItem->i_id; + _mediaType = p_mediaItem->i_type; + _mediaSubType = p_mediaItem->i_subtype; + NSMutableArray *mutArray = [[NSMutableArray alloc] initWithCapacity:p_mediaItem->p_files->i_nb_items]; + for (size_t x = 0; x < p_mediaItem->p_files->i_nb_items; x++) { + VLCMediaLibraryFile *file = [[VLCMediaLibraryFile alloc] initWithFile:&p_mediaItem->p_files->p_items[x]]; + if (file) { + [mutArray addObject:file]; + } + } + _files = [mutArray copy]; + mutArray = [[NSMutableArray alloc] initWithCapacity:p_mediaItem->p_tracks->i_nb_items]; + for (size_t x = 0; x < p_mediaItem->p_tracks->i_nb_items; x++) { + VLCMediaLibraryTrack *track = [[VLCMediaLibraryTrack alloc] initWithTrack:&p_mediaItem->p_tracks->p_items[x]]; + if (track) { + [mutArray addObject:track]; + } + } + _tracks = [mutArray copy]; + _year = p_mediaItem->i_year; + _duration = p_mediaItem->i_duration; + _playCount = p_mediaItem->i_playcount; + _lastPlayedDate = p_mediaItem->i_last_played_date; + _title = toNSStr(p_mediaItem->psz_title); + _artworkMRL = toNSStr(p_mediaItem->psz_artwork_mrl); + _artworkGenerated = p_mediaItem->b_artwork_generated; + _favorited = p_mediaItem->b_is_favorite; + _showEpisode = p_mediaItem->show_episode; + _movie = p_mediaItem->movie; + _albumTrack = p_mediaItem->album_track; + } + return self; +} + +- (NSString *)description +{ + return [NSString stringWithFormat:@"%@ — title: %@, ID: %lli, type: %i, artwork: %@", + NSStringFromClass([self class]), _title, _libraryID, _mediaType, _artworkMRL]; +} + +@end diff --git a/modules/gui/macosx/library/VLCLibraryMenuController.m b/modules/gui/macosx/library/VLCLibraryMenuController.m index 751c4d943169..2d67aac5e700 100644 --- a/modules/gui/macosx/library/VLCLibraryMenuController.m +++ b/modules/gui/macosx/library/VLCLibraryMenuController.m @@ -25,6 +25,7 @@ #import "main/VLCMain.h" #import "library/VLCLibraryController.h" #import "library/VLCLibraryModel.h" +#import "library/VLCLibraryDataTypes.h" #import "extensions/NSString+Helpers.h" diff --git a/modules/gui/macosx/library/VLCLibraryModel.h b/modules/gui/macosx/library/VLCLibraryModel.h index 3c362e287244..63c1321ab945 100644 --- a/modules/gui/macosx/library/VLCLibraryModel.h +++ b/modules/gui/macosx/library/VLCLibraryModel.h @@ -20,7 +20,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ -#import <Foundation/Foundation.h> +#import <Cocoa/Cocoa.h> #import <vlc_media_library.h> @@ -41,66 +41,4 @@ extern NSString *VLCLibraryModelVideoMediaListUpdated; @end -@interface VLCMediaLibraryFile : NSObject - -- (instancetype)initWithFile:(struct vlc_ml_file_t *)file; - -@property (readonly) NSString *MRL; -@property (readonly) vlc_ml_file_type_t fileType; -@property (readonly) BOOL external; -@property (readonly) BOOL removable; -@property (readonly) BOOL present; - -@end - -@interface VLCMediaLibraryTrack : NSObject - -- (instancetype)initWithTrack:(struct vlc_ml_media_track_t *)track; - -@property (readonly) NSString *codec; -@property (readonly) NSString *language; -@property (readonly) NSString *trackDescription; -@property (readonly) vlc_ml_track_type_t trackType; -@property (readonly) uint32_t bitrate; - -@property (readonly) uint32_t numberOfAudioChannels; -@property (readonly) uint32_t audioSampleRate; - -@property (readonly) uint32_t videoHeight; -@property (readonly) uint32_t videoWidth; -@property (readonly) uint32_t sourceAspectRatio; -@property (readonly) uint32_t sourceAspectRatioDenominator; -@property (readonly) uint32_t frameRate; -@property (readonly) uint32_t frameRateDenominator; - -@end - -@interface VLCMediaLibraryMediaItem : NSObject - -- (instancetype)initWithMediaItem:(struct vlc_ml_media_t *)mediaItem; - -@property (readonly) int64_t libraryID; -@property (readonly) vlc_ml_media_type_t mediaType; -@property (readonly) vlc_ml_media_subtype_t mediaSubType; - -@property (readonly) NSArray <VLCMediaLibraryFile *> *files; -@property (readonly) NSArray <VLCMediaLibraryTrack *> *tracks; - -@property (readonly) int32_t year; -@property (readonly) int64_t duration; /* Duration in milliseconds */ -@property (readonly) uint32_t playCount; -@property (readonly) time_t lastPlayedDate; -@property (readonly) NSString *title; - -@property (readonly) NSString *artworkMRL; - -@property (readonly) BOOL artworkGenerated; -@property (readonly) BOOL favorited; - -@property (readonly) vlc_ml_show_episode_t showEpisode; -@property (readonly) vlc_ml_movie_t movie; -@property (readonly) vlc_ml_album_track_t albumTrack; - -@end - NS_ASSUME_NONNULL_END diff --git a/modules/gui/macosx/library/VLCLibraryModel.m b/modules/gui/macosx/library/VLCLibraryModel.m index cea1843b3ed5..8c7fa8a41663 100644 --- a/modules/gui/macosx/library/VLCLibraryModel.m +++ b/modules/gui/macosx/library/VLCLibraryModel.m @@ -21,7 +21,8 @@ *****************************************************************************/ #import "VLCLibraryModel.h" -#import "extensions/NSString+Helpers.h" + +#import "library/VLCLibraryDataTypes.h" NSString *VLCLibraryModelVideoMediaListUpdated = @"VLCLibraryModelVideoMediaListUpdated"; @@ -116,105 +117,3 @@ static void libraryCallback(void *p_data, const vlc_ml_event_t *p_event) } @end - -@implementation VLCMediaLibraryFile - -- (instancetype)initWithFile:(struct vlc_ml_file_t *)file -{ - self = [super init]; - if (self && file != NULL) { - _MRL = toNSStr(file->psz_mrl); - _fileType = file->i_type; - _external = file->b_external; - _removable = file->b_removable; - _present = file->b_present; - } - return self; -} - -- (NSString *)description -{ - return [NSString stringWithFormat:@"%@ — type: %i, MRL: %@", NSStringFromClass([self class]), _fileType, _MRL]; -} - -@end - -@implementation VLCMediaLibraryTrack - -- (instancetype)initWithTrack:(struct vlc_ml_media_track_t *)track -{ - self = [super init]; - if (self && track != NULL) { - _codec = toNSStr(track->psz_codec); - _language = toNSStr(track->psz_language); - _trackDescription = toNSStr(track->psz_description); - _trackType = track->i_type; - _bitrate = track->i_bitrate; - - _numberOfAudioChannels = track->a.i_nbChannels; - _audioSampleRate = track->a.i_sampleRate; - - _videoHeight = track->v.i_height; - _videoWidth = track->v.i_width; - _sourceAspectRatio = track->v.i_sarNum; - _sourceAspectRatioDenominator = track->v.i_sarDen; - _frameRate = track->v.i_fpsNum; - _frameRateDenominator = track->v.i_fpsDen; - } - return self; -} - -- (NSString *)description -{ - return [NSString stringWithFormat:@"%@ — type: %i, codec %@", NSStringFromClass([self class]), _trackType, _codec]; -} - -@end - -@implementation VLCMediaLibraryMediaItem - -- (instancetype)initWithMediaItem:(struct vlc_ml_media_t *)p_mediaItem -{ - self = [super init]; - if (self) { - _libraryID = p_mediaItem->i_id; - _mediaType = p_mediaItem->i_type; - _mediaSubType = p_mediaItem->i_subtype; - NSMutableArray *mutArray = [[NSMutableArray alloc] initWithCapacity:p_mediaItem->p_files->i_nb_items]; - for (size_t x = 0; x < p_mediaItem->p_files->i_nb_items; x++) { - VLCMediaLibraryFile *file = [[VLCMediaLibraryFile alloc] initWithFile:&p_mediaItem->p_files->p_items[x]]; - if (file) { - [mutArray addObject:file]; - } - } - _files = [mutArray copy]; - mutArray = [[NSMutableArray alloc] initWithCapacity:p_mediaItem->p_tracks->i_nb_items]; - for (size_t x = 0; x < p_mediaItem->p_tracks->i_nb_items; x++) { - VLCMediaLibraryTrack *track = [[VLCMediaLibraryTrack alloc] initWithTrack:&p_mediaItem->p_tracks->p_items[x]]; - if (track) { - [mutArray addObject:track]; - } - } - _tracks = [mutArray copy]; - _year = p_mediaItem->i_year; - _duration = p_mediaItem->i_duration; - _playCount = p_mediaItem->i_playcount; - _lastPlayedDate = p_mediaItem->i_last_played_date; - _title = toNSStr(p_mediaItem->psz_title); - _artworkMRL = toNSStr(p_mediaItem->psz_artwork_mrl); - _artworkGenerated = p_mediaItem->b_artwork_generated; - _favorited = p_mediaItem->b_is_favorite; - _showEpisode = p_mediaItem->show_episode; - _movie = p_mediaItem->movie; - _albumTrack = p_mediaItem->album_track; - } - return self; -} - -- (NSString *)description -{ - return [NSString stringWithFormat:@"%@ — title: %@, ID: %lli, type: %i, artwork: %@", - NSStringFromClass([self class]), _title, _libraryID, _mediaType, _artworkMRL]; -} - -@end diff --git a/po/POTFILES.in b/po/POTFILES.in index 8ac1398cc74d..86bbe53ce6c6 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -468,6 +468,8 @@ modules/gui/macosx/library/VLCLibraryController.h modules/gui/macosx/library/VLCLibraryController.m modules/gui/macosx/library/VLCLibraryDataSource.h modules/gui/macosx/library/VLCLibraryDataSource.m +modules/gui/macosx/library/VLCLibraryDataTypes.h +modules/gui/macosx/library/VLCLibraryDataTypes.m modules/gui/macosx/library/VLCLibraryMenuController.h modules/gui/macosx/library/VLCLibraryMenuController.m modules/gui/macosx/library/VLCLibraryModel.h -- GitLab