1 /* 2 * SPDX-FileCopyrightText: 2012~2017 CSSlayer <wengxt@gmail.com> 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 * 6 */ 7 #ifndef _DBUSADDONS_FCITXQTINPUTCONTEXTPROXY_H_ 8 #define _DBUSADDONS_FCITXQTINPUTCONTEXTPROXY_H_ 9 10 #include "fcitx5qt6dbusaddons_export.h" 11 12 #include "fcitxqtdbustypes.h" 13 #include <QDBusConnection> 14 #include <QDBusPendingReply> 15 #include <QDBusServiceWatcher> 16 #include <QObject> 17 18 class QDBusPendingCallWatcher; 19 20 namespace fcitx { 21 22 class FcitxQtWatcher; 23 class FcitxQtInputContextProxyPrivate; 24 25 class FCITX5QT6DBUSADDONS_EXPORT FcitxQtInputContextProxy : public QObject { 26 Q_OBJECT 27 public: 28 FcitxQtInputContextProxy(FcitxQtWatcher *watcher, QObject *parent); 29 ~FcitxQtInputContextProxy(); 30 31 bool isValid() const; 32 void setDisplay(const QString &display); 33 const QString &display() const; 34 35 public Q_SLOTS: 36 QDBusPendingReply<> focusIn(); 37 QDBusPendingReply<> focusOut(); 38 QDBusPendingReply<bool> processKeyEvent(unsigned int keyval, 39 unsigned int keycode, 40 unsigned int state, bool type, 41 unsigned int time); 42 QDBusPendingReply<> reset(); 43 QDBusPendingReply<> setCapability(qulonglong caps); 44 QDBusPendingReply<> setCursorRect(int x, int y, int w, int h); 45 QDBusPendingReply<> setCursorRectV2(int x, int y, int w, int h, 46 double scale); 47 QDBusPendingReply<> setSurroundingText(const QString &text, 48 unsigned int cursor, 49 unsigned int anchor); 50 QDBusPendingReply<> setSurroundingTextPosition(unsigned int cursor, 51 unsigned int anchor); 52 QDBusPendingReply<> prevPage(); 53 QDBusPendingReply<> nextPage(); 54 QDBusPendingReply<> selectCandidate(int i); 55 56 Q_SIGNALS: 57 void commitString(const QString &str); 58 void currentIM(const QString &name, const QString &uniqueName, 59 const QString &langCode); 60 void deleteSurroundingText(int offset, unsigned int nchar); 61 void forwardKey(unsigned int keyval, unsigned int state, bool isRelease); 62 void updateFormattedPreedit(const FcitxQtFormattedPreeditList &str, 63 int cursorpos); 64 void updateClientSideUI(const FcitxQtFormattedPreeditList &preedit, 65 int cursorpos, 66 const FcitxQtFormattedPreeditList &auxUp, 67 const FcitxQtFormattedPreeditList &auxDown, 68 const FcitxQtStringKeyValueList &candidates, 69 int candidateIndex, int layoutHint, bool hasPrev, 70 bool hasNext); 71 void inputContextCreated(const QByteArray &uuid); 72 73 private: 74 FcitxQtInputContextProxyPrivate *const d_ptr; 75 Q_DECLARE_PRIVATE(FcitxQtInputContextProxy); 76 }; 77 78 } // namespace fcitx 79 80 #endif // _DBUSADDONS_FCITXQTINPUTCONTEXTPROXY_H_ 81