File indexing completed on 2024-04-21 04:49:07
0001 /* 0002 * SPDX-FileCopyrightText: 2020 George Florea Bănuș <georgefb899@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-3.0-or-later 0005 */ 0006 0007 #include "application.h" 0008 #include "generalsettings.h" 0009 #include "kdsingleapplication.h" 0010 #include "qqmlpropertymap.h" 0011 #include "thumbnailimageprovider.h" 0012 0013 #include <QCommandLineParser> 0014 #include <QIcon> 0015 #include <QQmlApplicationEngine> 0016 #include <QQmlContext> 0017 #include <QQmlEngine> 0018 #include <QQuickStyle> 0019 0020 #include <KLocalizedString> 0021 0022 int main(int argc, char *argv[]) 0023 { 0024 qSetMessagePattern(QStringLiteral("%{function}() : %{message}\n")); 0025 0026 QApplication::setOrganizationName(QStringLiteral("KDE")); 0027 QApplication::setApplicationName(QStringLiteral("Haruna")); 0028 QApplication::setOrganizationDomain(QStringLiteral("kde.org")); 0029 QApplication::setApplicationDisplayName(QStringLiteral("Haruna - Media Player")); 0030 QApplication::setApplicationVersion(Application::version()); 0031 0032 QQuickStyle::setStyle(QStringLiteral("org.kde.desktop")); 0033 QQuickStyle::setFallbackStyle(QStringLiteral("Fusion")); 0034 if (GeneralSettings::useBreezeIconTheme()) { 0035 QIcon::setThemeName(QStringLiteral("breeze")); 0036 } 0037 0038 QApplication qApplication(argc, argv); 0039 QApplication::setWindowIcon(QIcon::fromTheme(QStringLiteral("haruna"))); 0040 KLocalizedString::setApplicationDomain("haruna"); 0041 0042 auto application = Application::instance(); 0043 0044 KDSingleApplication kdsApp; 0045 if (kdsApp.isPrimaryInstance()) { 0046 QObject::connect(&kdsApp, &KDSingleApplication::messageReceived, [=](const QByteArray &message) { 0047 application->handleSecondayInstanceMessage(message); 0048 }); 0049 } else { 0050 if (GeneralSettings::self()->useSingleInstance()) { 0051 QCommandLineParser clParser; 0052 clParser.process(qApplication); 0053 if (clParser.positionalArguments().size() > 0) { 0054 QString file = clParser.positionalArguments().first(); 0055 kdsApp.sendMessage(file.toUtf8()); 0056 } 0057 exit(EXIT_SUCCESS); 0058 } 0059 } 0060 0061 QQmlApplicationEngine engine(&qApplication); 0062 const QUrl url(QStringLiteral("qrc:/qt/qml/org/kde/haruna/qml/main.qml")); 0063 auto onObjectCreated = [url](const QObject *obj, const QUrl &objUrl) { 0064 if (!obj && url == objUrl) { 0065 QCoreApplication::exit(-1); 0066 } 0067 }; 0068 QObject::connect(&engine, &QQmlApplicationEngine::objectCreated, &qApplication, onObjectCreated, Qt::QueuedConnection); 0069 engine.addImageProvider(QStringLiteral("thumbnail"), new ThumbnailImageProvider()); 0070 engine.rootContext()->setContextProperty(QStringLiteral("app"), Application::instance()); 0071 engine.rootContext()->setContextProperty(QStringLiteral("appActions"), new QQmlPropertyMap); 0072 engine.rootContext()->setContextObject(new KLocalizedContext(Application::instance())); 0073 engine.rootContext()->setContextProperty(QStringLiteral("harunaAboutData"), QVariant::fromValue(KAboutData::applicationData())); 0074 engine.load(url); 0075 0076 application->setQmlEngine(&engine); 0077 0078 return qApplication.exec(); 0079 }