xbmc
GUIDialogVideoManager.h
1 /*
2  * Copyright (C) 2023 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 "guilib/GUIDialog.h"
12 #include "video/VideoDatabase.h"
13 
14 #include <memory>
15 
16 class CFileItem;
17 class CFileItemList;
18 class CMediaSource;
19 
20 enum class VideoAssetType;
21 
23 {
24 public:
25  explicit CGUIDialogVideoManager(int windowId);
26  ~CGUIDialogVideoManager() override = default;
27 
28  virtual void SetVideoAsset(const std::shared_ptr<CFileItem>& item);
29  virtual void SetSelectedVideoAsset(const std::shared_ptr<CFileItem>& asset);
30  virtual bool HasUpdatedItems() const { return m_hasUpdatedItems; }
31 
32 protected:
33  void OnInitWindow() override;
34  bool OnMessage(CGUIMessage& message) override;
35  bool OnAction(const CAction& action) override;
36 
37  virtual VideoAssetType GetVideoAssetType() = 0;
38  virtual int GetHeadingId() = 0;
39 
40  virtual void Clear();
41  virtual void Refresh();
42  virtual void UpdateButtons();
43  virtual void UpdateAssetsList();
44 
45  virtual void Play();
46  virtual void Remove();
47  virtual void Rename();
48  virtual void ChooseArt();
49 
50  void DisableRemove();
51  void EnableRemove();
52 
53  void UpdateControls();
54 
55  static int ChooseVideoAsset(const std::shared_ptr<CFileItem>& item,
56  VideoAssetType assetType,
57  const std::string& defaultName);
58  void AppendItemFolderToFileBrowserSources(std::vector<CMediaSource>& sources);
59  void RefreshSelectedVideoAsset();
60 
61  CVideoDatabase m_database;
62  std::shared_ptr<CFileItem> m_videoAsset;
63  std::unique_ptr<CFileItemList> m_videoAssetsList;
64  std::shared_ptr<CFileItem> m_selectedVideoAsset;
65  bool m_hasUpdatedItems{false};
66 
67 private:
68  CGUIDialogVideoManager() = delete;
69 
70  void CloseAll();
71  bool UpdateSelectedAsset();
72 };
Represents a list of files.
Definition: FileItem.h:725
Definition: VideoDatabase.h:419
virtual void Refresh()
Definition: GUIDialogVideoManager.cpp:199
Represents a share.
Definition: MediaSource.h:22
virtual void Remove()
Definition: GUIDialogVideoManager.cpp:293
Class encapsulating information regarding a particular user action to be sent to windows and controls...
Definition: Action.h:21
Definition: GUIDialog.h:35
static int ChooseVideoAsset(const std::shared_ptr< CFileItem > &item, VideoAssetType assetType, const std::string &defaultName)
Definition: GUIDialogVideoManager.cpp:352
Definition: GUIMessage.h:365
virtual void Rename()
Definition: GUIDialogVideoManager.cpp:313
Definition: GUIDialogVideoManager.h:22
Represents a file on a share.
Definition: FileItem.h:102
void OnInitWindow() override
Called on window open.
Definition: GUIDialogVideoManager.cpp:116