return ACK;
}
-bool CAudioLibrary::FillFileItem(const CStdString &strFilename, CFileItem &item, const CVariant ¶meterObject /* = CVariant(CVariant::VariantTypeArray) */)
+bool CAudioLibrary::FillFileItem(const CStdString &strFilename, CFileItemPtr &item, const CVariant ¶meterObject /* = CVariant(CVariant::VariantTypeArray) */)
{
CMusicDatabase musicdatabase;
if (strFilename.empty() || !musicdatabase.Open())
if (!musicdatabase.GetAlbumInfo(albumid, album, NULL))
return false;
- item.SetFromAlbum(album);
+ item->SetFromAlbum(album);
CFileItemList items;
- items.Add(CFileItemPtr(&item));
+ items.Add(item);
if (GetAdditionalAlbumDetails(parameterObject, items, musicdatabase) != OK)
return false;
}
if (!musicdatabase.GetSongByFileName(strFilename, song))
return false;
- item.SetFromSong(song);
+ item->SetFromSong(song);
CFileItemList items;
- items.Add(CFileItemPtr(&item));
+ items.Add(item);
if (GetAdditionalSongDetails(parameterObject, items, musicdatabase) != OK)
return false;
}
int genreID = (int)parameterObject["genreid"].asInteger(-1);
bool success = false;
- CFileItem fileItem;
+ CFileItemPtr fileItem(new CFileItem());
if (FillFileItem(file, fileItem, parameterObject))
{
success = true;
- list.Add(CFileItemPtr(new CFileItem(fileItem)));
+ list.Add(fileItem);
}
if (artistID != -1 || albumID != -1 || genreID != -1)
static JSONRPC_STATUS Export(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant ¶meterObject, CVariant &result);
static JSONRPC_STATUS Clean(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant ¶meterObject, CVariant &result);
- static bool FillFileItem(const CStdString &strFilename, CFileItem &item, const CVariant ¶meterObject = CVariant(CVariant::VariantTypeArray));
+ static bool FillFileItem(const CStdString &strFilename, CFileItemPtr &item, const CVariant ¶meterObject = CVariant(CVariant::VariantTypeArray));
static bool FillFileItemList(const CVariant ¶meterObject, CFileItemList &list);
static JSONRPC_STATUS GetAdditionalAlbumDetails(const CVariant ¶meterObject, CFileItemList &items, CMusicDatabase &musicdatabase);
}
else
{
- CFileItem fileItem;
+ CFileItemPtr fileItem(new CFileItem());
if (FillFileItem(items[i], fileItem, media, parameterObject))
{
if (items[i]->m_bIsFolder)
- filteredDirectories.Add(CFileItemPtr(new CFileItem(fileItem)));
+ filteredDirectories.Add(fileItem);
else
- filteredFiles.Add(CFileItemPtr(new CFileItem(fileItem)));
+ filteredFiles.Add(fileItem);
}
else
{
CFileItemPtr item = items.Get(file);
if (!URIUtils::IsUPnP(file))
- FillFileItem(item, *item.get(), parameterObject["media"].asString(), parameterObject);
+ FillFileItem(item, item, parameterObject["media"].asString(), parameterObject);
// Check if the "properties" list exists
// and make sure it contains the "file"
return transport->Download(parameterObject["path"].asString().c_str(), result) ? OK : InvalidParams;
}
-bool CFileOperations::FillFileItem(const CFileItemPtr &originalItem, CFileItem &item, CStdString media /* = "" */, const CVariant ¶meterObject /* = CVariant(CVariant::VariantTypeArray) */)
+bool CFileOperations::FillFileItem(const CFileItemPtr &originalItem, CFileItemPtr &item, CStdString media /* = "" */, const CVariant ¶meterObject /* = CVariant(CVariant::VariantTypeArray) */)
{
if (originalItem.get() == NULL)
return false;
// copy all the available details
- item = *originalItem;
+ *item = *originalItem;
bool status = false;
CStdString strFilename = originalItem->GetPath();
if (!strFilename.empty() && (CDirectory::Exists(strFilename) || CFile::Exists(strFilename)))
{
if (media.Equals("video"))
- status = CVideoLibrary::FillFileItem(strFilename, item);
+ status = CVideoLibrary::FillFileItem(strFilename, item, parameterObject);
else if (media.Equals("music"))
status = CAudioLibrary::FillFileItem(strFilename, item, parameterObject);
- if (status && item.GetLabel().empty())
+ if (status && item->GetLabel().empty())
{
CStdString label = originalItem->GetLabel();
if (label.empty())
label = URIUtils::GetFileName(strFilename);
}
- item.SetLabel(label);
+ item->SetLabel(label);
}
else if (!status)
{
if (label.empty())
return false;
- item.SetLabel(label);
- item.SetPath(strFilename);
- item.m_bIsFolder = isDir;
+ item->SetLabel(label);
+ item->SetPath(strFilename);
+ item->m_bIsFolder = isDir;
}
else
- item = *originalItem.get();
+ *item = *originalItem;
status = true;
}
list.Add(items[i]);
else
{
- CFileItem fileItem;
+ CFileItemPtr fileItem(new CFileItem());
if (FillFileItem(items[i], fileItem, media, parameterObject))
- list.Add(CFileItemPtr(new CFileItem(fileItem)));
+ list.Add(fileItem);
else if (media == "files")
list.Add(items[i]);
}
static JSONRPC_STATUS PrepareDownload(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant ¶meterObject, CVariant &result);
static JSONRPC_STATUS Download(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant ¶meterObject, CVariant &result);
- static bool FillFileItem(const CFileItemPtr &originalItem, CFileItem &item, CStdString media = "", const CVariant ¶meterObject = CVariant(CVariant::VariantTypeArray));
+ static bool FillFileItem(const CFileItemPtr &originalItem, CFileItemPtr &item, CStdString media = "", const CVariant ¶meterObject = CVariant(CVariant::VariantTypeArray));
static bool FillFileItemList(const CVariant ¶meterObject, CFileItemList &list);
};
}
case Video:
case Audio:
{
- if (g_application.CurrentFileItem().GetLabel().empty())
+ fileItem = CFileItemPtr(new CFileItem(g_application.CurrentFileItem()));
+ if (fileItem->GetLabel().empty())
{
- CFileItem tmpItem = g_application.CurrentFileItem();
if (IsPVRChannel())
{
CPVRChannelPtr currentChannel;
if (g_PVRManager.GetCurrentChannel(currentChannel))
- tmpItem = CFileItem(*currentChannel.get());
+ fileItem = CFileItemPtr(new CFileItem(*currentChannel.get()));
}
else if (player == Video)
{
- if (!CVideoLibrary::FillFileItem(g_application.CurrentFile(), tmpItem))
+ if (!CVideoLibrary::FillFileItem(g_application.CurrentFile(), fileItem, parameterObject))
{
- tmpItem = CFileItem(*g_infoManager.GetCurrentMovieTag());
- tmpItem.SetPath(g_application.CurrentFileItem().GetPath());
+ fileItem = CFileItemPtr(new CFileItem(*g_infoManager.GetCurrentMovieTag()));
+ fileItem->SetPath(g_application.CurrentFileItem().GetPath());
}
}
else
{
- if (!CAudioLibrary::FillFileItem(g_application.CurrentFile(), tmpItem, parameterObject))
+ if (!CAudioLibrary::FillFileItem(g_application.CurrentFile(), fileItem, parameterObject))
{
- tmpItem = CFileItem(*g_infoManager.GetCurrentSongTag());
- tmpItem.SetPath(g_application.CurrentFileItem().GetPath());
+ fileItem = CFileItemPtr(new CFileItem(*g_infoManager.GetCurrentSongTag()));
+ fileItem->SetPath(g_application.CurrentFileItem().GetPath());
}
}
-
- fileItem = CFileItemPtr(new CFileItem(tmpItem));
}
- else
- fileItem = CFileItemPtr(new CFileItem(g_application.CurrentFileItem()));
if (IsPVRChannel())
break;
return ACK;
}
-bool CVideoLibrary::FillFileItem(const CStdString &strFilename, CFileItem &item)
+bool CVideoLibrary::FillFileItem(const CStdString &strFilename, CFileItemPtr &item, const CVariant ¶meterObject /* = CVariant(CVariant::VariantTypeArray) */)
{
CVideoDatabase videodatabase;
if (strFilename.empty() || !videodatabase.Open())
if (!videodatabase.LoadVideoInfo(strFilename, details))
return false;
- item.SetFromVideoInfoTag(details);
+ item->SetFromVideoInfoTag(details);
return true;
}
int musicVideoID = (int)parameterObject["musicvideoid"].asInteger(-1);
bool success = false;
- CFileItem fileItem;
+ CFileItemPtr fileItem(new CFileItem());
if (FillFileItem(file, fileItem))
{
success = true;
- list.Add(CFileItemPtr(new CFileItem(fileItem)));
+ list.Add(fileItem);
}
if (movieID > 0)
static JSONRPC_STATUS Export(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant ¶meterObject, CVariant &result);
static JSONRPC_STATUS Clean(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant ¶meterObject, CVariant &result);
- static bool FillFileItem(const CStdString &strFilename, CFileItem &item);
+ static bool FillFileItem(const CStdString &strFilename, CFileItemPtr &item, const CVariant ¶meterObject = CVariant(CVariant::VariantTypeArray));
static bool FillFileItemList(const CVariant ¶meterObject, CFileItemList &list);
private: