MythTV master
mythtvmenu.h
Go to the documentation of this file.
1#ifndef MYTHTVMENU_H
2#define MYTHTVMENU_H
3
4// Qt
5#include <QMetaType>
6#include <QDomDocument>
7
8// MythTV
9#include "mythtvexp.h"
10
11enum MenuCategory : std::uint8_t
12{
16};
17
18enum MenuShowContext : std::uint8_t
19{
23};
24
25enum MenuCurrentContext : std::uint8_t
26{
30};
31
32// These correlate to the four MythTVMenu objects that are allocated
33// and stashed inside of a TV object. They are used to find the
34// original menu again, instead of serializing/deserializing the
35// entire MythTVMenu object to/from a QVariant.
36enum MenuTypeId : std::uint8_t
37{
43};
44
45class OSD;
47class MythTVMenu;
48
50{
51 public:
52 bool AddButton(MythOSDDialogData* Menu, bool Active,const QString& Action,
53 const QString& DefaultTextActive, const QString& DefaultTextInactive,
54 bool IsMenu, const QString& TextArg) const;
55
56 MythTVMenuItemContext(const MythTVMenu& Menu, const QDomNode& Node,
57 QString Name, MenuCurrentContext Current, bool Visible);
58 MythTVMenuItemContext(const MythTVMenu& Menu, const QDomNode& Node,
59 MenuShowContext Context, MenuCurrentContext Current,
60 QString Action, QString ActionText, bool Visible);
61 MythTVMenuItemContext(const MythTVMenu& Menu, const QDomNode& Node,
62 MenuShowContext Context, MenuCurrentContext Current,
63 QString Action, bool Visible);
64
66 const QDomNode& m_node;
68 const QString m_menuName;
71 const QString m_action;
72 const QString m_actionText;
73 bool m_visible { false };
74};
75
77{
78 public:
79 virtual ~MythTVMenuItemDisplayer() = default;
80 virtual bool MenuItemDisplay(const MythTVMenuItemContext& Context, MythOSDDialogData* Menu) = 0;
81};
82
84{
85 public:
86 MythTVMenu() = default;
88 static bool MatchesGroup(const QString& Name, const QString& Prefix,
89 MenuCategory Category, QString& OutPrefix);
90 bool LoadFromFile(MenuTypeId id, const QString& Filename, const QString& Menuname,
91 const char * TranslationContext, const QString& KeyBindingContext,
92 int IncludeLevel = 0);
93 bool LoadFromString(MenuTypeId id, const QString& Text, const QString& Menuname,
94 const char * TranslationContext, const QString& KeyBindingContext,
95 int IncludeLevel = 0);
96 bool IsLoaded() const;
97 QDomElement GetRoot() const;
98 QString Translate(const QString& Text) const;
99 bool Show(const QDomNode& Node, const QDomNode& Selected,
101 bool Visible = true) const;
102 QString GetName() const;
103 const char* GetTranslationContext() const;
104 const QString& GetKeyBindingContext() const;
105 static QString GetPathFromNode(QDomNode Node);
106 QDomNode GetNodeFromPath(const QString& path) const;
107 friend class TV;
108
109 private:
110 void ProcessIncludes(QDomElement& Root, int IncludeLevel);
111
113 QDomDocument* m_document { nullptr };
114 const char* m_translationContext { "" };
115 QString m_menuName;
117};
118
120
122{
123 public:
124 MythTVMenuNodeTuple(MenuTypeId Id, QString Path);
126
128 QString m_path;
129};
130
132
133#endif
An action (for this plugin) consists of a description, and a set of key sequences.
Definition: action.h:41
MenuCurrentContext m_currentContext
Definition: mythtvmenu.h:70
MenuCategory m_category
Definition: mythtvmenu.h:67
bool AddButton(MythOSDDialogData *Menu, bool Active, const QString &Action, const QString &DefaultTextActive, const QString &DefaultTextInactive, bool IsMenu, const QString &TextArg) const
Definition: mythtvmenu.cpp:14
const QDomNode & m_node
Definition: mythtvmenu.h:66
const QString m_menuName
Definition: mythtvmenu.h:68
MythTVMenuItemContext(const MythTVMenu &Menu, const QDomNode &Node, QString Name, MenuCurrentContext Current, bool Visible)
Definition: mythtvmenu.cpp:48
MenuShowContext m_showContext
Definition: mythtvmenu.h:69
const QString m_action
Definition: mythtvmenu.h:71
const QString m_actionText
Definition: mythtvmenu.h:72
const MythTVMenu & m_menu
Definition: mythtvmenu.h:65
virtual ~MythTVMenuItemDisplayer()=default
virtual bool MenuItemDisplay(const MythTVMenuItemContext &Context, MythOSDDialogData *Menu)=0
MythTVMenuNodeTuple()=default
QString m_menuName
Definition: mythtvmenu.h:115
MythTVMenu()=default
QString m_keyBindingContext
Definition: mythtvmenu.h:116
Definition: osd.h:94
Control TV playback.
Definition: tv_play.h:156
static FRACTAL * Root
Definition: ifs.cpp:102
Q_DECLARE_METATYPE(std::chrono::seconds)
#define MTV_PUBLIC
Definition: mythtvexp.h:15
static const MythTVMenu dummy_menubase
Definition: mythtvmenu.h:119
MenuCategory
Definition: mythtvmenu.h:12
@ kMenuCategoryMenu
Definition: mythtvmenu.h:15
@ kMenuCategoryItem
Definition: mythtvmenu.h:13
@ kMenuCategoryItemlist
Definition: mythtvmenu.h:14
MenuCurrentContext
Definition: mythtvmenu.h:26
@ kMenuCurrentAlways
Definition: mythtvmenu.h:29
@ kMenuCurrentActive
Definition: mythtvmenu.h:28
@ kMenuCurrentDefault
Definition: mythtvmenu.h:27
MenuShowContext
Definition: mythtvmenu.h:19
@ kMenuShowAlways
Definition: mythtvmenu.h:22
@ kMenuShowInactive
Definition: mythtvmenu.h:21
@ kMenuShowActive
Definition: mythtvmenu.h:20
MenuTypeId
Definition: mythtvmenu.h:37
@ kMenuIdCutlist
Definition: mythtvmenu.h:41
@ kMenuIdPlayback
Definition: mythtvmenu.h:39
@ kMenuIdUnknown
Definition: mythtvmenu.h:38
@ kMenuIdPlaybackCompact
Definition: mythtvmenu.h:40
@ kMenuIdCutlistCompact
Definition: mythtvmenu.h:42