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