Merge PR #565: Improve screen brightness control
This commit is contained in:
commit
66548925ae
@ -90,12 +90,20 @@ ScreenHelper::ScreenHelper(QObject *parent) : QObject(parent)
|
|||||||
}
|
}
|
||||||
|
|
||||||
QSettings settings;
|
QSettings settings;
|
||||||
m_screenOffTimer.setInterval(settings.value("screenOffTimeout", 15000).toInt());
|
|
||||||
|
m_currentBrightness = settings.value("screenBrightness", 80).toInt();
|
||||||
|
|
||||||
|
|
||||||
|
m_screenDimTimer.setInterval(settings.value("screenOffTimeout", 30000).toInt());
|
||||||
|
m_screenDimTimer.setSingleShot(true);
|
||||||
|
connect(&m_screenDimTimer, &QTimer::timeout, this, &ScreenHelper::dimScreen);
|
||||||
|
if (m_screenDimTimer.interval() > 0) {
|
||||||
|
m_screenDimTimer.start();
|
||||||
|
}
|
||||||
|
|
||||||
|
m_screenOffTimer.setInterval(5000);
|
||||||
m_screenOffTimer.setSingleShot(true);
|
m_screenOffTimer.setSingleShot(true);
|
||||||
connect(&m_screenOffTimer, &QTimer::timeout, this, &ScreenHelper::screenOff);
|
connect(&m_screenOffTimer, &QTimer::timeout, this, &ScreenHelper::screenOff);
|
||||||
if (m_screenOffTimer.interval() > 0) {
|
|
||||||
m_screenOffTimer.start();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Hide the mouse cursor right away, it'll be restored on mouse move events
|
// Hide the mouse cursor right away, it'll be restored on mouse move events
|
||||||
QApplication::setOverrideCursor(Qt::BlankCursor);
|
QApplication::setOverrideCursor(Qt::BlankCursor);
|
||||||
@ -109,18 +117,18 @@ bool ScreenHelper::active() const
|
|||||||
|
|
||||||
int ScreenHelper::screenTimeout() const
|
int ScreenHelper::screenTimeout() const
|
||||||
{
|
{
|
||||||
return m_screenOffTimer.interval();
|
return m_screenDimTimer.interval();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScreenHelper::setScreenTimeout(int timeout)
|
void ScreenHelper::setScreenTimeout(int timeout)
|
||||||
{
|
{
|
||||||
m_screenOffTimer.setInterval(timeout);
|
m_screenDimTimer.setInterval(timeout);
|
||||||
QSettings settings;
|
QSettings settings;
|
||||||
settings.setValue("screenOffTimeout", timeout);
|
settings.setValue("screenOffTimeout", timeout);
|
||||||
if (timeout > 0) {
|
if (timeout > 0) {
|
||||||
m_screenOffTimer.start();
|
m_screenDimTimer.start();
|
||||||
} else {
|
} else {
|
||||||
m_screenOffTimer.stop();
|
m_screenDimTimer.stop();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -131,9 +139,10 @@ int ScreenHelper::screenBrightness() const
|
|||||||
|
|
||||||
void ScreenHelper::setScreenBrightness(int percent)
|
void ScreenHelper::setScreenBrightness(int percent)
|
||||||
{
|
{
|
||||||
|
QSettings settings;
|
||||||
|
settings.setValue("screenBrightness", percent);
|
||||||
m_currentBrightness = percent;
|
m_currentBrightness = percent;
|
||||||
m_brightnessFile.write(QString("%1\n").arg(percent * m_maxBrightness / 100).toUtf8());
|
applyBrightness(m_currentBrightness);
|
||||||
m_brightnessFile.flush();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ScreenHelper::eventFilter(QObject *watched, QEvent *event)
|
bool ScreenHelper::eventFilter(QObject *watched, QEvent *event)
|
||||||
@ -181,20 +190,26 @@ bool ScreenHelper::eventFilter(QObject *watched, QEvent *event)
|
|||||||
m_cursorHidden = false;
|
m_cursorHidden = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// No timer is active, means we've off already => turn on and start dim timer, eating the input event
|
||||||
if (!m_screenOffTimer.isActive()) {
|
if (!m_screenDimTimer.isActive() && !m_screenOffTimer.isActive()) {
|
||||||
screenOn();
|
screenOn();
|
||||||
m_screenOffTimer.start();
|
m_screenDimTimer.start();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
m_screenOffTimer.start( );
|
// Screen off timer is active, means we've dimmed down already => dim up again and stop offTimer
|
||||||
|
if (m_screenOffTimer.isActive()) {
|
||||||
|
m_screenOffTimer.stop();
|
||||||
|
applyBrightness(m_currentBrightness);
|
||||||
|
}
|
||||||
|
// restart dim timer
|
||||||
|
m_screenDimTimer.start();
|
||||||
return QObject::eventFilter(watched, event);
|
return QObject::eventFilter(watched, event);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScreenHelper::screenOn()
|
void ScreenHelper::screenOn()
|
||||||
{
|
{
|
||||||
qCInfo(dcPlatformIntegration()) << "Turning screen on";
|
qCInfo(dcPlatformIntegration()) << "Turning screen on";
|
||||||
int ret = m_powerFile.write("0\n");
|
qint64 ret = m_powerFile.write("0\n");
|
||||||
m_powerFile.flush();
|
m_powerFile.flush();
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
qCWarning(dcPlatformIntegration()) << "Failed to power on screen";
|
qCWarning(dcPlatformIntegration()) << "Failed to power on screen";
|
||||||
@ -204,9 +219,24 @@ void ScreenHelper::screenOn()
|
|||||||
void ScreenHelper::screenOff()
|
void ScreenHelper::screenOff()
|
||||||
{
|
{
|
||||||
qCInfo(dcPlatformIntegration()) << "Turning screen off";
|
qCInfo(dcPlatformIntegration()) << "Turning screen off";
|
||||||
int ret = m_powerFile.write("1\n");
|
qint64 ret = m_powerFile.write("1\n");
|
||||||
m_powerFile.flush();
|
m_powerFile.flush();
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
qCWarning(dcPlatformIntegration()) << "Failed to power off screen";
|
qCWarning(dcPlatformIntegration()) << "Failed to power off screen";
|
||||||
}
|
}
|
||||||
|
applyBrightness(m_currentBrightness);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ScreenHelper::dimScreen()
|
||||||
|
{
|
||||||
|
applyBrightness(qRound(m_currentBrightness * 0.5));
|
||||||
|
m_screenOffTimer.start();
|
||||||
|
}
|
||||||
|
|
||||||
|
void ScreenHelper::applyBrightness(int percent)
|
||||||
|
{
|
||||||
|
int absolue = percent * m_maxBrightness / 100;
|
||||||
|
qCDebug(dcPlatformIntegration()) << "Setting screen brightness to" << absolue << "(" << percent << "%)";
|
||||||
|
m_brightnessFile.write(QString("%1\n").arg(absolue).toUtf8());
|
||||||
|
m_brightnessFile.flush();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -53,9 +53,13 @@ public:
|
|||||||
private slots:
|
private slots:
|
||||||
void screenOn();
|
void screenOn();
|
||||||
void screenOff();
|
void screenOff();
|
||||||
|
void dimScreen();
|
||||||
|
|
||||||
|
void applyBrightness(int percent);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QTimer m_screenOffTimer;
|
QTimer m_screenOffTimer;
|
||||||
|
QTimer m_screenDimTimer;
|
||||||
QFile m_powerFile;
|
QFile m_powerFile;
|
||||||
QFile m_brightnessFile;
|
QFile m_brightnessFile;
|
||||||
|
|
||||||
|
|||||||
17
packaging/ubuntu/debian/nymea-app-kiosk-wayland.postinst
Normal file
17
packaging/ubuntu/debian/nymea-app-kiosk-wayland.postinst
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Restart nymea-app after update if it's running
|
||||||
|
systemctl daemon-reload
|
||||||
|
systemctl status nymea-app-kiosk > /dev/null 2>&1
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
systemctl restart nymea-app-kiosk
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "Successfully restarted nymea app kiosk."
|
||||||
|
else
|
||||||
|
echo "FAILED to restart nymea app kiosk."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
#DEBHELPER#
|
||||||
|
|
||||||
|
exit 0
|
||||||
Reference in New Issue
Block a user