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