2 * Copyright (C) 2013-2018 Team Kodi
3 * This file is part of Kodi - https://kodi.tv
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
11 #include "guilib/LocalizeStrings.h"
12 #include "utils/StringUtils.h"
16 static std::map
<std::string
, CMediaTypes::MediaTypeInfo
> fillDefaultMediaTypes()
18 std::map
<std::string
, CMediaTypes::MediaTypeInfo
> mediaTypes
;
21 mediaTypes
.insert(std::make_pair(MediaTypeMusic
, CMediaTypes::MediaTypeInfo(MediaTypeMusic
, MediaTypeMusic
, true, 36914, 36915, 249, 249)));
22 mediaTypes
.insert(std::make_pair(MediaTypeArtist
, CMediaTypes::MediaTypeInfo(MediaTypeArtist
, MediaTypeArtist
"s", true, 36916, 36917, 557, 133)));
23 mediaTypes
.insert(std::make_pair(MediaTypeAlbum
, CMediaTypes::MediaTypeInfo(MediaTypeAlbum
, MediaTypeAlbum
"s", true, 36918, 36919, 558, 132)));
24 mediaTypes
.insert(std::make_pair(MediaTypeSong
, CMediaTypes::MediaTypeInfo(MediaTypeSong
, MediaTypeSong
"s", false, 36920, 36921, 179, 134)));
25 mediaTypes
.insert(std::make_pair(MediaTypeVideo
, CMediaTypes::MediaTypeInfo(MediaTypeVideo
, MediaTypeVideo
"s", true, 36912, 36913, 291, 3)));
26 mediaTypes
.insert(std::make_pair(MediaTypeVideoCollection
, CMediaTypes::MediaTypeInfo(MediaTypeVideoCollection
, MediaTypeVideoCollection
"s", true, 36910, 36911, 20141, 20434)));
27 mediaTypes
.insert(std::make_pair(MediaTypeMusicVideo
, CMediaTypes::MediaTypeInfo(MediaTypeMusicVideo
, MediaTypeMusicVideo
"s", false, 36908, 36909, 20391, 20389)));
28 mediaTypes
.insert(std::make_pair(MediaTypeMovie
, CMediaTypes::MediaTypeInfo(MediaTypeMovie
, MediaTypeMovie
"s", false, 36900, 36901, 20338, 20342)));
29 mediaTypes
.insert(std::make_pair(MediaTypeTvShow
, CMediaTypes::MediaTypeInfo(MediaTypeTvShow
, MediaTypeTvShow
"s", true, 36902, 36903, 36902, 36903)));
30 mediaTypes
.insert(std::make_pair(MediaTypeSeason
, CMediaTypes::MediaTypeInfo(MediaTypeSeason
, MediaTypeSeason
"s", true, 36904, 36905, 20373, 33054)));
31 mediaTypes
.insert(std::make_pair(MediaTypeEpisode
, CMediaTypes::MediaTypeInfo(MediaTypeEpisode
, MediaTypeEpisode
"s", false, 36906, 36907, 20359, 20360)));
32 mediaTypes
.insert(std::make_pair(MediaTypeVideoVersion
, CMediaTypes::MediaTypeInfo(MediaTypeVideoVersion
, MediaTypeVideoVersion
"s", false, 40010, 40011, 40012, 40013)));
38 std::map
<std::string
, CMediaTypes::MediaTypeInfo
> CMediaTypes::m_mediaTypes
= fillDefaultMediaTypes();
40 bool CMediaTypes::IsValidMediaType(const MediaType
&mediaType
)
42 return findMediaType(mediaType
) != m_mediaTypes
.end();
45 bool CMediaTypes::IsMediaType(const std::string
&strMediaType
, const MediaType
&mediaType
)
47 std::map
<std::string
, MediaTypeInfo
>::const_iterator strMediaTypeIt
= findMediaType(strMediaType
);
48 std::map
<std::string
, MediaTypeInfo
>::const_iterator mediaTypeIt
= findMediaType(mediaType
);
50 return strMediaTypeIt
!= m_mediaTypes
.end() && mediaTypeIt
!= m_mediaTypes
.end() &&
51 strMediaTypeIt
->first
.compare(mediaTypeIt
->first
) == 0;
54 MediaType
CMediaTypes::FromString(const std::string
&strMediaType
)
56 std::map
<std::string
, MediaTypeInfo
>::const_iterator mediaTypeIt
= findMediaType(strMediaType
);
57 if (mediaTypeIt
== m_mediaTypes
.end())
60 return mediaTypeIt
->first
;
63 MediaType
CMediaTypes::ToPlural(const MediaType
&mediaType
)
65 std::map
<std::string
, MediaTypeInfo
>::const_iterator mediaTypeIt
= findMediaType(mediaType
);
66 if (mediaTypeIt
== m_mediaTypes
.end())
69 return mediaTypeIt
->second
.plural
;
72 bool CMediaTypes::IsContainer(const MediaType
&mediaType
)
74 std::map
<std::string
, MediaTypeInfo
>::const_iterator mediaTypeIt
= findMediaType(mediaType
);
75 if (mediaTypeIt
== m_mediaTypes
.end())
78 return mediaTypeIt
->second
.container
;
81 std::map
<std::string
, CMediaTypes::MediaTypeInfo
>::const_iterator
CMediaTypes::findMediaType(const std::string
&mediaType
)
83 std::string strMediaType
= mediaType
;
84 StringUtils::ToLower(strMediaType
);
86 std::map
<std::string
, MediaTypeInfo
>::const_iterator it
= m_mediaTypes
.find(strMediaType
);
87 if (it
!= m_mediaTypes
.end())
90 for (it
= m_mediaTypes
.begin(); it
!= m_mediaTypes
.end(); ++it
)
92 if (strMediaType
.compare(it
->second
.plural
) == 0)
96 return m_mediaTypes
.end();
99 std::string
CMediaTypes::GetLocalization(const MediaType
&mediaType
)
101 std::map
<std::string
, MediaTypeInfo
>::const_iterator mediaTypeIt
= findMediaType(mediaType
);
102 if (mediaTypeIt
== m_mediaTypes
.end() ||
103 mediaTypeIt
->second
.localizationSingular
<= 0)
106 return g_localizeStrings
.Get(mediaTypeIt
->second
.localizationSingular
);
109 std::string
CMediaTypes::GetPluralLocalization(const MediaType
&mediaType
)
111 std::map
<std::string
, MediaTypeInfo
>::const_iterator mediaTypeIt
= findMediaType(mediaType
);
112 if (mediaTypeIt
== m_mediaTypes
.end() ||
113 mediaTypeIt
->second
.localizationPlural
<= 0)
116 return g_localizeStrings
.Get(mediaTypeIt
->second
.localizationPlural
);
119 std::string
CMediaTypes::GetCapitalLocalization(const MediaType
&mediaType
)
121 std::map
<std::string
, MediaTypeInfo
>::const_iterator mediaTypeIt
= findMediaType(mediaType
);
122 if (mediaTypeIt
== m_mediaTypes
.end() ||
123 mediaTypeIt
->second
.localizationSingular
<= 0)
126 return g_localizeStrings
.Get(mediaTypeIt
->second
.localizationSingularCapital
);
129 std::string
CMediaTypes::GetCapitalPluralLocalization(const MediaType
&mediaType
)
131 std::map
<std::string
, MediaTypeInfo
>::const_iterator mediaTypeIt
= findMediaType(mediaType
);
132 if (mediaTypeIt
== m_mediaTypes
.end() ||
133 mediaTypeIt
->second
.localizationPlural
<= 0)
136 return g_localizeStrings
.Get(mediaTypeIt
->second
.localizationPluralCapital
);