jsonrpc: don't overwrite already retrieved details in a CFileItem in FillFileItem()
authormontellese <montellese@xbmc.org>
Wed, 31 Oct 2012 22:49:32 +0000 (23:49 +0100)
committermontellese <montellese@xbmc.org>
Thu, 1 Nov 2012 23:02:45 +0000 (00:02 +0100)
xbmc/interfaces/json-rpc/AudioLibrary.cpp
xbmc/interfaces/json-rpc/FileOperations.cpp
xbmc/interfaces/json-rpc/VideoLibrary.cpp

index 431d3fc..6eaaefd 100644 (file)
@@ -533,7 +533,7 @@ bool CAudioLibrary::FillFileItem(const CStdString &strFilename, CFileItem &item)
     if (!musicdatabase.GetAlbumInfo(albumid, album, NULL))
       return false;
 
-    item = CFileItem(strFilename, album);
+    item.SetFromAlbum(album);
   }
   else
   {
@@ -541,7 +541,7 @@ bool CAudioLibrary::FillFileItem(const CStdString &strFilename, CFileItem &item)
     if (!musicdatabase.GetSongByFileName(strFilename, song))
       return false;
 
-    item = CFileItem(song);
+    item.SetFromSong(song);
   }
 
   return true;
index 18e7d5b..e6ad74f 100644 (file)
@@ -140,11 +140,6 @@ JSONRPC_STATUS CFileOperations::GetDirectory(const CStdString &method, ITranspor
         CFileItem fileItem;
         if (FillFileItem(items[i], fileItem, media))
         {
-          fileItem.m_bIsFolder = items[i]->m_bIsFolder;
-          fileItem.m_dateTime = items[i]->m_dateTime;
-          fileItem.m_dwSize = items[i]->m_dwSize;
-          fileItem.SetMimeType(items[i]->GetMimeType());
-
           if (items[i]->m_bIsFolder)
             filteredDirectories.Add(CFileItemPtr(new CFileItem(fileItem)));
           else
@@ -271,6 +266,9 @@ bool CFileOperations::FillFileItem(const CFileItemPtr &originalItem, CFileItem &
   if (originalItem.get() == NULL)
     return false;
 
+  // copy all the available details
+  item = *originalItem;
+
   bool status = false;
   CStdString strFilename = originalItem->GetPath();
   if (!strFilename.empty() && (CDirectory::Exists(strFilename) || CFile::Exists(strFilename)))
@@ -302,8 +300,9 @@ bool CFileOperations::FillFileItem(const CFileItemPtr &originalItem, CFileItem &
         if (label.empty())
           return false;
 
-        item = CFileItem(strFilename, isDir);
         item.SetLabel(label);
+        item.SetPath(strFilename);
+        item.m_bIsFolder = isDir;
       }
       else
         item = *originalItem.get();
index 444b6d7..1c6acec 100644 (file)
@@ -699,7 +699,7 @@ bool CVideoLibrary::FillFileItem(const CStdString &strFilename, CFileItem &item)
   if (!videodatabase.LoadVideoInfo(strFilename, details))
     return false;
 
-  item = CFileItem(details);
+  item.SetFromVideoInfoTag(details);
   return true;
 }