Files
cbh/ElaWidgetTools/private/ElaAppBarPrivate.h
2025-09-20 01:41:33 +08:00

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