1 /*
2  * SPDX-FileCopyrightText: 2012~2017 CSSlayer <wengxt@gmail.com>
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 
8 #ifndef _DBUSADDONS_FCITXQTWATCHER_H_
9 #define _DBUSADDONS_FCITXQTWATCHER_H_
10 
11 #include "fcitx5qt6dbusaddons_export.h"
12 
13 #include <QDBusConnection>
14 #include <QObject>
15 
16 namespace fcitx {
17 
18 class FcitxQtWatcherPrivate;
19 
20 class FCITX5QT6DBUSADDONS_EXPORT FcitxQtWatcher : public QObject {
21     Q_OBJECT
22 public:
23     explicit FcitxQtWatcher(QObject *parent = nullptr);
24     explicit FcitxQtWatcher(const QDBusConnection &connection,
25                             QObject *parent = nullptr);
26     ~FcitxQtWatcher();
27     void watch();
28     void unwatch();
29     void setConnection(const QDBusConnection &connection);
30     QDBusConnection connection() const;
31     void setWatchPortal(bool portal);
32     bool watchPortal() const;
33     bool isWatching() const;
34     bool availability() const;
35 
36     QString serviceName() const;
37 
38 Q_SIGNALS:
39     void availabilityChanged(bool);
40 
41 private Q_SLOTS:
42     void imChanged(const QString &service, const QString &oldOwner,
43                    const QString &newOwner);
44 
45 private:
46     void setAvailability(bool availability);
47     void updateAvailability();
48 
49     FcitxQtWatcherPrivate *const d_ptr;
50     Q_DECLARE_PRIVATE(FcitxQtWatcher);
51 };
52 } // namespace fcitx
53 
54 #endif // _DBUSADDONS_FCITXQTWATCHER_H_
55