File indexing completed on 2024-05-12 17:07:07
0001 /* 0002 SPDX-FileCopyrightText: 2012-2016 Ivan Cukic <ivan.cukic@kde.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0005 */ 0006 0007 #include "SwitchingTab.h" 0008 #include "kactivitymanagerd_settings.h" 0009 0010 #include <KActionCollection> 0011 #include <KConfigGroup> 0012 #include <KGlobalAccel> 0013 #include <KSharedConfig> 0014 0015 #include "ui_SwitchingTabBase.h" 0016 0017 #include <KActivities/Consumer> 0018 #include <utils/d_ptr_implementation.h> 0019 0020 class SwitchingTab::Private : public Ui::SwitchingTabBase 0021 { 0022 public: 0023 KActivityManagerdSettings *mainConfig; 0024 0025 KActionCollection *mainActionCollection; 0026 KActivities::Consumer activities; 0027 0028 void createAction(const QString &actionName, const QString &actionText, const QList<QKeySequence> &defaultSequence) 0029 { 0030 auto action = mainActionCollection->addAction(actionName); 0031 action->setProperty("isConfigurationAction", true); 0032 action->setText(actionText); 0033 KGlobalAccel::self()->setShortcut(action, defaultSequence); 0034 KGlobalAccel::self()->setDefaultShortcut(action, defaultSequence); 0035 } 0036 0037 Private() 0038 : mainConfig(new KActivityManagerdSettings) 0039 , mainActionCollection(nullptr) 0040 { 0041 } 0042 }; 0043 0044 SwitchingTab::SwitchingTab(QWidget *parent) 0045 : QWidget(parent) 0046 , d() 0047 { 0048 d->setupUi(this); 0049 0050 // Shortcut config. The shortcut belongs to the component "plasmashell"! 0051 d->mainActionCollection = new KActionCollection(this, QStringLiteral("plasmashell")); 0052 d->mainActionCollection->setComponentDisplayName(i18n("Activity switching")); 0053 d->mainActionCollection->setConfigGlobal(true); 0054 0055 d->createAction(QStringLiteral("next activity"), i18nc("@action", "Walk through activities"), {Qt::META | Qt::Key_Tab}); 0056 d->createAction(QStringLiteral("previous activity"), i18nc("@action", "Walk through activities (Reverse)"), {Qt::META | Qt::SHIFT | Qt::Key_Tab}); 0057 0058 d->scActivities->setActionTypes(KShortcutsEditor::GlobalAction); 0059 d->scActivities->addCollection(d->mainActionCollection); 0060 } 0061 0062 SwitchingTab::~SwitchingTab() 0063 { 0064 } 0065 0066 KCoreConfigSkeleton *SwitchingTab::mainConfig() 0067 { 0068 return d->mainConfig; 0069 } 0070 0071 void SwitchingTab::shortcutChanged(const QKeySequence &sequence) 0072 { 0073 QString actionName = sender() ? sender()->property("shortcutAction").toString() : QString(); 0074 0075 if (actionName.isEmpty()) 0076 return; 0077 0078 auto action = d->mainActionCollection->action(actionName); 0079 0080 KGlobalAccel::self()->setShortcut(action, {sequence}, KGlobalAccel::NoAutoloading); 0081 d->mainActionCollection->writeSettings(); 0082 }