Skip to content

Commit

Permalink
Merge pull request #8248 from tamland/blacklist_toggle
Browse files Browse the repository at this point in the history
[addons] allow disabling auto-updates per addon from the info dialog
  • Loading branch information
MartijnKaijser committed Oct 20, 2015
2 parents d2d28f7 + 8f58040 commit 4d0775e
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 5 deletions.
7 changes: 6 additions & 1 deletion addons/resource.language.en_gb/resources/strings.po
Expand Up @@ -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"
Expand Down
8 changes: 8 additions & 0 deletions addons/skin.confluence/720p/DialogAddonInfo.xml
Expand Up @@ -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>
Expand Down
31 changes: 27 additions & 4 deletions xbmc/addons/GUIDialogAddonInfo.cpp
Expand Up @@ -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"
Expand All @@ -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;
Expand Down Expand Up @@ -139,6 +141,11 @@ bool CGUIDialogAddonInfo::OnMessage(CGUIMessage& message)
OnChangeLog();
return true;
}
else if (iControl == CONTROL_BTN_AUTOUPDATE)
{
OnToggleAutoUpdates();
return true;
}
}
break;
default:
Expand Down Expand Up @@ -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));
Expand Down Expand Up @@ -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",
Expand All @@ -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))
Expand Down
1 change: 1 addition & 0 deletions xbmc/addons/GUIDialogAddonInfo.h
Expand Up @@ -59,6 +59,7 @@ class CGUIDialogAddonInfo :
void OnSettings();
void OnChangeLog();
void OnSelect();
void OnToggleAutoUpdates();

/*! Returns true if current addon can be opened (i.e is a plugin)*/
bool CanOpen() const;
Expand Down

0 comments on commit 4d0775e

Please sign in to comment.