Skip to content

Commit

Permalink
jsonrpc: ensure that "label" always contains at least the filename of…
Browse files Browse the repository at this point in the history
… a playing item
  • Loading branch information
Montellese committed Jul 15, 2013
1 parent 80bb9b9 commit db911a5
Show file tree
Hide file tree
Showing 4 changed files with 59 additions and 34 deletions.
54 changes: 29 additions & 25 deletions xbmc/interfaces/json-rpc/AudioLibrary.cpp
Expand Up @@ -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())
Expand All @@ -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)
Expand Down
6 changes: 5 additions & 1 deletion xbmc/interfaces/json-rpc/FileItemHandler.cpp
Expand Up @@ -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);
}
}
Expand Down
12 changes: 11 additions & 1 deletion xbmc/interfaces/json-rpc/PlayerOperations.cpp
Expand Up @@ -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());
}
}
Expand All @@ -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());
}
}
Expand Down
21 changes: 14 additions & 7 deletions xbmc/interfaces/json-rpc/VideoLibrary.cpp
Expand Up @@ -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)
Expand Down

0 comments on commit db911a5

Please sign in to comment.