added: ability to set custom thumbnails on favorites (closes #12045)
authorvdrfan <vdrfan-nospam-@xbmc.org>
Fri, 10 Aug 2012 13:01:45 +0000 (15:01 +0200)
committervdrfan <vdrfan@xbmc.org>
Sat, 11 Aug 2012 14:31:20 +0000 (16:31 +0200)
xbmc/dialogs/GUIDialogFavourites.cpp
xbmc/dialogs/GUIDialogFavourites.h

index 961289a..8d8e880 100644 (file)
 
 #include "GUIDialogFavourites.h"
 #include "GUIDialogContextMenu.h"
+#include "GUIDialogFileBrowser.h"
 #include "Favourites.h"
 #include "guilib/GUIWindowManager.h"
 #include "guilib/GUIKeyboardFactory.h"
+#include "filesystem/File.h"
 #include "FileItem.h"
 #include "guilib/LocalizeStrings.h"
+#include "settings/Settings.h"
+#include "storage/MediaManager.h"
+
+using namespace XFILE;
 
 #define FAVOURITES_LIST 450
 
@@ -121,6 +127,7 @@ void CGUIDialogFavourites::OnPopupMenu(int item)
   }
   choices.Add(3, 15015);
   choices.Add(4, 118);
+  choices.Add(5, 20019);
   
   int button = CGUIDialogContextMenu::ShowAndGetChoice(choices);
 
@@ -135,6 +142,8 @@ void CGUIDialogFavourites::OnPopupMenu(int item)
     OnDelete(item);
   else if (button == 4)
     OnRename(item);
+  else if (button == 5)
+    OnSetThumb(item);
 }
 
 void CGUIDialogFavourites::OnMoveItem(int item, int amount)
@@ -180,6 +189,41 @@ void CGUIDialogFavourites::OnRename(int item)
   UpdateList();
 }
 
+void CGUIDialogFavourites::OnSetThumb(int item)
+{
+  if (item < 0 || item >= m_favourites->Size())
+    return;
+
+  CFileItemPtr pItem = (*m_favourites)[item];
+
+  CFileItemList items;
+
+  // Current
+  if (pItem->HasThumbnail())
+  {
+    CFileItemPtr current(new CFileItem("thumb://Current", false));
+    current->SetThumbnailImage(pItem->GetThumbnailImage());
+    current->SetLabel(g_localizeStrings.Get(20016));
+    items.Add(current);
+  }
+
+  // None
+  CFileItemPtr none(new CFileItem("thumb://None", false));
+  none->SetIconImage(pItem->GetIconImage());
+  none->SetLabel(g_localizeStrings.Get(20018));
+  items.Add(none);
+
+  CStdString thumb;
+  VECSOURCES sources;
+  g_mediaManager.GetLocalDrives(sources);
+  if (!CGUIDialogFileBrowser::ShowAndGetImage(items, sources, g_localizeStrings.Get(1030), thumb))
+    return;
+
+  (*m_favourites)[item]->SetThumbnailImage(thumb);
+  CFavourites::Save(*m_favourites);
+  UpdateList();
+}
+
 void CGUIDialogFavourites::UpdateList()
 {
   int currentItem = GetSelectedItem();
index a0e92e3..5dc9107 100644 (file)
@@ -46,6 +46,7 @@ protected:
   void OnMoveItem(int item, int amount);
   void OnDelete(int item);
   void OnRename(int item);
+  void OnSetThumb(int item);
   void UpdateList();
 
   CFileItemList* m_favourites;