added PageLoader and pageController

This commit is contained in:
vladimir.kuznetsov 2023-05-15 13:38:17 +08:00
parent 116fa6777b
commit 03a0e2084a
27 changed files with 265 additions and 193 deletions

View file

@ -0,0 +1,25 @@
#include "pageController.h"
PageController::PageController(const QSharedPointer<ServersModel> &serversModel,
QObject *parent) : QObject(parent), m_serversModel(serversModel)
{
}
void PageController::setStartPage()
{
if (m_serversModel->getServersCount()) {
if (m_serversModel->getDefaultServerIndex() < 0) {
m_serversModel->setDefaultServerIndex(0);
}
emit goToPage(PageLoader::PageEnum::PageStart, false);
} else {
emit goToPage(PageLoader::PageEnum::PageSetupWizardStart, false);
}
}
QString PageController::getPagePath(PageLoader::PageEnum page)
{
QMetaEnum metaEnum = QMetaEnum::fromType<PageLoader::PageEnum>();
QString pageName = metaEnum.valueToKey(static_cast<int>(page));
return "Pages2/" + pageName + ".qml";
}

View file

@ -0,0 +1,50 @@
#ifndef PAGECONTROLLER_H
#define PAGECONTROLLER_H
#include <QObject>
#include <QQmlEngine>
#include "ui/models/servers_model.h"
namespace PageLoader
{
Q_NAMESPACE
enum class PageEnum { PageStart = 0, PageHome, PageSettings, PageShare,
PageSetupWizardStart, PageTest, PageSetupWizardCredentials, PageSetupWizardProtocols, PageSetupWizardEasy,
PageSetupWizardProtocolSettings, PageSetupWizardInstalling, PageSetupWizardConfigSource,
PageSetupWizardTextKey
};
Q_ENUM_NS(PageEnum)
static void declareQmlPageEnum() {
qmlRegisterUncreatableMetaObject(
PageLoader::staticMetaObject,
"PageEnum",
1, 0,
"PageEnum",
"Error: only enums"
);
}
}
class PageController : public QObject
{
Q_OBJECT
public:
explicit PageController(const QSharedPointer<ServersModel> &serversModel,
QObject *parent = nullptr);
public slots:
void setStartPage();
QString getPagePath(PageLoader::PageEnum page);
signals:
void goToPage(PageLoader::PageEnum page, bool slide = true);
void closePage();
private:
QSharedPointer<ServersModel> m_serversModel;
};
#endif // PAGECONTROLLER_H