5#include "GUIDefinitions.h"
11 class CGUIPropertyButton;
12 class CGUIMenuItemProperty;
13 class CInternalPermissionManager;
15 typedef std::function<void(CGUIPropertyButton*)> CPropertyButtonClickProcedure;
16 #define MakePropertyButtonClickProcedure [=](CGUIPropertyButton* pPropertyButton) -> void
18 class FL_EXPORT CGUIPropertyButton :
public Base::CFLBase
22 virtual ~CGUIPropertyButton();
25 virtual bool SetName(
const Base::CFLString<wchar_t>& strName);
26 virtual Base::CFLString<wchar_t> GetName()
const;
28 virtual void Enable(
bool bEnable);
29 virtual bool IsEnabled()
const;
31 virtual void SetVisible(
bool bShow,
bool bAdjustLayout = FALSE);
32 virtual bool IsVisible()
const;
34 virtual void SetGUIMenuItemProperty(CGUIMenuItemProperty* pMIP);
36 virtual CGUIMenuItemProperty* GetGUIMenuItemProperty();
40 virtual int32_t GetCurrentButtonWidth()
const;
42 virtual void SetButtonWidth(
size_t stWidth = 100);
43 virtual int32_t GetButtonWidth()
const;
47 virtual void SetButtonWidthRatio(
double f64WidthRatio = 0.5);
48 virtual double GetButtonWidthRatio()
const;
50 virtual void CalcButtonWidth(int32_t i32ClientRectWidth, LONG btnNameTextExtent);
52 virtual CGUIButton* GetButton();
56 virtual bool SetPropertyButtonClickProcedure(CPropertyButtonClickProcedure* pFunc,
bool bAutoDestroy =
true);
57 virtual CPropertyButtonClickProcedure* GetPropertyButtonClickProcedure();
59 virtual void SetMinimalAuthorityLevel(Base::EAuthorityLevel eAuthorityLevel, GUI::EPermission ePermission);
60 virtual Base::EAuthorityLevel GetMinimalAuthorityLevel(GUI::EPermission ePermission)
const;
63 DeclareGetClassType();
67 virtual void OnClick();
72 CGUIButton m_btnButton;
73 Base::CFLString<wchar_t> m_strName;
74 Base::CFLString<wchar_t> m_strShortcut;
76 CGUIMenuItemProperty* m_pGUIMenuItemProperty;
78 CInternalPermissionManager* m_pInternalPM;
81 CPropertyButtonClickProcedure* m_pPropertyButtonClickProcedure;
82 bool m_bPropertyButtonClickProcedureAutoDestroy;
83 bool m_bButtonClickProcedureRunning;
87 size_t m_stCurrentButtonWidth;
88 size_t m_stButtonWidth;
89 double m_f64ButtonWidthRatio;
90 bool m_bSetWidthByRatio;
92 friend class CGUIPaneProperties;
93 friend class CGUIMenuItemProperty;
94 friend class CGUIPanePropertiesShell;
95 friend class CGUIManagerPane;
96 friend class CGUITabbedPane;