kodi
GUIWindowVideoBase.h
1 /*
2  * Copyright (C) 2005-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 "playlists/PlayListTypes.h"
12 #include "video/VideoDatabase.h"
13 #include "video/VideoThumbLoader.h"
14 #include "video/guilib/VideoAction.h"
15 #include "windows/GUIMediaWindow.h"
16 
17 namespace
18 {
19 class CVideoSelectActionProcessor;
20 class CVideoPlayActionProcessor;
21 } // unnamed namespace
22 
24 {
25  friend class ::CVideoSelectActionProcessor;
26  friend class ::CVideoPlayActionProcessor;
27 
28 public:
29  CGUIWindowVideoBase(int id, const std::string &xmlFile);
30  ~CGUIWindowVideoBase(void) override;
31  bool OnMessage(CGUIMessage& message) override;
32  bool OnAction(const CAction &action) override;
33 
40  bool OnItemInfo(const CFileItem& fileItem);
41 
50  static void AppendAndClearSearchItems(CFileItemList &searchItems, const std::string &prependLabel, CFileItemList &results);
51 
57  static void OnAssignContent(const std::string &path);
58 
65  static void LoadVideoInfo(CFileItemList& items,
66  CVideoDatabase& database,
67  bool allowReplaceLabels = true);
68 
69 protected:
70  void OnScan(const std::string& strPath, bool scanAll = false);
71  bool Update(const std::string &strDirectory, bool updateFilterPath = true) override;
72  bool GetDirectory(const std::string &strDirectory, CFileItemList &items) override;
73  void OnItemLoaded(CFileItem* pItem) override {};
74  void GetGroupedItems(CFileItemList &items) override;
75 
76  bool CheckFilterAdvanced(CFileItemList &items) const override;
77  bool CanContainFilter(const std::string &strDirectory) const override;
78 
79  void GetContextButtons(int itemNumber, CContextButtons &buttons) override;
80  bool OnContextButton(int itemNumber, CONTEXT_BUTTON button) override;
81  virtual void OnQueueItem(int iItem, bool first = false);
82  void OnQueueItem(const std::shared_ptr<CFileItem>& item, int iItem, bool first = false);
83  virtual void OnDeleteItem(const CFileItemPtr& pItem);
84  void OnDeleteItem(int iItem) override;
85  virtual void DoSearch(const std::string& strSearch, CFileItemList& items) {}
86  std::string GetStartFolder(const std::string &dir) override;
87 
88  bool OnSelect(int iItem) override;
93  bool OnItemInfo(int item);
99  bool OnFileAction(int item, VIDEO::GUILIB::Action action, const std::string& player);
100 
101  void OnRestartItem(int iItem, const std::string &player = "");
102  bool OnPlayOrResumeItem(int iItem, const std::string& player = "");
103  bool OnPlayMedia(int iItem, const std::string &player = "") override;
104  bool OnPlayMedia(const std::shared_ptr<CFileItem>& item, const std::string& player);
105  bool OnPlayAndQueueMedia(const CFileItemPtr& item, const std::string& player = "") override;
106  using CGUIMediaWindow::LoadPlayList;
107  void LoadPlayList(const std::string& strPlayList, PLAYLIST::Id playlistId = PLAYLIST::TYPE_VIDEO);
108  bool PlayItem(const std::shared_ptr<CFileItem>& item, const std::string& player);
109 
117  bool ShowInfoAndRefresh(const CFileItemPtr& item, const ADDON::ScraperPtr& content);
118 
119  void OnSearch();
120  void OnSearchItemFound(const CFileItem* pSelItem);
121  int GetScraperForItem(CFileItem *item, ADDON::ScraperPtr &info, VIDEO::SScanSettings& settings);
122 
123  static bool OnUnAssignContent(const std::string &path, int header, int text);
124 
125  static bool StackingAvailable(const CFileItemList &items);
126 
127  bool OnPlayStackPart(const std::shared_ptr<CFileItem>& item, unsigned int partNumber);
128 
130  void UpdateVideoVersionItemsLabel(const std::string& directory);
131 
132  CGUIDialogProgress* m_dlgProgress;
133  CVideoDatabase m_database;
134 
135  CVideoThumbLoader m_thumbLoader;
136  bool m_stackingAvailable;
137 
138 private:
145  bool ShowInfo(const CFileItemPtr& item, const ADDON::ScraperPtr& content);
146 };
Definition: VideoInfoScanner.h:28
void UpdateVideoVersionItems()
Definition: GUIWindowVideoBase.cpp:1502
bool ShowInfoAndRefresh(const CFileItemPtr &item, const ADDON::ScraperPtr &content)
Lookup the information of an item and display an Info dialog If item has changed then refresh the act...
Definition: GUIWindowVideoBase.cpp:506
Definition: VideoThumbLoader.h:24
void OnSearch()
Search the current directory for a string got from the virtual keyboard.
Definition: GUIWindowVideoBase.cpp:1285
bool OnPlayMedia(int iItem, const std::string &player="") override
On media play.
Definition: GUIWindowVideoBase.cpp:994
bool PlayItem(const std::shared_ptr< CFileItem > &item, const std::string &player)
Definition: GUIWindowVideoBase.cpp:1082
Represents a list of files.
Definition: FileItem.h:702
static void OnAssignContent(const std::string &path)
Prompt the user for assigning content to a path. Based on changes, we then call OnUnassignContent, update or refresh scraper information in the database and optionally start a scan.
Definition: GUIWindowVideoBase.cpp:1471
Definition: BackgroundInfoLoader.h:22
void OnSearchItemFound(const CFileItem *pSelItem)
React on the selected search item.
Definition: GUIWindowVideoBase.cpp:1335
Definition: VideoDatabase.h:419
bool GetDirectory(const std::string &strDirectory, CFileItemList &items) override
Overwrite to fill fileitems from a source.
Definition: GUIWindowVideoBase.cpp:1176
static void LoadVideoInfo(CFileItemList &items, CVideoDatabase &database, bool allowReplaceLabels=true)
Load video information from the database for these items (public static version) Useful for grabbing ...
Definition: GUIWindowVideoBase.cpp:648
Class encapsulating information regarding a particular user action to be sent to windows and controls...
Definition: Action.h:21
bool CheckFilterAdvanced(CFileItemList &items) const override
Check if the given list can be advance filtered or not.
Definition: GUIWindowVideoBase.cpp:1266
bool Update(const std::string &strDirectory, bool updateFilterPath=true) override
Retrieves the items from the given path and updates the list.
Definition: GUIWindowVideoBase.cpp:1157
std::string GetStartFolder(const std::string &dir) override
Translate the folder to start in from the given quick path.
Definition: GUIWindowVideoBase.cpp:1420
Definition: settings.py:1
Definition: GUIWindowVideoBase.h:23
Definition: GUIMessage.h:365
bool CanContainFilter(const std::string &strDirectory) const override
Check if the given path can contain a "filter" parameter.
Definition: GUIWindowVideoBase.cpp:1279
bool OnItemInfo(const CFileItem &fileItem)
Gets called to process the "info" action for the given file item Default implementation shows a dialo...
Definition: GUIWindowVideoBase.cpp:213
static void AppendAndClearSearchItems(CFileItemList &searchItems, const std::string &prependLabel, CFileItemList &results)
Append a set of search items to a results list using a specific prepend label Sorts the search items ...
Definition: GUIWindowVideoBase.cpp:1430
Definition: GUIDialogProgress.h:16
Definition: GUIMediaWindow.h:28
bool OnPlayAndQueueMedia(const CFileItemPtr &item, const std::string &player="") override
On play and media queue.
Definition: GUIWindowVideoBase.cpp:1002
Definition: GUIDialogContextMenu.h:93
bool OnFileAction(int item, VIDEO::GUILIB::Action action, const std::string &player)
perform a given action on a file
Definition: GUIWindowVideoBase.cpp:625
Represents a file on a share.
Definition: FileItem.h:102