File: main.cpp

package info (click to toggle)
lomiri-printing-app 0.4.2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,384 kB
  • sloc: cpp: 1,892; xml: 127; makefile: 12
file content (113 lines) | stat: -rw-r--r-- 4,031 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
/*
  Copyright (C) 2024 UBports Foundation.

  This program is free software: you can redistribute it and/or modify
  it under the terms of the GNU General Public License 3 as published by
  the Free Software Foundation.

  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  GNU General Public License for more details.

  You should have received a copy of the GNU General Public License
  along with this program. If not, see http://www.gnu.org/licenses/.
*/

#include <QGuiApplication>
#include <QLibrary>
#include <QQmlApplicationEngine>
#include <QQuickView>
#include <QStandardPaths>
#include <QQuickWindow>

#include <libintl.h>

#include "config.hpp"

int main (int argc, char *argv[])
{
    qputenv ("QT_PRINTER_MODULE", "cupsprintersupport");

    QGuiApplication app (argc, argv);
    app.setOrganizationName (QStringLiteral ("UBports"));
    app.setApplicationName (QStringLiteral ("lomiri-printing-app"));
    // app.setApplicationVersion (AppVersion());

    std::string domainName = localeDomain().toStdString();
    std::string domainDir = localeDirectory().toStdString();

    textdomain (domainName.c_str());
    bindtextdomain (domainName.c_str(), domainDir.c_str());
    bind_textdomain_codeset (domainName.c_str(), "UTF-8");

    QQuickView view;

    QObject::connect ((QObject*) view.engine(), SIGNAL (quit()), &app, SLOT (quit()));

    // Set up import paths
    QStringList importPathList = view.engine()->importPathList();
    importPathList.prepend (qmlDirectory());

    QStringList args = app.arguments();
    if (args.contains("-h") || args.contains("--help")) {
        qDebug() << "usage: " + args.at(0) + " [-h|--help] [-I <path>] [-q <qmlfile>]";
        qDebug() << "    -h|--help     Print this help.";
        qDebug() << "    -I <path>     Give a path for an additional QML import directory. May be used multiple times.";
        qDebug() << "    -q <qmlfile>  Give an alternative location for the main qml file.";
        return 0;
    }

    QString qmlfile;
    for (int i = 0; i < args.count(); i++) {
        if (args.at (i) == "-I" && args.count() > i + 1) {
            QString addedPath = args.at (i+1);
            if (addedPath.startsWith ('.')) {
                addedPath = addedPath.right (addedPath.length() - 1);
                addedPath.prepend (QDir::currentPath());
            }
            importPathList.append (addedPath);
        } else if (args.at (i) == "-q" && args.count() > i + 1) {
            qmlfile = args.at (i+1);
        }
    }

    if (args.contains (QLatin1String ("-testability")) || getenv ("QT_LOAD_TESTABILITY")) {
        QLibrary testLib (QLatin1String ("qttestability"));
        if (testLib.load()) {
            typedef void (*TasInitialize)(void);
            TasInitialize initFunction = (TasInitialize) testLib.resolve("qt_testability_init");
            if (initFunction) {
                initFunction();
            } else {
                qCritical("Library qttestability resolve failed!");
            }
        } else {
            qCritical("Library qttestability load failed!");
        }
    }

    view.engine()->setImportPathList (importPathList);

    // load the qml file
    if (qmlfile.isEmpty()) {
        QStringList paths = QStandardPaths::standardLocations (QStandardPaths::DataLocation);
        paths.prepend (QDir::currentPath());
        paths.prepend (QCoreApplication::applicationDirPath());
        paths.prepend (qmlDirectory());

        foreach (const QString &path, paths) {
            QFileInfo fi (path + "/Main.qml");
            qDebug() << "Trying to load QML from:" << fi.filePath();
            if (fi.exists()) {
                qmlfile = fi.filePath();
                break;
            }
        }
    }
    qDebug() << "using main qml file from:" << qmlfile;
    view.setSource (QUrl::fromLocalFile (qmlfile));
    view.show();
    return app.exec();

}