From ac96cb4f29544b1b45af4c94d384e41ad6d6d7a8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Felix=20Paul=20K=C3=BChne?= <felix@feepk.net>
Date: Sat, 25 Jan 2020 13:40:32 +0100
Subject: [PATCH] macosx/library: add helpers to expose human readable types

---
 .../gui/macosx/library/VLCLibraryDataTypes.h  |  4 +
 .../gui/macosx/library/VLCLibraryDataTypes.m  | 82 +++++++++++++++++++
 2 files changed, 86 insertions(+)

diff --git a/modules/gui/macosx/library/VLCLibraryDataTypes.h b/modules/gui/macosx/library/VLCLibraryDataTypes.h
index d208f20ff651..3d64261f70a2 100644
--- a/modules/gui/macosx/library/VLCLibraryDataTypes.h
+++ b/modules/gui/macosx/library/VLCLibraryDataTypes.h
@@ -43,6 +43,7 @@ extern const long long int VLCMediaLibraryMediaItemDurationDenominator;
 @property (readonly) NSString *MRL;
 @property (readonly) NSURL *fileURL;
 @property (readonly) vlc_ml_file_type_t fileType;
+@property (readonly) NSString *readableFileType;
 @property (readonly) BOOL external;
 @property (readonly) BOOL removable;
 @property (readonly) BOOL present;
@@ -57,6 +58,7 @@ extern const long long int VLCMediaLibraryMediaItemDurationDenominator;
 @property (readonly) NSString *language;
 @property (readonly) NSString *trackDescription;
 @property (readonly) vlc_ml_track_type_t trackType;
+@property (readonly) NSString *readableTrackType;
 @property (readonly) uint32_t bitrate;
 
 @property (readonly) uint32_t numberOfAudioChannels;
@@ -156,7 +158,9 @@ extern const long long int VLCMediaLibraryMediaItemDurationDenominator;
 
 @property (readonly) int64_t libraryID;
 @property (readonly) vlc_ml_media_type_t mediaType;
+@property (readonly) NSString *readableMediaType;
 @property (readonly) vlc_ml_media_subtype_t mediaSubType;
+@property (readonly) NSString *readableMediaSubType;
 @property (readonly) VLCInputItem *inputItem;
 
 @property (readonly) NSArray <VLCMediaLibraryFile *> *files;
diff --git a/modules/gui/macosx/library/VLCLibraryDataTypes.m b/modules/gui/macosx/library/VLCLibraryDataTypes.m
index 82fef465e05c..7aa8373ac6c4 100644
--- a/modules/gui/macosx/library/VLCLibraryDataTypes.m
+++ b/modules/gui/macosx/library/VLCLibraryDataTypes.m
@@ -63,6 +63,34 @@ NSString *VLCMediaLibraryMediaItemLibraryID = @"VLCMediaLibraryMediaItemLibraryI
     return [NSURL URLWithString:_MRL];
 }
 
+- (NSString *)readableFileType
+{
+    switch (_fileType) {
+        case VLC_ML_FILE_TYPE_MAIN:
+            return _NS("Main");
+            break;
+
+        case VLC_ML_FILE_TYPE_PART:
+            return _NS("Part");
+            break;
+
+        case VLC_ML_FILE_TYPE_PLAYLIST:
+            return _NS("Playlist");
+            break;
+
+        case VLC_ML_FILE_TYPE_SUBTITLE:
+            return _NS("Subtitle");
+            break;
+
+        case VLC_ML_FILE_TYPE_SOUNDTRACK:
+            return _NS("Soundtrack");
+
+        default:
+            return _NS("Unknown");
+            break;
+    }
+}
+
 @end
 
 @implementation VLCMediaLibraryTrack
@@ -95,6 +123,22 @@ NSString *VLCMediaLibraryMediaItemLibraryID = @"VLCMediaLibraryMediaItemLibraryI
     return [NSString stringWithFormat:@"%@ — type: %i, codec %@", NSStringFromClass([self class]), _trackType, _codec];
 }
 
+- (NSString *)readableTrackType
+{
+    switch (_trackType) {
+        case VLC_ML_TRACK_TYPE_AUDIO:
+            return _NS("Audio");
+            break;
+
+        case VLC_ML_TRACK_TYPE_VIDEO:
+            return _NS("Video");
+
+        default:
+            return _NS("Unknown");
+            break;
+    }
+}
+
 @end
 
 @implementation VLCMediaLibraryMovie
@@ -373,6 +417,44 @@ NSString *VLCMediaLibraryMediaItemLibraryID = @"VLCMediaLibraryMediaItemLibraryI
             NSStringFromClass([self class]), _title, _libraryID, _mediaType, _smallArtworkMRL];
 }
 
+- (NSString *)readableMediaType
+{
+    switch (_mediaType) {
+        case VLC_ML_MEDIA_TYPE_AUDIO:
+            return _NS("Audio");
+            break;
+
+        case VLC_ML_MEDIA_TYPE_VIDEO:
+            return _NS("Video");
+            break;
+
+        default:
+            return _NS("Unknown");
+            break;
+    }
+}
+
+- (NSString *)readableMediaSubType
+{
+    switch (_mediaSubType) {
+        case VLC_ML_MEDIA_SUBTYPE_MOVIE:
+            return _NS("Movie");
+            break;
+
+        case VLC_ML_MEDIA_SUBTYPE_SHOW_EPISODE:
+            return _NS("Show Episode");
+            break;
+
+        case VLC_ML_MEDIA_SUBTYPE_ALBUMTRACK:
+            return _NS("Album Track");
+            break;
+
+        default:
+            return _NS("Unknown");
+            break;
+    }
+}
+
 - (VLCInputItem *)inputItem
 {
     input_item_t *p_inputItem = vlc_ml_get_input_item(_p_mediaLibrary, _libraryID);
-- 
GitLab