kodi
GUIDialogVideoManagerVersions.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 "video/dialogs/GUIDialogVideoManager.h"
12 
13 #include <memory>
14 #include <string>
15 #include <tuple>
16 
17 class CFileItem;
18 
19 enum class VideoDbContentType;
20 enum class VideoAssetType;
21 enum class MediaRole;
22 
24 {
25 public:
27  ~CGUIDialogVideoManagerVersions() override = default;
28 
29  void SetVideoAsset(const std::shared_ptr<CFileItem>& item) override;
30 
31  static bool ProcessVideoVersion(VideoDbContentType itemType, int dbId);
38  static bool ManageVideoVersions(const std::shared_ptr<CFileItem>& item);
39 
40 protected:
41  bool OnMessage(CGUIMessage& message) override;
42 
43  VideoAssetType GetVideoAssetType() override;
44  int GetHeadingId() override { return 40024; } // Versions:
45 
46  void Clear() override;
47  void Refresh() override;
48  void UpdateButtons() override;
49  void Remove() override;
50 
51 private:
52  void SetDefaultVideoVersion(const CFileItem& version);
57  bool AddVideoVersion();
58  void SetDefault();
59  void UpdateDefaultVideoVersionSelection();
60 
76  static bool ChooseVideoAndConvertToVideoVersion(CFileItemList& items,
77  VideoDbContentType itemType,
78  const std::string& mediaType,
79  int dbId,
80  CVideoDatabase& videoDb,
81  MediaRole role);
86  bool AddVideoVersionFilePicker();
87 
96  static bool GetSimilarMovies(const std::shared_ptr<CFileItem>& item,
97  CFileItemList& list,
98  CVideoDatabase& videoDb);
99 
105  bool AddSimilarMovieAsVersion(const std::shared_ptr<CFileItem>& itemMovie);
106 
114  static bool GetAllOtherMovies(const std::shared_ptr<CFileItem>& item,
115  CFileItemList& list,
116  CVideoDatabase& videoDb);
117 
124  static bool PostProcessList(CFileItemList& list, int dbId);
125 
126  std::shared_ptr<CFileItem> m_defaultVideoVersion;
127 };
Definition: GUIDialogVideoManagerVersions.h:23
Represents a list of files.
Definition: FileItem.h:702
Definition: VideoDatabase.h:419
static bool ManageVideoVersions(const std::shared_ptr< CFileItem > &item)
Open the Manage Versions dialog for a video.
Definition: GUIDialogVideoManagerVersions.cpp:307
Definition: GUIMessage.h:365
Definition: GUIDialogVideoManager.h:22
Represents a file on a share.
Definition: FileItem.h:102