lena_pi/LenaPi/EnergySaver.cpp
2021-09-25 15:11:02 +02:00

61 lines
1.1 KiB
C++

#include "EnergySaver.h"
#include <QDebug>
#include <QFileInfo>
#include <QProcess>
#include <iostream>
void EnergySaver::init(int interval, const QString &shutdownScript)
{
QFileInfo script(shutdownScript);
if(script.exists()){
auto saver = instance();
saver->setShutdownScript(shutdownScript);
saver->initTimer(interval*1000);
saver->restartTimer();
}
}
EnergySaver *EnergySaver::instance()
{
static EnergySaver* inst;
if (inst == nullptr)
{
inst = new EnergySaver();
}
return inst;
}
void EnergySaver::restartTimer()
{
if(mTimer.isActive()){
mTimer.stop();
}
mTimer.start();
}
void EnergySaver::initTimer(int interval)
{
connect(&mTimer, &QTimer::timeout, this, &EnergySaver::onTimeout);
mTimer.setInterval(interval);
mTimer.setSingleShot(true);
}
void EnergySaver::setShutdownScript(const QString &shutdownScript)
{
mShutdownScript = shutdownScript;
}
void EnergySaver::onTimeout()
{
std::cout << "Shutting down.";
#ifndef _DEBUG
QProcess p;
p.start(mShutdownScript);
p.waitForFinished();
#endif
}