feat: 添加ElaWidgetTool库

This commit is contained in:
sleepwithoutbz
2025-09-19 22:40:52 +08:00
parent 5f93e8caf6
commit 4eef5c7fd5
407 changed files with 36325 additions and 7 deletions

View File

@@ -0,0 +1,66 @@
#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