diff options
author | Martijn Kaijser <martijn@xbmc.org> | 2015-10-20 14:52:40 +0200 |
---|---|---|
committer | Martijn Kaijser <martijn@xbmc.org> | 2015-10-20 14:52:40 +0200 |
commit | 4d0775e38e06d03d3e9e49b109290e028142306f (patch) | |
tree | fd44516ef7232f53019671c20e304dc96998afc9 | |
parent | d2d28f730d150a36f7beb7119a73f7dde8f8f84d (diff) | |
parent | 8f58040b6d7c44ff625514d5eeef420d2e8bc144 (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.po | 7 | ||||
-rw-r--r-- | addons/skin.confluence/720p/DialogAddonInfo.xml | 8 | ||||
-rw-r--r-- | xbmc/addons/GUIDialogAddonInfo.cpp | 31 | ||||
-rw-r--r-- | xbmc/addons/GUIDialogAddonInfo.h | 1 |
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; |