1/*
2 SPDX-FileCopyrightText: 2019 Vlad Zahorodnii <vlad.zahorodnii@kde.org>
3
4 SPDX-License-Identifier: LGPL-2.1-or-later
5*/
6
7#include "ksystemclockskewnotifier.h"
8#include "ksystemclockskewnotifierengine_p.h"
9
10class KSystemClockSkewNotifierPrivate
11{
12public:
13 explicit KSystemClockSkewNotifierPrivate(KSystemClockSkewNotifier *notifier);
14
15 void loadNotifierEngine();
16 void unloadNotifierEngine();
17
18 KSystemClockSkewNotifier *notifier;
19 std::shared_ptr<KSystemClockSkewNotifierEngine> engine;
20 bool isActive = false;
21};
22
23KSystemClockSkewNotifierPrivate::KSystemClockSkewNotifierPrivate(KSystemClockSkewNotifier *notifier)
24 : notifier(notifier)
25{
26}
27
28void KSystemClockSkewNotifierPrivate::loadNotifierEngine()
29{
30 engine = KSystemClockSkewNotifierEngine::globalInstance();
31
32 if (engine) {
33 QObject::connect(sender: engine.get(), signal: &KSystemClockSkewNotifierEngine::skewed, context: notifier, slot: &KSystemClockSkewNotifier::skewed);
34 }
35}
36
37void KSystemClockSkewNotifierPrivate::unloadNotifierEngine()
38{
39 if (!engine) {
40 return;
41 }
42
43 QObject::disconnect(sender: engine.get(), signal: &KSystemClockSkewNotifierEngine::skewed, receiver: notifier, slot: &KSystemClockSkewNotifier::skewed);
44 engine.reset();
45}
46
47KSystemClockSkewNotifier::KSystemClockSkewNotifier(QObject *parent)
48 : QObject(parent)
49 , d(std::make_unique<KSystemClockSkewNotifierPrivate>(args: this))
50{
51}
52
53KSystemClockSkewNotifier::~KSystemClockSkewNotifier()
54{
55}
56
57bool KSystemClockSkewNotifier::isActive() const
58{
59 return d->isActive;
60}
61
62void KSystemClockSkewNotifier::setActive(bool set)
63{
64 if (d->isActive == set) {
65 return;
66 }
67
68 d->isActive = set;
69
70 if (d->isActive) {
71 d->loadNotifierEngine();
72 } else {
73 d->unloadNotifierEngine();
74 }
75
76 Q_EMIT activeChanged();
77}
78
79#include "moc_ksystemclockskewnotifier.cpp"
80

source code of kcoreaddons/src/lib/util/ksystemclockskewnotifier.cpp