diff options
author | Martijn Kaijser <martijn@xbmc.org> | 2018-10-28 12:06:41 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-10-28 12:06:41 +0100 |
commit | 8f4f89c40a045686b4a582f73a3173fb0c3eed15 (patch) | |
tree | b3dabf3a3aeeb79fa0f282b15ae102ae26867704 | |
parent | 77bafbd0241750cb403b61c4de896939797704a6 (diff) | |
parent | 333ca47f8ba2699a31cead096015a446c0961777 (diff) |
Merge pull request #14702 from garbear/ignore-broken-addons
Addons: Don't consider broken add-ons installable
-rw-r--r-- | xbmc/addons/AddonInstaller.cpp | 2 | ||||
-rw-r--r-- | xbmc/addons/AddonManager.cpp | 2 | ||||
-rw-r--r-- | xbmc/addons/GUIDialogAddonInfo.cpp | 2 | ||||
-rw-r--r-- | xbmc/addons/GUIWindowAddonBrowser.cpp | 2 | ||||
-rw-r--r-- | xbmc/addons/IAddon.h | 4 | ||||
-rw-r--r-- | xbmc/filesystem/AddonsDirectory.cpp | 2 | ||||
-rw-r--r-- | xbmc/interfaces/json-rpc/AddonsOperations.cpp | 2 |
7 files changed, 9 insertions, 7 deletions
diff --git a/xbmc/addons/AddonInstaller.cpp b/xbmc/addons/AddonInstaller.cpp index 23e3419994..28bce5c1e9 100644 --- a/xbmc/addons/AddonInstaller.cpp +++ b/xbmc/addons/AddonInstaller.cpp @@ -641,7 +641,7 @@ bool CAddonInstallJob::DoWork() CServiceBroker::GetEventLog().Add( EventPtr(new CAddonManagementEvent(m_addon, m_isUpdate ? 24065 : 24084)), notify, false); - if (m_isAutoUpdate && !m_addon->Broken().empty()) + if (m_isAutoUpdate && m_addon->IsBroken()) { CLog::Log(LOGDEBUG, "CAddonInstallJob[%s]: auto-disabling due to being marked as broken", m_addon->ID().c_str()); CServiceBroker::GetAddonMgr().DisableAddon(m_addon->ID()); diff --git a/xbmc/addons/AddonManager.cpp b/xbmc/addons/AddonManager.cpp index ef662d3f30..b4382b3c59 100644 --- a/xbmc/addons/AddonManager.cpp +++ b/xbmc/addons/AddonManager.cpp @@ -945,7 +945,7 @@ bool CAddonMgr::IsAddonInstalled(const std::string& ID) bool CAddonMgr::CanAddonBeInstalled(const AddonPtr& addon) { - return addon != nullptr &&!IsAddonInstalled(addon->ID()); + return addon != nullptr && !addon->IsBroken() && !IsAddonInstalled(addon->ID()); } bool CAddonMgr::CanUninstall(const AddonPtr& addon) diff --git a/xbmc/addons/GUIDialogAddonInfo.cpp b/xbmc/addons/GUIDialogAddonInfo.cpp index 30590af45a..00c44ec16c 100644 --- a/xbmc/addons/GUIDialogAddonInfo.cpp +++ b/xbmc/addons/GUIDialogAddonInfo.cpp @@ -161,7 +161,7 @@ void CGUIDialogAddonInfo::UpdateControls() bool isInstalled = NULL != m_localAddon.get(); m_addonEnabled = m_localAddon && !CServiceBroker::GetAddonMgr().IsAddonDisabled(m_localAddon->ID()); bool canDisable = isInstalled && CServiceBroker::GetAddonMgr().CanAddonBeDisabled(m_localAddon->ID()); - bool canInstall = !isInstalled && m_item->GetAddonInfo()->Broken().empty(); + bool canInstall = !isInstalled && !m_item->GetAddonInfo()->IsBroken(); bool canUninstall = m_localAddon && CServiceBroker::GetAddonMgr().CanUninstall(m_localAddon); CONTROL_ENABLE_ON_CONDITION(CONTROL_BTN_INSTALL, canInstall || canUninstall); diff --git a/xbmc/addons/GUIWindowAddonBrowser.cpp b/xbmc/addons/GUIWindowAddonBrowser.cpp index 498be38210..3d5a85fbab 100644 --- a/xbmc/addons/GUIWindowAddonBrowser.cpp +++ b/xbmc/addons/GUIWindowAddonBrowser.cpp @@ -290,7 +290,7 @@ bool CGUIWindowAddonBrowser::GetDirectory(const std::string& strDirectory, CFile { for (int i = items.Size() - 1; i >= 0; i--) { - if (items[i]->GetAddonInfo() && !items[i]->GetAddonInfo()->Broken().empty()) + if (items[i]->GetAddonInfo() && items[i]->GetAddonInfo()->IsBroken()) { //check if it's installed AddonPtr addon; diff --git a/xbmc/addons/IAddon.h b/xbmc/addons/IAddon.h index 41ffec16b5..fd02b1ef84 100644 --- a/xbmc/addons/IAddon.h +++ b/xbmc/addons/IAddon.h @@ -82,6 +82,8 @@ namespace ADDON virtual void OnPostInstall(bool update, bool modal) =0; virtual void OnPreUnInstall() =0; virtual void OnPostUnInstall() =0; + + // Derived property + bool IsBroken() const { return !Broken().empty(); } }; }; - diff --git a/xbmc/filesystem/AddonsDirectory.cpp b/xbmc/filesystem/AddonsDirectory.cpp index 46326cf292..544128b444 100644 --- a/xbmc/filesystem/AddonsDirectory.cpp +++ b/xbmc/filesystem/AddonsDirectory.cpp @@ -798,7 +798,7 @@ void CAddonsDirectory::GenerateAddonListing(const CURL &path, pItem->SetProperty("Addon.Status", g_localizeStrings.Get(24023)); if (hasUpdate) pItem->SetProperty("Addon.Status", g_localizeStrings.Get(24068)); - else if (!addon->Broken().empty()) + else if (addon->IsBroken()) pItem->SetProperty("Addon.Status", g_localizeStrings.Get(24098)); items.Add(pItem); diff --git a/xbmc/interfaces/json-rpc/AddonsOperations.cpp b/xbmc/interfaces/json-rpc/AddonsOperations.cpp index 1155c5a644..f110fa99a6 100644 --- a/xbmc/interfaces/json-rpc/AddonsOperations.cpp +++ b/xbmc/interfaces/json-rpc/AddonsOperations.cpp @@ -233,7 +233,7 @@ static CVariant Serialize(const AddonPtr& addon) info["optional"] = dep.optional; variant["dependencies"].push_back(std::move(info)); } - if (addon->Broken().empty()) + if (addon->IsBroken()) variant["broken"] = false; else variant["broken"] = addon->Broken(); |