From 4803228f294a627706c2aa489ec0fad733309b28 Mon Sep 17 00:00:00 2001 From: Lars Op den Kamp Date: Fri, 14 Sep 2012 19:11:07 +0200 Subject: [PATCH] added ToggleAddonEnabled to CBuiltins, to enable/disable an add-on (toggle) --- xbmc/interfaces/Builtins.cpp | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/xbmc/interfaces/Builtins.cpp b/xbmc/interfaces/Builtins.cpp index 3901fe9080f57..5f762d6228ed7 100644 --- a/xbmc/interfaces/Builtins.cpp +++ b/xbmc/interfaces/Builtins.cpp @@ -54,6 +54,7 @@ #include "utils/URIUtils.h" #include "Util.h" #include "URL.h" +#include "pvr/PVRManager.h" #include "filesystem/PluginDirectory.h" #ifdef HAS_FILESYSTEM_RAR @@ -92,6 +93,7 @@ using namespace std; using namespace XFILE; using namespace ADDON; +using namespace PVR; #ifdef HAS_DVD_DRIVE using namespace MEDIA_DETECT; @@ -215,6 +217,7 @@ const BUILT_IN commands[] = { { "ToggleDebug", false, "Enables/disables debug mode" }, { "StartPVRManager", false, "(Re)Starts the PVR manager" }, { "StopPVRManager", false, "Stops the PVR manager" }, + { "ToggleAddonEnabled", true, "Enables/disables an add-on" }, }; bool CBuiltins::HasCommand(const CStdString& execString) @@ -1630,6 +1633,29 @@ int CBuiltins::Execute(const CStdString& execString) { g_application.StopPVRManager(); } + else if (execute.Equals("toggleaddonenabled") && params.size() == 1) + { + AddonPtr addon; + if (CAddonMgr::Get().GetAddon(params[0], addon)) + { + bool enable = !addon->Enabled(); + CLog::Log(LOGDEBUG, "%s - %s add-on '%s'", __FUNCTION__, enable ? "enabling" : "disabling", addon->Name().c_str()); + + // enable/disable in the addon db + CAddonDatabase database; + database.Open(); + database.DisableAddon(addon->ID(), !enable); + database.Close(); + + // reset pvrmanager + if (addon->Type() == ADDON_PVRDLL && g_PVRManager.IsStarted()) + g_PVRManager.Start(); + } + else + { + CLog::Log(LOGDEBUG, "%s - add-on '%s' was not found", __FUNCTION__, params[0].c_str()); + } + } else return -1; return 0;