File indexing completed on 2024-05-12 07:58:55

0001 /*
0002     SPDX-FileCopyrightText: 2008 Sascha Peilicke <sasch.pe@gmx.de>
0003 
0004     SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0005 */
0006 
0007 #include "gui/mainwindow.h"
0008 
0009 #include "kigo_version.h"
0010 
0011 #include <KAboutData>
0012 #include <KCrash>
0013 
0014 #include <QApplication>
0015 #include <KLocalizedString>
0016 #include <QCommandLineParser>
0017 #include <KDBusService>
0018 
0019 /**
0020  * This namespace collects all classes related to Kigo, the Go board game.
0021  */
0022 namespace Kigo { /* This is only a Doxygen stub */ }
0023 
0024 /**
0025  * The standard C/C++ program entry point. Application 'about' data
0026  * is created here and command line options are configured and checked
0027  * if the user invokes the application. If everything is set up, the
0028  * method displays the main window and jumps into the Qt event loop.
0029  */
0030 int main(int argc, char *argv[])
0031 {
0032     QApplication app(argc, argv);
0033 
0034     KLocalizedString::setApplicationDomain("kigo");
0035 
0036     KAboutData aboutData(QStringLiteral("kigo"), i18n("Kigo"), QStringLiteral(KIGO_VERSION_STRING),
0037             i18n("KDE Go Board Game"), KAboutLicense::GPL_V2,
0038             i18n("Copyright (c) 2008-2010 Sascha Peilicke"));
0039     aboutData.addAuthor(i18n("Sascha Peilicke (saschpe)"), i18n("Original author"),
0040                         QStringLiteral("sasch.pe@gmx.de"), QStringLiteral("https://saschpe.wordpress.com"));
0041     aboutData.addCredit(i18n("Yuri Chornoivan"), i18n("Documentation editor"),
0042                         QStringLiteral("yurchor@ukr.net"));
0043     aboutData.addCredit(i18n("Arturo Silva"), i18n("Default theme designer"),
0044                         QStringLiteral("jasilva28@gmail.com"));
0045     aboutData.setHomepage(QStringLiteral("https://apps.kde.org/kigo"));
0046     aboutData.setDesktopFileName(QStringLiteral("org.kde.kigo"));
0047 
0048     QCommandLineParser parser;
0049     KAboutData::setApplicationData(aboutData);
0050     KCrash::initialize();
0051     parser.addOption(QCommandLineOption(QStringList() << QStringLiteral("game"), i18nc("@info:shell", "Game to load (SGF file)"), i18nc("@info:shell", "gamefile")));
0052     parser.addPositionalArgument(i18nc("@info:shell", "[gamefile]"), i18nc("@info:shell", "Game to load (SGF file)"));
0053 
0054     aboutData.setupCommandLine(&parser);
0055     parser.process(app);
0056     aboutData.processCommandLine(&parser);
0057     KDBusService service;
0058 
0059     app.setWindowIcon(QIcon::fromTheme(QStringLiteral("kigo")));
0060 
0061     if (app.isSessionRestored()) {
0062         kRestoreMainWindows<Kigo::MainWindow>();
0063     } else {
0064 
0065         QString game;
0066         if (parser.isSet(QStringLiteral("game"))) {
0067             game = parser.value(QStringLiteral("game"));
0068         }
0069         if (parser.positionalArguments().count() == 1) {
0070             game = parser.positionalArguments().at(0);
0071         }
0072 
0073         auto mainWin = new Kigo::MainWindow(game, nullptr);
0074 
0075         mainWin->show();
0076     }
0077     return app.exec();
0078 }