68 lines
2.5 KiB
C++
68 lines
2.5 KiB
C++
#ifndef ELAWINDOWPRIVATE_H
|
|
#define ELAWINDOWPRIVATE_H
|
|
|
|
#include <QLinearGradient>
|
|
#include <QMap>
|
|
#include <QObject>
|
|
|
|
#include "ElaDef.h"
|
|
class ElaEvent;
|
|
class ElaWindow;
|
|
class ElaNavigationBar;
|
|
class ElaAppBar;
|
|
class ElaCentralStackedWidget;
|
|
class QHBoxLayout;
|
|
class QVBoxLayout;
|
|
class ElaThemeAnimationWidget;
|
|
class ElaWindowPrivate : public QObject
|
|
{
|
|
Q_OBJECT
|
|
Q_D_CREATE(ElaWindow)
|
|
Q_PROPERTY_CREATE_D(int, ThemeChangeTime)
|
|
Q_PROPERTY_CREATE_D(ElaNavigationType::NavigationDisplayMode, NavigationBarDisplayMode)
|
|
Q_PROPERTY_CREATE_D(ElaWindowType::StackSwitchMode, StackSwitchMode)
|
|
public:
|
|
explicit ElaWindowPrivate(QObject* parent = nullptr);
|
|
~ElaWindowPrivate() override;
|
|
Q_SLOT void onNavigationButtonClicked();
|
|
Q_INVOKABLE void onWMWindowClickedEvent(QVariantMap data);
|
|
Q_SLOT void onThemeReadyChange();
|
|
Q_SLOT void onDisplayModeChanged();
|
|
Q_SLOT void onThemeModeChanged(ElaThemeType::ThemeMode themeMode);
|
|
Q_SLOT void onNavigationNodeClicked(ElaNavigationType::NavigationNodeType nodeType, QString nodeKey, bool isRouteBack);
|
|
Q_SLOT void onNavigationNodeAdded(ElaNavigationType::NavigationNodeType nodeType, QString nodeKey, QWidget* page);
|
|
Q_SLOT void onNavigationNodeRemoved(ElaNavigationType::NavigationNodeType nodeType, QString nodeKey);
|
|
Q_INVOKABLE void onNavigationRouteBack(QVariantMap routeData);
|
|
|
|
private:
|
|
ElaThemeType::ThemeMode _themeMode;
|
|
QImage _lightBaseImage;
|
|
QImage _darkBaseImage;
|
|
bool _isWindowClosing{false};
|
|
|
|
bool _isInitFinished{false};
|
|
ElaEvent* _focusEvent{nullptr};
|
|
ElaNavigationBar* _navigationBar{nullptr};
|
|
ElaCentralStackedWidget* _centerStackedWidget{nullptr};
|
|
ElaCentralStackedWidget* _navigationCenterStackedWidget{nullptr};
|
|
ElaAppBar* _appBar{nullptr};
|
|
QHBoxLayout* _centerLayout{nullptr};
|
|
int _contentsMargins{5};
|
|
bool _isNavigationDisplayModeChanged{false};
|
|
bool _isNavigationEnable{true};
|
|
bool _isNavigationBarExpanded{false};
|
|
bool _isWMClickedAnimationFinished{true};
|
|
ElaThemeAnimationWidget* _animationWidget{nullptr};
|
|
|
|
ElaNavigationType::NavigationDisplayMode _currentNavigationBarDisplayMode{ElaNavigationType::Maximal};
|
|
|
|
QMap<QString, QWidget*> _routeMap; // key__nodeKey title可以一致 value__Page
|
|
int _centralStackTargetIndex{0};
|
|
int _navigationTargetIndex{0};
|
|
qreal _distance(QPoint point1, QPoint point2);
|
|
void _resetWindowLayout(bool isAnimation);
|
|
void _doNavigationDisplayModeChange();
|
|
};
|
|
|
|
#endif // ELAWINDOWPRIVATE_H
|