File indexing completed on 2024-05-12 17:08:48
0001 /* 0002 SPDX-FileCopyrightText: 2019 Kai Uwe Broulik <kde@broulik.de> 0003 0004 SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0005 */ 0006 0007 #include "globalshortcuts.h" 0008 0009 #include <QAction> 0010 #include <QDBusConnection> 0011 #include <QDBusMessage> 0012 0013 #include <KLocalizedString> 0014 0015 #include <KGlobalAccel> 0016 0017 GlobalShortcuts::GlobalShortcuts(QObject *parent) 0018 : QObject(parent) 0019 , m_toggleDoNotDisturbAction(new QAction(this)) 0020 { 0021 m_toggleDoNotDisturbAction->setObjectName(QStringLiteral("toggle do not disturb")); 0022 m_toggleDoNotDisturbAction->setProperty("componentName", QStringLiteral("plasmashell")); 0023 m_toggleDoNotDisturbAction->setText(i18n("Toggle do not disturb")); 0024 m_toggleDoNotDisturbAction->setIcon(QIcon::fromTheme(QStringLiteral("notifications-disabled"))); 0025 m_toggleDoNotDisturbAction->setShortcutContext(Qt::ApplicationShortcut); 0026 connect(m_toggleDoNotDisturbAction, &QAction::triggered, this, &GlobalShortcuts::toggleDoNotDisturbTriggered); 0027 0028 KGlobalAccel::self()->setGlobalShortcut(m_toggleDoNotDisturbAction, QKeySequence()); 0029 } 0030 0031 GlobalShortcuts::~GlobalShortcuts() = default; 0032 0033 void GlobalShortcuts::showDoNotDisturbOsd(bool doNotDisturb) const 0034 { 0035 QDBusMessage msg = QDBusMessage::createMethodCall( // 0036 QStringLiteral("org.kde.plasmashell"), 0037 QStringLiteral("/org/kde/osdService"), 0038 QStringLiteral("org.kde.osdService"), 0039 QStringLiteral("showText")); 0040 0041 const QString iconName = doNotDisturb ? QStringLiteral("notifications-disabled") : QStringLiteral("notifications"); 0042 const QString text = doNotDisturb ? i18nc("OSD popup, keep short", "Notifications Off") // 0043 : i18nc("OSD popup, keep short", "Notifications On"); 0044 0045 msg.setArguments({iconName, text}); 0046 0047 QDBusConnection::sessionBus().call(msg, QDBus::NoBlock); 0048 }