Qt/QML edition

This commit is contained in:
Floris Bos 2020-03-04 16:55:40 +01:00
commit d7b361ba44
2168 changed files with 721948 additions and 0 deletions

57
powersaveblocker.cpp Normal file
View file

@ -0,0 +1,57 @@
/*
* SPDX-License-Identifier: Apache-2.0
* Copyright (C) 2020 Raspberry Pi (Trading) Limited
*/
#include "powersaveblocker.h"
#include <QDebug>
#include <string>
PowerSaveBlocker::PowerSaveBlocker(QObject *parent) :
QObject(parent), _stayingAwake(false)
{
}
PowerSaveBlocker::~PowerSaveBlocker()
{
if (_stayingAwake)
removeBlock();
}
void PowerSaveBlocker::applyBlock(const QString &reason)
{
if (_stayingAwake)
return;
#ifdef Q_OS_WIN
REASON_CONTEXT rc;
std::wstring wreason = reason.toStdWString();
rc.Version = POWER_REQUEST_CONTEXT_VERSION;
rc.Flags = POWER_REQUEST_CONTEXT_SIMPLE_STRING;
rc.Reason.SimpleReasonString = (wchar_t *) wreason.c_str();
_powerRequest = PowerCreateRequest(&rc);
if (_powerRequest == INVALID_HANDLE_VALUE)
{
qDebug() << "Error creating power request:" << GetLastError();
return;
}
_stayingAwake = PowerSetRequest(_powerRequest, PowerRequestDisplayRequired);
if (!_stayingAwake)
{
qDebug() << "Error running PowerSetRequest():" << GetLastError();
}
#endif
}
void PowerSaveBlocker::removeBlock()
{
if (!_stayingAwake)
return;
#ifdef Q_OS_WIN
PowerClearRequest(_powerRequest, PowerRequestDisplayRequired);
CloseHandle(_powerRequest);
#endif
}