[videodb] remove unused seasons table from episode_view
[xbmc.git] / xbmc / ContextMenuItem.h
blobaee6d82e713d09a1eb4f1f86343d0c5d8caac3f3
1 /*
2 * Copyright (C) 2015-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 #pragma once
11 #include <map>
12 #include <memory>
13 #include <string>
14 #include <vector>
16 class CFileItem;
18 namespace ADDON
20 class CContextMenuAddon;
23 namespace INFO
25 class InfoBool;
28 class IContextMenuItem
30 public:
31 virtual ~IContextMenuItem() = default;
32 virtual bool IsVisible(const CFileItem& item) const = 0;
33 virtual bool Execute(const std::shared_ptr<CFileItem>& item) const = 0;
34 virtual std::string GetLabel(const CFileItem& item) const = 0;
35 virtual bool IsGroup() const { return false; }
36 virtual bool HasParent() const { return false; }
40 class CStaticContextMenuAction : public IContextMenuItem
42 public:
43 explicit CStaticContextMenuAction(uint32_t label) : m_label(label) {}
44 std::string GetLabel(const CFileItem& item) const final;
45 bool IsGroup() const final { return false; }
46 private:
47 const uint32_t m_label;
51 class CContextMenuItem : public IContextMenuItem
53 public:
54 CContextMenuItem() = default;
56 std::string GetLabel(const CFileItem& item) const override { return m_label; }
57 bool IsVisible(const CFileItem& item) const override ;
58 bool IsParentOf(const CContextMenuItem& menuItem) const;
59 bool IsGroup() const override ;
60 bool HasParent() const override;
61 bool Execute(const std::shared_ptr<CFileItem>& item) const override;
62 bool operator==(const CContextMenuItem& other) const;
63 std::string ToString() const;
65 static CContextMenuItem CreateGroup(
66 const std::string& label,
67 const std::string& parent,
68 const std::string& groupId,
69 const std::string& addonId);
71 static CContextMenuItem CreateItem(
72 const std::string& label,
73 const std::string& parent,
74 const std::string& library,
75 const std::string& condition,
76 const std::string& addonId,
77 const std::vector<std::string>& args = std::vector<std::string>());
79 friend class ADDON::CContextMenuAddon;
81 private:
82 std::string m_label;
83 std::string m_parent;
84 std::string m_groupId;
85 std::string m_library;
86 std::string m_addonId; // The owner of this menu item
87 std::vector<std::string> m_args;
89 std::string m_visibilityCondition;
90 mutable std::shared_ptr<INFO::InfoBool> m_infoBool;
91 mutable bool m_infoBoolRegistered{false};