Change LICENSE to GPL v2
[platform/core/uifw/ise-engine-unikey.git] / src / im_engine.h
1 /**
2    Scim-Unikey Input Method
3
4    Copyright (C) 2008-2009 Ubuntu-VN <http://www.ubuntu-vn.org>
5    Author: Le Quoc Tuan <mr.lequoctuan@gmail.com>
6    Home: http://scim-unikey.googlecode.com
7    License: GNU GENERAL PUBLIC LICENSE v2
8 */
9
10 #if !defined (__SCIM_UNIKEY_IMENGINE_H)
11 #define __SCIM_UNIKEY_IMENGINE_H
12
13 #include "unikey.h"
14
15 using namespace scim;
16
17 class UnikeyFactory : public IMEngineFactoryBase
18 {
19 public:
20     UnikeyFactory(int id);
21     virtual ~UnikeyFactory();
22
23     virtual WideString  get_name() const;
24     virtual WideString  get_authors() const;
25     virtual WideString  get_credits() const;
26     virtual WideString  get_help() const;
27     virtual String      get_uuid() const;
28     virtual String      get_icon_file() const;
29
30     virtual IMEngineInstancePointer create_instance(const String& encoding, int id = -1);
31
32 private:
33     int m_id;
34 };
35
36
37 class UnikeyInstance : public IMEngineInstanceBase
38 {
39     friend class UnikeyInstancePreedit;
40     friend class UnikeyInstanceClassic;
41
42 public:
43     UnikeyInstance(UnikeyFactory *factory, const String& encoding, int id);
44     ~UnikeyInstance();
45
46     virtual void reset();
47     virtual void focus_in();
48     virtual void trigger_property(const String &property);
49
50 private:
51     PropertyList CreatePropertyList();
52
53     int m_im;                             // input method
54     int m_oc;                             // output charset
55     UnikeyOptions m_ukopt;                // Unikey Options
56     bool m_process_w_AtBeginWord;         // process W at Begin Word?
57     bool m_lastkey_with_shift;            // last press key with modifier is shift
58 };
59
60
61 class UnikeyInstancePreedit : public UnikeyInstance
62 {
63 public:
64     UnikeyInstancePreedit(UnikeyFactory *factory, const String& encoding, int id = -1);
65     ~UnikeyInstancePreedit();
66
67     virtual void reset();
68     virtual void focus_in();
69     virtual void focus_out();
70     virtual bool process_key_event(const KeyEvent& key);
71     virtual void trigger_property(const String &property);
72
73 private:
74     bool unikey_process_key_event(const KeyEvent& key);
75     void unikey_update_preedit_string(const WideString s, const bool visible);
76     PropertyList CreatePropertyList();
77
78     WideString m_preeditstring;           // store PreEdit String
79     bool m_auto_commit;                   // auto commit?
80 };
81
82
83 class UnikeyInstanceClassic : public UnikeyInstance
84 {
85 public:
86     UnikeyInstanceClassic(UnikeyFactory *factory, const String& encoding, int id = -1);
87     ~UnikeyInstanceClassic();
88
89     virtual void reset();
90     virtual void focus_in();
91     virtual void focus_out();
92     virtual bool process_key_event(const KeyEvent& key);
93     virtual void trigger_property(const String &property);
94
95 private:
96     bool unikey_process_key_event(const KeyEvent& key);
97     void unikey_send_backspace(int nBackspace);
98     void unikey_commit_key_event(const KeyEvent& key);
99     PropertyList CreatePropertyList();
100 };
101
102 #endif
103