[Windows] Fix driver version detection of AMD RDNA+ GPU on Windows 10
[xbmc.git] / xbmc / addons / ContextMenus.cpp
blob23f50365d40d6a592a0a4473fd9849a37678ef6e
1 /*
2 * Copyright (C) 2016-2018 Team Kodi
3 * This file is part of Kodi - https://kodi.tv
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
7 */
9 #include "ContextMenus.h"
11 #include "FileItem.h"
12 #include "ServiceBroker.h"
13 #include "addons/AddonManager.h"
14 #include "addons/Repository.h"
15 #include "addons/RepositoryUpdater.h"
16 #include "addons/addoninfo/AddonType.h"
17 #include "addons/gui/GUIDialogAddonInfo.h"
18 #include "addons/gui/GUIDialogAddonSettings.h"
19 #include "addons/gui/GUIHelpers.h"
21 namespace CONTEXTMENU
24 using namespace ADDON;
26 bool CAddonInfo::IsVisible(const CFileItem& item) const
28 return item.HasAddonInfo();
31 bool CAddonInfo::Execute(const std::shared_ptr<CFileItem>& item) const
33 return CGUIDialogAddonInfo::ShowForItem(item);
36 bool CAddonSettings::IsVisible(const CFileItem& item) const
38 AddonPtr addon;
39 return item.HasAddonInfo() &&
40 CServiceBroker::GetAddonMgr().GetAddon(item.GetAddonInfo()->ID(), addon,
41 OnlyEnabled::CHOICE_NO) &&
42 addon->CanHaveAddonOrInstanceSettings();
45 bool CAddonSettings::Execute(const std::shared_ptr<CFileItem>& item) const
47 AddonPtr addon;
48 return CServiceBroker::GetAddonMgr().GetAddon(item->GetAddonInfo()->ID(), addon,
49 OnlyEnabled::CHOICE_NO) &&
50 CGUIDialogAddonSettings::ShowForAddon(addon);
53 bool CCheckForUpdates::IsVisible(const CFileItem& item) const
55 return item.HasAddonInfo() && item.GetAddonInfo()->Type() == AddonType::REPOSITORY;
58 bool CCheckForUpdates::Execute(const std::shared_ptr<CFileItem>& item) const
60 AddonPtr addon;
61 if (item->HasAddonInfo() &&
62 CServiceBroker::GetAddonMgr().GetAddon(item->GetAddonInfo()->ID(), addon,
63 AddonType::REPOSITORY, OnlyEnabled::CHOICE_YES))
65 CServiceBroker::GetRepositoryUpdater().CheckForUpdates(std::static_pointer_cast<CRepository>(addon), true);
66 return true;
68 return false;
72 bool CEnableAddon::IsVisible(const CFileItem& item) const
74 return item.HasAddonInfo() &&
75 CServiceBroker::GetAddonMgr().IsAddonDisabled(item.GetAddonInfo()->ID()) &&
76 CServiceBroker::GetAddonMgr().CanAddonBeEnabled(item.GetAddonInfo()->ID());
79 bool CEnableAddon::Execute(const std::shared_ptr<CFileItem>& item) const
81 // Check user want to enable if lifecycle not normal
82 if (!ADDON::GUI::CHelpers::DialogAddonLifecycleUseAsk(item->GetAddonInfo()))
83 return false;
85 return CServiceBroker::GetAddonMgr().EnableAddon(item->GetAddonInfo()->ID());
88 bool CDisableAddon::IsVisible(const CFileItem& item) const
90 return item.HasAddonInfo() &&
91 !CServiceBroker::GetAddonMgr().IsAddonDisabled(item.GetAddonInfo()->ID()) &&
92 CServiceBroker::GetAddonMgr().CanAddonBeDisabled(item.GetAddonInfo()->ID());
95 bool CDisableAddon::Execute(const std::shared_ptr<CFileItem>& item) const
97 return CServiceBroker::GetAddonMgr().DisableAddon(item->GetAddonInfo()->ID(),
98 AddonDisabledReason::USER);