1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
/*
* SPDX-FileCopyrightText: 2024 Bohdan Onofriichuk <bogdan.onofriuchuk@gmail.com>
*
* SPDX-License-Identifier: GPL-2.0-or-later
*/
#pragma once
#include <QBindable>
#include <QCoroTask>
#include <QObject>
#include <qqmlregistration.h>
class QDBusServiceWatcher;
class KeyboardBrightnessControl : public QObject
{
Q_OBJECT
QML_ELEMENT
Q_PROPERTY(int brightness READ default WRITE setBrightness NOTIFY brightnessChanged BINDABLE bindableBrightness)
Q_PROPERTY(int brightnessMax READ default NOTIFY brightnessMaxChanged BINDABLE bindableBrightnessMax)
Q_PROPERTY(bool isBrightnessAvailable READ default NOTIFY isBrightnessAvailableChanged BINDABLE bindableIsBrightnessAvailable)
Q_PROPERTY(bool isSilent WRITE setIsSilent)
public:
explicit KeyboardBrightnessControl(QObject *parent = nullptr);
~KeyboardBrightnessControl() override;
void setBrightness(int value);
void setIsSilent(bool silent);
QBindable<bool> bindableIsBrightnessAvailable();
QBindable<int> bindableBrightness();
QBindable<int> bindableBrightnessMax();
Q_SIGNALS:
void brightnessChanged(int value);
void brightnessMaxChanged(int value);
void isBrightnessAvailableChanged(bool status);
private Q_SLOTS:
void onBrightnessChanged(int value);
void onBrightnessMaxChanged(int value);
QCoro::Task<void> onSupportedActionsChanged();
private:
void onServiceRegistered();
void onServiceUnregistered();
QCoro::Task<bool> isActionSupported(const QString &actionName);
QCoro::Task<void> onActionSupported();
void onActionUnsupported();
std::unique_ptr<QDBusServiceWatcher> m_serviceWatcher;
Q_OBJECT_BINDABLE_PROPERTY_WITH_ARGS(KeyboardBrightnessControl,
bool,
m_isBrightnessAvailable,
false,
&KeyboardBrightnessControl::isBrightnessAvailableChanged)
Q_OBJECT_BINDABLE_PROPERTY_WITH_ARGS(KeyboardBrightnessControl, int, m_brightness, 0, &KeyboardBrightnessControl::brightnessChanged)
Q_OBJECT_BINDABLE_PROPERTY_WITH_ARGS(KeyboardBrightnessControl, int, m_maxBrightness, 0, &KeyboardBrightnessControl::brightnessMaxChanged)
bool m_isSilent = false;
bool m_initialized = false;
};
|