File indexing completed on 2024-05-05 09:56:36

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 PlasmaQuick
0017 {
0018 class SharedQmlEngine;
0019 }
0020 
0021 class QTimer;
0022 class ShellCorona;
0023 
0024 class Osd : public QObject
0025 {
0026     Q_OBJECT
0027     Q_CLASSINFO("D-Bus Interface", "org.kde.osdService")
0028 public:
0029     Osd(const KSharedConfig::Ptr &config, ShellCorona *corona);
0030     ~Osd() override;
0031 
0032 public Q_SLOTS:
0033     void brightnessChanged(int percent);
0034     void keyboardBrightnessChanged(int percent);
0035     void volumeChanged(int percent);
0036     void volumeChanged(int percent, int maximumPercent);
0037     void microphoneVolumeChanged(int percent);
0038     void mediaPlayerVolumeChanged(int percent, const QString &playerName, const QString &playerIconName);
0039     void kbdLayoutChanged(const QString &layoutName);
0040     void virtualDesktopChanged(const QString &currentVirtualDesktopName);
0041     void touchpadEnabledChanged(bool touchpadEnabled);
0042     void wifiEnabledChanged(bool wifiEnabled);
0043     void bluetoothEnabledChanged(bool bluetoothEnabled);
0044     void wwanEnabledChanged(bool wwanEnabled);
0045     void virtualKeyboardEnabledChanged(bool virtualKeyboardEnabled);
0046     void showText(const QString &icon, const QString &text);
0047 
0048 Q_SIGNALS:
0049     void osdProgress(const QString &icon, const int percent, const int maximumPercent, const QString &additionalText);
0050     void osdText(const QString &icon, const QString &text);
0051 
0052 private Q_SLOTS:
0053     void hideOsd();
0054 
0055 private:
0056     bool init();
0057 
0058     void showProgress(const QString &icon, const int percent, const int maximumPercent, const QString &additionalText = QString());
0059     void showOsd();
0060 
0061     QUrl m_osdUrl;
0062     PlasmaQuick::SharedQmlEngine *m_osdObject = nullptr;
0063     QTimer *m_osdTimer = nullptr;
0064     int m_timeout = 0;
0065 
0066     KConfigGroup m_osdConfigGroup;
0067 };