File indexing completed on 2024-04-28 07:51:16

0001 /*
0002     SPDX-FileCopyrightText: 1998 Andreas Wüst <AndreasWuest@gmx.de>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "toplevel.h"
0008 
0009 #include "levelset.h"
0010 #include "katomic_version.h"
0011 
0012 #include <KLocalizedString>
0013 #include <KAboutData>
0014 #include <KCrash>
0015 #include <KMessageBox>
0016 #include <KDBusService>
0017 
0018 #include <QTimer>
0019 #include <QCommandLineParser>
0020 #include <QCommandLineOption>
0021 #include <QApplication>
0022 
0023 // ##########################
0024 // #    Main                #
0025 // ##########################
0026 
0027 int main(int argc, char **argv)
0028 {
0029     QApplication app(argc, argv);
0030 
0031     KLocalizedString::setApplicationDomain("katomic");
0032     KAboutData aboutData( QStringLiteral("katomic"), i18n("KAtomic"),
0033             QStringLiteral(KATOMIC_VERSION_STRING),
0034             i18n("Atomic Entertainment Game"),
0035             KAboutLicense::GPL,
0036             i18n("(c) 1998, Andreas Wuest\n(c) 2007-2009 Dmitry Suzdalev"));
0037     aboutData.addAuthor(i18n("Andreas Wuest"), i18n("Original author"), QStringLiteral("AndreasWuest@gmx.de"));
0038     aboutData.addAuthor(i18n("Dmitry Suzdalev"), i18n("Porting to KDE4. Current maintainer"), QStringLiteral("dimsuz@gmail.com"));
0039     aboutData.addAuthor(i18n("Stephan Kulow"), QString(), QStringLiteral("coolo@kde.org"));
0040     aboutData.addAuthor(i18n("Cristian Tibirna"), QString(), QStringLiteral("tibirna@kde.org"));
0041     aboutData.addCredit(i18n("Carsten Pfeiffer"), QString(), QStringLiteral("pfeiffer@kde.org"));
0042     aboutData.addCredit(i18n("Dave Corrie"), QString(), QStringLiteral("kde@davecorrie.com"));
0043     aboutData.addCredit(i18n("Kai Jung"), i18n("6 new levels"), QStringLiteral("jung@fh-fresenius.de"));
0044     aboutData.addCredit(i18n("Danny Allen"), i18n("Game graphics and application icon"), QStringLiteral("danny@dannyallen.co.uk"));
0045     aboutData.addCredit(i18n("Johann Ollivier Lapeyre"), i18n("New great SVG artwork for KDE4"), QStringLiteral("johann.ollivierlapeyre@gmail.com"));
0046     aboutData.addCredit(i18n("Brian Croom"), i18n("Port to use KGameRenderer"), QStringLiteral("brian.s.croom@gmail.com"));
0047     aboutData.setHomepage(QStringLiteral("https://apps.kde.org/katomic"));
0048 
0049     QCommandLineParser parser;
0050     KAboutData::setApplicationData(aboutData);
0051     KCrash::initialize();
0052     parser.addOption(QCommandLineOption({QStringLiteral("hackmode")}, i18n( "Enable access to all levels" )));
0053 
0054     aboutData.setupCommandLine(&parser);
0055     parser.process(app);
0056     aboutData.processCommandLine(&parser);
0057 
0058     app.setWindowIcon(QIcon::fromTheme(QStringLiteral("katomic")));
0059 
0060     KDBusService service;
0061     if (!LevelSet::isDefaultLevelsAvailable())
0062     {
0063         KMessageBox::error(nullptr, i18n("KAtomic failed to find its default level set and will quit. Please check your installation."));
0064         QTimer::singleShot(0, &app, &QApplication::quit);
0065     }
0066     else
0067     {
0068         if ( app.isSessionRestored() )
0069             kRestoreMainWindows<AtomTopLevel>();
0070         else {
0071             AtomTopLevel *top = new AtomTopLevel;
0072             if ( parser.isSet( QStringLiteral("hackmode") ) )
0073                 top->enableHackMode();
0074 
0075             top->show();
0076         }
0077     }
0078 
0079     return app.exec();
0080 }
0081