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 ChooseAndManageVideoItemArtwork(const std::shared_ptr<CFileItem>& item);
59  static bool ManageVideoItemArtwork(const std::shared_ptr<CFileItem>& item, const MediaType& type);
60 
61  static std::string GetLocalizedVideoType(const std::string &strType);
62 
63  static void ShowFor(const CFileItem& item);
64 
65 protected:
66  void OnInitWindow() override;
67  void Update();
68  void SetLabel(int iControl, const std::string& strLabel);
69  void SetUserrating(int userrating) const;
70 
71  // link cast to movies
72  void ClearCastList();
77  void OnSearch(std::string& strSearch);
83  void DoSearch(std::string& strSearch, CFileItemList& items) const;
88  void OnSearchItemFound(const CFileItem* pItem);
89  void Play(bool resume = false);
90  void OnGetArt();
91  void OnGetFanart();
92  void OnSetUserrating() const;
93  void PlayTrailer();
94 
95  static bool UpdateVideoItemSortTitle(const std::shared_ptr<CFileItem>& pItem);
96  static bool LinkMovieToTvShow(const std::shared_ptr<CFileItem>& item,
97  bool bRemove,
98  CVideoDatabase& database);
99 
100  std::shared_ptr<CFileItem> m_movieItem;
101  CFileItemList *m_castList;
102  bool m_bViewReview = false;
103  bool m_bRefresh = false;
104  bool m_bRefreshAll = true;
105  bool m_hasUpdatedThumb = false;
106  bool m_hasUpdatedUserrating = false;
107  int m_startUserrating = -1;
108 
109 private:
110  static bool ManageVideoItemArtwork(const std::shared_ptr<CFileItem>& item,
111  const MediaType& mediaType,
112  const std::string& artType);
113 };
Definition: GUIDialogVideoInfo.h:21
Represents a list of files.
Definition: FileItem.h:721
Definition: VideoDatabase.h:395
void OnSearch(std::string &strSearch)
Search the current directory for a string got from the virtual keyboard.
Definition: GUIDialogVideoInfo.cpp:543
class encapsulating information regarding a particular user action to be sent to windows and controls...
Definition: Action.h:22
Definition: GUIDialog.h:35
void DoSearch(std::string &strSearch, CFileItemList &items) const
Make the actual search for the OnSearch function.
Definition: GUIDialogVideoInfo.cpp:596
void OnInitWindow() override
Called on window open.
Definition: GUIDialogVideoInfo.cpp:249
Definition: GUIMessage.h:365
void OnSearchItemFound(const CFileItem *pItem)
React on the selected search item.
Definition: GUIDialogVideoInfo.cpp:660
Represents a file on a share.
Definition: FileItem.h:102