From cf70f1370260eb4847f27dda1477c5b6cda95251 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20Paul=20K=C3=BChne?= <felix@feepk.net> Date: Wed, 8 May 2019 12:10:33 +0200 Subject: [PATCH] macosx/library: add abstractions for albums, artists and genres --- .../gui/macosx/library/VLCLibraryDataTypes.h | 40 ++++++++++++++ .../gui/macosx/library/VLCLibraryDataTypes.m | 55 +++++++++++++++++++ 2 files changed, 95 insertions(+) diff --git a/modules/gui/macosx/library/VLCLibraryDataTypes.h b/modules/gui/macosx/library/VLCLibraryDataTypes.h index 67a8fac72969..eb7bdba8a803 100644 --- a/modules/gui/macosx/library/VLCLibraryDataTypes.h +++ b/modules/gui/macosx/library/VLCLibraryDataTypes.h @@ -79,6 +79,36 @@ NS_ASSUME_NONNULL_BEGIN @end +@interface VLCMediaLibraryArtist : NSObject + +- (instancetype)initWithArtist:(struct vlc_ml_artist_t *)p_artist; + +@property (readonly) int64_t artistID; +@property (readonly) NSString *name; +@property (readonly) NSString *shortBiography; +@property (readonly) NSString *artworkMRL; +@property (readonly) NSString *musicBrainzID; +@property (readonly) unsigned int numberOfAlbums; +@property (readonly) unsigned int numberOfTracks; + +@end + +@interface VLCMediaLibraryAlbum : NSObject + +- (instancetype)initWithAlbum:(struct vlc_ml_album_t *)p_album; + +@property (readonly) int64_t albumID; +@property (readonly) NSString *title; +@property (readonly) NSString *summary; +@property (readonly) NSString *artworkMRL; +@property (readonly) NSString *artistName; +@property (readonly) int64_t artistID; +@property (readonly) size_t numberOfTracks; +@property (readonly) unsigned int duration; +@property (readonly) unsigned int year; + +@end + @interface VLCMediaLibraryAlbumTrack : NSObject - (instancetype)initWithAlbumTrack:(struct vlc_ml_album_track_t *)p_albumTrack; @@ -92,6 +122,16 @@ NS_ASSUME_NONNULL_BEGIN @end +@interface VLCMediaLibraryGenre : NSObject + +- (instancetype)initWithGenre:(struct vlc_ml_genre_t *)p_genre; + +@property (readonly) int64_t genreID; +@property (readonly) NSString *name; +@property (readonly) size_t numberOfTracks; + +@end + @interface VLCMediaLibraryMediaItem : NSObject + (nullable instancetype)mediaItemForLibraryID:(int64_t)libraryID; diff --git a/modules/gui/macosx/library/VLCLibraryDataTypes.m b/modules/gui/macosx/library/VLCLibraryDataTypes.m index 228b99076afc..e3211672a60b 100644 --- a/modules/gui/macosx/library/VLCLibraryDataTypes.m +++ b/modules/gui/macosx/library/VLCLibraryDataTypes.m @@ -111,6 +111,46 @@ @end +@implementation VLCMediaLibraryArtist + +- (instancetype)initWithArtist:(struct vlc_ml_artist_t *)p_artist; +{ + self = [super init]; + if (self && p_artist != NULL) { + _artistID = p_artist->i_id; + _name = toNSStr(p_artist->psz_name); + _shortBiography = toNSStr(p_artist->psz_shortbio); + _artworkMRL = toNSStr(p_artist->psz_artwork_mrl); + _musicBrainzID = toNSStr(p_artist->psz_mb_id); + _numberOfAlbums = p_artist->i_nb_album; + _numberOfTracks = p_artist->i_nb_tracks; + } + return self; +} + +@end + +@implementation VLCMediaLibraryAlbum + +- (instancetype)initWithAlbum:(struct vlc_ml_album_t *)p_album +{ + self = [super init]; + if (self && p_album != NULL) { + _albumID = p_album->i_id; + _title = toNSStr(p_album->psz_title); + _summary = toNSStr(p_album->psz_summary); + _artworkMRL = toNSStr(p_album->psz_artwork_mrl); + _artistName = toNSStr(p_album->psz_artist); + _artistID = p_album->i_artist_id; + _numberOfTracks = p_album->i_nb_tracks; + _duration = p_album->i_duration; + _year = p_album->i_year; + } + return self; +} + +@end + @implementation VLCMediaLibraryAlbumTrack - (instancetype)initWithAlbumTrack:(struct vlc_ml_album_track_t *)p_albumTrack @@ -129,6 +169,21 @@ @end +@implementation VLCMediaLibraryGenre + +- (instancetype)initWithGenre:(struct vlc_ml_genre_t *)p_genre +{ + self = [super init]; + if (self && p_genre != NULL) { + _genreID = p_genre->i_id; + _name = toNSStr(p_genre->psz_name); + _numberOfTracks = p_genre->i_nb_tracks; + } + return self; +} + +@end + @interface VLCMediaLibraryMediaItem () @property (readwrite, assign) vlc_medialibrary_t *p_mediaLibrary; -- GitLab