aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormontellese <montellese@xbmc.org>2013-07-15 14:46:46 +0200
committermontellese <montellese@xbmc.org>2013-07-15 14:47:11 +0200
commitdb911a5f88ef054840b3dc3b98bf342845361506 (patch)
tree76bc914aec89457cecba06c3a74f09e945b15b44
parent80bb9b93db6a70762b7c05ed6b1e98451c9606bc (diff)
jsonrpc: ensure that "label" always contains at least the filename of a playing item
-rw-r--r--xbmc/interfaces/json-rpc/AudioLibrary.cpp54
-rw-r--r--xbmc/interfaces/json-rpc/FileItemHandler.cpp6
-rw-r--r--xbmc/interfaces/json-rpc/PlayerOperations.cpp12
-rw-r--r--xbmc/interfaces/json-rpc/VideoLibrary.cpp21
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 &parameterObject /* = 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 &parameterObject, 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 &parameterObject, 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 &parameterObject /* = 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 &parameterObject, CFileItemList &list)