aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartijn Kaijser <martijn@xbmc.org>2015-10-20 14:52:40 +0200
committerMartijn Kaijser <martijn@xbmc.org>2015-10-20 14:52:40 +0200
commit4d0775e38e06d03d3e9e49b109290e028142306f (patch)
treefd44516ef7232f53019671c20e304dc96998afc9
parentd2d28f730d150a36f7beb7119a73f7dde8f8f84d (diff)
parent8f58040b6d7c44ff625514d5eeef420d2e8bc144 (diff)
Merge pull request #8248 from tamland/blacklist_toggle
[addons] allow disabling auto-updates per addon from the info dialog
-rw-r--r--addons/resource.language.en_gb/resources/strings.po7
-rw-r--r--addons/skin.confluence/720p/DialogAddonInfo.xml8
-rw-r--r--xbmc/addons/GUIDialogAddonInfo.cpp31
-rw-r--r--xbmc/addons/GUIDialogAddonInfo.h1
4 files changed, 42 insertions, 5 deletions
diff --git a/addons/resource.language.en_gb/resources/strings.po b/addons/resource.language.en_gb/resources/strings.po
index cfc6d4d34a..2b2d7448aa 100644
--- a/addons/resource.language.en_gb/resources/strings.po
+++ b/addons/resource.language.en_gb/resources/strings.po
@@ -11994,7 +11994,12 @@ msgctxt "#21339"
msgid "Version %s"
msgstr ""
-#empty strings from id 21340 to 21358
+#: xbmc/addons/GUIDialogAddonInfo.cpp
+msgctxt "#21340"
+msgid "Auto-update"
+msgstr ""
+
+#empty strings from id 21341 to 21358
#: xbmc/dialogs/GUIDialogFileBrowser.cpp
msgctxt "#21359"
diff --git a/addons/skin.confluence/720p/DialogAddonInfo.xml b/addons/skin.confluence/720p/DialogAddonInfo.xml
index 3802a0c6ea..3beac8d161 100644
--- a/addons/skin.confluence/720p/DialogAddonInfo.xml
+++ b/addons/skin.confluence/720p/DialogAddonInfo.xml
@@ -297,6 +297,14 @@
<align>center</align>
<font>font12_title</font>
</control>
+ <control type="radiobutton" id="13">
+ <description>Auto-update button</description>
+ <width>220</width>
+ <height>43</height>
+ <label>21340</label>
+ <align>center</align>
+ <font>font12_title</font>
+ </control>
<control type="button" id="12">
<description>Launch Addon button</description>
<width>220</width>
diff --git a/xbmc/addons/GUIDialogAddonInfo.cpp b/xbmc/addons/GUIDialogAddonInfo.cpp
index 8e51a4a1d0..b411f6b0c2 100644
--- a/xbmc/addons/GUIDialogAddonInfo.cpp
+++ b/xbmc/addons/GUIDialogAddonInfo.cpp
@@ -35,6 +35,7 @@
#include "GUIUserMessages.h"
#include "guilib/GUIWindowManager.h"
#include "input/Key.h"
+#include "settings/Settings.h"
#include "utils/JobManager.h"
#include "utils/FileOperationJob.h"
#include "utils/StringUtils.h"
@@ -52,6 +53,7 @@
#define CONTROL_BTN_SETTINGS 9
#define CONTROL_BTN_CHANGELOG 10
#define CONTROL_BTN_SELECT 12
+#define CONTROL_BTN_AUTOUPDATE 13
using namespace ADDON;
using namespace XFILE;
@@ -139,6 +141,11 @@ bool CGUIDialogAddonInfo::OnMessage(CGUIMessage& message)
OnChangeLog();
return true;
}
+ else if (iControl == CONTROL_BTN_AUTOUPDATE)
+ {
+ OnToggleAutoUpdates();
+ return true;
+ }
}
break;
default:
@@ -181,6 +188,12 @@ void CGUIDialogAddonInfo::UpdateControls()
CONTROL_ENABLE_ON_CONDITION(CONTROL_BTN_UPDATE, isInstalled);
+ bool autoUpdatesOn = CSettings::GetInstance().GetInt(CSettings::SETTING_GENERAL_ADDONUPDATES) == AUTO_UPDATES_ON;
+ CONTROL_ENABLE_ON_CONDITION(CONTROL_BTN_AUTOUPDATE, isInstalled && autoUpdatesOn);
+ SET_CONTROL_SELECTED(GetID(), CONTROL_BTN_AUTOUPDATE, isInstalled && autoUpdatesOn &&
+ !CAddonMgr::GetInstance().IsBlacklisted(m_localAddon->ID()));
+ SET_CONTROL_LABEL(CONTROL_BTN_AUTOUPDATE, 21340);
+
CONTROL_ENABLE_ON_CONDITION(CONTROL_BTN_SELECT, isEnabled && (CanOpen() ||
CanRun() || (CanUse() && !m_localAddon->IsInUse())));
SET_CONTROL_LABEL(CONTROL_BTN_SELECT, CanUse() ? 21480 : (CanOpen() ? 21478 : 21479));
@@ -268,12 +281,9 @@ void CGUIDialogAddonInfo::OnUpdate()
auto selected = versions.at(dialog->GetSelectedLabel());
- //add or remove from blacklist to toggle auto updating. if downgrading
- //turn off, if upgrading to latest turn it back on
+ //turn auto updating off if downgrading
if (selected.first < m_localAddon->Version())
CAddonMgr::GetInstance().AddToUpdateBlacklist(m_localAddon->ID());
- else if (selected.first == versions.at(0).first)
- CAddonMgr::GetInstance().RemoveFromUpdateBlacklist(m_localAddon->ID());
if (selected.second == LOCAL_CACHE)
CAddonInstaller::GetInstance().InstallFromZip(StringUtils::Format("special://home/addons/packages/%s-%s.zip",
@@ -283,6 +293,19 @@ void CGUIDialogAddonInfo::OnUpdate()
}
}
+void CGUIDialogAddonInfo::OnToggleAutoUpdates()
+{
+ CGUIMessage msg(GUI_MSG_IS_SELECTED, GetID(), CONTROL_BTN_AUTOUPDATE);
+ if (OnMessage(msg))
+ {
+ bool selected = msg.GetParam1() == 1;
+ if (selected)
+ CAddonMgr::GetInstance().RemoveFromUpdateBlacklist(m_localAddon->ID());
+ else
+ CAddonMgr::GetInstance().AddToUpdateBlacklist(m_localAddon->ID());
+ }
+}
+
void CGUIDialogAddonInfo::OnInstall()
{
if (!g_passwordManager.CheckMenuLock(WINDOW_ADDON_BROWSER))
diff --git a/xbmc/addons/GUIDialogAddonInfo.h b/xbmc/addons/GUIDialogAddonInfo.h
index 3e44824523..8b4f10e045 100644
--- a/xbmc/addons/GUIDialogAddonInfo.h
+++ b/xbmc/addons/GUIDialogAddonInfo.h
@@ -59,6 +59,7 @@ private:
void OnSettings();
void OnChangeLog();
void OnSelect();
+ void OnToggleAutoUpdates();
/*! Returns true if current addon can be opened (i.e is a plugin)*/
bool CanOpen() const;