File indexing completed on 2023-12-03 07:52:32

0001 /*
0002     SPDX-FileCopyrightText: 2009 Mathias Kraus <k.hias@gmx.de>
0003     SPDX-FileCopyrightText: 2007-2008 Thomas Gallinari <tg8187@yahoo.fr>
0004 
0005     SPDX-License-Identifier: GPL-2.0-or-later
0006 */
0007 
0008 #include "mainwindow.h"
0009 
0010 #include "granatier_version.h"
0011 
0012 #include <KAboutData>
0013 #include <KCrash>
0014 
0015 #include <QApplication>
0016 #include <KLocalizedString>
0017 #include <QCommandLineParser>
0018 #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
0019 #include <Kdelibs4ConfigMigrator>
0020 #include <Kdelibs4Migration>
0021 #endif
0022 #include <QStandardPaths>
0023 #include <QDir>
0024 #include <KDBusService>
0025 #include <KSharedConfig>
0026 
0027 int main(int argc, char** argv)
0028 {
0029     // Fixes blurry icons with fractional scaling
0030 #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
0031     QGuiApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);
0032 #endif
0033     QApplication app(argc, argv);
0034 #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
0035 
0036     Kdelibs4ConfigMigrator migrate(QStringLiteral("granatier"));
0037     migrate.setConfigFiles(QStringList() << QStringLiteral("granatierrc"));
0038     migrate.setUiFiles(QStringList() << QStringLiteral("granatierui.rc"));
0039     if(migrate.migrate())
0040     {
0041         // migrate old data
0042         Kdelibs4Migration dataMigrator;
0043         const QString sourceBasePath = dataMigrator.saveLocation("data", QStringLiteral("granatier"));
0044         const QString targetBasePath = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation) + QLatin1Char('/');
0045         QString targetFilePath;
0046 
0047         QStringList dataDirs;
0048         dataDirs.append(QStringLiteral("arenas"));
0049         dataDirs.append(QStringLiteral("players"));
0050         dataDirs.append(QStringLiteral("themes"));
0051 
0052         // migrate arenas, players and themes
0053         for(const auto& dataDir: dataDirs)
0054         {
0055             QDir sourceDir(sourceBasePath + dataDir);
0056             if(!sourceDir.exists()) continue;
0057             const QStringList fileNames = sourceDir.entryList(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot | QDir::NoSymLinks);
0058             QDir().mkpath(targetBasePath + dataDir);
0059             for(const auto& fileName: fileNames)
0060             {
0061                 targetFilePath = targetBasePath + dataDir + QLatin1Char('/') + fileName;
0062                 if(!QFile::exists(targetFilePath))
0063                 {
0064                     QFile::copy(sourceBasePath + dataDir + QLatin1Char('/') + fileName, targetFilePath);
0065                 }
0066             }
0067         }
0068 
0069         // update the configuration cache
0070         KSharedConfig::openConfig()->reparseConfiguration();
0071     }
0072 #endif
0073     app.setWindowIcon(QIcon::fromTheme(QStringLiteral("granatier")));
0074     KLocalizedString::setApplicationDomain("granatier");
0075 
0076     // About Granatier
0077     KAboutData about(QStringLiteral("granatier"),  i18n("Granatier"),
0078         QStringLiteral(GRANATIER_VERSION_STRING),
0079         i18n("Granatier is a Bomberman Clone!"),
0080         KAboutLicense::GPL, i18n("Copyright (c) 2009-2015 The Granatier Team!"),
0081         QString(),
0082         QStringLiteral("https://apps.kde.org//granatier")
0083     );
0084     about.addAuthor(i18n("Mathias Kraus"), i18n("Maintainer"), QStringLiteral("k.hias@gmx.de"));
0085     about.addCredit(i18n("Arturo Silva"), i18n("Most of the beautiful granatier graphics"));
0086     about.addCredit(i18n("Thomas Gallinari"), i18n("Developer of Kapman, which was the base of Granatier"), QStringLiteral("tg8187@yahoo.fr"));
0087     about.addCredit(i18n("Pierre-Benoit Besse"), i18n("Developer of Kapman, which was the base of Granatier"), QStringLiteral("besse.pb@gmail.com"));
0088     about.addCredit(i18n("Romain Castan"), i18n("Developer of Kapman, which was the base of Granatier"), QStringLiteral("romaincastan@gmail.com"));
0089     about.addCredit(i18n("Alexandre Galinier"), i18n("Developer of Kapman, which was the base of Granatier"), QStringLiteral("alex.galinier@gmail.com"));
0090     about.addCredit(i18n("Nathalie Liesse"), i18n("Developer of Kapman, which was the base of Granatier"), QStringLiteral("nathalie.liesse@gmail.com"));
0091     // Command line arguments
0092     QCommandLineParser parser;
0093     KAboutData::setApplicationData(about);
0094     KCrash::initialize();
0095     about.setupCommandLine(&parser);
0096     parser.process(app);
0097     about.processCommandLine(&parser);
0098     KDBusService service;
0099     // Create the application
0100     // Create the main window
0101     auto* window = new MainWindow();
0102     // Show the main window
0103     window->show();
0104     // Execute the application
0105     return app.exec();
0106 }
0107