2
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
4
* Copyright (c) 2010 Yong Sun <mail@yongsun.me>
6
* The contents of this file are subject to the terms of either the GNU Lesser
7
* General Public License Version 2.1 only ("LGPL") or the Common Development and
8
* Distribution License ("CDDL")(collectively, the "License"). You may not use this
9
* file except in compliance with the License. You can obtain a copy of the CDDL at
10
* http://www.opensource.org/licenses/cddl1.php and a copy of the LGPLv2.1 at
11
* http://www.opensource.org/licenses/lgpl-license.php. See the License for the
12
* specific language governing permissions and limitations under the License. When
13
* distributing the software, include this License Header Notice in each file and
14
* include the full text of the License in the License file as well as the
17
* NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION LICENSE
19
* For Covered Software in this distribution, this License shall be governed by the
20
* laws of the State of California (excluding conflict-of-law provisions).
21
* Any litigation relating to this License shall be subject to the jurisdiction of
22
* the Federal Courts of the Northern District of California and the state courts
23
* of the State of California, with venue lying in Santa Clara County, California.
27
* If you wish your version of this file to be governed by only the CDDL or only
28
* the LGPL Version 2.1, indicate your decision by adding "[Contributor]" elects to
29
* include this software in this distribution under the [CDDL or LGPL Version 2.1]
30
* license." If you don't indicate a single choice of license, a recipient has the
31
* option to distribute your version of this file under either the CDDL or the LGPL
32
* Version 2.1, or to extend the choice of license to its licensees as provided
33
* above. However, if you add LGPL Version 2.1 code and therefore, elected the LGPL
34
* Version 2 license, then the option applies only if the new code is made subject
35
* to such option by the copyright holder.
38
#import "imi_options.h"
39
#import "imi_option_keys.h"
40
#import "imi_imkitwin.h"
42
#define CONFIG_GENERAL_PAGE_SIZE "General/PageSize"
44
#define CONFIG_KEYBOARD_PAGE_COMMA "Keyboard/Page/CommaPeriod"
45
#define CONFIG_KEYBOARD_PAGE_MINUS "Keyboard/Page/MinusEquals"
46
#define CONFIG_KEYBOARD_PAGE_BRACKET "Keyboard/Page/Brackets"
47
#define CONFIG_KEYBOARD_PAGE_ARROWS "Keyboard/Page/Arrows"
49
#define CONFIG_KEYBOARD_MISC_CANCELONBSP "Keyboard/Misc/CancelOnBackspace"
52
COMMIT_PINYIN_STRING = 0,
53
COMMIT_CONVERTED_SENTENCE = 1,
57
struct CSessionConfigStore : private CNonCopyable
59
bool m_paging_by_comma_period;
60
bool m_paging_by_minus_equals;
61
bool m_paging_by_brackets;
62
bool m_paging_by_arrows;
63
bool m_cancel_on_backspace;
65
static CSessionConfigStore& instance ()
67
static CSessionConfigStore inst;
72
class CSunpinyinSessionWrapper : public IConfigurable, private CNonCopyable
75
CSunpinyinSessionWrapper (id ic);
76
~CSunpinyinSessionWrapper ();
79
{return m_pv != NULL;}
82
{return isValid()? m_pv->clearIC(): 0;}
84
bool onKeyEvent(const CKeyEvent& event)
85
{return isValid()? m_pv->onKeyEvent(event): false;}
87
void setStatusAttrValue(int key, int value)
88
{if (m_pv) m_pv->setStatusAttrValue(key, value);}
90
bool onConfigChanged (const COptionEvent& event);
92
void switchInputMode (bool isEnglish, ECommitPolicies policy);
94
void windowHandlerTimerCallback ();
97
void apply_configuration();
99
void update_cand_window_size(unsigned);
100
void update_charset_level(unsigned);
102
void update_page_key_minus(bool);
103
void update_page_key_comma(bool);
104
void update_page_key_bracket(bool);
105
void update_page_key_arrows(bool);
106
void update_page_key(unsigned, unsigned, bool);
111
CIMKitWindowHandler *m_wh;
112
CHotkeyProfile *m_hotkey_profile;