msgid "Enter search string"
msgstr ""
-#empty strings from id 24122 to 24999
+#: xbmc/filesystem/AddonDirectory.cpp
+msgctxt "#24122"
+msgid "Update all"
+msgstr ""
+
+#empty strings from id 24123 to 24999
msgctxt "#25000"
msgid "Notifications"
#include "addons/Repository.h"
#include "GUIDialogAddonInfo.h"
#include "GUIDialogAddonSettings.h"
+#include "dialogs/GUIDialogBusy.h"
#include "dialogs/GUIDialogYesNo.h"
#include "dialogs/GUIDialogSelect.h"
#include "dialogs/GUIDialogFileBrowser.h"
return CGUIMediaWindow::OnContextButton(itemNumber, button);
}
+class UpdateAddons : public IRunnable
+{
+ virtual void Run()
+ {
+ VECADDONS addons;
+ CAddonMgr::Get().GetAllOutdatedAddons(addons, true); // get local
+ for (VECADDONS::iterator i = addons.begin(); i != addons.end(); ++i)
+ {
+ CStdString referer = StringUtils::Format("Referer=%s-%s.zip",(*i)->ID().c_str(),(*i)->Version().c_str());
+ CAddonInstaller::Get().Install((*i)->ID(), true, referer); // force install
+ }
+ }
+};
+
bool CGUIWindowAddonBrowser::OnClick(int iItem)
{
CFileItemPtr item = m_vecItems->Get(iItem);
CAddonInstaller::Get().InstallFromZip(path);
return true;
}
+ if (item->GetPath() == "addons://update_all/")
+ {
+ // fire off a threaded update of all addons
+ UpdateAddons updater;
+ if (CGUIDialogBusy::Wait(&updater))
+ return Update("addons://downloading/");
+ return true;
+ }
if (!item->m_bIsFolder)
{
// cancel a downloading job
item->SetLabel(g_localizeStrings.Get(24032));
items.Add(item);
}
+ else if (path.GetHostName().Equals("outdated") && items.Size() > 1)
+ {
+ CFileItemPtr item(new CFileItem("addons://update_all/", true));
+ item->SetLabel(g_localizeStrings.Get(24122));
+ item->SetSpecialSort(SortSpecialOnTop);
+ items.Add(item);
+ }
return true;
}