[PVR][Estuary] Timer settings dialog: Show client name in timer type selection dialog...
[xbmc.git] / xbmc / video / GUIViewStateVideo.cpp
blob79e4f4b43f8e7dd4874ac195f6fb2612240522c6
1 /*
2 * Copyright (C) 2016-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.
7 */
9 #include "GUIViewStateVideo.h"
11 #include "FileItem.h"
12 #include "ServiceBroker.h"
13 #include "VideoDatabase.h"
14 #include "filesystem/Directory.h"
15 #include "filesystem/VideoDatabaseDirectory.h"
16 #include "guilib/WindowIDs.h"
17 #include "playlists/PlayListTypes.h"
18 #include "settings/MediaSettings.h"
19 #include "settings/MediaSourceSettings.h"
20 #include "settings/Settings.h"
21 #include "settings/SettingsComponent.h"
22 #include "utils/FileExtensionProvider.h"
23 #include "utils/SortUtils.h"
24 #include "view/ViewStateSettings.h"
26 using namespace XFILE;
27 using namespace VIDEODATABASEDIRECTORY;
29 std::string CGUIViewStateWindowVideo::GetLockType()
31 return "video";
34 std::string CGUIViewStateWindowVideo::GetExtensions()
36 return CServiceBroker::GetFileExtensionProvider().GetVideoExtensions();
39 PLAYLIST::Id CGUIViewStateWindowVideo::GetPlaylist() const
41 return PLAYLIST::TYPE_VIDEO;
44 VECSOURCES& CGUIViewStateWindowVideo::GetSources()
46 AddLiveTVSources();
47 return CGUIViewState::GetSources();
50 bool CGUIViewStateWindowVideo::AutoPlayNextItem()
52 return AutoPlayNextVideoItem();
55 /***************************/
57 CGUIViewStateWindowVideoNav::CGUIViewStateWindowVideoNav(const CFileItemList& items) : CGUIViewStateWindowVideo(items)
59 SortAttribute sortAttributes = SortAttributeNone;
60 if (CServiceBroker::GetSettingsComponent()->GetSettings()->GetBool(CSettings::SETTING_FILELISTS_IGNORETHEWHENSORTING))
61 sortAttributes = SortAttributeIgnoreArticle;
63 if (items.IsVirtualDirectoryRoot())
65 AddSortMethod(SortByNone, 551, LABEL_MASKS("%F", "%I", "%L", "")); // Filename, Size | Label, empty
66 SetSortMethod(SortByNone);
68 SetViewAsControl(DEFAULT_VIEW_LIST);
70 SetSortOrder(SortOrderNone);
72 else if (items.IsVideoDb())
74 NODE_TYPE NodeType=CVideoDatabaseDirectory::GetDirectoryChildType(items.GetPath());
75 CQueryParams params;
76 CVideoDatabaseDirectory::GetQueryParams(items.GetPath(),params);
78 switch (NodeType)
80 case NODE_TYPE_MOVIES_OVERVIEW:
81 case NODE_TYPE_TVSHOWS_OVERVIEW:
82 case NODE_TYPE_MUSICVIDEOS_OVERVIEW:
83 case NODE_TYPE_OVERVIEW:
85 AddSortMethod(SortByNone, 551, LABEL_MASKS("%F", "%I", "%L", "")); // Filename, Size | Label, empty
87 SetSortMethod(SortByNone);
89 SetViewAsControl(DEFAULT_VIEW_LIST);
91 SetSortOrder(SortOrderNone);
93 break;
94 case NODE_TYPE_DIRECTOR:
95 case NODE_TYPE_ACTOR:
97 AddSortMethod(SortByLabel, 551, LABEL_MASKS("%T", "%R", "%L", "")); // Title, Rating | Label, empty
98 AddSortMethod(SortByRelevance, 38026, LABEL_MASKS("%T", "%c", "%L", "%c")); // Title, Actor's appearances (Relevance) | Label, Actor's appearances (Relevance)
99 SetSortMethod(SortByLabel);
101 const CViewState *viewState = CViewStateSettings::GetInstance().Get("videonavactors");
102 SetViewAsControl(viewState->m_viewMode);
103 SetSortOrder(viewState->m_sortDescription.sortOrder);
105 break;
106 case NODE_TYPE_YEAR:
108 AddSortMethod(SortByLabel, 562, LABEL_MASKS("%T", "%R", "%L", "")); // Title, Rating | Label, empty
109 SetSortMethod(SortByLabel);
111 const CViewState *viewState = CViewStateSettings::GetInstance().Get("videonavyears");
112 SetViewAsControl(viewState->m_viewMode);
113 SetSortOrder(viewState->m_sortDescription.sortOrder);
115 break;
116 case NODE_TYPE_SEASONS:
118 AddSortMethod(SortBySortTitle, 556, LABEL_MASKS("%L", "","%L","")); // Label, empty | Label, empty
119 SetSortMethod(SortBySortTitle);
121 const CViewState *viewState = CViewStateSettings::GetInstance().Get("videonavseasons");
122 SetViewAsControl(viewState->m_viewMode);
123 SetSortOrder(viewState->m_sortDescription.sortOrder);
125 break;
126 case NODE_TYPE_TITLE_TVSHOWS:
127 case NODE_TYPE_INPROGRESS_TVSHOWS:
129 AddSortMethod(SortBySortTitle, sortAttributes, 556, LABEL_MASKS("%T", "%M", "%T", "%M")); // Title, #Episodes | Title, #Episodes
130 AddSortMethod(SortByOriginalTitle, sortAttributes, 20376,
131 LABEL_MASKS("%T", "%M", "%T", "%M")); // Title, #Episodes | Title, #Episodes
133 AddSortMethod(SortByNumberOfEpisodes, sortAttributes, 20360,
134 LABEL_MASKS("%L", "%M", "%L", "%M")); // Label, #Episodes | Label, #Episodes
135 AddSortMethod(
136 SortByLastPlayed, sortAttributes, 568,
137 LABEL_MASKS("%T", "%p", "%T", "%p")); // Title, #Last played | Title, #Last played
138 AddSortMethod(SortByDateAdded, sortAttributes, 570,
139 LABEL_MASKS("%T", "%a", "%T", "%a")); // Title, DateAdded | Title, DateAdded
140 AddSortMethod(SortByYear, sortAttributes, 562,
141 LABEL_MASKS("%L", "%Y", "%L", "%Y")); // Label, Year | Label, Year
142 AddSortMethod(SortByRating, sortAttributes, 563,
143 LABEL_MASKS("%T", "%R", "%T", "%R")); // Title, Rating | Title, Rating
144 AddSortMethod(SortByUserRating, sortAttributes, 38018,
145 LABEL_MASKS("%T", "%r", "%T", "%r")); // Title, Userrating | Title, Userrating
146 SetSortMethod(SortByLabel);
148 const CViewState *viewState = CViewStateSettings::GetInstance().Get("videonavtvshows");
149 SetViewAsControl(viewState->m_viewMode);
150 SetSortOrder(viewState->m_sortDescription.sortOrder);
152 break;
153 case NODE_TYPE_MUSICVIDEOS_ALBUM:
154 case NODE_TYPE_GENRE:
155 case NODE_TYPE_COUNTRY:
156 case NODE_TYPE_STUDIO:
158 AddSortMethod(SortByLabel, 551, LABEL_MASKS("%T", "%R", "%L", "")); // Title, Rating | Label, empty
159 SetSortMethod(SortByLabel);
161 const CViewState *viewState = CViewStateSettings::GetInstance().Get("videonavgenres");
162 SetViewAsControl(viewState->m_viewMode);
163 SetSortOrder(viewState->m_sortDescription.sortOrder);
165 break;
166 case NODE_TYPE_SETS:
168 AddSortMethod(SortByLabel, sortAttributes, 551, LABEL_MASKS("%T","%R", "%T","%R")); // Title, Rating | Title, Rating
170 AddSortMethod(SortByYear, 562, LABEL_MASKS("%T", "%Y", "%T", "%Y")); // Title, Year | Title, Year
171 AddSortMethod(SortByRating, 563, LABEL_MASKS("%T", "%R", "%T", "%R")); // Title, Rating | Title, Rating
172 AddSortMethod(SortByDateAdded, 570, LABEL_MASKS("%T", "%a", "%T", "%a")); // Title, DateAdded | Title, DateAdded
173 AddSortMethod(SortByPlaycount, 567,
174 LABEL_MASKS("%T", "%V", "%T", "%V")); // Title, Playcount | Title, Playcount
176 SetSortMethod(SortByLabel);
178 const CViewState *viewState = CViewStateSettings::GetInstance().Get("videonavgenres");
179 SetViewAsControl(viewState->m_viewMode);
180 SetSortOrder(viewState->m_sortDescription.sortOrder);
182 break;
183 case NODE_TYPE_TAGS:
185 AddSortMethod(SortByLabel, sortAttributes, 551, LABEL_MASKS("%T","", "%T","")); // Title, empty | Title, empty
186 SetSortMethod(SortByLabel);
188 const CViewState *viewState = CViewStateSettings::GetInstance().Get("videonavgenres");
189 SetViewAsControl(viewState->m_viewMode);
190 SetSortOrder(viewState->m_sortDescription.sortOrder);
192 break;
193 case NODE_TYPE_EPISODES:
195 if (params.GetSeason() > -1)
197 AddSortMethod(SortByEpisodeNumber, 20359, LABEL_MASKS("%E. %T","%R")); // Episode. Title, Rating | empty, empty
198 AddSortMethod(SortByRating, 563, LABEL_MASKS("%E. %T", "%R")); // Episode. Title, Rating | empty, empty
199 AddSortMethod(SortByUserRating, 38018, LABEL_MASKS("%E. %T", "%r")); // Episode. Title, Userrating | empty, empty
200 AddSortMethod(SortByMPAA, 20074, LABEL_MASKS("%E. %T", "%O")); // Episode. Title, MPAA | empty, empty
201 AddSortMethod(SortByProductionCode, 20368, LABEL_MASKS("%E. %T","%P", "%E. %T","%P")); // Episode. Title, ProductionCode | Episode. Title, ProductionCode
202 AddSortMethod(SortByDate, 552, LABEL_MASKS("%E. %T","%J","%E. %T","%J")); // Episode. Title, Date | Episode. Title, Date
203 AddSortMethod(SortByPlaycount, 567,
204 LABEL_MASKS("%E. %T", "%V")); // Episode. Title, Playcount | empty, empty
206 else
208 AddSortMethod(SortByEpisodeNumber, 20359, LABEL_MASKS("%H. %T","%R")); // Order. Title, Rating | empty, empty
209 AddSortMethod(SortByRating, 563, LABEL_MASKS("%H. %T", "%R")); // Order. Title, Rating | empty, empty
210 AddSortMethod(SortByUserRating, 38018, LABEL_MASKS("%H. %T", "%r")); // Order. Title, Userrating | empty, empty
211 AddSortMethod(SortByMPAA, 20074, LABEL_MASKS("%H. %T", "%O")); // Order. Title, MPAA | empty, empty
212 AddSortMethod(SortByProductionCode, 20368, LABEL_MASKS("%H. %T","%P", "%H. %T","%P")); // Order. Title, ProductionCode | Episode. Title, ProductionCode
213 AddSortMethod(SortByDate, 552, LABEL_MASKS("%H. %T","%J","%H. %T","%J")); // Order. Title, Date | Episode. Title, Date
214 AddSortMethod(SortByPlaycount, 567,
215 LABEL_MASKS("%H. %T", "%V")); // Order. Title, Playcount | empty, empty
217 AddSortMethod(SortByLabel, sortAttributes, 551, LABEL_MASKS("%T","%R")); // Title, Rating | empty, empty
219 const CViewState *viewState = CViewStateSettings::GetInstance().Get("videonavepisodes");
220 SetSortMethod(viewState->m_sortDescription);
221 SetViewAsControl(viewState->m_viewMode);
222 SetSortOrder(viewState->m_sortDescription.sortOrder);
223 break;
225 case NODE_TYPE_RECENTLY_ADDED_EPISODES:
227 AddSortMethod(SortByNone, 552, LABEL_MASKS("%Z - %H. %T", "%R")); // TvShow - Order. Title, Rating | empty, empty
228 SetSortMethod(SortByNone);
230 SetViewAsControl(CViewStateSettings::GetInstance().Get("videonavepisodes")->m_viewMode);
231 SetSortOrder(SortOrderNone);
233 break;
235 case NODE_TYPE_TITLE_MOVIES:
237 if (params.GetSetId() > -1) // Is this a listing within a set?
239 AddSortMethod(SortByYear, 562, LABEL_MASKS("%T", "%Y")); // Title, Year | empty, empty
240 AddSortMethod(SortBySortTitle, sortAttributes, 556, LABEL_MASKS("%T", "%R")); // Title, Rating | empty, empty
241 AddSortMethod(SortByOriginalTitle, sortAttributes, 20376,
242 LABEL_MASKS("%T", "%R")); // Title, Rating | empty, empty
244 else
246 AddSortMethod(SortBySortTitle, sortAttributes, 556, LABEL_MASKS("%T", "%R", "%T", "%R")); // Title, Rating | Title, Rating
247 AddSortMethod(SortByOriginalTitle, sortAttributes, 20376,
248 LABEL_MASKS("%T", "%R", "%T", "%R")); // Title, Rating | Title, Rating
249 AddSortMethod(SortByYear, 562, LABEL_MASKS("%T", "%Y", "%T", "%Y")); // Title, Year | Title, Year
251 AddSortMethod(SortByRating, 563, LABEL_MASKS("%T", "%R", "%T", "%R")); // Title, Rating | Title, Rating
252 AddSortMethod(SortByUserRating, 38018, LABEL_MASKS("%T", "%r", "%T", "%r")); // Title, Userrating | Title, Userrating
253 AddSortMethod(SortByMPAA, 20074, LABEL_MASKS("%T", "%O")); // Title, MPAA | empty, empty
254 AddSortMethod(SortByTime, 180, LABEL_MASKS("%T", "%D")); // Title, Duration | empty, empty
255 AddSortMethod(SortByDateAdded, 570, LABEL_MASKS("%T", "%a", "%T", "%a")); // Title, DateAdded | Title, DateAdded
256 AddSortMethod(SortByLastPlayed, 568, LABEL_MASKS("%T", "%p", "%T", "%p")); // Title, #Last played | Title, #Last played
257 AddSortMethod(SortByPlaycount, 567,
258 LABEL_MASKS("%T", "%V", "%T", "%V")); // Title, Playcount | Title, Playcount
260 const CViewState *viewState = CViewStateSettings::GetInstance().Get("videonavtitles");
261 if (params.GetSetId() > -1)
263 SetSortMethod(SortByYear);
264 SetSortOrder(SortOrderAscending);
266 else
268 SetSortMethod(viewState->m_sortDescription);
269 SetSortOrder(viewState->m_sortDescription.sortOrder);
272 SetViewAsControl(viewState->m_viewMode);
274 break;
275 case NODE_TYPE_TITLE_MUSICVIDEOS:
277 AddSortMethod(SortByLabel, sortAttributes, 551, LABEL_MASKS("%T - %A", "%Y")); // Title, Artist, Year | empty, empty
278 AddSortMethod(SortByAlbum, sortAttributes, 558, LABEL_MASKS("%B - %T - %A", "%Y")); // Album, Title, Artist, Year | empty, empty
279 AddSortMethod(SortByArtist, sortAttributes, 557, LABEL_MASKS("%A - %T", "%Y")); // Artist - Title, Year | empty, empty
280 AddSortMethod(SortByArtistThenYear, sortAttributes, 578, LABEL_MASKS("%A - %T", "%Y")); // Artist, Title, Year| empty, empty
281 AddSortMethod(SortByYear, 562, LABEL_MASKS("%T - %A", "%Y")); // Title, Artist, Year| empty, empty
282 AddSortMethod(SortByTime, 180, LABEL_MASKS("%T - %A", "%D")); // Title, Artist, Duration| empty, empty
283 AddSortMethod(SortByDateAdded, 570, LABEL_MASKS("%T - %A", "%a")); // Title - Artist, DateAdded | empty, empty
284 AddSortMethod(SortByPlaycount, 567, LABEL_MASKS("%T - %A", "%V")); // Title - Artist, PlayCount
285 AddSortMethod(SortByMPAA, 20074, LABEL_MASKS("%T - %A", "%O")); // Title - Artist, MPAARating
286 AddSortMethod(SortByUserRating, 38018, LABEL_MASKS("%T - %A", "%r")); // Title - Artist, UserRating
288 std::string strTrack=CServiceBroker::GetSettingsComponent()->GetSettings()->GetString(CSettings::SETTING_MUSICFILES_TRACKFORMAT);
289 AddSortMethod(SortByTrackNumber, 554, LABEL_MASKS(strTrack, "%N")); // Userdefined, Track Number | empty, empty
291 const CViewState *viewState = CViewStateSettings::GetInstance().Get("videonavmusicvideos");
292 SetSortMethod(viewState->m_sortDescription);
293 SetViewAsControl(viewState->m_viewMode);
294 SetSortOrder(viewState->m_sortDescription.sortOrder);
296 break;
297 case NODE_TYPE_RECENTLY_ADDED_MOVIES:
299 AddSortMethod(SortByNone, 552, LABEL_MASKS("%T", "%R")); // Title, Rating | empty, empty
300 SetSortMethod(SortByNone);
302 SetViewAsControl(CViewStateSettings::GetInstance().Get("videonavtitles")->m_viewMode);
304 SetSortOrder(SortOrderNone);
306 break;
307 case NODE_TYPE_RECENTLY_ADDED_MUSICVIDEOS:
309 AddSortMethod(SortByNone, 552, LABEL_MASKS("%A - %T", "%Y")); // Artist - Title, Year | empty, empty
310 SetSortMethod(SortByNone);
312 SetViewAsControl(CViewStateSettings::GetInstance().Get("videonavmusicvideos")->m_viewMode);
314 SetSortOrder(SortOrderNone);
316 break;
317 default:
318 break;
321 else
323 AddSortMethod(SortByLabel, sortAttributes, 551, LABEL_MASKS("%L", "%I", "%L", "")); // Label, Size | Label, empty
324 AddSortMethod(SortBySize, 553, LABEL_MASKS("%L", "%I", "%L", "%I")); // Label, Size | Label, Size
325 AddSortMethod(SortByDate, 552, LABEL_MASKS("%L", "%J", "%L", "%J")); // Label, Date | Label, Date
326 AddSortMethod(SortByFile, 561, LABEL_MASKS("%L", "%I", "%L", "")); // Label, Size | Label, empty
328 const CViewState *viewState = CViewStateSettings::GetInstance().Get("videofiles");
329 SetSortMethod(viewState->m_sortDescription);
330 SetViewAsControl(viewState->m_viewMode);
331 SetSortOrder(viewState->m_sortDescription.sortOrder);
333 LoadViewState(items.GetPath(), WINDOW_VIDEO_NAV);
336 void CGUIViewStateWindowVideoNav::SaveViewState()
338 if (m_items.IsVideoDb())
340 NODE_TYPE NodeType = CVideoDatabaseDirectory::GetDirectoryChildType(m_items.GetPath());
341 CQueryParams params;
342 CVideoDatabaseDirectory::GetQueryParams(m_items.GetPath(),params);
343 switch (NodeType)
345 case NODE_TYPE_ACTOR:
346 SaveViewToDb(m_items.GetPath(), WINDOW_VIDEO_NAV, CViewStateSettings::GetInstance().Get("videonavactors"));
347 break;
348 case NODE_TYPE_YEAR:
349 SaveViewToDb(m_items.GetPath(), WINDOW_VIDEO_NAV, CViewStateSettings::GetInstance().Get("videonavyears"));
350 break;
351 case NODE_TYPE_GENRE:
352 SaveViewToDb(m_items.GetPath(), WINDOW_VIDEO_NAV, CViewStateSettings::GetInstance().Get("videonavgenres"));
353 break;
354 case NODE_TYPE_TITLE_MOVIES:
355 SaveViewToDb(m_items.GetPath(), WINDOW_VIDEO_NAV, params.GetSetId() > -1 ? NULL : CViewStateSettings::GetInstance().Get("videonavtitles"));
356 break;
357 case NODE_TYPE_EPISODES:
358 SaveViewToDb(m_items.GetPath(), WINDOW_VIDEO_NAV, CViewStateSettings::GetInstance().Get("videonavepisodes"));
359 break;
360 case NODE_TYPE_TITLE_TVSHOWS:
361 SaveViewToDb(m_items.GetPath(), WINDOW_VIDEO_NAV, CViewStateSettings::GetInstance().Get("videonavtvshows"));
362 break;
363 case NODE_TYPE_SEASONS:
364 SaveViewToDb(m_items.GetPath(), WINDOW_VIDEO_NAV, CViewStateSettings::GetInstance().Get("videonavseasons"));
365 break;
366 case NODE_TYPE_TITLE_MUSICVIDEOS:
367 SaveViewToDb(m_items.GetPath(), WINDOW_VIDEO_NAV, CViewStateSettings::GetInstance().Get("videonavmusicvideos"));
368 break;
369 default:
370 SaveViewToDb(m_items.GetPath(), WINDOW_VIDEO_NAV);
371 break;
374 else
376 SaveViewToDb(m_items.GetPath(), WINDOW_VIDEO_NAV, CViewStateSettings::GetInstance().Get("videofiles"));
380 VECSOURCES& CGUIViewStateWindowVideoNav::GetSources()
382 // Setup shares we want to have
383 m_sources.clear();
384 CFileItemList items;
385 if (CServiceBroker::GetSettingsComponent()->GetSettings()->GetBool(CSettings::SETTING_MYVIDEOS_FLATTEN))
386 CDirectory::GetDirectory("library://video_flat/", items, "", DIR_FLAG_DEFAULTS);
387 else
388 CDirectory::GetDirectory("library://video/", items, "", DIR_FLAG_DEFAULTS);
389 for (int i=0; i<items.Size(); ++i)
391 CFileItemPtr item=items[i];
392 CMediaSource share;
393 share.strName=item->GetLabel();
394 share.strPath = item->GetPath();
395 share.m_strThumbnailImage = item->GetArt("icon");
396 share.m_iDriveType = CMediaSource::SOURCE_TYPE_LOCAL;
397 m_sources.push_back(share);
399 return CGUIViewStateWindowVideo::GetSources();
402 bool CGUIViewStateWindowVideoNav::AutoPlayNextItem()
404 CQueryParams params;
405 CVideoDatabaseDirectory::GetQueryParams(m_items.GetPath(),params);
406 if (static_cast<VideoDbContentType>(params.GetContentType()) == VideoDbContentType::MUSICVIDEOS)
407 return CServiceBroker::GetSettingsComponent()->GetSettings()->GetBool(CSettings::SETTING_MUSICPLAYER_AUTOPLAYNEXTITEM);
409 return CGUIViewStateWindowVideo::AutoPlayNextItem();
412 CGUIViewStateWindowVideoPlaylist::CGUIViewStateWindowVideoPlaylist(const CFileItemList& items) : CGUIViewStateWindowVideo(items)
414 AddSortMethod(SortByNone, 551, LABEL_MASKS("%L", "", "%L", "")); // Label, empty | Label, empty
415 SetSortMethod(SortByNone);
417 SetViewAsControl(DEFAULT_VIEW_LIST);
419 SetSortOrder(SortOrderNone);
421 LoadViewState(items.GetPath(), WINDOW_VIDEO_PLAYLIST);
424 void CGUIViewStateWindowVideoPlaylist::SaveViewState()
426 SaveViewToDb(m_items.GetPath(), WINDOW_VIDEO_PLAYLIST);
429 bool CGUIViewStateWindowVideoPlaylist::HideExtensions()
431 return true;
434 bool CGUIViewStateWindowVideoPlaylist::HideParentDirItems()
436 return true;
439 VECSOURCES& CGUIViewStateWindowVideoPlaylist::GetSources()
441 m_sources.clear();
442 // Playlist share
443 CMediaSource share;
444 share.strPath= "playlistvideo://";
445 share.m_iDriveType = CMediaSource::SOURCE_TYPE_LOCAL;
446 m_sources.push_back(share);
448 // no plugins in playlist window
449 return m_sources;
452 CGUIViewStateVideoMovies::CGUIViewStateVideoMovies(const CFileItemList& items) : CGUIViewStateWindowVideo(items)
454 SortAttribute sortAttributes = SortAttributeNone;
455 if (CServiceBroker::GetSettingsComponent()->GetSettings()->GetBool(
456 CSettings::SETTING_FILELISTS_IGNORETHEWHENSORTING))
457 sortAttributes = SortAttributeIgnoreArticle;
459 AddSortMethod(SortBySortTitle, sortAttributes, 556,
460 LABEL_MASKS("%T", "%R", "%T", "%R")); // Title, Rating | Title, Rating
461 AddSortMethod(SortByOriginalTitle, sortAttributes, 20376,
462 LABEL_MASKS("%T", "%R", "%T", "%R")); // Title, Rating | Title, Rating
463 AddSortMethod(SortByYear, 562, LABEL_MASKS("%T", "%Y", "%T", "%Y")); // Title, Year | Title, Year
464 AddSortMethod(SortByRating, 563, LABEL_MASKS("%T", "%R", "%T", "%R")); // Title, Rating | Title, Rating
465 AddSortMethod(SortByUserRating, 38018, LABEL_MASKS("%T", "%r", "%T", "%r")); // Title, Userrating | Title, Userrating
466 AddSortMethod(SortByMPAA, 20074, LABEL_MASKS("%T", "%O")); // Title, MPAA | empty, empty
467 AddSortMethod(SortByTime, 180, LABEL_MASKS("%T", "%D")); // Title, Duration | empty, empty
468 AddSortMethod(SortByDateAdded, 570, LABEL_MASKS("%T", "%a", "%T", "%a")); // Title, DateAdded | Title, DateAdded
469 AddSortMethod(SortByPlaycount, 567,
470 LABEL_MASKS("%T", "%V", "%T", "%V")); // Title, Playcount | Title, Playcount
472 const CViewState *viewState = CViewStateSettings::GetInstance().Get("videonavtitles");
473 if (items.IsSmartPlayList() || items.IsLibraryFolder())
474 AddPlaylistOrder(items, LABEL_MASKS("%T", "%R", "%T", "%R")); // Title, Rating | Title, Rating
475 else
477 SetSortMethod(viewState->m_sortDescription);
478 SetSortOrder(viewState->m_sortDescription.sortOrder);
481 SetViewAsControl(viewState->m_viewMode);
483 LoadViewState(items.GetPath(), WINDOW_VIDEO_NAV);
486 void CGUIViewStateVideoMovies::SaveViewState()
488 SaveViewToDb(m_items.GetPath(), WINDOW_VIDEO_NAV, CViewStateSettings::GetInstance().Get("videonavtitles"));
491 CGUIViewStateVideoMusicVideos::CGUIViewStateVideoMusicVideos(const CFileItemList& items) : CGUIViewStateWindowVideo(items)
493 SortAttribute sortAttributes = SortAttributeNone;
494 const std::shared_ptr<CSettings> settings = CServiceBroker::GetSettingsComponent()->GetSettings();
495 if (settings->GetBool(CSettings::SETTING_FILELISTS_IGNORETHEWHENSORTING))
496 sortAttributes = SortAttributeIgnoreArticle;
498 AddSortMethod(SortByLabel, sortAttributes, 551, LABEL_MASKS("%T - %A", "%Y")); // Title, Artist, Year | empty, empty
499 AddSortMethod(SortByAlbum, sortAttributes, 558, LABEL_MASKS("%B - %T - %A", "%Y")); // Album, Title, Artist, Year | empty, empty
500 AddSortMethod(SortByArtist, sortAttributes, 557, LABEL_MASKS("%A - %T", "%Y")); // Artist - Title, Year | empty, empty
501 AddSortMethod(SortByArtistThenYear, sortAttributes, 578, LABEL_MASKS("%A - %T", "%Y")); // Artist, Title, Year| empty, empty
502 AddSortMethod(SortByYear, 562, LABEL_MASKS("%T - %A", "%Y")); // Title, Artist, Year| empty, empty
503 AddSortMethod(SortByTime, 180, LABEL_MASKS("%T - %A", "%D")); // Title, Artist, Duration| empty, empty
504 AddSortMethod(SortByDateAdded, 570, LABEL_MASKS("%T - %A", "%a")); // Title - Artist, DateAdded | empty, empty
505 AddSortMethod(SortByPlaycount, 567, LABEL_MASKS("%T - %A", "%V")); // Title - Artist, PlayCount
506 AddSortMethod(SortByMPAA, 20074, LABEL_MASKS("%T - %A", "%O")); // Title - Artist, MPAARating
507 AddSortMethod(SortByUserRating, 38018, LABEL_MASKS("%T - %A", "%r")); // Title - Artist, UserRating
509 std::string strTrack = settings->GetString(CSettings::SETTING_MUSICFILES_TRACKFORMAT);
510 AddSortMethod(SortByTrackNumber, 554, LABEL_MASKS(strTrack, "%N")); // Userdefined, Track Number | empty, empty
512 const CViewState *viewState = CViewStateSettings::GetInstance().Get("videonavmusicvideos");
513 if (items.IsSmartPlayList() || items.IsLibraryFolder())
514 AddPlaylistOrder(items, LABEL_MASKS("%A - %T", "%Y")); // Artist - Title, Year | empty, empty
515 else
517 SetSortMethod(viewState->m_sortDescription);
518 SetSortOrder(viewState->m_sortDescription.sortOrder);
521 SetViewAsControl(viewState->m_viewMode);
523 LoadViewState(items.GetPath(), WINDOW_VIDEO_NAV);
526 void CGUIViewStateVideoMusicVideos::SaveViewState()
528 SaveViewToDb(m_items.GetPath(), WINDOW_VIDEO_NAV, CViewStateSettings::GetInstance().Get("videonavmusicvideos"));
531 CGUIViewStateVideoTVShows::CGUIViewStateVideoTVShows(const CFileItemList& items) : CGUIViewStateWindowVideo(items)
533 SortAttribute sortAttributes = SortAttributeNone;
534 const std::shared_ptr<CSettings> settings = CServiceBroker::GetSettingsComponent()->GetSettings();
535 if (settings->GetBool(CSettings::SETTING_FILELISTS_IGNORETHEWHENSORTING))
536 sortAttributes = SortAttributeIgnoreArticle;
538 AddSortMethod(SortBySortTitle, sortAttributes, 556,
539 LABEL_MASKS("%T", "%M", "%T", "%M")); // Title, #Episodes | Title, #Episodes
540 AddSortMethod(SortByNumberOfEpisodes, sortAttributes, 20360,
541 LABEL_MASKS("%L", "%M", "%L", "%M")); // Label, #Episodes | Label, #Episodes
542 AddSortMethod(SortByLastPlayed, sortAttributes, 568,
543 LABEL_MASKS("%T", "%p", "%T", "%p")); // Title, #Last played | Title, #Last played
544 AddSortMethod(SortByDateAdded, sortAttributes, 570,
545 LABEL_MASKS("%T", "%a", "%T", "%a")); // Title, DateAdded | Title, DateAdded
546 AddSortMethod(SortByYear, sortAttributes, 562,
547 LABEL_MASKS("%T", "%Y", "%T", "%Y")); // Title, Year | Title, Year
548 AddSortMethod(SortByUserRating, sortAttributes, 38018,
549 LABEL_MASKS("%T", "%r", "%T", "%r")); // Title, Userrating | Title, Userrating
551 const CViewState *viewState = CViewStateSettings::GetInstance().Get("videonavtvshows");
552 if (items.IsSmartPlayList() || items.IsLibraryFolder())
553 AddPlaylistOrder(items, LABEL_MASKS("%T", "%M", "%T", "%M")); // Title, #Episodes | Title, #Episodes
554 else
556 SetSortMethod(viewState->m_sortDescription);
557 SetSortOrder(viewState->m_sortDescription.sortOrder);
560 SetViewAsControl(viewState->m_viewMode);
562 LoadViewState(items.GetPath(), WINDOW_VIDEO_NAV);
565 void CGUIViewStateVideoTVShows::SaveViewState()
567 SaveViewToDb(m_items.GetPath(), WINDOW_VIDEO_NAV, CViewStateSettings::GetInstance().Get("videonavtvshows"));
570 CGUIViewStateVideoEpisodes::CGUIViewStateVideoEpisodes(const CFileItemList& items) : CGUIViewStateWindowVideo(items)
572 // TvShow - Order. Title, Rating | empty, empty
573 AddSortMethod(SortByEpisodeNumber, 20359, LABEL_MASKS("%Z - %H. %T","%R"));
574 // TvShow - Order. Title, Rating | empty, empty
575 AddSortMethod(SortByRating, 563, LABEL_MASKS("%Z - %H. %T", "%R"));
576 // TvShow - Order. Title, Userrating | empty, empty
577 AddSortMethod(SortByUserRating, 38018, LABEL_MASKS("%Z - %H. %T", "%r"));
578 // TvShow - Order. Title, MPAA | empty, empty
579 AddSortMethod(SortByMPAA, 20074, LABEL_MASKS("%Z - %H. %T", "%O"));
580 // TvShow - Order. Title, Production Code | empty, empty
581 AddSortMethod(SortByProductionCode, 20368, LABEL_MASKS("%Z - %H. %T","%P"));
582 // TvShow - Order. Title, Date | empty, empty
583 AddSortMethod(SortByDate, 552, LABEL_MASKS("%Z - %H. %T","%J"));
584 // TvShow - Order. Title, Playcount | empty, empty
585 AddSortMethod(SortByPlaycount, 567, LABEL_MASKS("%H. %T", "%V"));
587 AddSortMethod(SortByLabel, 551, LABEL_MASKS("%Z - %H. %T","%R"), // TvShow - Order. Title, Rating | empty, empty
588 CServiceBroker::GetSettingsComponent()->GetSettings()->GetBool(CSettings::SETTING_FILELISTS_IGNORETHEWHENSORTING) ? SortAttributeIgnoreArticle : SortAttributeNone);
590 const CViewState *viewState = CViewStateSettings::GetInstance().Get("videonavepisodes");
591 if (items.IsSmartPlayList() || items.IsLibraryFolder())
592 AddPlaylistOrder(items, LABEL_MASKS("%Z - %H. %T", "%R")); // TvShow - Order. Title, Rating | empty, empty
593 else
595 SetSortMethod(viewState->m_sortDescription);
596 SetSortOrder(viewState->m_sortDescription.sortOrder);
599 SetViewAsControl(viewState->m_viewMode);
601 LoadViewState(items.GetPath(), WINDOW_VIDEO_NAV);
604 void CGUIViewStateVideoEpisodes::SaveViewState()
606 SaveViewToDb(m_items.GetPath(), WINDOW_VIDEO_NAV, CViewStateSettings::GetInstance().Get("videonavepisodes"));
609 CGUIViewStateVideoPlaylist::CGUIViewStateVideoPlaylist(const CFileItemList& items)
610 : CGUIViewStateWindowVideo(items)
612 SortAttribute sortAttributes = SortAttributeNone;
613 if (CServiceBroker::GetSettingsComponent()->GetSettings()->GetBool(
614 CSettings::SETTING_FILELISTS_IGNORETHEWHENSORTING))
615 sortAttributes = SortAttributeIgnoreArticle;
617 AddSortMethod(SortByLabel, sortAttributes, 551,
618 LABEL_MASKS("%L", "%I", "%L", "")); // Label, Size | Label, empty
619 AddSortMethod(SortBySize, 553, LABEL_MASKS("%L", "%I", "%L", "%I")); // Label, Size | Label, Size
620 AddSortMethod(SortByDate, 552, LABEL_MASKS("%L", "%J", "%L", "%J")); // Label, Date | Label, Date
621 AddSortMethod(SortByFile, 561, LABEL_MASKS("%L", "%I", "%L", "")); // Label, Size | Label, empty
623 const CViewState* viewState = CViewStateSettings::GetInstance().Get("videofiles");
624 SetSortMethod(viewState->m_sortDescription);
625 SetViewAsControl(viewState->m_viewMode);
626 SetSortOrder(viewState->m_sortDescription.sortOrder);
628 LoadViewState(items.GetPath(), WINDOW_VIDEO_NAV);
631 void CGUIViewStateVideoPlaylist::SaveViewState()
633 SaveViewToDb(m_items.GetPath(), WINDOW_VIDEO_NAV);