kodi
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  void OnDeinitWindow(int nextWindowID) override;
35  bool OnMessage(CGUIMessage& message) override;
36  bool OnAction(const CAction& action) override;
37 
38  virtual VideoAssetType GetVideoAssetType() = 0;
39  virtual int GetHeadingId() = 0;
40 
41  virtual void Clear();
42  virtual void Refresh();
43  virtual void UpdateButtons();
44  virtual void UpdateAssetsList();
45 
46  virtual void Play();
47  virtual void Remove();
48  virtual void Rename();
49  virtual void ChooseArt();
50 
51  void DisableRemove();
52  void EnableRemove();
53 
54  void UpdateControls();
55 
56  static int ChooseVideoAsset(const std::shared_ptr<CFileItem>& item,
57  VideoAssetType assetType,
58  const std::string& defaultName);
59  void AppendItemFolderToFileBrowserSources(std::vector<CMediaSource>& sources);
60  void RefreshSelectedVideoAsset();
61 
62  CVideoDatabase m_database;
63  std::shared_ptr<CFileItem> m_videoAsset;
64  std::unique_ptr<CFileItemList> m_videoAssetsList;
65  std::shared_ptr<CFileItem> m_selectedVideoAsset;
66  bool m_hasUpdatedItems{false};
67 
68 private:
69  CGUIDialogVideoManager() = delete;
70 
71  void CloseAll();
72  bool UpdateSelectedAsset();
73 };
Represents a list of files.
Definition: FileItem.h:702
Definition: VideoDatabase.h:419
virtual void Refresh()
Definition: GUIDialogVideoManager.cpp:205
Represents a share.
Definition: MediaSource.h:22
virtual void Remove()
Definition: GUIDialogVideoManager.cpp:302
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:361
Definition: GUIMessage.h:365
virtual void Rename()
Definition: GUIDialogVideoManager.cpp:322
Definition: GUIDialogVideoManager.h:22
Represents a file on a share.
Definition: FileItem.h:102
void OnInitWindow() override
Called on window open.
Definition: GUIDialogVideoManager.cpp:113