Fcitx
inputmethodgroup.h
1 /*
2  * SPDX-FileCopyrightText: 2016-2016 CSSlayer <wengxt@gmail.com>
3  *
4  * SPDX-License-Identifier: LGPL-2.1-or-later
5  *
6  */
7 #ifndef _FCITX_INPUTMETHODGROUP_H_
8 #define _FCITX_INPUTMETHODGROUP_H_
9 
10 #include <memory>
11 #include <string>
12 #include <vector>
13 #include <fcitx-utils/log.h>
14 #include <fcitx-utils/macros.h>
15 #include <fcitx/fcitxcore_export.h>
16 
17 namespace fcitx {
18 
19 class InputMethodGroupPrivate;
20 class InputMethodGroupItemPrivate;
21 
22 class FCITXCORE_EXPORT InputMethodGroupItem {
23 public:
24  InputMethodGroupItem(const std::string &name);
25  FCITX_DECLARE_VIRTUAL_DTOR_COPY_AND_MOVE(InputMethodGroupItem);
26 
27  InputMethodGroupItem &setLayout(const std::string &layout);
28  const std::string &name() const;
29  const std::string &layout() const;
30  bool isKeyboard() const;
31 
32  std::unique_ptr<InputMethodGroupItemPrivate> d_ptr;
33  FCITX_DECLARE_PRIVATE(InputMethodGroupItem);
34 };
35 
36 LogMessageBuilder &operator<<(LogMessageBuilder &builder,
37  const InputMethodGroupItem &groupItem);
38 
39 class FCITXCORE_EXPORT InputMethodGroup {
40 public:
41  explicit InputMethodGroup(const std::string &name);
42  FCITX_DECLARE_VIRTUAL_DTOR_COPY_AND_MOVE(InputMethodGroup);
43 
44  const std::string &name() const;
45  void setDefaultLayout(const std::string &layout);
46  const std::string &defaultLayout() const;
47  std::vector<InputMethodGroupItem> &inputMethodList();
48  const std::vector<InputMethodGroupItem> &inputMethodList() const;
49  const std::string &defaultInputMethod() const;
50  void setDefaultInputMethod(const std::string &im);
51  const std::string &layoutFor(const std::string &im) const;
52 
53 private:
54  std::unique_ptr<InputMethodGroupPrivate> d_ptr;
55  FCITX_DECLARE_PRIVATE(InputMethodGroup);
56 };
57 } // namespace fcitx
58 
59 #endif // _FCITX_INPUTMETHODGROUP_H_
Definition: action.cpp:17
Log utilities.