1 /* 2 * Copyright (C) 2013-2018 Team Kodi 3 * This file is part of Kodi - https://kodi.tv 4 * 5 * SPDX-License-Identifier: GPL-2.0-or-later 6 * See LICENSES/README.md for more information. 7 */ 8 9 #pragma once 10 11 #include <map> 12 #include <set> 13 #include <string> 14 15 using MediaType = std::string; 16 17 #define MediaTypeNone "" 18 #define MediaTypeMusic "music" 19 #define MediaTypeArtist "artist" 20 #define MediaTypeAlbum "album" 21 #define MediaTypeSong "song" 22 #define MediaTypeVideo "video" 23 #define MediaTypeVideoCollection "set" 24 #define MediaTypeMusicVideo "musicvideo" 25 #define MediaTypeMovie "movie" 26 #define MediaTypeTvShow "tvshow" 27 #define MediaTypeSeason "season" 28 #define MediaTypeEpisode "episode" 29 30 class CMediaTypes 31 { 32 public: 33 static bool IsValidMediaType(const MediaType &mediaType); 34 static bool IsMediaType(const std::string &strMediaType, const MediaType &mediaType); 35 static MediaType FromString(const std::string &strMediaType); 36 static MediaType ToPlural(const MediaType &mediaType); 37 38 static bool IsContainer(const MediaType &mediaType); 39 40 static std::string GetLocalization(const MediaType &mediaType); 41 static std::string GetPluralLocalization(const MediaType &mediaType); 42 static std::string GetCapitalLocalization(const MediaType &mediaType); 43 static std::string GetCapitalPluralLocalization(const MediaType &mediaType); 44 45 typedef struct MediaTypeInfo { MediaTypeInfoMediaTypeInfo46 MediaTypeInfo(const MediaType &mediaType, const std::string &plural, bool container, 47 int localizationSingular, int localizationPlural, 48 int localizationSingularCapital, int localizationPluralCapital) 49 : mediaType(mediaType), 50 plural(plural), 51 container(container), 52 localizationSingular(localizationSingular), 53 localizationPlural(localizationPlural), 54 localizationSingularCapital(localizationSingularCapital), 55 localizationPluralCapital(localizationPluralCapital) 56 { } 57 58 MediaType mediaType; 59 std::string plural; 60 bool container; 61 int localizationSingular; 62 int localizationPlural; 63 int localizationSingularCapital; 64 int localizationPluralCapital; 65 } MediaTypeInfo; 66 67 private: 68 static std::map<std::string, MediaTypeInfo>::const_iterator findMediaType(const std::string &mediaType); 69 70 static std::map<std::string, MediaTypeInfo> m_mediaTypes; 71 }; 72