66 lines
2.5 KiB
C++
66 lines
2.5 KiB
C++
#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
|