8 #include "inputmethodgroup.h" 15 #include "fcitx-utils/macros.h" 20 const std::string emptyString;
26 FCITX_INLINE_DEFINE_DEFAULT_DTOR_COPY_AND_MOVE_WITHOUT_SPEC(
38 std::vector<InputMethodGroupItem> inputMethodList_;
39 std::string defaultInputMethod_;
40 std::string defaultLayout_;
43 InputMethodGroupItem::InputMethodGroupItem(
const std::string &name)
44 : d_ptr(std::make_unique<InputMethodGroupItemPrivate>(name)) {}
48 const std::string &InputMethodGroupItem::name()
const {
53 const std::string &InputMethodGroupItem::layout()
const {
60 builder <<
"InputMethodGroupItem(" << groupItem.name()
61 <<
",layout=" << groupItem.layout() <<
")";
66 InputMethodGroupItem::setLayout(
const std::string &layout) {
72 InputMethodGroup::InputMethodGroup(
const std::string &name)
73 : d_ptr(std::make_unique<InputMethodGroupPrivate>(name)) {}
77 const std::string &InputMethodGroup::name()
const {
82 std::vector<InputMethodGroupItem> &InputMethodGroup::inputMethodList() {
84 return d->inputMethodList_;
87 const std::vector<InputMethodGroupItem> &
88 InputMethodGroup::inputMethodList()
const {
90 return d->inputMethodList_;
93 void InputMethodGroup::setDefaultInputMethod(
const std::string &im) {
95 if (std::ranges::any_of(d->inputMethodList_,
97 return item.name() == im;
99 if (d->inputMethodList_.size() > 1 &&
100 d->inputMethodList_[0].name() == im) {
101 d->defaultInputMethod_ = d->inputMethodList_[1].name();
103 d->defaultInputMethod_ = im;
106 if (d->inputMethodList_.size() > 1) {
107 d->defaultInputMethod_ = d->inputMethodList_[1].name();
109 d->defaultInputMethod_ = d->inputMethodList_.empty()
111 : d->inputMethodList_[0].name();
116 const std::string &InputMethodGroup::layoutFor(
const std::string &im)
const {
118 auto iter = std::ranges::find_if(
121 if (iter != d->inputMethodList_.end()) {
122 return iter->layout();
127 const std::string &InputMethodGroup::defaultInputMethod()
const {
129 return d->defaultInputMethod_;
132 void InputMethodGroup::setDefaultLayout(
const std::string &layout) {
134 d->defaultLayout_ = layout;
137 const std::string &InputMethodGroup::defaultLayout()
const {
139 return d->defaultLayout_;