File indexing completed on 2024-04-28 16:54:58

0001 /*
0002     SPDX-FileCopyrightText: 2014 Martin Klapetek <mklapetek@kde.org>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include <QObject>
0010 #include <QString>
0011 #include <QUrl>
0012 
0013 #include <KConfigGroup>
0014 #include <KSharedConfig>
0015 
0016 namespace KDeclarative
0017 {
0018 class QmlObjectSharedEngine;
0019 }
0020 namespace Plasma
0021 {
0022 }
0023 
0024 class QTimer;
0025 class ShellCorona;
0026 
0027 class Osd : public QObject
0028 {
0029     Q_OBJECT
0030     Q_CLASSINFO("D-Bus Interface", "org.kde.osdService")
0031 public:
0032     Osd(const KSharedConfig::Ptr &config, ShellCorona *corona);
0033     ~Osd() override;
0034 
0035 public Q_SLOTS:
0036     void brightnessChanged(int percent);
0037     void keyboardBrightnessChanged(int percent);
0038     void volumeChanged(int percent);
0039     void volumeChanged(int percent, int maximumPercent);
0040     void microphoneVolumeChanged(int percent);
0041     void mediaPlayerVolumeChanged(int percent, const QString &playerName, const QString &playerIconName);
0042     void kbdLayoutChanged(const QString &layoutName);
0043     void virtualDesktopChanged(const QString &currentVirtualDesktopName);
0044     void touchpadEnabledChanged(bool touchpadEnabled);
0045     void wifiEnabledChanged(bool wifiEnabled);
0046     void bluetoothEnabledChanged(bool bluetoothEnabled);
0047     void wwanEnabledChanged(bool wwanEnabled);
0048     void virtualKeyboardEnabledChanged(bool virtualKeyboardEnabled);
0049     void showText(const QString &icon, const QString &text);
0050 
0051 Q_SIGNALS:
0052     void osdProgress(const QString &icon, const int percent, const QString &additionalText);
0053     void osdText(const QString &icon, const QString &text);
0054 
0055 private Q_SLOTS:
0056     void hideOsd();
0057 
0058 private:
0059     bool init();
0060 
0061     void showProgress(const QString &icon, const int percent, const int maximumPercent, const QString &additionalText = QString());
0062     void showOsd();
0063 
0064     QUrl m_osdUrl;
0065     KDeclarative::QmlObjectSharedEngine *m_osdObject = nullptr;
0066     QTimer *m_osdTimer = nullptr;
0067     int m_timeout = 0;
0068 
0069     KConfigGroup m_osdConfigGroup;
0070 };