Onboarding Tutorial
#include <QGuiApplication>
#include <QDir>
#include <QQmlApplicationEngine>
#include <QQmlContext>
#include <QQuickStyle>
#include <QUrl>
#include <utility>
#include <KLocalizedContext>
#include <KLocalizedQmlContext>
#include <KLocalizedString>
static QStringList takeImportPathEnvironmentVariable(const char *name)
{
const QByteArray value = qgetenv(name);
if (value.isEmpty()) {
return {};
}
const QStringList paths = QString::fromLocal8Bit(value).split(QDir::listSeparator(), Qt::KeepEmptyParts);
QStringList normalizedPaths;
normalizedPaths.reserve(paths.size());
for (const QString &path : paths) {
if (path.isEmpty() || QDir::isAbsolutePath(path)) {
normalizedPaths.append(path);
} else {
normalizedPaths.append(QDir::current().absoluteFilePath(path));
}
}
qunsetenv(name);
return normalizedPaths;
}
int main(int argc, char *argv[])
{
QStringList importPaths = takeImportPathEnvironmentVariable("QML_IMPORT_PATH");
importPaths += takeImportPathEnvironmentVariable("QML2_IMPORT_PATH");
QGuiApplication app(argc, argv);
KLocalizedString::setApplicationDomain("kirigami-addons6");
QQuickStyle::setStyle(QStringLiteral("org.kde.desktop"));
QQmlApplicationEngine engine;
const QDir applicationDir(QCoreApplication::applicationDirPath());
const QString buildImportPath = applicationDir.absoluteFilePath(QStringLiteral("../../bin"));
if (QDir(buildImportPath).exists()) {
importPaths.prepend(buildImportPath);
}
importPaths.removeDuplicates();
for (auto it = importPaths.crbegin(); it != importPaths.crend(); ++it) {
if (!it->isEmpty()) {
engine.addImportPath(*it);
}
}
KLocalization::setupLocalizedContext(&engine);
QObject::connect(
&engine,
&QQmlApplicationEngine::objectCreationFailed,
&app,
[]() {
QCoreApplication::exit(-1);
},
Qt::QueuedConnection);
engine.load(QUrl(QStringLiteral("qrc:/qt/qml/org/kde/kirigamiaddons/examples/onboardingtutorial/Main.qml")));
return QGuiApplication::exec();
}