mirror of
https://github.com/xiaoyifang/goldendict-ng.git
synced 2024-12-18 19:44:06 +00:00
3ca7c39e69
* feat: handle UNIX shutting down SIGNALS * Convey ksignalhandler from LGPLv2.1+ to GPLv3+ which allowed/required --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
68 lines
1.4 KiB
C++
68 lines
1.4 KiB
C++
/*
|
|
SPDX-FileCopyrightText: 2021 Aleix Pol Gonzalez <aleixpol@kde.org>
|
|
|
|
SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
Copied from KDE's KCoreAddons with minor modifications
|
|
*/
|
|
#pragma once
|
|
#include <QtGlobal>
|
|
#ifdef Q_OS_UNIX
|
|
#include <QObject>
|
|
#include <signal.h>
|
|
|
|
class KSignalHandlerPrivate;
|
|
|
|
/**
|
|
* Allows getting ANSI C signals and forward them onto the Qt eventloop.
|
|
*
|
|
* It's a singleton as it relies on static data getting defined.
|
|
*
|
|
* \code
|
|
* {
|
|
* KSignalHandler::self()->watchSignal(SIGTERM);
|
|
* connect(KSignalHandler::self(), &KSignalHandler::signalReceived,
|
|
* this, &SomeClass::handleSignal);
|
|
* job->start();
|
|
* }
|
|
* \endcode
|
|
*
|
|
* @since 5.92
|
|
*/
|
|
class KSignalHandler: public QObject
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
~KSignalHandler() override;
|
|
|
|
/**
|
|
* Adds @p signal to be watched for. Once the process is notified about this signal, @m signalReceived will be emitted with the same @p signal as an
|
|
* argument.
|
|
*
|
|
* @see signalReceived
|
|
*/
|
|
void watchSignal( int signal );
|
|
|
|
/**
|
|
* Fetches an instance we can use to register our signals.
|
|
*/
|
|
static KSignalHandler * self();
|
|
|
|
Q_SIGNALS:
|
|
/**
|
|
* Notifies that @p signal is emitted.
|
|
*
|
|
* To catch a signal, we need to make sure it's registered using @m watchSignal.
|
|
*
|
|
* @see watchSignal
|
|
*/
|
|
void signalReceived( int signal );
|
|
|
|
private:
|
|
KSignalHandler();
|
|
|
|
QScopedPointer< KSignalHandlerPrivate > d;
|
|
};
|
|
|
|
#endif |