summaryrefslogtreecommitdiffstats
path: root/xbmc/view/GUIViewState.h
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-10 18:07:22 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-10 18:07:22 +0000
commitc04dcc2e7d834218ef2d4194331e383402495ae1 (patch)
tree7333e38d10d75386e60f336b80c2443c1166031d /xbmc/view/GUIViewState.h
parentInitial commit. (diff)
downloadkodi-c04dcc2e7d834218ef2d4194331e383402495ae1.tar.xz
kodi-c04dcc2e7d834218ef2d4194331e383402495ae1.zip
Adding upstream version 2:20.4+dfsg.upstream/2%20.4+dfsg
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'xbmc/view/GUIViewState.h')
-rw-r--r--xbmc/view/GUIViewState.h126
1 files changed, 126 insertions, 0 deletions
diff --git a/xbmc/view/GUIViewState.h b/xbmc/view/GUIViewState.h
new file mode 100644
index 0000000..8723081
--- /dev/null
+++ b/xbmc/view/GUIViewState.h
@@ -0,0 +1,126 @@
+/*
+ * Copyright (C) 2005-2018 Team Kodi
+ * This file is part of Kodi - https://kodi.tv
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ * See LICENSES/README.md for more information.
+ */
+
+#pragma once
+
+#include "MediaSource.h"
+#include "utils/LabelFormatter.h"
+#include "utils/SortUtils.h"
+
+#include <vector>
+
+class CViewState; // forward
+class CFileItemList;
+
+namespace PLAYLIST
+{
+using Id = int;
+} // namespace PLAYLIST
+
+class CGUIViewState
+{
+public:
+ virtual ~CGUIViewState();
+ static CGUIViewState* GetViewState(int windowId, const CFileItemList& items);
+
+ void SetViewAsControl(int viewAsControl);
+ void SaveViewAsControl(int viewAsControl);
+ int GetViewAsControl() const;
+
+ bool ChooseSortMethod();
+ SortDescription SetNextSortMethod(int direction = 1);
+ void SetCurrentSortMethod(int method);
+ SortDescription GetSortMethod() const;
+ bool HasMultipleSortMethods() const;
+ int GetSortMethodLabel() const;
+ int GetSortOrderLabel() const;
+ void GetSortMethodLabelMasks(LABEL_MASKS& masks) const;
+
+ std::vector<SortDescription> GetSortDescriptions() const;
+
+ SortOrder SetNextSortOrder();
+ SortOrder GetSortOrder() const;
+
+ virtual bool HideExtensions();
+ virtual bool HideParentDirItems();
+ virtual bool DisableAddSourceButtons();
+
+ virtual PLAYLIST::Id GetPlaylist() const;
+ const std::string& GetPlaylistDirectory();
+ void SetPlaylistDirectory(const std::string& strDirectory);
+ bool IsCurrentPlaylistDirectory(const std::string& strDirectory);
+ virtual bool AutoPlayNextItem();
+
+ virtual std::string GetLockType();
+ virtual std::string GetExtensions();
+ virtual VECSOURCES& GetSources();
+
+protected:
+ explicit CGUIViewState(const CFileItemList& items); // no direct object creation, use GetViewState()
+
+ virtual void SaveViewState() = 0;
+ virtual void SaveViewToDb(const std::string &path, int windowID, CViewState *viewState = NULL);
+ void LoadViewState(const std::string &path, int windowID);
+
+ void AddLiveTVSources();
+
+ /*! \brief Add the sort order defined in a smartplaylist
+ Defaults to SORT_METHOD_PLAYLIST_ORDER if no order is defined.
+ \param items the list of items for the view state.
+ \param label_mask the label masks for formatting items.
+ */
+ void AddPlaylistOrder(const CFileItemList& items, const LABEL_MASKS& label_masks);
+
+ void AddSortMethod(SortBy sortBy, int buttonLabel, const LABEL_MASKS &labelMasks, SortAttribute sortAttributes = SortAttributeNone, SortOrder sortOrder = SortOrderNone);
+ void AddSortMethod(SortBy sortBy, SortAttribute sortAttributes, int buttonLabel, const LABEL_MASKS &labelMasks, SortOrder sortOrder = SortOrderNone);
+ void AddSortMethod(SortDescription sortDescription, int buttonLabel, const LABEL_MASKS &labelMasks);
+ void SetSortMethod(SortBy sortBy, SortOrder sortOrder = SortOrderNone);
+ void SetSortMethod(SortDescription sortDescription);
+ void SetSortOrder(SortOrder sortOrder);
+
+ bool AutoPlayNextVideoItem() const;
+
+ const CFileItemList& m_items;
+
+ int m_currentViewAsControl;
+ PLAYLIST::Id m_playlist;
+
+ std::vector<GUIViewSortDetails> m_sortMethods;
+ int m_currentSortMethod;
+
+ static VECSOURCES m_sources;
+ static std::string m_strPlaylistDirectory;
+};
+
+class CGUIViewStateGeneral : public CGUIViewState
+{
+public:
+ explicit CGUIViewStateGeneral(const CFileItemList& items);
+
+protected:
+ void SaveViewState() override { }
+};
+
+class CGUIViewStateFromItems : public CGUIViewState
+{
+public:
+ explicit CGUIViewStateFromItems(const CFileItemList& items);
+ bool AutoPlayNextItem() override;
+
+protected:
+ void SaveViewState() override;
+};
+
+class CGUIViewStateLibrary : public CGUIViewState
+{
+public:
+ explicit CGUIViewStateLibrary(const CFileItemList& items);
+
+protected:
+ void SaveViewState() override;
+};