split project with app & doric module

This commit is contained in:
王劲鹏
2021-04-29 20:12:49 +08:00
committed by osborn
parent 25db4cc194
commit a5e00e4fa5
154 changed files with 795 additions and 293 deletions

View File

@@ -0,0 +1,90 @@
#include <QDebug>
#include <QQmlContext>
#include <QQuickView>
#include "DoricDemoBridge.h"
#include "DoricPanel.h"
#include "utils/DoricDialogBridge.h"
#include "utils/DoricImageBridge.h"
#include "utils/DoricMouseAreaBridge.h"
#include "utils/DoricUtils.h"
DoricDemoBridge::DoricDemoBridge(QObject *parent) : QObject(parent) {}
void DoricDemoBridge::navigate(QVariant route) {
QString name;
switch (route.toInt()) {
case 0:
name = "Counter.js";
break;
case 1:
name = "EffectsDemo.js";
break;
case 2:
name = "Gobang.js";
break;
case 3:
name = "ImageDemo.js";
break;
case 4:
name = "LayoutDemo.js";
break;
case 5:
name = "ModalDemo.js";
break;
case 6:
name = "NetworkDemo.js";
break;
case 7:
name = "PopoverDemo.js";
break;
case 8:
name = "SimpleDemo.js";
break;
case 9:
name = "Snake.js";
break;
}
QString script = DoricUtils::readAssetFile("/doric/bundles", name);
QQuickView *view = new QQuickView();
{
const QUrl url(QStringLiteral("qrc:/doric/qml/view.qml"));
view->setSource(url);
view->setWidth(600);
view->setHeight(800);
Qt::WindowFlags flag = Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint |
Qt::WindowTitleHint | Qt::WindowCloseButtonHint |
Qt::CustomizeWindowHint | Qt::WindowSystemMenuHint;
view->setFlags(flag);
}
{
QQmlComponent component(view->engine());
const QUrl url(QStringLiteral("qrc:/doric/qml/panel.qml"));
component.loadUrl(url);
QQuickItem *quickItem = qobject_cast<QQuickItem *>(component.create());
DoricPanel *panel = new DoricPanel(view->engine(), quickItem);
quickItem->setWidth(600);
quickItem->setHeight(800);
quickItem->setParentItem(view->rootObject());
panel->config(script, name, NULL);
connect(view, &QQuickView::visibleChanged, this, [view, panel]() {
if (!view->isVisible()) {
delete panel;
}
});
}
view->show();
auto context = view->engine()->rootContext();
DoricMouseAreaBridge *mouseAreaBridge = new DoricMouseAreaBridge();
context->setContextProperty("mouseAreaBridge", mouseAreaBridge);
DoricDialogBridge *dialogBridge = new DoricDialogBridge();
context->setContextProperty("dialogBridge", dialogBridge);
DoricImageBridge *imageBridge = new DoricImageBridge();
context->setContextProperty("imageBridge", imageBridge);
}

View File

@@ -0,0 +1,17 @@
#ifndef DEMOBRIDGE_H
#define DEMOBRIDGE_H
#include <QObject>
#include <QVariant>
class DoricDemoBridge : public QObject {
Q_OBJECT
public:
explicit DoricDemoBridge(QObject *parent = nullptr);
Q_INVOKABLE
void navigate(QVariant route);
signals:
};
#endif // DEMOBRIDGE_H