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 }