libime
tableoptions.cpp
1 /*
2  * SPDX-FileCopyrightText: 2017-2017 CSSlayer <wengxt@gmail.com>
3  *
4  * SPDX-License-Identifier: LGPL-2.1-or-later
5  */
6 #include "tableoptions.h"
7 #include <cstdint>
8 #include <memory>
9 #include <set>
10 #include <string>
11 #include <unordered_set>
12 #include <fcitx-utils/macros.h>
13 
14 namespace libime {
15 
16 // mostly from table.desc, certain options are not related to libime
18 public:
19  std::string languageCode_;
20  std::string autoSelectRegex_;
21  std::string noMatchAutoSelectRegex_;
22  std::set<uint32_t> endKey_;
23  OrderPolicy orderPolicy_ = OrderPolicy::No;
24  uint32_t noSortInputLength_ = 0;
25  uint32_t pinyinKey_ = 0;
26  uint32_t matchingKey_ = 0;
27  int autoSelectLength_ = 0;
28  int noMatchAutoSelectLength_ = 0;
29 
30  int autoPhraseLength_ = -1;
31  int saveAutoPhraseAfter_ = -1;
32  std::unordered_set<std::string> autoRuleSet_;
33 
34  bool commitRawInput_ = false;
35  bool exactMatch_ = false;
36  bool learning_ = true;
37  bool autoSelect_ = false;
38  // show hint for word.
39  bool prompt_ = false;
40  // use prompt table
41  bool displayCustomPromptSymbol_ = false;
42  bool sortByCodeLength_ = true;
43 };
44 
45 TableOptions::TableOptions() : d_ptr(std::make_unique<TableOptionsPrivate>()) {}
46 
47 FCITX_DEFINE_DPTR_COPY_AND_DEFAULT_DTOR_AND_MOVE(TableOptions)
48 
49 FCITX_DEFINE_PROPERTY_PRIVATE(TableOptions, OrderPolicy, orderPolicy,
50  setOrderPolicy);
51 FCITX_DEFINE_PROPERTY_PRIVATE(TableOptions, uint32_t, noSortInputLength,
52  setNoSortInputLength);
53 FCITX_DEFINE_PROPERTY_PRIVATE(TableOptions, bool, autoSelect, setAutoSelect);
54 FCITX_DEFINE_PROPERTY_PRIVATE(TableOptions, int, autoSelectLength,
55  setAutoSelectLength);
56 FCITX_DEFINE_PROPERTY_PRIVATE(TableOptions, std::string, autoSelectRegex,
57  setAutoSelectRegex);
58 FCITX_DEFINE_PROPERTY_PRIVATE(TableOptions, int, noMatchAutoSelectLength,
59  setNoMatchAutoSelectLength);
60 FCITX_DEFINE_PROPERTY_PRIVATE(TableOptions, std::string, noMatchAutoSelectRegex,
61  setNoMatchAutoSelectRegex);
62 FCITX_DEFINE_PROPERTY_PRIVATE(TableOptions, bool, commitRawInput,
63  setCommitRawInput);
64 FCITX_DEFINE_PROPERTY_PRIVATE(TableOptions, std::set<uint32_t>, endKey,
65  setEndKey);
66 FCITX_DEFINE_PROPERTY_PRIVATE(TableOptions, uint32_t, matchingKey,
67  setMatchingKey);
68 FCITX_DEFINE_PROPERTY_PRIVATE(TableOptions, bool, exactMatch, setExactMatch);
69 FCITX_DEFINE_PROPERTY_PRIVATE(TableOptions, bool, learning, setLearning);
70 FCITX_DEFINE_PROPERTY_PRIVATE(TableOptions, int, autoPhraseLength,
71  setAutoPhraseLength);
72 FCITX_DEFINE_PROPERTY_PRIVATE(TableOptions, int, saveAutoPhraseAfter,
73  setSaveAutoPhraseAfter);
74 FCITX_DEFINE_PROPERTY_PRIVATE(TableOptions, std::string, languageCode,
75  setLanguageCode);
76 FCITX_DEFINE_PROPERTY_PRIVATE(TableOptions, std::unordered_set<std::string>,
77  autoRuleSet, setAutoRuleSet);
78 FCITX_DEFINE_PROPERTY_PRIVATE(TableOptions, bool, sortByCodeLength,
79  setSortByCodeLength);
80 } // namespace libime