xbmc
GUIDialogVideoInfo.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 "MediaSource.h"
12 #include "guilib/GUIDialog.h"
13 #include "media/MediaType.h"
14 
15 #include <memory>
16 
17 class CFileItem;
18 class CFileItemList;
19 class CVideoDatabase;
20 
22  public CGUIDialog
23 {
24 public:
25  CGUIDialogVideoInfo(void);
26  ~CGUIDialogVideoInfo(void) override;
27  bool OnMessage(CGUIMessage& message) override;
28  bool OnAction(const CAction &action) override;
29  void SetMovie(const CFileItem *item);
30  bool NeedRefresh() const;
31  bool RefreshAll() const;
32  bool HasUpdatedThumb() const { return m_hasUpdatedThumb; }
33  bool HasUpdatedUserrating() const { return m_hasUpdatedUserrating; }
34 
35  std::string GetThumbnail() const;
36  std::shared_ptr<CFileItem> GetCurrentListItem(int offset = 0) override { return m_movieItem; }
37  const CFileItemList& CurrentDirectory() const { return *m_castList; }
38  bool HasListItems() const override { return true; }
39 
40  static void AddItemPathToFileBrowserSources(VECSOURCES &sources, const CFileItem &item);
41 
42  static int ManageVideoItem(const std::shared_ptr<CFileItem>& item);
43  static bool UpdateVideoItemTitle(const std::shared_ptr<CFileItem>& pItem);
44  static bool CanDeleteVideoItem(const std::shared_ptr<CFileItem>& item);
45  static bool DeleteVideoItemFromDatabase(const std::shared_ptr<CFileItem>& item,
46  bool unavailable = false);
47  static bool DeleteVideoItem(const std::shared_ptr<CFileItem>& item, bool unavailable = false);
48 
49  static bool ManageMovieSets(const std::shared_ptr<CFileItem>& item);
50  static bool GetMoviesForSet(const CFileItem *setItem, CFileItemList &originalMovies, CFileItemList &selectedMovies);
51  static bool GetSetForMovie(const CFileItem* movieItem, std::shared_ptr<CFileItem>& selectedSet);
52  static bool SetMovieSet(const CFileItem *movieItem, const CFileItem *selectedSet);
53 
54  static bool GetItemsForTag(const std::string &strHeading, const std::string &type, CFileItemList &items, int idTag = -1, bool showAll = true);
55  static bool AddItemsToTag(const std::shared_ptr<CFileItem>& tagItem);
56  static bool RemoveItemsFromTag(const std::shared_ptr<CFileItem>& tagItem);
57 
58  static bool ManageVideoItemArtwork(const std::shared_ptr<CFileItem>& item, const MediaType& type);
59 
60  static std::string GetLocalizedVideoType(const std::string &strType);
61 
62  static void ShowFor(const CFileItem& item);
63 
64 protected:
65  void OnInitWindow() override;
66  void Update();
67  void SetLabel(int iControl, const std::string& strLabel);
68  void SetUserrating(int userrating) const;
69 
70  // link cast to movies
71  void ClearCastList();
76  void OnSearch(std::string& strSearch);
82  void DoSearch(std::string& strSearch, CFileItemList& items) const;
87  void OnSearchItemFound(const CFileItem* pItem);
88  void Play(bool resume = false);
89  void OnGetArt();
90  void OnGetFanart();
91  void OnSetUserrating() const;
92  void PlayTrailer();
93 
94  static bool UpdateVideoItemSortTitle(const std::shared_ptr<CFileItem>& pItem);
95  static bool LinkMovieToTvShow(const std::shared_ptr<CFileItem>& item,
96  bool bRemove,
97  CVideoDatabase& database);
98 
102  static bool OnGetFanart(const std::shared_ptr<CFileItem>& videoItem);
103 
104  std::shared_ptr<CFileItem> m_movieItem;
105  CFileItemList *m_castList;
106  bool m_bViewReview = false;
107  bool m_bRefresh = false;
108  bool m_bRefreshAll = true;
109  bool m_hasUpdatedThumb = false;
110  bool m_hasUpdatedUserrating = false;
111  int m_startUserrating = -1;
112 
113 private:
114  static std::string ChooseArtType(const CFileItem& item);
115 };
Definition: GUIDialogVideoInfo.h:21
Represents a list of files.
Definition: FileItem.h:713
static bool ManageVideoItemArtwork(const std::shared_ptr< CFileItem > &item, const MediaType &type)
Definition: GUIDialogVideoInfo.cpp:1997
Definition: VideoDatabase.h:393
void OnSearch(std::string &strSearch)
Search the current directory for a string got from the virtual keyboard.
Definition: GUIDialogVideoInfo.cpp:533
class encapsulating information regarding a particular user action to be sent to windows and controls...
Definition: Action.h:22
Definition: GUIDialog.h:35
void OnGetFanart()
Definition: GUIDialogVideoInfo.cpp:1009
void DoSearch(std::string &strSearch, CFileItemList &items) const
Make the actual search for the OnSearch function.
Definition: GUIDialogVideoInfo.cpp:586
void OnInitWindow() override
Called on window open.
Definition: GUIDialogVideoInfo.cpp:243
Definition: GUIMessage.h:365
void OnGetArt()
Definition: GUIDialogVideoInfo.cpp:865
void OnSearchItemFound(const CFileItem *pItem)
React on the selected search item.
Definition: GUIDialogVideoInfo.cpp:650
Represents a file on a share.
Definition: FileItem.h:102