File indexing completed on 2024-12-01 12:32:57
0001 /* 0002 This file is part of the KDE libraries 0003 0004 SPDX-FileCopyrightText: 2022 Aleix Pol Gonzalez <aleixpol@kde.org> 0005 0006 SPDX-License-Identifier: LGPL-2.0-or-later 0007 */ 0008 0009 #include <KGlobalAccel> 0010 #include <QAction> 0011 #include <QApplication> 0012 #include <QQmlApplicationEngine> 0013 #include <QTest> 0014 0015 class GlobalAction : public QAction, public QQmlParserStatus 0016 { 0017 Q_OBJECT 0018 Q_INTERFACES(QQmlParserStatus) 0019 Q_PROPERTY(bool active READ isActive NOTIFY activeChanged) 0020 public: 0021 GlobalAction() 0022 { 0023 connect(this, &QAction::changed, this, &GlobalAction::refresh); 0024 connect(KGlobalAccel::self(), &KGlobalAccel::globalShortcutActiveChanged, this, [this](QAction *action, bool active) { 0025 if (action != this) { 0026 return; 0027 } 0028 qDebug() << "active changed" << action << active; 0029 m_active = active; 0030 Q_EMIT activeChanged(active); 0031 }); 0032 } 0033 0034 void classBegin() override 0035 { 0036 } 0037 void componentComplete() override 0038 { 0039 m_done = true; 0040 refresh(); 0041 } 0042 0043 void refresh() 0044 { 0045 if (!m_done) { 0046 return; 0047 } 0048 bool added = KGlobalAccel::self()->setShortcut(this, {shortcut()}, KGlobalAccel::NoAutoloading); 0049 0050 if (!added) { 0051 qWarning() << "could not set the global shortcut" << shortcut(); 0052 } else { 0053 qDebug() << "shortcut set correctly" << shortcut(); 0054 } 0055 } 0056 0057 bool isActive() const 0058 { 0059 return m_active; 0060 } 0061 0062 Q_SIGNALS: 0063 void activeChanged(bool active); 0064 0065 private: 0066 bool m_done = false; 0067 bool m_active = false; 0068 }; 0069 0070 int main(int argc, char **argv) 0071 { 0072 QApplication app(argc, argv); 0073 QQmlApplicationEngine engine; 0074 0075 qmlRegisterType<GlobalAction>("org.kde.globalaccel", 1, 0, "GlobalAction"); 0076 0077 engine.load(QFINDTESTDATA("kglobalacceltest.qml")); 0078 0079 return app.exec(); 0080 } 0081 0082 #include "kglobalacceltest.moc"