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.
9 #include "ContextMenus.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"
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
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
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
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);
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()))
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
);