xbmc
GUIDialogMusicInfo.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 "music/Album.h"
14 #include "music/Artist.h"
15 #include "music/Song.h"
16 #include "threads/Event.h"
17 
18 #include <memory>
19 
20 class CFileItem;
21 class CFileItemList;
22 
24  public CGUIDialog
25 {
26 public:
27  CGUIDialogMusicInfo(void);
28  ~CGUIDialogMusicInfo(void) override;
29  bool OnMessage(CGUIMessage& message) override;
30  bool OnAction(const CAction &action) override;
31  bool SetItem(CFileItem* item);
32  void SetAlbum(const CAlbum& album, const std::string &path);
33  void SetArtist(const CArtist& artist, const std::string &path);
34  bool HasUpdatedUserrating() const { return m_hasUpdatedUserrating; }
35  bool HasRefreshed() const { return m_hasRefreshed; }
36 
37  bool HasListItems() const override { return true; }
38  CFileItemPtr GetCurrentListItem(int offset = 0) override;
39  std::string GetContent();
40  static void AddItemPathToFileBrowserSources(VECSOURCES &sources, const CFileItem &item);
41  void SetDiscography(CMusicDatabase& database) const;
42  void SetSongs(const VECSONGS &songs) const;
43  void SetArtTypeList(CFileItemList& artlist);
44  void SetScrapedInfo(bool bScraped) { m_scraperAddInfo = bScraped; }
45  CArtist& GetArtist() { return m_artist; }
46  CAlbum& GetAlbum() { return m_album; }
47  bool IsArtistInfo() const { return m_bArtistInfo; }
48  bool IsCancelled() const { return m_cancelled; }
49  bool HasScrapedInfo() const { return m_scraperAddInfo; }
50  void FetchComplete();
51  void RefreshInfo();
52 
53  static void ShowForAlbum(int idAlbum);
54  static void ShowForArtist(int idArtist);
55  static void ShowFor(CFileItem* pItem);
56 protected:
57  void OnInitWindow() override;
58  void Update();
59  void SetLabel(int iControl, const std::string& strLabel);
60  void OnGetArt();
61  void OnAlbumInfo(int id);
62  void OnArtistInfo(int id);
63  void OnSetUserrating() const;
64  void SetUserrating(int userrating) const;
65  void OnPlayItem(const std::shared_ptr<CFileItem>& item);
66 
67  CAlbum m_album;
68  CArtist m_artist;
69  int m_startUserrating = -1;
70  bool m_hasUpdatedUserrating = false;
71  bool m_hasRefreshed = false;
72  bool m_bArtistInfo = false;
73  bool m_cancelled = false;
74  bool m_scraperAddInfo = false;
75  std::unique_ptr<CFileItemList> m_albumSongs;
76  std::shared_ptr<CFileItem> m_item;
77  std::unique_ptr<CFileItemList> m_artTypeList;
78  CEvent m_event;
79  std::string m_fallbackartpath;
80 };
This is an Event class built from a ConditionVariable.
Definition: Event.h:35
Class to store and read tag information.
Definition: MusicDatabase.h:98
Represents a list of files.
Definition: FileItem.h:721
class encapsulating information regarding a particular user action to be sent to windows and controls...
Definition: Action.h:22
Definition: GUIDialog.h:35
Definition: GUIDialogMusicInfo.h:23
std::vector< CSong > VECSONGS
A vector of CSong objects, used for CMusicDatabase.
Definition: Song.h:212
void OnGetArt()
Definition: GUIDialogMusicInfo.cpp:757
Definition: GUIMessage.h:365
Definition: Album.h:26
void OnInitWindow() override
Called on window open.
Definition: GUIDialogMusicInfo.cpp:573
Definition: Artist.h:40
Represents a file on a share.
Definition: FileItem.h:102