KNewStuff

main.cpp
1/*
2 This file is part of KNewStuff2.
3 SPDX-FileCopyrightText: 2019 Dan Leinir Turthra Jensen <admin@leinir.dk>
4
5 SPDX-License-Identifier: LGPL-2.1-or-later
6*/
7
8#include "knsrcmodel.h"
9#include <KLocalizedQmlContext>
10
11#include <KLocalizedString>
12
13#include <QApplication>
14#include <QCommandLineOption>
15#include <QCommandLineParser>
16#include <QQmlApplicationEngine>
17#include <QQmlContext>
18
19int main(int argc, char **argv)
20{
21 QApplication app(argc, argv);
22 QCoreApplication::setApplicationName(QStringLiteral("knewstuff-dialog"));
23 QCoreApplication::setApplicationVersion(QStringLiteral("1.0"));
24 QCoreApplication::setOrganizationDomain(QStringLiteral("kde.org"));
26
28 parser->addHelpOption();
29 parser->addPositionalArgument(QStringLiteral("knsrcfile"),
30 i18n("The KNSRC file you want to show. If none is passed, you will be presented with a dialog which lets you switch between "
31 "all the config files installed into the systemwide knsrc file location"));
32 parser->addOption(
33 QCommandLineOption(QStringLiteral("url"),
34 i18n("A kns url to show information from. The format for a kns url is kns://knsrcfile/providerid/entryid\n'knsrcfile'\nis the name "
35 "of a knsrc file as might be passed directly through this tool's knsrcfile argument\n'providerid'\nis the hostname of the "
36 "provider the entry should exist on\n'entryid'\nis the unique ID of an entry found in the provider specified by the knsrc "
37 "file.\n An example of such a url is kns://sddmtheme.knsrc/api.kde-look.org/2059021"),
38 QStringLiteral("knsurl")));
39 parser->process(app);
40
42 qmlRegisterType<KNSRCModel>("org.kde.newstuff.tools.dialog", 1, 0, "KNSRCModel");
43 auto *context = new KLocalizedQmlContext(appengine);
44 context->setTranslationDomain(QStringLiteral("knewstuff6"));
45 appengine->rootContext()->setContextObject(context);
46
47 if (parser->optionNames().contains(QStringLiteral("url"))) {
48 const QUrl url(parser->value(QStringLiteral("url")));
49 Q_ASSERT(url.isValid());
50 Q_ASSERT(url.scheme() == QLatin1String("kns"));
51
52 const QString knsrcfile{url.host()};
53
54 const QStringList pathParts = url.path().split(QLatin1Char('/'), Qt::SkipEmptyParts);
55 const QString providerId = pathParts.at(0);
56 const QString entryId = pathParts.at(1);
57 if (pathParts.size() != 2) {
58 qWarning() << "wrong format in the url path" << url << pathParts;
59 }
60 Q_ASSERT(!providerId.isEmpty() && !entryId.isEmpty());
61
62 appengine->rootContext()->setContextProperty(QStringLiteral("knsrcfile"), knsrcfile);
63 appengine->rootContext()->setContextProperty(QStringLiteral("knsProviderId"), providerId);
64 appengine->rootContext()->setContextProperty(QStringLiteral("knsEntryId"), entryId);
65 appengine->load(QStringLiteral("qrc:/qml/dialog.qml"));
66 } else if (!parser->positionalArguments().isEmpty()) {
67 appengine->rootContext()->setContextProperty(QStringLiteral("knsrcfile"), parser->positionalArguments().first());
68 appengine->load(QStringLiteral("qrc:/qml/dialog.qml"));
69 } else {
70 appengine->load(QStringLiteral("qrc:/qml/main.qml"));
71 }
72
73 return app.exec();
74}
static void setApplicationDomain(const QByteArray &domain)
QString i18n(const char *text, const TYPE &arg...)
QCommandLineOption addHelpOption()
bool addOption(const QCommandLineOption &option)
void addPositionalArgument(const QString &name, const QString &description, const QString &syntax)
QStringList optionNames() const const
QStringList positionalArguments() const const
void process(const QCoreApplication &app)
QString value(const QCommandLineOption &option) const const
void setApplicationName(const QString &application)
void setApplicationVersion(const QString &version)
void setOrganizationDomain(const QString &orgDomain)
const_reference at(qsizetype i) const const
T & first()
bool isEmpty() const const
qsizetype size() const const
void load(const QString &filePath)
void setContextObject(QObject *object)
void setContextProperty(const QString &name, QObject *value)
QQmlContext * rootContext() const const
bool isEmpty() const const
bool contains(QLatin1StringView str, Qt::CaseSensitivity cs) const const
SkipEmptyParts
This file is part of the KDE documentation.
Documentation copyright © 1996-2024 The KDE developers.
Generated on Sat Dec 21 2024 17:02:29 by doxygen 1.12.0 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.