Merge pull request #26126 from stephan49/fix-pipewire-unlock-error
[xbmc.git] / xbmc / pvr / windows / GUIViewStatePVR.cpp
blob55eefd0f6894121b7f24ef030d87c9db37b1d76c
1 /*
2 * Copyright (C) 2012-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 "GUIViewStatePVR.h"
11 #include "FileItem.h"
12 #include "FileItemList.h"
13 #include "ServiceBroker.h"
14 #include "pvr/PVRManager.h"
15 #include "pvr/addons/PVRClients.h"
16 #include "pvr/epg/EpgSearchPath.h"
17 #include "pvr/providers/PVRProvidersPath.h"
18 #include "pvr/recordings/PVRRecordingsPath.h"
19 #include "pvr/timers/PVRTimersPath.h"
20 #include "settings/AdvancedSettings.h"
21 #include "settings/Settings.h"
22 #include "settings/SettingsComponent.h"
23 #include "view/ViewStateSettings.h"
25 using namespace PVR;
27 CGUIViewStateWindowPVRChannels::CGUIViewStateWindowPVRChannels(const int windowId,
28 const CFileItemList& items)
29 : CGUIViewStatePVR(windowId, items)
31 AddSortMethod(SortByChannelNumber, 549, // "Number"
32 LABEL_MASKS("%L", "", "%L", "")); // Filename, empty | Foldername, empty
33 AddSortMethod(SortByChannel, 551, // "Name"
34 LABEL_MASKS("%L", "", "%L", "")); // Filename, empty | Foldername, empty
35 AddSortMethod(
36 SortByLastPlayed, 568, // "Last played"
37 LABEL_MASKS("%L", "%p", "%L", "%p")); // Filename, LastPlayed | Foldername, LastPlayed
38 AddSortMethod(SortByDateAdded, 570, // "Date added"
39 LABEL_MASKS("%L", "%a", "%L", "%a"), // Filename, DateAdded | Foldername, DateAdded
40 SortAttributeNone, SortOrderDescending);
41 AddSortMethod(SortByClientChannelOrder, 19315, // "Backend number"
42 LABEL_MASKS("%L", "", "%L", "")); // Filename, empty | Foldername, empty
43 AddSortMethod(SortByProvider, 19348, // "Provider"
44 LABEL_MASKS("%L", "", "%L", "")); // Filename, empty | Foldername, empty
46 // Default sorting
47 SetSortMethod(SortByChannelNumber);
49 LoadViewState("pvr://channels/", m_windowId);
52 void CGUIViewStateWindowPVRChannels::SaveViewState()
54 SaveViewToDb("pvr://channels/", m_windowId, CViewStateSettings::GetInstance().Get("pvrchannels"));
57 CGUIViewStateWindowPVRRecordings::CGUIViewStateWindowPVRRecordings(const int windowId,
58 const CFileItemList& items)
59 : CGUIViewStatePVR(windowId, items)
61 AddSortMethod(SortByLabel, 551, // "Name"
62 LABEL_MASKS("%L", "%d", "%L", ""), // Filename, DateTime | Foldername, empty
63 CServiceBroker::GetSettingsComponent()->GetSettings()->GetBool(
64 CSettings::SETTING_FILELISTS_IGNORETHEWHENSORTING)
65 ? SortAttributeIgnoreArticle
66 : SortAttributeNone);
67 AddSortMethod(SortByDate, 552, // "Date"
68 LABEL_MASKS("%L", "%d", "%L", "%d")); // Filename, DateTime | Foldername, DateTime
69 AddSortMethod(SortByTime, 180, // "Duration"
70 LABEL_MASKS("%L", "%D", "%L", "")); // Filename, Duration | Foldername, empty
71 AddSortMethod(SortByFile, 561, // "File"
72 LABEL_MASKS("%L", "%d", "%L", "")); // Filename, DateTime | Foldername, empty
74 if (CServiceBroker::GetPVRManager().Clients()->AnyClientSupportingRecordingsSize())
76 // "Size" : Filename, Size | Foldername, Size
77 AddSortMethod(SortBySize, 553, LABEL_MASKS("%L", "%I", "%L", "%I"));
80 AddSortMethod(SortByEpisodeNumber, 20359, // "Episode"
81 LABEL_MASKS("%L", "%d", "%L", "")); // Filename, DateTime | Foldername, empty
82 AddSortMethod(SortByProvider, 19348, // "Provider"
83 LABEL_MASKS("%L", "", "%L", "")); // Filename, empty | Foldername, empty
85 SetSortMethod(
86 CServiceBroker::GetSettingsComponent()->GetAdvancedSettings()->m_PVRDefaultSortOrder);
88 LoadViewState(items.GetPath(), m_windowId);
91 void CGUIViewStateWindowPVRRecordings::SaveViewState()
93 SaveViewToDb(m_items.GetPath(), m_windowId,
94 CViewStateSettings::GetInstance().Get("pvrrecordings"));
97 bool CGUIViewStateWindowPVRRecordings::HideParentDirItems()
99 return (CGUIViewState::HideParentDirItems() ||
100 CPVRRecordingsPath(m_items.GetPath()).IsRecordingsRoot());
103 CGUIViewStateWindowPVRGuide::CGUIViewStateWindowPVRGuide(const int windowId,
104 const CFileItemList& items)
105 : CGUIViewStatePVR(windowId, items)
107 AddSortMethod(SortByChannelNumber, 549, // "Number"
108 LABEL_MASKS("%L", "", "%L", "")); // Filename, empty | Foldername, empty
109 AddSortMethod(SortByChannel, 551, // "Name"
110 LABEL_MASKS("%L", "", "%L", "")); // Filename, empty | Foldername, empty
111 AddSortMethod(
112 SortByLastPlayed, SortAttributeIgnoreLabel, 568, // "Last played"
113 LABEL_MASKS("%L", "%p", "%L", "%p")); // Filename, LastPlayed | Foldername, LastPlayed
114 AddSortMethod(SortByDateAdded, 570, // "Date added"
115 LABEL_MASKS("%L", "%a", "%L", "%a"), // Filename, DateAdded | Foldername, DateAdded
116 SortAttributeNone, SortOrderDescending);
117 AddSortMethod(SortByClientChannelOrder, 19315, // "Backend number"
118 LABEL_MASKS("%L", "", "%L", "")); // Filename, empty | Foldername, empty
119 AddSortMethod(SortByProvider, 19348, // "Provider"
120 LABEL_MASKS("%L", "", "%L", "")); // Filename, empty | Foldername, empty
122 // Default sorting
123 SetSortMethod(SortByChannelNumber);
125 LoadViewState("pvr://guide/", m_windowId);
128 void CGUIViewStateWindowPVRGuide::SaveViewState()
130 SaveViewToDb("pvr://guide/", m_windowId, CViewStateSettings::GetInstance().Get("pvrguide"));
133 CGUIViewStateWindowPVRTimers::CGUIViewStateWindowPVRTimers(const int windowId,
134 const CFileItemList& items)
135 : CGUIViewStatePVR(windowId, items)
137 int sortAttributes(CServiceBroker::GetSettingsComponent()->GetSettings()->GetBool(
138 CSettings::SETTING_FILELISTS_IGNORETHEWHENSORTING)
139 ? SortAttributeIgnoreArticle
140 : SortAttributeNone);
141 sortAttributes |= SortAttributeIgnoreFolders;
142 AddSortMethod(SortByLabel, static_cast<SortAttribute>(sortAttributes), 551, // "Name"
143 LABEL_MASKS("%L", "", "%L", "")); // Filename, empty | Foldername, empty
144 AddSortMethod(SortByDate, static_cast<SortAttribute>(sortAttributes), 552, // "Date"
145 LABEL_MASKS("%L", "%d", "%L", "%d")); // Filename, DateTime | Foldername, DateTime
147 // Default sorting
148 SetSortMethod(SortByDate);
150 LoadViewState("pvr://timers/", m_windowId);
153 void CGUIViewStateWindowPVRTimers::SaveViewState()
155 SaveViewToDb("pvr://timers/", m_windowId, CViewStateSettings::GetInstance().Get("pvrtimers"));
158 bool CGUIViewStateWindowPVRTimers::HideParentDirItems()
160 return (CGUIViewState::HideParentDirItems() || CPVRTimersPath(m_items.GetPath()).IsTimersRoot());
163 CGUIViewStateWindowPVRSearch::CGUIViewStateWindowPVRSearch(const int windowId,
164 const CFileItemList& items)
165 : CGUIViewStatePVR(windowId, items)
167 AddSortMethod(SortByLabel, 551, // "Name"
168 LABEL_MASKS("%L", "", "%L", "")); // Filename, empty | Foldername, empty
169 AddSortMethod(SortByDate, 552, // "Date"
170 LABEL_MASKS("%L", "%d", "%L", "%d")); // Filename, DateTime | Foldername, DateTime
172 // Default sorting
173 if (CPVREpgSearchPath(m_items.GetPath()).IsSavedSearchesRoot())
174 SetSortMethod(SortByDate, SortOrderDescending);
175 else
176 SetSortMethod(SortByDate, SortOrderAscending);
178 LoadViewState(m_items.GetPath(), m_windowId);
181 void CGUIViewStateWindowPVRSearch::SaveViewState()
183 SaveViewToDb(m_items.GetPath(), m_windowId, CViewStateSettings::GetInstance().Get("pvrsearch"));
186 bool CGUIViewStateWindowPVRSearch::HideParentDirItems()
188 return (CGUIViewState::HideParentDirItems() ||
189 CPVREpgSearchPath(m_items.GetPath()).IsSearchRoot());
192 CGUIViewStateWindowPVRProviders::CGUIViewStateWindowPVRProviders(const int windowId,
193 const CFileItemList& items)
194 : CGUIViewStatePVR(windowId, items)
196 AddSortMethod(SortByLabel, 551, // "Name"
197 LABEL_MASKS("%L", "", "%L", "")); // Filename, empty | Foldername, empty
199 if (CPVRProvidersPath(m_items.GetPath()).IsProvidersRoot())
201 AddSortMethod(SortByProvider, 19348, // "Provider"
202 LABEL_MASKS("%L", "", "%L", "")); // Filename, empty | Foldername, empty
204 SetSortMethod(SortByProvider, SortOrderAscending);
206 else
208 SetSortMethod(SortByLabel, SortOrderAscending);
211 LoadViewState(m_items.GetPath(), m_windowId);
214 void CGUIViewStateWindowPVRProviders::SaveViewState()
216 SaveViewToDb(m_items.GetPath(), m_windowId,
217 CViewStateSettings::GetInstance().Get("pvrproviders"));
220 bool CGUIViewStateWindowPVRProviders::HideParentDirItems()
222 return (CGUIViewState::HideParentDirItems() ||
223 CPVRProvidersPath(m_items.GetPath()).IsProvidersRoot());