From ea5340883b6e53d443afca09191a7e878991cf3e Mon Sep 17 00:00:00 2001 From: xximng <1341910529@qq.com> Date: Sat, 8 Feb 2025 15:16:37 +0800 Subject: [PATCH] add new dbus method to get current input method info --- src/modules/dbus/dbusmodule.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/modules/dbus/dbusmodule.cpp b/src/modules/dbus/dbusmodule.cpp index bb46e9936..d3341cf49 100644 --- a/src/modules/dbus/dbusmodule.cpp +++ b/src/modules/dbus/dbusmodule.cpp @@ -681,6 +681,27 @@ class Controller1 : public ObjectVTable { void setLogRule(const std::string &rule) { Log::setLogRule(rule); } + std::vector< + dbus::DBusStruct> + currentInputMethodInfo() { + std::vector< + dbus::DBusStruct> + result; + std::string currentIM = instance_->currentInputMethod(); + const auto *entry = instance_->inputMethodManager().entry(currentIM); + if (entry == nullptr) { + return {}; + } + + result.emplace_back(entry->uniqueName(), entry->name(), + entry->nativeName(), entry->icon(), entry->label(), + entry->languageCode(), entry->addon(), + entry->isConfigurable()); + return result; + } + private: DBusModule *module_; Instance *instance_; @@ -750,6 +771,8 @@ class Controller1 : public ObjectVTable { FCITX_OBJECT_VTABLE_METHOD(save, "Save", "", ""); FCITX_OBJECT_VTABLE_METHOD(setLogRule, "SetLogRule", "s", ""); FCITX_OBJECT_VTABLE_METHOD(canRestart, "CanRestart", "", "b"); + FCITX_OBJECT_VTABLE_METHOD(currentInputMethodInfo, "CurrentInputMethodInfo", + "", "a(sssssssb)"); }; DBusModule::DBusModule(Instance *instance)