From 76d1fc6f6c6369ae17c2de0fc6c49fadbf2c43c7 Mon Sep 17 00:00:00 2001 From: Thomas Amland Date: Sat, 17 Oct 2015 16:06:33 +0200 Subject: [addons] add radio button to info dialog for toggling auto updates --- .../resource.language.en_gb/resources/strings.po | 7 +++++- addons/skin.confluence/720p/DialogAddonInfo.xml | 8 +++++++ xbmc/addons/GUIDialogAddonInfo.cpp | 26 ++++++++++++++++++++++ xbmc/addons/GUIDialogAddonInfo.h | 1 + 4 files changed, 41 insertions(+), 1 deletion(-) diff --git a/addons/resource.language.en_gb/resources/strings.po b/addons/resource.language.en_gb/resources/strings.po index 5af9e1950e..67f09c5489 100644 --- a/addons/resource.language.en_gb/resources/strings.po +++ b/addons/resource.language.en_gb/resources/strings.po @@ -11988,7 +11988,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 @@ center font12_title + + Auto-update button + 220 + 43 + + center + font12_title + Launch Addon button 220 diff --git a/xbmc/addons/GUIDialogAddonInfo.cpp b/xbmc/addons/GUIDialogAddonInfo.cpp index 8e51a4a1d0..da9e03bffb 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)); @@ -283,6 +296,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; -- cgit v1.2.3 From 8f58040b6d7c44ff625514d5eeef420d2e8bc144 Mon Sep 17 00:00:00 2001 From: Thomas Amland Date: Sat, 17 Oct 2015 16:13:41 +0200 Subject: [addons] remove automatic removal from blacklist now that it can be toggled manually --- xbmc/addons/GUIDialogAddonInfo.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/xbmc/addons/GUIDialogAddonInfo.cpp b/xbmc/addons/GUIDialogAddonInfo.cpp index da9e03bffb..b411f6b0c2 100644 --- a/xbmc/addons/GUIDialogAddonInfo.cpp +++ b/xbmc/addons/GUIDialogAddonInfo.cpp @@ -281,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", -- cgit v1.2.3