diff options
author | montellese <montellese@xbmc.org> | 2013-07-15 14:46:46 +0200 |
---|---|---|
committer | montellese <montellese@xbmc.org> | 2013-07-15 14:47:11 +0200 |
commit | db911a5f88ef054840b3dc3b98bf342845361506 (patch) | |
tree | 76bc914aec89457cecba06c3a74f09e945b15b44 | |
parent | 80bb9b93db6a70762b7c05ed6b1e98451c9606bc (diff) |
jsonrpc: ensure that "label" always contains at least the filename of a playing item
-rw-r--r-- | xbmc/interfaces/json-rpc/AudioLibrary.cpp | 54 | ||||
-rw-r--r-- | xbmc/interfaces/json-rpc/FileItemHandler.cpp | 6 | ||||
-rw-r--r-- | xbmc/interfaces/json-rpc/PlayerOperations.cpp | 12 | ||||
-rw-r--r-- | xbmc/interfaces/json-rpc/VideoLibrary.cpp | 21 |
4 files changed, 59 insertions, 34 deletions
diff --git a/xbmc/interfaces/json-rpc/AudioLibrary.cpp b/xbmc/interfaces/json-rpc/AudioLibrary.cpp index 64986fe96f..3c4859f664 100644 --- a/xbmc/interfaces/json-rpc/AudioLibrary.cpp +++ b/xbmc/interfaces/json-rpc/AudioLibrary.cpp @@ -555,35 +555,39 @@ JSONRPC_STATUS CAudioLibrary::Clean(const CStdString &method, ITransportLayer *t bool CAudioLibrary::FillFileItem(const CStdString &strFilename, CFileItemPtr &item, const CVariant ¶meterObject /* = CVariant(CVariant::VariantTypeArray) */) { CMusicDatabase musicdatabase; - if (strFilename.empty() || !musicdatabase.Open()) + if (strFilename.empty()) return false; - if (CDirectory::Exists(strFilename)) + bool filled = false; + if (musicdatabase.Open()) { - CAlbum album; - int albumid = musicdatabase.GetAlbumIdByPath(strFilename); - if (!musicdatabase.GetAlbumInfo(albumid, album, NULL)) - return false; - - item->SetFromAlbum(album); - - CFileItemList items; - items.Add(item); - if (GetAdditionalAlbumDetails(parameterObject, items, musicdatabase) != OK) - return false; - } - else - { - CSong song; - if (!musicdatabase.GetSongByFileName(strFilename, song)) - return false; + if (CDirectory::Exists(strFilename)) + { + CAlbum album; + int albumid = musicdatabase.GetAlbumIdByPath(strFilename); + if (musicdatabase.GetAlbumInfo(albumid, album, NULL)) + { + item->SetFromAlbum(album); - item->SetFromSong(song); + CFileItemList items; + items.Add(item); + if (GetAdditionalAlbumDetails(parameterObject, items, musicdatabase) == OK) + filled = true; + } + } + else + { + CSong song; + if (musicdatabase.GetSongByFileName(strFilename, song)) + { + item->SetFromSong(song); - CFileItemList items; - items.Add(item); - if (GetAdditionalSongDetails(parameterObject, items, musicdatabase) != OK) - return false; + CFileItemList items; + items.Add(item); + if (GetAdditionalSongDetails(parameterObject, items, musicdatabase) == OK) + filled = true; + } + } } if (item->GetLabel().empty()) @@ -593,7 +597,7 @@ bool CAudioLibrary::FillFileItem(const CStdString &strFilename, CFileItemPtr &it item->SetLabel(URIUtils::GetFileName(strFilename)); } - return true; + return filled; } bool CAudioLibrary::FillFileItemList(const CVariant ¶meterObject, CFileItemList &list) diff --git a/xbmc/interfaces/json-rpc/FileItemHandler.cpp b/xbmc/interfaces/json-rpc/FileItemHandler.cpp index 0d7117b518..394e747545 100644 --- a/xbmc/interfaces/json-rpc/FileItemHandler.cpp +++ b/xbmc/interfaces/json-rpc/FileItemHandler.cpp @@ -389,8 +389,12 @@ bool CFileItemHandler::FillFileItemList(const CVariant ¶meterObject, CFileIt picture.Load(item->GetPath()); *item->GetPictureInfoTag() = picture; } - if (item->GetLabel().IsEmpty()) + if (item->GetLabel().empty()) + { item->SetLabel(CUtil::GetTitleFromPath(file, false)); + if (item->GetLabel().empty()) + item->SetLabel(URIUtils::GetFileName(file)); + } list.Add(item); } } diff --git a/xbmc/interfaces/json-rpc/PlayerOperations.cpp b/xbmc/interfaces/json-rpc/PlayerOperations.cpp index 96da23c38e..74f44f86fd 100644 --- a/xbmc/interfaces/json-rpc/PlayerOperations.cpp +++ b/xbmc/interfaces/json-rpc/PlayerOperations.cpp @@ -123,7 +123,12 @@ JSONRPC_STATUS CPlayerOperations::GetItem(const CStdString &method, ITransportLa { const CVideoInfoTag *currentVideoTag = g_infoManager.GetCurrentMovieTag(); if (currentVideoTag != NULL) - fileItem = CFileItemPtr(new CFileItem(*currentVideoTag)); + { + CStdString originalLabel = fileItem->GetLabel(); + fileItem->SetFromVideoInfoTag(*currentVideoTag); + if (fileItem->GetLabel().empty()) + fileItem->SetLabel(originalLabel); + } fileItem->SetPath(g_application.CurrentFileItem().GetPath()); } } @@ -133,7 +138,12 @@ JSONRPC_STATUS CPlayerOperations::GetItem(const CStdString &method, ITransportLa { const MUSIC_INFO::CMusicInfoTag *currentMusicTag = g_infoManager.GetCurrentSongTag(); if (currentMusicTag != NULL) + { + CStdString originalLabel = fileItem->GetLabel(); fileItem = CFileItemPtr(new CFileItem(*currentMusicTag)); + if (fileItem->GetLabel().empty()) + fileItem->SetLabel(originalLabel); + } fileItem->SetPath(g_application.CurrentFileItem().GetPath()); } } diff --git a/xbmc/interfaces/json-rpc/VideoLibrary.cpp b/xbmc/interfaces/json-rpc/VideoLibrary.cpp index 8b688b7248..8ff5ca972a 100644 --- a/xbmc/interfaces/json-rpc/VideoLibrary.cpp +++ b/xbmc/interfaces/json-rpc/VideoLibrary.cpp @@ -691,21 +691,28 @@ JSONRPC_STATUS CVideoLibrary::Clean(const CStdString &method, ITransportLayer *t bool CVideoLibrary::FillFileItem(const CStdString &strFilename, CFileItemPtr &item, const CVariant ¶meterObject /* = CVariant(CVariant::VariantTypeArray) */) { CVideoDatabase videodatabase; - if (strFilename.empty() || !videodatabase.Open()) - return false; - - CVideoInfoTag details; - if (!videodatabase.LoadVideoInfo(strFilename, details)) + if (strFilename.empty()) return false; + + bool filled = false; + if (videodatabase.Open()) + { + CVideoInfoTag details; + if (videodatabase.LoadVideoInfo(strFilename, details)) + { + item->SetFromVideoInfoTag(details); + filled = true; + } + } - item->SetFromVideoInfoTag(details); if (item->GetLabel().empty()) { item->SetLabel(CUtil::GetTitleFromPath(strFilename, false)); if (item->GetLabel().empty()) item->SetLabel(URIUtils::GetFileName(strFilename)); } - return true; + + return filled; } bool CVideoLibrary::FillFileItemList(const CVariant ¶meterObject, CFileItemList &list) |