From 050ccbdbbe0eee8947836ea680d2f890ffc99262 Mon Sep 17 00:00:00 2001 From: the-black-eagle Date: Mon, 14 Sep 2020 12:20:34 +0100 Subject: [Music][guiinfo] Add new MusicPlayer infolabel and boolean --- xbmc/GUIInfoManager.cpp | 20 +++++++++++++++++++- xbmc/guilib/guiinfo/GUIInfoLabels.h | 12 +++++++----- xbmc/guilib/guiinfo/MusicGUIInfo.cpp | 14 +++++++++++--- xbmc/music/MusicDatabase.cpp | 4 +++- xbmc/music/MusicDatabase.h | 1 + 5 files changed, 41 insertions(+), 10 deletions(-) diff --git a/xbmc/GUIInfoManager.cpp b/xbmc/GUIInfoManager.cpp index e486810daa..b091bbde59 100644 --- a/xbmc/GUIInfoManager.cpp +++ b/xbmc/GUIInfoManager.cpp @@ -2593,6 +2593,22 @@ const infomap musicpartymode[] = {{ "enabled", MUSICPM_ENABLED }, /// @skinning_v19 **[New Infolabel]** \link MusicPlayer_BPM `MusicPlayer.BPM`\endlink ///

/// } +/// \table_row3{ `MusicPlayer.IsMultiDisc`, +/// \anchor MusicPlayer_IsMultiDisc +/// _boolean_, +/// @return Returns **true** if the album currently playing has more than one disc. +///


+/// @skinning_v19 **[New Infolabel]** \link MusicPlayer_IsMultiDisc `MusicPlayer.IsMultiDisc`\endlink +///

+/// } +/// \table_row3{ `MusicPlayer.TotalDiscs`, +/// \anchor MusicPlayer_TotalDiscs +/// _string_, +/// @return The number of discs associated with the currently playing album. +///


+/// @skinning_v19 **[New Infolabel]** \link MusicPlayer_TotalDiscs `MusicPlayer.TotalDiscs`\endlink +///

+/// } /// \table_end /// /// ----------------------------------------------------------------------------- @@ -2636,7 +2652,9 @@ const infomap musicplayer[] = {{ "title", MUSICPLAYER_TITLE }, { "property", MUSICPLAYER_PROPERTY }, { "releasedate", MUSICPLAYER_RELEASEDATE }, { "originaldate", MUSICPLAYER_ORIGINALDATE }, - { "bpm", MUSICPLAYER_BPM } + { "bpm", MUSICPLAYER_BPM }, + { "ismultidisc", MUSICPLAYER_ISMULTIDISC }, + { "totaldiscs", MUSICPLAYER_TOTALDISCS } }; /// \page modules__infolabels_boolean_conditions diff --git a/xbmc/guilib/guiinfo/GUIInfoLabels.h b/xbmc/guilib/guiinfo/GUIInfoLabels.h index d6ec9abd31..efcc297976 100644 --- a/xbmc/guilib/guiinfo/GUIInfoLabels.h +++ b/xbmc/guilib/guiinfo/GUIInfoLabels.h @@ -198,12 +198,14 @@ #define MUSICPLAYER_CHANNEL_NAME 237 #define MUSICPLAYER_CHANNEL_GROUP 238 #define MUSICPLAYER_CHANNEL_NUMBER 239 +#define MUSICPLAYER_TOTALDISCS 240 // Musicplayer infobools -#define MUSICPLAYER_HASPREVIOUS 240 -#define MUSICPLAYER_HASNEXT 241 -#define MUSICPLAYER_EXISTS 242 -#define MUSICPLAYER_PLAYLISTPLAYING 243 -#define MUSICPLAYER_CONTENT 244 +#define MUSICPLAYER_HASPREVIOUS 241 +#define MUSICPLAYER_HASNEXT 242 +#define MUSICPLAYER_EXISTS 243 +#define MUSICPLAYER_PLAYLISTPLAYING 244 +#define MUSICPLAYER_CONTENT 245 +#define MUSICPLAYER_ISMULTIDISC 246 // Keep videoplayer infolabels that work with offset and position together #define VIDEOPLAYER_TITLE 250 diff --git a/xbmc/guilib/guiinfo/MusicGUIInfo.cpp b/xbmc/guilib/guiinfo/MusicGUIInfo.cpp index 57cfe92970..94fb5e9ea3 100644 --- a/xbmc/guilib/guiinfo/MusicGUIInfo.cpp +++ b/xbmc/guilib/guiinfo/MusicGUIInfo.cpp @@ -145,6 +145,7 @@ bool CMusicGUIInfo::GetLabel(std::string& value, const CFileItem *item, int cont return true; } break; + case MUSICPLAYER_TOTALDISCS: case LISTITEM_TOTALDISCS: value = StringUtils::Format("%i", tag->GetTotalDiscs()); return true; @@ -573,6 +574,9 @@ bool CMusicGUIInfo::GetInt(int& value, const CGUIListItem *gitem, int contextWin bool CMusicGUIInfo::GetBool(bool& value, const CGUIListItem *gitem, int contextWindow, const CGUIInfo &info) const { + const CFileItem* item = static_cast(gitem); + const CMusicInfoTag* tag = item->GetMusicInfoTag(); + switch (info.m_info) { /////////////////////////////////////////////////////////////////////////////////////////////// @@ -619,7 +623,13 @@ bool CMusicGUIInfo::GetBool(bool& value, const CGUIListItem *gitem, int contextW value = (index >= 0 && index < CServiceBroker::GetPlaylistPlayer().GetPlaylist(PLAYLIST_MUSIC).size()); return true; } - + case MUSICPLAYER_ISMULTIDISC: + if (tag) + { + value = (item->GetMusicInfoTag()->GetTotalDiscs() > 1); + return true; + } + break; /////////////////////////////////////////////////////////////////////////////////////////////// // MUSICPM_* /////////////////////////////////////////////////////////////////////////////////////////////// @@ -631,8 +641,6 @@ bool CMusicGUIInfo::GetBool(bool& value, const CGUIListItem *gitem, int contextW // LISTITEM_* /////////////////////////////////////////////////////////////////////////////////////////////// case LISTITEM_IS_BOXSET: - const CFileItem* item = static_cast(gitem); - const CMusicInfoTag* tag = item->GetMusicInfoTag(); if (tag) { value = item->GetMusicInfoTag()->GetBoxset() == true; diff --git a/xbmc/music/MusicDatabase.cpp b/xbmc/music/MusicDatabase.cpp index b80ca85c91..574e7a06c9 100644 --- a/xbmc/music/MusicDatabase.cpp +++ b/xbmc/music/MusicDatabase.cpp @@ -445,6 +445,7 @@ void CMusicDatabase::CreateViews() " iSampleRate, " " iChannels, " " album.iAlbumDuration AS iAlbumDuration, " + " album.iDiscTotal as iDiscTotal, " " song.dateAdded as dateAdded, " " song.dateNew AS dateNew, " " song.dateModified AS dateModified " @@ -2832,6 +2833,7 @@ void CMusicDatabase::GetFileItemFromDataset(const dbiplus::sql_record* const rec ReplayGain replaygain; replaygain.Set(record->at(song_strReplayGain).get_asString()); item->GetMusicInfoTag()->SetReplayGain(replaygain); + item->GetMusicInfoTag()->SetTotalDiscs(record->at(song_iDiscTotal).get_asInt()); item->GetMusicInfoTag()->SetLoaded(true); // Get filename with full path @@ -8598,7 +8600,7 @@ void CMusicDatabase::UpdateTables(int version) int CMusicDatabase::GetSchemaVersion() const { - return 80; + return 81; // Bump version to add iDisctotal to songview for MusicPlayer infolabel and boolean } int CMusicDatabase::GetMusicNeedsTagScan() diff --git a/xbmc/music/MusicDatabase.h b/xbmc/music/MusicDatabase.h index 606407604c..a7005a199f 100644 --- a/xbmc/music/MusicDatabase.h +++ b/xbmc/music/MusicDatabase.h @@ -831,6 +831,7 @@ private: song_iSampleRate, song_iChannels, song_iAlbumDuration, + song_iDiscTotal, song_dateAdded, song_dateNew, song_dateModified, -- cgit v1.2.3