File indexing completed on 2024-05-05 04:02:50

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(QByteArrayLiteral("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     KAboutData::setApplicationData(aboutData);
0049     QApplication::setWindowIcon(QIcon::fromTheme(QStringLiteral("kigo")));
0050 
0051     KCrash::initialize();
0052 
0053     QCommandLineParser parser;
0054     parser.addOption(QCommandLineOption(QStringList() << QStringLiteral("game"), i18nc("@info:shell", "Game to load (SGF file)"), i18nc("@info:shell", "gamefile")));
0055     parser.addPositionalArgument(i18nc("@info:shell", "[gamefile]"), i18nc("@info:shell", "Game to load (SGF file)"));
0056     aboutData.setupCommandLine(&parser);
0057     parser.process(app);
0058     aboutData.processCommandLine(&parser);
0059 
0060     KDBusService service;
0061 
0062     if (app.isSessionRestored()) {
0063         kRestoreMainWindows<Kigo::MainWindow>();
0064     } else {
0065 
0066         QString game;
0067         if (parser.isSet(QStringLiteral("game"))) {
0068             game = parser.value(QStringLiteral("game"));
0069         }
0070         if (parser.positionalArguments().count() == 1) {
0071             game = parser.positionalArguments().at(0);
0072         }
0073 
0074         auto mainWin = new Kigo::MainWindow(game, nullptr);
0075 
0076         mainWin->show();
0077     }
0078     return app.exec();
0079 }