mirror of
https://github.com/logos-co/logos-tutorial.git
synced 2026-08-31 12:51:14 +00:00
43 lines
1.3 KiB
C++
43 lines
1.3 KiB
C++
#include "calc_ui_cpp_plugin.h"
|
|||
|
|
#include "calc_backend.h"
|
||
|
|
#include "logos_api.h"
|
||
|
|
#include <QDebug>
|
||
|
|
#include <QQuickWidget>
|
||
|
|
#include <QQmlContext>
|
||
|
|
#include <QDir>
|
||
|
|
#include <QUrl>
|
||
|
|
|
||
|
|
CalcUiCppPlugin::CalcUiCppPlugin(QObject* parent) : QObject(parent) {}
|
||
|
|
CalcUiCppPlugin::~CalcUiCppPlugin() {}
|
||
|
|
|
||
|
|
QWidget* CalcUiCppPlugin::createWidget(LogosAPI* logosAPI)
|
||
|
|
{
|
||
|
|
auto* backend = new CalcBackend(logosAPI);
|
||
|
|
|
||
|
|
auto* quickWidget = new QQuickWidget();
|
||
|
|
quickWidget->setResizeMode(QQuickWidget::SizeRootObjectToView);
|
||
|
|
quickWidget->rootContext()->setContextProperty("backend", backend);
|
||
|
|
|
||
|
|
// Dev mode: set QML_PATH to the directory containing Main.qml to load
|
||
|
|
// from the filesystem without rebuilding. Example: export QML_PATH=$PWD/src/qml
|
||
|
|
QString devSource = qgetenv("QML_PATH");
|
||
|
|
QUrl qmlUrl = devSource.isEmpty()
|
||
|
|
? QUrl("qrc:/src/qml/Main.qml")
|
||
|
|
: QUrl::fromLocalFile(QDir(devSource).filePath("Main.qml"));
|
||
|
|
|
||
|
|
quickWidget->setSource(qmlUrl);
|
||
|
|
|
||
|
|
if (quickWidget->status() == QQuickWidget::Error) {
|
||
|
|
qWarning() << "CalcUiCppPlugin: failed to load QML";
|
||
|
|
for (const auto& e : quickWidget->errors())
|
||
|
|
qWarning() << e.toString();
|
||
|
|
}
|
||
|
|
|
||
|
|
return quickWidget;
|
||
|
|
}
|
||
|
|
|
||
|
|
void CalcUiCppPlugin::destroyWidget(QWidget* widget)
|
||
|
|
{
|
||
|
|
delete widget;
|
||
|
|
}
|