AusweisApp2/src/core/SignalHandler.cpp

90 lines
1.3 KiB
C++
Raw Normal View History

2017-07-03 09:30:10 +02:00
/*
2018-03-28 15:10:51 +02:00
* \copyright Copyright (c) 2014-2018 Governikus GmbH & Co. KG, Germany
2017-07-03 09:30:10 +02:00
*/
#include "SignalHandler.h"
#include "SingletonHelper.h"
#include <QCoreApplication>
#include <QLoggingCategory>
using namespace governikus;
defineSingleton(SignalHandler)
Q_DECLARE_LOGGING_CATEGORY(system)
SignalHandler::SignalHandler()
: mInit(false)
, mAppController()
, mQuit(false)
{
}
SignalHandler::~SignalHandler()
{
}
SignalHandler& SignalHandler::getInstance()
{
return *Instance;
}
void SignalHandler::init()
{
if (!mInit)
{
2017-12-20 14:54:05 +01:00
#if (defined(Q_OS_LINUX) && !defined(Q_OS_ANDROID)) || defined(Q_OS_MACOS) || defined(Q_OS_FREEBSD)
2017-07-03 09:30:10 +02:00
initUnix();
2017-12-20 14:54:05 +01:00
#elif defined(Q_OS_WIN) && !defined(Q_OS_WINRT)
SetConsoleCtrlHandler(PHANDLER_ROUTINE(ctrlHandler), true);
2017-07-03 09:30:10 +02:00
#endif
mInit = true;
}
}
void SignalHandler::setController(AppController& pAppController)
{
mAppController = &pAppController;
}
void SignalHandler::quit()
{
mQuit = true;
if (mAppController)
{
QMetaObject::invokeMethod(mAppController.data(), "doShutdown", Qt::QueuedConnection);
}
else
{
QCoreApplication::exit();
}
}
bool SignalHandler::shouldQuit() const
{
return mQuit;
}
#if !(defined(Q_OS_UNIX) && !defined(Q_OS_ANDROID) && !defined(Q_OS_IOS))
// A dummy is required for all platform since moc fails to handle some defines.
void SignalHandler::onSignalSocketActivated()
{
}
#endif