1 /*
2     SPDX-FileCopyrightText: 2014 Martin Klapetek <mklapetek@kde.org>
3 
4     SPDX-License-Identifier: GPL-2.0-or-later
5 */
6 
7 #pragma once
8 
9 #include <QObject>
10 #include <QString>
11 #include <QUrl>
12 
13 #include <KConfigGroup>
14 #include <KSharedConfig>
15 
16 namespace KDeclarative
17 {
18 class QmlObjectSharedEngine;
19 }
20 namespace Plasma
21 {
22 }
23 
24 class QTimer;
25 class ShellCorona;
26 
27 class Osd : public QObject
28 {
29     Q_OBJECT
30     Q_CLASSINFO("D-Bus Interface", "org.kde.osdService")
31 public:
32     Osd(const KSharedConfig::Ptr &config, ShellCorona *corona);
33     ~Osd() override;
34 
35 public Q_SLOTS:
36     void brightnessChanged(int percent);
37     void keyboardBrightnessChanged(int percent);
38     void volumeChanged(int percent);
39     void volumeChanged(int percent, int maximumPercent);
40     void microphoneVolumeChanged(int percent);
41     void mediaPlayerVolumeChanged(int percent, const QString &playerName, const QString &playerIconName);
42     void kbdLayoutChanged(const QString &layoutName);
43     void virtualDesktopChanged(const QString &currentVirtualDesktopName);
44     void touchpadEnabledChanged(bool touchpadEnabled);
45     void wifiEnabledChanged(bool wifiEnabled);
46     void bluetoothEnabledChanged(bool bluetoothEnabled);
47     void wwanEnabledChanged(bool wwanEnabled);
48     void virtualKeyboardEnabledChanged(bool virtualKeyboardEnabled);
49     void showText(const QString &icon, const QString &text);
50 
51 Q_SIGNALS:
52     void osdProgress(const QString &icon, const int percent, const QString &additionalText);
53     void osdText(const QString &icon, const QString &text);
54 
55 private Q_SLOTS:
56     void hideOsd();
57 
58 private:
59     bool init();
60 
61     void showProgress(const QString &icon, const int percent, const int maximumPercent, const QString &additionalText = QString());
62     void showOsd();
63 
64     QUrl m_osdUrl;
65     KDeclarative::QmlObjectSharedEngine *m_osdObject = nullptr;
66     QTimer *m_osdTimer = nullptr;
67     int m_timeout = 0;
68 
69     KConfigGroup m_osdConfigGroup;
70 };
71