MythTV
master
|
Themed menu class, used for main menus in MythTV frontend. More...
#include <libmythui/myththemedmenu.h>
Public Member Functions | |
MythThemedMenu (const QString &cdir, const QString &menufile, MythScreenStack *parent, const QString &name, bool allowreorder=false, MythThemedMenuState *state=nullptr) | |
Creates a themed menu. More... | |
~MythThemedMenu () override | |
bool | foundTheme (void) const |
Returns true iff a theme has been found by a previous call to SetMenuTheme(). More... | |
void | getCallback (void(**lcallback)(void *, QString &), void **data) |
Get the themed menus callback function and data for that function. More... | |
void | setCallback (void(*lcallback)(void *, QString &), void *data) |
Set the themed menus callback function and data for that function. More... | |
void | setKillable (void) |
QString | getSelection (void) |
void | aboutToShow (void) override |
void | ShowMenu () override |
void | aboutScreen () |
void | customEvent (QEvent *event) override |
void | mediaEvent (MythMediaEvent *event) override |
Media/Device status event handler, received from MythMediaMonitor. More... | |
![]() | |
MythThemedMenuState (MythScreenStack *parent, const QString &name) | |
~MythThemedMenuState () override=default | |
bool | Create (void) override |
![]() | |
MythScreenType (MythScreenStack *parent, const QString &name, bool fullscreen=true) | |
~MythScreenType () override | |
bool | inputMethodEvent (QInputMethodEvent *event) override |
Input Method event handler. More... | |
bool | gestureEvent (MythGestureEvent *event) override |
Mouse click/movement handler, receives mouse gesture events from the QCoreApplication event loop. More... | |
void | doInit (void) |
void | LoadInForeground (void) |
bool | IsInitialized (void) const |
Has Init() been called on this screen? More... | |
bool | IsFullscreen (void) const |
void | SetFullscreen (bool full) |
MythUIType * | GetFocusWidget (void) const |
bool | SetFocusWidget (MythUIType *widget=nullptr) |
virtual bool | NextPrevWidgetFocus (bool up_or_down) |
void | BuildFocusList (void) |
MythScreenStack * | GetScreenStack () const |
virtual void | aboutToHide (void) |
bool | IsDeleting (void) const |
void | SetDeleting (bool deleting) |
bool | IsLoading (void) const |
bool | IsLoaded (void) const |
MythPainter * | GetPainter (void) override |
![]() | |
MythUIComposite (QObject *parent, const QString &name) | |
~MythUIComposite () override=default | |
virtual void | SetTextFromMap (const InfoMap &infoMap) |
virtual void | ResetMap (const InfoMap &infoMap) |
![]() | |
MythUIType (QObject *parent, const QString &name) | |
virtual void | Reset (void) |
Reset the widget to it's original state, should not reset changes made by the theme. More... | |
void | AddChild (MythUIType *child) |
Add a child UIType. More... | |
MythUIType * | GetChild (const QString &name) const |
Get a named child of this UIType. More... | |
MythUIType * | GetChildAt (QPoint p, bool recursive=true, bool focusable=true) const |
Return the first MythUIType at the given coordinates. More... | |
QList< MythUIType * > * | GetAllChildren (void) |
Return a list of all child widgets. More... | |
QList< MythUIType * > | GetAllDescendants (void) |
void | DeleteChild (const QString &name) |
Delete a named child of this UIType. More... | |
void | DeleteChild (MythUIType *child) |
Delete the given UIType if it is a child of this UIType. More... | |
void | DeleteAllChildren (void) |
Delete all child widgets. More... | |
bool | NeedsRedraw (void) const |
void | ResetNeedsRedraw (void) |
void | SetRedraw (void) |
void | SetChildNeedsRedraw (MythUIType *child) |
bool | CanTakeFocus (void) const |
Return if this widget can accept input focus. More... | |
void | SetCanTakeFocus (bool set=true) |
Set whether this widget can take focus. More... | |
void | SetFocusOrder (int order) |
bool | IsEnabled (void) const |
void | SetEnabled (bool enable) |
bool | MoveToTop (void) |
bool | MoveChildToTop (MythUIType *child) |
void | ActivateAnimations (MythUIAnimation::Trigger trigger) |
QList< MythUIAnimation * > * | GetAnimations (void) |
virtual void | Pulse (void) |
Pulse is called 70 times a second to trigger a single frame of an animation. More... | |
void | Draw (MythPainter *p, int xoffset, int yoffset, int alphaMod=255, QRect clipRect=QRect()) |
void | SetPosition (int x, int y) |
Convenience method, calls SetPosition(const MythPoint&) Override that instead to change functionality. More... | |
void | SetPosition (QPoint point) |
virtual void | SetPosition (const MythPoint &point) |
virtual MythPoint | GetPosition (void) const |
virtual void | SetSize (QSize size) |
virtual void | SetMinSize (const MythPoint &size) |
Set the minimum size of this widget, for widgets which can be rescaled. More... | |
virtual QSize | GetMinSize (void) const |
virtual void | SetArea (const MythRect &rect) |
virtual void | AdjustMinArea (int delta_x, int delta_y, int delta_w, int delta_h) |
Adjust the size of a sibling. More... | |
virtual void | VanishSibling (void) |
virtual void | SetMinAreaParent (MythRect actual_area, MythRect allowed_area, MythUIType *child) |
Adjust the size of sibling objects within the button. More... | |
virtual void | SetMinArea (const MythRect &rect) |
Set the minimum area based on the given size. More... | |
virtual MythRect | GetArea (void) const |
If the object has a minimum area defined, return it, other wise return the default area. More... | |
virtual MythRect | GetFullArea (void) const |
virtual void | RecalculateArea (bool recurse=true) |
void | ExpandArea (QRect rect) |
virtual QRegion | GetDirtyArea (void) const |
bool | IsVisible (bool recurse=false) const |
virtual void | SetVisible (bool visible) |
void | MoveTo (QPoint destXY, QPoint speedXY) |
void | AdjustAlpha (int mode, int alphachange, int minalpha=0, int maxalpha=255) |
void | SetAlpha (int newalpha) |
int | GetAlpha (void) const |
MythFontProperties * | GetFont (const QString &text) const |
bool | AddFont (const QString &text, MythFontProperties *fontProp) |
void | SetHelpText (const QString &text) |
QString | GetHelpText (void) const |
void | SetXMLLocation (const QString &filename, int where) |
QString | GetXMLLocation (void) const |
void | SetXMLName (const QString &name) |
QString | GetXMLName (void) const |
bool | IsDeferredLoading (bool recurse=false) const |
void | SetDeferLoad (bool defer) |
virtual void | LoadNow (void) |
Cause images in this and child widgets to be loaded. More... | |
bool | ContainsPoint (QPoint point) const |
Check if the given point falls within this widgets area. More... | |
void | SetPainter (MythPainter *painter) |
void | SetCentre (UIEffects::Centre centre) |
void | SetZoom (float zoom) |
void | SetHorizontalZoom (float zoom) |
void | SetVerticalZoom (float zoom) |
void | SetAngle (float angle) |
void | SetDependIsDefault (bool isDefault) |
void | SetReverseDependence (MythUIType *dependee, bool reverse) |
void | SetDependsMap (QMap< QString, QString > dependsMap) |
QMap< QString, QString > | GetDependsMap () const |
Protected Member Functions | |
bool | keyPressEvent (QKeyEvent *e) override |
keyboard/LIRC event handler. More... | |
![]() | |
void | CopyFrom (MythUIType *base) override |
Copy this widgets state from another. More... | |
![]() | |
MythScreenType (MythUIType *parent, const QString &name, bool fullscreen=true) | |
void | CreateCopy (MythUIType *parent) override |
Copy the state of this widget to the one given, it must be of the same type. More... | |
bool | ParseElement (const QString &filename, QDomElement &element, bool showWarnings) override |
Parse the xml definition of this widget setting the state of the object accordingly. More... | |
virtual void | Load (void) |
Load data which will ultimately be displayed on-screen or used to determine what appears on-screen (See Warning) More... | |
virtual void | Init (void) |
Used after calling Load() to assign data to widgets and other UI initilisation which is prohibited in Load() More... | |
void | LoadInBackground (const QString &message="") |
void | ReloadInBackground (void) |
void | OpenBusyPopup (const QString &message="") |
void | CloseBusyPopup (void) |
void | SetBusyPopupMessage (const QString &message) |
void | ResetBusyPopup (void) |
![]() | |
~MythUIType () override | |
void | customEvent (QEvent *event) override |
virtual void | DrawSelf (MythPainter *p, int xoffset, int yoffset, int alphaMod, QRect clipRect) |
void | AddFocusableChildrenToList (FocusInfoType &focusList) |
void | HandleAlphaPulse () |
Handle one frame of an alpha (transparency) change animation. More... | |
void | HandleMovementPulse () |
Handle one frame of a movement animation. More... | |
int | CalcAlpha (int alphamod) const |
void | ConnectDependants (bool recurse=false) |
virtual void | Finalize (void) |
Perform any post-xml parsing initialisation tasks. More... | |
Private Slots | |
void | setButtonActive (MythUIButtonListItem *item) |
void | buttonAction (MythUIButtonListItem *item, bool skipPass) |
void | buttonAction (MythUIButtonListItem *item) |
Private Member Functions | |
void | SetMenuTheme (const QString &menufile) |
Loads the main UI theme, and a menu theme. More... | |
bool | parseMenu (const QString &menuname) |
Parse the themebuttons to be added based on the name of the menu file provided. More... | |
void | parseThemeButton (QDomElement &element) |
Parses the element's tags and set the ThemeButton's type, text, depends, and action, then adds the button. More... | |
void | addButton (const QString &type, const QString &text, const QString &alttext, const QStringList &action, const QString &description, const QString &password) |
Create a new MythThemedButton based on the MythThemedMenuState m_state and the type, text, alt-text and action provided in the parameters. More... | |
bool | handleAction (const QString &action, const QString &password=QString()) |
Handle a MythTV action for the Menus. More... | |
bool | checkPinCode (const QString &password_setting) |
Queries the user for a password to enter a part of MythTV restricted by a password. More... | |
Static Private Member Functions | |
static bool | findDepends (const QString &fileList) |
static bool | findDependsExec (const QString &filename) |
static QString | findMenuFile (const QString &menuname) |
Locates the appropriate menu file from which to parse the menu. More... | |
Private Attributes | |
MythThemedMenu * | m_parent {nullptr} |
MythThemedMenuState * | m_state {nullptr} |
bool | m_allocedstate {false} |
QString | m_selection |
bool | m_foundtheme {false} |
bool | m_ignorekeys {false} |
bool | m_wantpop {false} |
QString | m_menumode |
MythDialogBox * | m_menuPopup {nullptr} |
Additional Inherited Members | |
![]() | |
virtual void | Close () |
![]() | |
void | LoseFocus () |
bool | TakeFocus () |
void | Activate () |
void | Hide (void) |
void | Show (void) |
void | Refresh (void) |
void | UpdateDependState (bool isDefault) |
void | UpdateDependState (MythUIType *dependee, bool isDefault) |
![]() | |
void | Exiting () |
![]() | |
void | RequestUpdate () |
void | RequestRegionUpdate (const QRect &) |
void | TakingFocus () |
void | LosingFocus () |
void | VisibilityChanged (bool Visible) |
void | Showing () |
void | Hiding () |
void | Enabling () |
void | Disabling () |
void | FinishedMoving () |
void | FinishedFading () |
void | DependChanged (bool isDefault) |
![]() | |
static QString | getFirstText (QDomElement &element) |
static bool | parseBool (const QString &text) |
static bool | parseBool (QDomElement &element) |
static MythPoint | parsePoint (const QString &text, bool normalize=true) |
static MythPoint | parsePoint (QDomElement &element, bool normalize=true) |
static QSize | parseSize (const QString &text, bool normalize=true) |
static QSize | parseSize (QDomElement &element, bool normalize=true) |
static MythRect | parseRect (const QString &text, bool normalize=true) |
static MythRect | parseRect (QDomElement &element, bool normalize=true) |
static int | parseAlignment (const QString &text) |
static int | parseAlignment (QDomElement &element) |
static QBrush | parseGradient (const QDomElement &element) |
static QString | parseText (QDomElement &element) |
static MythUIType * | GetGlobalObjectStore (void) |
static void | ClearGlobalObjectStore (void) |
static void | ParseChildren (const QString &filename, QDomElement &element, MythUIType *parent, bool showWarnings) |
static MythUIType * | ParseUIType (const QString &filename, QDomElement &element, const QString &type, MythUIType *parent, MythScreenType *screen, bool showWarnings, QMap< QString, QString > &parentDependsMap) |
static bool | WindowExists (const QString &xmlfile, const QString &windowname) |
static bool | LoadWindowFromXML (const QString &xmlfile, const QString &windowname, MythUIType *parent) |
static bool | LoadBaseTheme (void) |
static bool | LoadBaseTheme (const QString &baseTheme) |
static bool | CopyWindowFromBase (const QString &windowname, MythScreenType *win) |
![]() | |
void(* | m_callback )(void *, QString &) |
void * | m_callbackdata {nullptr} |
bool | m_killable {false} |
bool | m_loaded {false} |
MythUIStateType * | m_titleState {nullptr} |
MythUIStateType * | m_watermarkState {nullptr} |
MythUIButtonList * | m_buttonList {nullptr} |
MythUIText * | m_descriptionText {nullptr} |
![]() | |
static int | NormX (int width) |
static int | NormY (int height) |
![]() | |
bool | m_fullScreen {false} |
bool | m_isDeleting {false} |
QSemaphore | m_loadLock {1} |
volatile bool | m_isLoading {false} |
volatile bool | m_isLoaded {false} |
bool | m_isInitialized {false} |
MythUIType * | m_currentFocusWidget {nullptr} |
FocusInfoType | m_focusWidgetList |
MythScreenStack * | m_screenStack {nullptr} |
MythUIBusyDialog * | m_busyPopup {nullptr} |
QRegion | m_savedMask |
![]() | |
QList< MythUIType * > | m_childrenList |
QMap< QString, QString > | m_dependsMap |
QList< QPair< MythUIType *, bool > > | m_dependsValue |
QList< int > | m_dependOperator |
bool | m_visible {true} |
bool | m_hasFocus {false} |
bool | m_canHaveFocus {false} |
bool | m_enabled {true} |
bool | m_enableInitiator {false} |
bool | m_initiator {false} |
bool | m_vanish {false} |
bool | m_vanished {false} |
bool | m_isDependDefault {false} |
QMap< MythUIType *, bool > | m_reverseDepend |
int | m_focusOrder {0} |
MythRect | m_area {0,0,0,0} |
MythRect | m_minArea {0,0,0,0} |
MythPoint | m_minSize |
QRegion | m_dirtyRegion {0,0,0,0} |
bool | m_needsRedraw {false} |
UIEffects | m_effects |
int | m_alphaChangeMode {0} |
int | m_alphaChange {0} |
int | m_alphaMin {0} |
int | m_alphaMax {255} |
bool | m_moving {false} |
QPoint | m_xyDestination {0,0} |
QPoint | m_xySpeed {0,0} |
FontMap * | m_fonts {nullptr} |
MythUIType * | m_parent {nullptr} |
MythPainter * | m_painter {nullptr} |
QList< MythUIAnimation * > | m_animations |
QString | m_helptext |
QString | m_xmlName |
QString | m_xmlLocation |
bool | m_deferload {false} |
QColor | m_borderColor {Qt::black} |
Themed menu class, used for main menus in MythTV frontend.
Definition at line 57 of file myththemedmenu.h.
MythThemedMenu::MythThemedMenu | ( | const QString & | cdir, |
const QString & | menufile, | ||
MythScreenStack * | parent, | ||
const QString & | name, | ||
bool | allowreorder = false , |
||
MythThemedMenuState * | state = nullptr |
||
) |
Creates a themed menu.
cdir | The directory containing the theme. (Ignored) |
menufile | file name of menu definition file |
parent | the screen stack that owns this UI type |
name | the name of this UI type |
allowreorder | Allow reordering of the menu items. (Ignored) |
state | theme state associated with this menu |
Definition at line 90 of file myththemedmenu.cpp.
Referenced by handleAction().
|
override |
Definition at line 137 of file myththemedmenu.cpp.
bool MythThemedMenu::foundTheme | ( | void | ) | const |
Returns true iff a theme has been found by a previous call to SetMenuTheme().
Definition at line 145 of file myththemedmenu.cpp.
Referenced by mythplugin_config(), runMenu(), and RunMenu().
void MythThemedMenu::getCallback | ( | void(**)(void *, QString &) | lcallback, |
void ** | data | ||
) |
Get the themed menus callback function and data for that function.
Definition at line 151 of file myththemedmenu.cpp.
Referenced by runMenu().
void MythThemedMenu::setCallback | ( | void(*)(void *, QString &) | lcallback, |
void * | data | ||
) |
Set the themed menus callback function and data for that function.
Definition at line 159 of file myththemedmenu.cpp.
Referenced by mythplugin_config(), runMenu(), and RunMenu().
void MythThemedMenu::setKillable | ( | void | ) |
Definition at line 166 of file myththemedmenu.cpp.
Referenced by mythplugin_config(), and runMenu().
QString MythThemedMenu::getSelection | ( | void | ) |
Definition at line 171 of file myththemedmenu.cpp.
|
overridevirtual |
Reimplemented from MythScreenType.
Definition at line 293 of file myththemedmenu.cpp.
|
overridevirtual |
Reimplemented from MythScreenType.
Definition at line 299 of file myththemedmenu.cpp.
void MythThemedMenu::aboutScreen | ( | ) |
Definition at line 348 of file myththemedmenu.cpp.
Referenced by customEvent(), and keyPressEvent().
|
override |
Definition at line 375 of file myththemedmenu.cpp.
|
overridevirtual |
Media/Device status event handler, received from MythMediaMonitor.
event | Media event |
Reimplemented from MythUIType.
Definition at line 964 of file myththemedmenu.cpp.
|
overrideprotectedvirtual |
keyboard/LIRC event handler.
This translates key presses through the "Main Menu" context into MythTV actions and then handles them as appropriate.
Reimplemented from MythScreenType.
Definition at line 194 of file myththemedmenu.cpp.
|
privateslot |
Definition at line 176 of file myththemedmenu.cpp.
Referenced by SetMenuTheme().
|
privateslot |
Definition at line 721 of file myththemedmenu.cpp.
Referenced by buttonAction(), customEvent(), and SetMenuTheme().
|
privateslot |
Definition at line 736 of file myththemedmenu.cpp.
|
private |
Loads the main UI theme, and a menu theme.
See also foundtheme(void), it will return true when called after this method if this method was successful.
menufile | name of menu item xml file |
Definition at line 111 of file myththemedmenu.cpp.
Referenced by MythThemedMenu().
|
private |
Parse the themebuttons to be added based on the name of the menu file provided.
If the menu to be parsed is the main menu and this fails to find the XML file this will simply return false. Otherwise if it fails to find the menu it will pop up an error dialog and then return false.
The idea behind this is that if we can't parse the main menu we have to exit from the frontend entirely. But in all other cases we can simply return to the main menu and hope that it is a non-essential portion of MythTV which the theme does not support.
Definition at line 581 of file myththemedmenu.cpp.
Referenced by SetMenuTheme().
|
private |
Parses the element's tags and set the ThemeButton's type, text, depends, and action, then adds the button.
element | DOM element describing features of the themeButton |
Definition at line 440 of file myththemedmenu.cpp.
Referenced by parseMenu().
|
private |
Create a new MythThemedButton based on the MythThemedMenuState m_state and the type, text, alt-text and action provided in the parameters.
Buttons (or the action of a button) can be locked and requie a password to be used. This is indicated by setting the password parameter.
type | type of button to be created |
text | text to appear on the button |
alttext | alternate text to appear when required |
action | actions to be associated with button |
description | XXX |
password | The name of the setting that stores the password. |
Definition at line 697 of file myththemedmenu.cpp.
Referenced by parseThemeButton().
|
private |
Handle a MythTV action for the Menus.
action | single action to be handled |
password | password setting to be checked |
Definition at line 793 of file myththemedmenu.cpp.
Referenced by buttonAction(), and keyPressEvent().
|
staticprivate |
Definition at line 879 of file myththemedmenu.cpp.
Referenced by parseThemeButton().
|
staticprivate |
Definition at line 899 of file myththemedmenu.cpp.
Referenced by parseThemeButton().
|
staticprivate |
Locates the appropriate menu file from which to parse the menu.
menuname | file name of the menu you want to find |
Definition at line 746 of file myththemedmenu.cpp.
Referenced by findDepends(), and parseMenu().
|
private |
Queries the user for a password to enter a part of MythTV restricted by a password.
password_setting | password to be checked |
Definition at line 912 of file myththemedmenu.cpp.
Referenced by handleAction().
|
private |
Definition at line 106 of file myththemedmenu.h.
|
private |
Definition at line 108 of file myththemedmenu.h.
Referenced by customEvent(), getCallback(), handleAction(), keyPressEvent(), MythThemedMenu(), setCallback(), setKillable(), SetMenuTheme(), and ~MythThemedMenu().
Definition at line 109 of file myththemedmenu.h.
Referenced by handleAction(), keyPressEvent(), MythThemedMenu(), and ~MythThemedMenu().
|
private |
Definition at line 111 of file myththemedmenu.h.
Referenced by getSelection(), handleAction(), and parseMenu().
Definition at line 112 of file myththemedmenu.h.
Referenced by foundTheme(), and SetMenuTheme().
Definition at line 113 of file myththemedmenu.h.
Referenced by keyPressEvent().
Definition at line 114 of file myththemedmenu.h.
Referenced by handleAction(), and keyPressEvent().
|
private |
Definition at line 116 of file myththemedmenu.h.
Referenced by parseMenu().
|
private |
Definition at line 118 of file myththemedmenu.h.
Referenced by aboutScreen(), customEvent(), and ShowMenu().