13
13
*/
14
14
#include " cskk.h"
15
15
#include < cstdlib>
16
+ #include < fcitx-config/iniparser.h>
16
17
#include < fcitx-utils/log.h>
17
18
#include < fcitx/addonmanager.h>
18
19
#include < fcitx/inputpanel.h>
@@ -32,7 +33,7 @@ FCITX_DEFINE_LOG_CATEGORY(cskk_log, "cskk");
32
33
/* ******************************************************************************
33
34
* CskkEngine
34
35
******************************************************************************/
35
-
36
+ const string CskkEngine::config_file_path = " conf/fcitx5-cskk " ;
36
37
CskkEngine::CskkEngine (Instance *instance)
37
38
: instance_{instance}, factory_([this ](InputContext &ic) {
38
39
auto newCskkContext = new FcitxCskkContext (this , &ic);
@@ -49,7 +50,7 @@ void CskkEngine::keyEvent(const InputMethodEntry &, KeyEvent &keyEvent) {
49
50
auto ic = keyEvent.inputContext ();
50
51
auto context = ic->propertyFor (&factory_);
51
52
context->keyEvent (keyEvent);
52
- CSKK_DEBUG () << " CSKK Engine keyEvent end" ;
53
+ CSKK_DEBUG () << " Engine keyEvent end" ;
53
54
}
54
55
void CskkEngine::save () {}
55
56
void CskkEngine::activate (const InputMethodEntry &, InputContextEvent &) {}
@@ -69,10 +70,13 @@ void CskkEngine::reset(const InputMethodEntry &entry,
69
70
void CskkEngine::setConfig (const RawConfig &config) {
70
71
CSKK_DEBUG () << " Cskk setconfig" ;
71
72
config_.load (config, true );
72
- // TODO: Save. Any file name convention etc?
73
+ safeSaveAsIni (config_, CskkEngine::config_file_path);
74
+ reloadConfig ();
73
75
}
74
76
void CskkEngine::reloadConfig () {
75
77
CSKK_DEBUG () << " Cskkengine reload config" ;
78
+ readAsIni (config_, CskkEngine::config_file_path);
79
+
76
80
loadDictionary ();
77
81
if (factory_.registered ()) {
78
82
instance_->inputContextManager ().foreach ([this ](InputContext *ic) {
@@ -175,6 +179,7 @@ void CskkEngine::freeDictionaries() {
175
179
FcitxCskkContext::FcitxCskkContext (CskkEngine *engine, InputContext *ic)
176
180
: context_(skk_context_new(nullptr , 0 )), ic_(ic), engine_(engine) {
177
181
CSKK_DEBUG () << " Cskk context new" ;
182
+ skk_context_set_input_mode (context_, *engine_->config ().inputMode );
178
183
}
179
184
FcitxCskkContext::~FcitxCskkContext () = default ;
180
185
void FcitxCskkContext::keyEvent (KeyEvent &keyEvent) {
@@ -235,6 +240,11 @@ void FcitxCskkContext::applyConfig() {
235
240
skk_context_set_dictionaries (context_, engine_->dictionaries ().data (),
236
241
engine_->dictionaries ().size ());
237
242
}
243
+ void FcitxCskkContext::copyTo (InputContextProperty *context) {
244
+ auto otherContext = dynamic_cast <FcitxCskkContext *>(context);
245
+ skk_context_set_input_mode (otherContext->context (),
246
+ skk_context_get_input_mode (context_));
247
+ }
238
248
239
249
/* ******************************************************************************
240
250
* CskkFactory
0 commit comments