File indexing completed on 2026-07-19 16:00:57

0001 /*
0002     SPDX-FileCopyrightText: 2004 Lubos Lunak <l.lunak@kde.org>
0003     SPDX-FileCopyrightText: 2018 Nicolas Fella <nicolas.fella@gmx.de>
0004     SPDX-FileCopyrightText: 2020 Ismael Asensio <isma.af@gmail.com>
0005 
0006     SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0007 */
0008 
0009 #include <QApplication>
0010 #include <QCommandLineParser>
0011 #include <QIcon>
0012 #include <QUuid>
0013 
0014 #include <KCMultiDialog>
0015 #include <KLocalizedString>
0016 #include <KPluginMetaData>
0017 
0018 int main(int argc, char *argv[])
0019 {
0020     QApplication app(argc, argv);
0021 
0022     KLocalizedString::setApplicationDomain("kcm_kwinrules");
0023 
0024     app.setAttribute(Qt::AA_UseHighDpiPixmaps, true);
0025     app.setApplicationName("kwin_rules_dialog");
0026     app.setWindowIcon(QIcon::fromTheme("preferences-system-windows-actions"));
0027     app.setApplicationVersion("2.0");
0028     app.setDesktopFileName(QStringLiteral("org.kde.kwin_rules_dialog"));
0029 
0030     QCommandLineParser parser;
0031     parser.setApplicationDescription(i18n("KWinRules KCM launcher"));
0032     parser.addOption(QCommandLineOption("uuid", i18n("KWin id of the window for special window settings."), "uuid"));
0033     parser.addOption(QCommandLineOption("whole-app", i18n("Whether the settings should affect all windows of the application.")));
0034     parser.process(app);
0035 
0036     const QUuid uuid = QUuid::fromString(parser.value("uuid"));
0037     const bool whole_app = parser.isSet("whole-app");
0038 
0039     if (uuid.isNull()) {
0040         printf("%s\n", qPrintable(i18n("This helper utility is not supposed to be called directly.")));
0041         return 1;
0042     }
0043 
0044     app.setApplicationDisplayName((whole_app) ? i18nc("Window caption for the application wide rules dialog", "Edit Application-Specific Settings")
0045                                               : i18n("Edit Window-Specific Settings"));
0046 
0047     QStringList kcm_args;
0048     kcm_args << QStringLiteral("uuid=%1").arg(uuid.toString());
0049     if (whole_app) {
0050         kcm_args << QStringLiteral("whole-app");
0051     }
0052 
0053     KPluginMetaData pluginData = KPluginMetaData(QStringLiteral(KCMRULES_PLUGIN));
0054 
0055     KCMultiDialog *dialog = new KCMultiDialog;
0056     dialog->addModule(pluginData, kcm_args);
0057     dialog->setAttribute(Qt::WA_DeleteOnClose);
0058     dialog->show();
0059 
0060     app.setQuitOnLastWindowClosed(true);
0061 
0062     return app.exec();
0063 }