2023-02-26 23:47:07 +08:00
|
|
|
|
#include "FluApp.h"
|
|
|
|
|
|
|
|
|
|
#include <QQmlEngine>
|
|
|
|
|
#include <QGuiApplication>
|
|
|
|
|
#include <QQmlContext>
|
2023-02-27 18:46:39 +08:00
|
|
|
|
#include <QQuickItem>
|
2023-02-27 23:04:52 +08:00
|
|
|
|
#include <QTimer>
|
2023-02-26 23:47:07 +08:00
|
|
|
|
#include "FramelessView.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FluApp* FluApp::m_instance = nullptr;
|
|
|
|
|
|
|
|
|
|
FluApp *FluApp::getInstance()
|
|
|
|
|
{
|
|
|
|
|
if(FluApp::m_instance == nullptr){
|
|
|
|
|
FluApp::m_instance = new FluApp;
|
|
|
|
|
}
|
|
|
|
|
return FluApp::m_instance;
|
|
|
|
|
}
|
|
|
|
|
|
2023-02-27 18:46:39 +08:00
|
|
|
|
FluApp::FluApp(QObject *parent)
|
|
|
|
|
: QObject{parent}
|
|
|
|
|
{
|
|
|
|
|
isDark(true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2023-02-26 23:47:07 +08:00
|
|
|
|
|
|
|
|
|
void FluApp::setAppWindow(QWindow *window){
|
|
|
|
|
appWindow = window;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void FluApp::run(){
|
2023-02-27 23:04:52 +08:00
|
|
|
|
navigate(initialRoute());
|
2023-02-26 23:47:07 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void FluApp::navigate(const QString& route){
|
|
|
|
|
if(!routes().contains(route)){
|
|
|
|
|
qErrnoWarning("没有找到当前路由");
|
|
|
|
|
return;
|
|
|
|
|
}
|
2023-02-27 23:04:52 +08:00
|
|
|
|
bool isAppWindow = route==initialRoute();
|
2023-02-26 23:47:07 +08:00
|
|
|
|
FramelessView *view = new FramelessView();
|
2023-02-27 18:46:39 +08:00
|
|
|
|
view->setColor(isDark() ? QColor(0,0,0,1) : QColor(255, 255, 255, 1));
|
2023-02-27 23:04:52 +08:00
|
|
|
|
QObject::connect(view, &QQuickView::statusChanged, view, [&](QQuickView::Status status) {
|
|
|
|
|
if (status == QQuickView::Status::Ready) {
|
|
|
|
|
Q_EMIT windowReady(view);
|
|
|
|
|
}
|
|
|
|
|
});
|
2023-02-26 23:47:07 +08:00
|
|
|
|
view->setSource((routes().value(route).toString()));
|
2023-02-27 23:04:52 +08:00
|
|
|
|
if(isAppWindow){
|
|
|
|
|
QObject::connect(view->engine(), &QQmlEngine::quit, qApp, &QCoreApplication::quit);
|
|
|
|
|
QObject::connect(qApp, &QGuiApplication::aboutToQuit, qApp, [&view](){view->setSource({});});
|
|
|
|
|
}else{
|
|
|
|
|
view->closeDeleteLater();
|
|
|
|
|
}
|
2023-02-26 23:47:07 +08:00
|
|
|
|
view->moveToScreenCenter();
|
|
|
|
|
view->show();
|
|
|
|
|
}
|
2023-02-27 18:46:39 +08:00
|
|
|
|
|
2023-02-27 23:04:52 +08:00
|
|
|
|
bool FluApp::equalsWindow(FramelessView *view,QWindow *window){
|
|
|
|
|
return view->winId() == window->winId();
|
2023-02-27 18:46:39 +08:00
|
|
|
|
}
|