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 "FileItem.h"
12 #include "MediaSource.h"
13 #include "guilib/GUIDialog.h"
14 #include "music/Album.h"
15 #include "music/Artist.h"
16 #include "music/Song.h"
17 #include "threads/Event.h"
18 
19 class CFileItem;
20 class CFileItemList;
21 
22 class CGUIDialogMusicInfo :
23       public CGUIDialog
24 {
25 public:
26   CGUIDialogMusicInfo(void);
27   ~CGUIDialogMusicInfo(void) override;
28   bool OnMessage(CGUIMessage& message) override;
29   bool OnAction(const CAction &action) override;
30   bool SetItem(CFileItem* item);
31   void SetAlbum(const CAlbum& album, const std::string &path);
32   void SetArtist(const CArtist& artist, const std::string &path);
HasUpdatedUserrating()33   bool HasUpdatedUserrating() const { return m_hasUpdatedUserrating; };
HasRefreshed()34   bool HasRefreshed() const { return m_hasRefreshed; };
35 
HasListItems()36   bool HasListItems() const override { return true; };
37   CFileItemPtr GetCurrentListItem(int offset = 0) override;
38   std::string GetContent();
39   static void AddItemPathToFileBrowserSources(VECSOURCES &sources, const CFileItem &item);
40   void SetDiscography(CMusicDatabase& database) const;
41   void SetSongs(const VECSONGS &songs) const;
42   void SetArtTypeList(CFileItemList& artlist);
SetScrapedInfo(bool bScraped)43   void SetScrapedInfo(bool bScraped) { m_scraperAddInfo = bScraped;  }
GetArtist()44   CArtist& GetArtist() { return m_artist; };
GetAlbum()45   CAlbum& GetAlbum() { return m_album; };
IsArtistInfo()46   bool IsArtistInfo() const { return m_bArtistInfo; };
IsCancelled()47   bool IsCancelled() const { return m_cancelled; };
HasScrapedInfo()48   bool HasScrapedInfo() const { return m_scraperAddInfo; };
49   void FetchComplete();
50   void RefreshInfo();
51 
52   static void ShowForAlbum(int idAlbum);
53   static void ShowForArtist(int idArtist);
54   static void ShowFor(CFileItem* pItem);
55 protected:
56   void OnInitWindow() override;
57   void Update();
58   void SetLabel(int iControl, const std::string& strLabel);
59   void OnGetArt();
60   void OnAlbumInfo(int id);
61   void OnArtistInfo(int id);
62   void OnSetUserrating() const;
63   void SetUserrating(int userrating) const;
64 
65   CAlbum m_album;
66   CArtist m_artist;
67   int m_startUserrating = -1;
68   bool m_hasUpdatedUserrating = false;
69   bool m_hasRefreshed = false;
70   bool m_bArtistInfo = false;
71   bool m_cancelled = false;
72   bool m_scraperAddInfo = false;
73   CFileItemList* m_albumSongs;
74   CFileItemPtr m_item;
75   CFileItemList m_artTypeList;
76   CEvent m_event;
77   std::string m_fallbackartpath;
78 };
79