67 lines
2.1 KiB
C++
67 lines
2.1 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
|