#ifndef ELAAPPBARPRIVATE_H #define ELAAPPBARPRIVATE_H #include "ElaDef.h" class QLabel; class QScreen; class QHBoxLayout; class QVBoxLayout; class ElaText; class ElaAppBar; class ElaIconButton; class ElaToolButton; class QMenu; class ElaAppBarPrivate : public QObject { Q_OBJECT Q_D_CREATE(ElaAppBar) Q_PROPERTY_CREATE_D(bool, IsStayTop) Q_PROPERTY_CREATE_D(bool, IsFixedSize) Q_PROPERTY_CREATE_D(bool, IsDefaultClosed) Q_PROPERTY_CREATE_D(bool, IsOnlyAllowMinAndClose) Q_PROPERTY_CREATE_D(int, AppBarHeight) Q_PRIVATE_CREATE_D(QWidget*, CustomWidget) Q_PROPERTY_CREATE_D(int, CustomWidgetMaximumWidth) Q_PRIVATE_CREATE_D(QMenu*, CustomMenu) public: explicit ElaAppBarPrivate(QObject* parent = nullptr); ~ElaAppBarPrivate() override; Q_SLOT void onMinButtonClicked(); Q_SLOT void onMaxButtonClicked(); Q_SLOT void onCloseButtonClicked(); Q_SLOT void onStayTopButtonClicked(); private: ElaThemeType::ThemeMode _themeMode; QHBoxLayout* _mainLayout{nullptr}; QVBoxLayout* _iconLabelLayout{nullptr}; QVBoxLayout* _titleLabelLayout{nullptr}; ElaAppBarType::ButtonFlags _buttonFlags; ElaToolButton* _routeBackButton{nullptr}; ElaToolButton* _navigationButton{nullptr}; ElaToolButton* _themeChangeButton{nullptr}; ElaToolButton* _stayTopButton{nullptr}; ElaToolButton* _minButton{nullptr}; ElaToolButton* _maxButton{nullptr}; ElaIconButton* _closeButton{nullptr}; QScreen* _lastScreen{nullptr}; ElaText* _titleLabel{nullptr}; QLabel* _iconLabel{nullptr}; qint64 _currentWinID{0}; int _lastMinTrackWidth{0}; quint64 _clickTimer{0}; int _edges{0}; int _margins{8}; bool _isHoverMaxButton{false}; int _win7Margins{0}; void _changeMaxButtonAwesome(bool isMaximized); void _showAppBarMenu(QPoint point); void _updateCursor(int edges); bool _containsCursorToItem(QWidget* item); void _onThemeModeChange(ElaThemeType::ThemeMode themeMode); int _calculateMinimumWidth(); QVBoxLayout* _createVLayout(QWidget* widget); }; #endif // ELAAPPBARPRIVATE_H