Author: yamakenz
Date: Fri Sep 21 03:08:58 2007
New Revision: 4994
Added:
trunk/qt/quiminputcontextplugin-qt4/qtextutil.cpp
- copied, changed from r4979, /trunk/qt/immodule-qtextutil.cpp
trunk/qt/quiminputcontextplugin-qt4/qtextutil.h
- copied, changed from r4979, /trunk/qt/immodule-qtextutil.h
Modified:
trunk/qt/quiminputcontextplugin-qt4/quiminputcontext.cpp
trunk/qt/quiminputcontextplugin-qt4/quiminputcontext.h
trunk/qt/quiminputcontextplugin-qt4/quiminputcontextplugin.pro
Log:
* This commit merge most updates of Qt3 immodule (except for X Compose
cooperation)
* quiminputcontext.h
- Merge updates of Qt3 immodule
- (QUimInputContext::reloadUim, QUimInputContext::textUtil,
QUimInputContext::saveContext, QUimInputContext::restoreContext,
QUimInputContext::switch_app_global_im_cb,
QUimInputContext::switch_system_global_im_cb,
QUimInputContext::switch_app_global_im,
QUimInputContext::switch_system_global_im): New function decl
merged from Qt3 immodule
- (QUimInputContext::mTextUtil): New variable merged from Qt3
immodule
- (QUimInputContext::getPreeditString,
QUimInputContext::getPreeditCursorPosition): Change from private
to public to follow Qt3 immodule
* quiminputcontext.cpp
- Merge updates of Qt3 immodule
- (QUimInputContext::QUimInputContext,
QUimInputContext::~QUimInputContext): Merge updates of Qt3 immodule
- (QUimInputContext::createUimContext): Add callbacks for im
switching and text acquisition
- (QUimInputContext::filterEvent): Improve key handling
- (QUimInputContext::setFocus): Remove uim_prop_label_update()
- (QUimInputContext::reloadUim,
QUimInputContext::switch_app_global_im_cb,
QUimInputContext::switch_system_global_im_cb,
QUimInputContext::saveContext, QUimInputContext::restoreContext,
QUimInputContext::switch_app_global_im,
QUimInputContext::switch_system_global_im, unicodeToUKey): New
function merged from Qt3 immodule
* qtextutil.h
- New file copied from qt/immodule-qtextutil.h
* qtextutil.cpp
- New file copied from qt/immodule-qtextutil.cpp
- (QUimTextUtil::acquirePrimaryText,
QUimTextUtil::acquirePrimaryTextInQTextEdit,
QUimTextUtil::acquireSelectionText,
QUimTextUtil::acquireSelectionTextInQTextEdit,
QUimTextUtil::deletePrimaryText,
QUimTextUtil::deletePrimaryTextInQTextEdit,
QUimTextUtil::deleteSelectionText,
QUimTextUtil::deleteSelectionTextInQTextEdit,
QUimTextUtil::QTextEditPositionBackward,
QUimTextUtil::QTextEditPositionForward): Adapt to Qt4 (but Qt4's
QTextEdit is not supported yet)
* quiminputcontextplugin.pro
- Add qtextutil.{h,cpp}
Copied: trunk/qt/quiminputcontextplugin-qt4/qtextutil.cpp (from r4979,
/trunk/qt/immodule-qtextutil.cpp)
==============================================================================
--- /trunk/qt/immodule-qtextutil.cpp (original)
+++ trunk/qt/quiminputcontextplugin-qt4/qtextutil.cpp Fri Sep 21 03:08:58 2007
@@ -30,19 +30,24 @@
SUCH DAMAGE.
*/
-#include <config.h>
+
+// FIXME: Support Qt4 TextEdit
+
+//#include <config.h>
+
#include <stdlib.h>
#include <qwidget.h>
#include <qlineedit.h>
-#include <qtextedit.h>
+//#include <qtextedit.h>
+#include <Q3TextEdit>
#include <qapplication.h>
#include <qclipboard.h>
#include "uim/uim.h"
-#include "immodule-qtextutil.h"
-#include "immodule-quiminputcontext.h"
+#include "qtextutil.h"
+#include "quiminputcontext.h"
QUimTextUtil::QUimTextUtil( QObject *parent )
@@ -128,7 +133,7 @@
if ( mWidget->inherits( "QLineEdit" ) )
err = acquirePrimaryTextInQLineEdit( origin, former_req_len,
latter_req_len, former, latter );
- else if ( mWidget->inherits( "QTextEdit" ) )
+ else if ( mWidget->inherits( "Q3TextEdit" ) )
err = acquirePrimaryTextInQTextEdit( origin, former_req_len,
latter_req_len, former, latter );
else
@@ -246,7 +251,7 @@
int latter_req_len,
char **former, char **latter )
{
- QTextEdit *edit = (QTextEdit *)mWidget;
+ Q3TextEdit *edit = (Q3TextEdit *)mWidget;
QString text;
int i;
@@ -254,7 +259,7 @@
int n_para;
int preedit_len, preedit_cursor_pos;
int sel_start_para, sel_start_index, sel_end_para, sel_end_index;
- TextFormat format;
+ Qt::TextFormat format;
format = edit->textFormat();
edit->setTextFormat( Qt::PlainText );
@@ -415,7 +420,7 @@
if ( mWidget->inherits( "QLineEdit" ) )
err = acquireSelectionTextInQLineEdit( origin, former_req_len,
latter_req_len, former, latter
);
- else if ( mWidget->inherits( "QTextEdit" ) )
+ else if ( mWidget->inherits( "Q3TextEdit" ) )
err = acquireSelectionTextInQTextEdit( origin, former_req_len,
latter_req_len, former, latter
);
else
@@ -485,13 +490,13 @@
int latter_req_len,
char **former, char **latter )
{
- QTextEdit *edit = (QTextEdit *)mWidget;
+ Q3TextEdit *edit = (Q3TextEdit *)mWidget;
QString text;
int len, offset, newline;
int start_para, start_index, end_para, end_index;
int para, index;
bool cursor_at_beginning = false;
- TextFormat format;
+ Qt::TextFormat format;
if ( ! edit->hasSelectedText() )
return -1;
@@ -622,7 +627,7 @@
if ( mWidget->inherits( "QLineEdit" ) )
err = deletePrimaryTextInQLineEdit( origin, former_req_len,
latter_req_len );
- else if ( mWidget->inherits( "QTextEdit" ) )
+ else if ( mWidget->inherits( "Q3TextEdit" ) )
err = deletePrimaryTextInQTextEdit( origin, former_req_len,
latter_req_len );
else
@@ -718,7 +723,7 @@
int former_req_len,
int latter_req_len )
{
- QTextEdit *edit = (QTextEdit *)mWidget;
+ Q3TextEdit *edit = (Q3TextEdit *)mWidget;
int i;
int start_para, start_index, end_para, end_index, para, index;
int n_para;
@@ -836,7 +841,7 @@
if ( mWidget->inherits( "QLineEdit" ) )
err = deleteSelectionTextInQLineEdit( origin, former_req_len,
latter_req_len );
- else if ( mWidget->inherits( "QTextEdit" ) )
+ else if ( mWidget->inherits( "Q3TextEdit" ) )
err = deleteSelectionTextInQTextEdit( origin, former_req_len,
latter_req_len );
else
@@ -900,7 +905,7 @@
int former_req_len,
int latter_req_len )
{
- QTextEdit *edit = (QTextEdit *)mWidget;
+ Q3TextEdit *edit = (Q3TextEdit *)mWidget;
QString text;
int len, newline, i;
int para, index;
@@ -974,7 +979,7 @@
void
QUimTextUtil::QTextEditPositionBackward( int *cursor_para, int *cursor_index )
{
- QTextEdit *edit = (QTextEdit *)mWidget;
+ Q3TextEdit *edit = (Q3TextEdit *)mWidget;
int preedit_len, preedit_cursor_pos;
int para, index;
int current_para, current_index;
@@ -1010,7 +1015,7 @@
void
QUimTextUtil::QTextEditPositionForward( int *cursor_para, int *cursor_index )
{
- QTextEdit *edit = (QTextEdit *)mWidget;
+ Q3TextEdit *edit = (Q3TextEdit *)mWidget;
int n_para = edit->paragraphs();
int preedit_len, preedit_cursor_pos;
int current_para_len;
@@ -1060,5 +1065,3 @@
mIc->restoreContext();
mPreeditSaved = false;
}
-
-#include "immodule-qtextutil.moc"
Copied: trunk/qt/quiminputcontextplugin-qt4/qtextutil.h (from r4979,
/trunk/qt/immodule-qtextutil.h)
==============================================================================
--- /trunk/qt/immodule-qtextutil.h (original)
+++ trunk/qt/quiminputcontextplugin-qt4/qtextutil.h Fri Sep 21 03:08:58 2007
@@ -33,6 +33,11 @@
#ifndef _IMMODULE_QTEXT_UTIL_H_
#define _IMMODULE_QTEXT_UTIL_H_
+#include <QObject>
+
+#include "uim/uim.h"
+
+
class QUimInputContext;
class QUimTextUtil : QObject
Modified: trunk/qt/quiminputcontextplugin-qt4/quiminputcontext.cpp
==============================================================================
--- trunk/qt/quiminputcontextplugin-qt4/quiminputcontext.cpp (original)
+++ trunk/qt/quiminputcontextplugin-qt4/quiminputcontext.cpp Fri Sep 21
03:08:58 2007
@@ -1,7 +1,6 @@
/*
Copyright (C) 2004 Kazuki Ohta <[EMAIL PROTECTED]>
*/
-#include "quiminputcontext.h"
#include <qnamespace.h>
#include <qevent.h>
@@ -16,11 +15,16 @@
#include <ctype.h>
#include <string.h>
+#include "quiminputcontext.h"
+#include "plugin.h"
#include "candidatewindow.h"
+#include "quiminfomanager.h"
#include "qhelpermanager.h"
+#include "qtextutil.h"
#include <uim/uim.h>
#include <uim/uim-scm.h>
+#include <uim/uim-im-switcher.h>
#define DEFAULT_SEPARATOR_STR "|"
@@ -31,6 +35,8 @@
QUimHelperManager * QUimInputContext::m_HelperManager = 0L;
+static int unicodeToUKey(ushort c);
+
// I think that current index-based query API of uim for language and
// input method name is useless and should be redesigned. I will
// suggest the change in future. -- YamaKen 2004-07-28
@@ -40,6 +46,8 @@
candwinIsActive( false ),
m_isComposing( false )
{
+ qDebug( "QUimInputContext()" );
+
contextList.append( this );
// must be initialized before createUimContext() call
@@ -57,17 +65,17 @@
cwin->setQUimInputContext( this );
cwin->hide();
+ mTextUtil = new QUimTextUtil( this );
+
// read configuration
readIMConf();
-
- qDebug( "QUimInputContext()" );
}
QUimInputContext::~QUimInputContext()
{
qDebug( "~QUimInputContext()" );
- contextList.removeAt( contextList.indexOf( this ) );
+ contextList.remove( this );
if ( m_uc )
uim_release_context( m_uc );
@@ -85,7 +93,7 @@
uim_context uc = uim_create_context( this, "UTF-8",
NULL, ( char * ) imname,
- uim_iconv,
+ NULL,
QUimInputContext::commit_cb );
m_HelperManager->checkHelperConnection();
@@ -105,6 +113,15 @@
uim_set_prop_list_update_cb( uc, QUimHelperManager::update_prop_list_cb );
uim_set_prop_label_update_cb( uc, QUimHelperManager::update_prop_label_cb
);
+
+ uim_set_im_switch_request_cb( uc,
+ QUimInputContext::switch_app_global_im_cb,
+
QUimInputContext::switch_system_global_im_cb);
+
+ uim_set_text_acquisition_cb( uc,
+ QUimTextUtil::acquire_text_cb,
+ QUimTextUtil::delete_text_cb);
+
uim_prop_list_update( uc );
return uc;
@@ -145,69 +162,78 @@
}
else
{
- key = qkey;
+ if ( keyevent->state() & Qt::ControlButton &&
+ ( ascii >= 0x01 && ascii <= 0x1a ) )
+ if ( keyevent->state() & Qt::ShiftButton )
+ key = ascii + 0x40;
+ else
+ key = ascii + 0x60;
+ else
+ key = qkey;
+ }
+ }
+ else if ( qkey == Qt::Key_unknown )
+ {
+ QString text = keyevent->text();
+ if ( !text.isNull() )
+ {
+ QChar s = text.at(0);
+ key = unicodeToUKey ( s.unicode() );
+ }
+ else
+ {
+ key = UKey_Other;
}
}
else
{
- switch ( qkey )
+ if ( qkey >= Qt::Key_F1 && qkey <= Qt::Key_F35 )
{
- case Qt::Key_Tab: key = UKey_Tab; break;
- case Qt::Key_Backspace: key = UKey_Backspace; break;
- case Qt::Key_Escape: key = UKey_Escape; break;
- case Qt::Key_Delete: key = UKey_Delete; break;
- case Qt::Key_Return: key = UKey_Return; break;
- case Qt::Key_Left: key = UKey_Left; break;
- case Qt::Key_Up: key = UKey_Up; break;
- case Qt::Key_Right: key = UKey_Right; break;
- case Qt::Key_Down: key = UKey_Down; break;
- // case Qt::Key_Prior: key = UKey_Prior; break;
- // case Qt::Key_Next: key = UKey_Next; break;
- case Qt::Key_Home: key = UKey_Home; break;
- case Qt::Key_End: key = UKey_End; break;
- case Qt::Key_Zenkaku_Hankaku: key = UKey_Zenkaku_Hankaku; break;
- case Qt::Key_Multi_key: key = UKey_Multi_key; break;
-#if defined(_WS_X11_)
- case Qt::Key_Mode_switch: key = UKey_Mode_switch; break;
-#endif
- case Qt::Key_Henkan: key = UKey_Henkan_Mode; break;
- case Qt::Key_Muhenkan: key = UKey_Muhenkan; break;
- case Qt::Key_F1: key = UKey_F1; break;
- case Qt::Key_F2: key = UKey_F2; break;
- case Qt::Key_F3: key = UKey_F3; break;
- case Qt::Key_F4: key = UKey_F4; break;
- case Qt::Key_F5: key = UKey_F5; break;
- case Qt::Key_F6: key = UKey_F6; break;
- case Qt::Key_F7: key = UKey_F7; break;
- case Qt::Key_F8: key = UKey_F8; break;
- case Qt::Key_F9: key = UKey_F9; break;
- case Qt::Key_F10: key = UKey_F10; break;
- case Qt::Key_F11: key = UKey_F11; break;
- case Qt::Key_F12: key = UKey_F12; break;
- case Qt::Key_F13: key = UKey_F13; break;
- case Qt::Key_F14: key = UKey_F14; break;
- case Qt::Key_F15: key = UKey_F15; break;
- case Qt::Key_F16: key = UKey_F16; break;
- case Qt::Key_F17: key = UKey_F17; break;
- case Qt::Key_F18: key = UKey_F18; break;
- case Qt::Key_F19: key = UKey_F19; break;
- case Qt::Key_F20: key = UKey_F20; break;
- case Qt::Key_F21: key = UKey_F21; break;
- case Qt::Key_F22: key = UKey_F22; break;
- case Qt::Key_F23: key = UKey_F23; break;
- case Qt::Key_F24: key = UKey_F24; break;
- case Qt::Key_F25: key = UKey_F25; break;
- case Qt::Key_F26: key = UKey_F26; break;
- case Qt::Key_F27: key = UKey_F27; break;
- case Qt::Key_F28: key = UKey_F28; break;
- case Qt::Key_F29: key = UKey_F29; break;
- case Qt::Key_F30: key = UKey_F30; break;
- case Qt::Key_F31: key = UKey_F31; break;
- case Qt::Key_F32: key = UKey_F32; break;
- case Qt::Key_F33: key = UKey_F33; break;
- case Qt::Key_F34: key = UKey_F34; break;
- case Qt::Key_F35: key = UKey_F35; break;
- default: key = UKey_Other;
+ key = qkey - Qt::Key_F1 + UKey_F1;
+ }
+ else if ( qkey >= Qt::Key_Dead_Grave && qkey <= Qt::Key_Dead_Horn ) {
+ key = qkey - Qt::Key_Dead_Grave + UKey_Dead_Grave;
+ }
+ else if ( qkey >= Qt::Key_Kanji && qkey <= Qt::Key_Eisu_toggle )
+ {
+ key = qkey - Qt::Key_Kanji + UKey_Kanji;
+ }
+ else if ( qkey >= Qt::Key_Hangul && qkey <= Qt::Key_Hangul_Special )
+ {
+ key = qkey - Qt::Key_Hangul + UKey_Hangul;
+ }
+ else
+ {
+ switch ( qkey )
+ {
+ case Qt::Key_Tab: key = UKey_Tab; break;
+ case Qt::Key_BackSpace: key = UKey_Backspace; break;
+ case Qt::Key_Escape: key = UKey_Escape; break;
+ case Qt::Key_Delete: key = UKey_Delete; break;
+ case Qt::Key_Return: key = UKey_Return; break;
+ case Qt::Key_Left: key = UKey_Left; break;
+ case Qt::Key_Up: key = UKey_Up; break;
+ case Qt::Key_Right: key = UKey_Right; break;
+ case Qt::Key_Down: key = UKey_Down; break;
+ case Qt::Key_Prior: key = UKey_Prior; break;
+ case Qt::Key_Next: key = UKey_Next; break;
+ case Qt::Key_Home: key = UKey_Home; break;
+ case Qt::Key_End: key = UKey_End; break;
+ case Qt::Key_Multi_key: key = UKey_Multi_key; break;
+ case Qt::Key_Mode_switch: key = UKey_Mode_switch; break;
+ case Qt::Key_Codeinput: key = UKey_Codeinput; break;
+ case Qt::Key_SingleCandidate: key = UKey_SingleCandidate; break;
+ case Qt::Key_MultipleCandidate: key = UKey_MultipleCandidate;
break;
+ case Qt::Key_PreviousCandidate: key = UKey_PreviousCandidate;
break;
+ case Qt::Key_Shift: key = UKey_Shift_key; break;
+ case Qt::Key_Control: key = UKey_Control_key; break;
+ case Qt::Key_Alt: key = UKey_Alt_key; break;
+ case Qt::Key_Meta: key = UKey_Meta_key; break;
+ case Qt::Key_CapsLock: key = UKey_Caps_Lock; break;
+ case Qt::Key_NumLock: key = UKey_Num_Lock; break;
+ case Qt::Key_ScrollLock: key = UKey_Scroll_Lock; break;
+ default: key = UKey_Other;
+ }
}
}
@@ -254,7 +280,6 @@
uim_helper_client_focus_in( m_uc );
uim_prop_list_update( m_uc );
- uim_prop_label_update( m_uc );
uim_focus_in_context( m_uc );
}
@@ -286,6 +311,26 @@
return focusedInputContext;
}
+void QUimInputContext::reloadUim()
+{
+ QList<QUimInputContext*>::iterator it;
+ QUimInfoManager *infoManager = UimInputContextPlugin::getQUimInfoManager();
+
+ for ( it = contextList.begin(); it != contextList.end(); ++it )
+ {
+ ( *it )->reset();
+ uim_release_context( ( *it )->m_uc );
+ }
+
+ uim_quit();
+ uim_init();
+ infoManager->initUimInfo();
+
+ for ( it = contextList.begin(); it != contextList.end(); ++it )
+ {
+ ( *it )->m_uc = ( *it )->createUimContext( ( *it )->m_imname );
+ }
+}
void QUimInputContext::setMicroFocus( int x, int y, int w, int h, QFont *f )
{
@@ -420,6 +465,18 @@
ic->candidateDeactivate();
}
+void QUimInputContext::switch_app_global_im_cb( void *ptr, const char *name )
+{
+ QUimInputContext *ic = ( QUimInputContext* ) ptr;
+ ic->switch_app_global_im( name );
+}
+
+void QUimInputContext::switch_system_global_im_cb( void *ptr, const char *name
)
+{
+ QUimInputContext *ic = ( QUimInputContext* ) ptr;
+ ic->switch_system_global_im( name );
+}
+
void QUimInputContext::commitString( const QString& str )
{
QInputMethodEvent e;
@@ -468,6 +525,18 @@
}
}
+void QUimInputContext::saveContext()
+{
+ // just send IMEnd and keep preedit string
+ if ( isComposing() )
+ commitString( "" );
+}
+
+void QUimInputContext::restoreContext()
+{
+ updatePreedit();
+}
+
bool QUimInputContext::isPreeditRelocationEnabled()
{
return ( language() == "ja" );
@@ -642,6 +711,29 @@
candwinIsActive = false;
}
+void QUimInputContext::switch_app_global_im( const char *name )
+{
+ QList<QUimInputContext*>::iterator it;
+ QString im_name_sym( "'" );
+
+ im_name_sym += name;
+
+ for ( it = contextList.begin(); it != contextList.end(); ++it )
+ {
+ if ( ( *it ) != this) {
+ uim_switch_im( ( *it )->uimContext(), name );
+ ( *it )->readIMConf();
+ }
+ }
+ uim_prop_update_custom(this->uimContext(),
"custom-preserved-default-im-name", ( const char* ) im_name_sym.toUtf8() );
+}
+
+void QUimInputContext::switch_system_global_im( const char *name )
+{
+ switch_app_global_im( name );
+ QUimHelperManager::send_im_change_whole_desktop( name );
+}
+
void QUimInputContext::readIMConf()
{
char * leftp = uim_scm_symbol_value_str( "candidate-window-position" );
@@ -650,4 +742,80 @@
else
cwin->setAlwaysLeftPosition( false );
free( leftp );
+}
+
+static int unicodeToUKey (ushort c) {
+ int sym;
+
+ switch (c) {
+ case 0x00A5: sym = UKey_Yen; break;
+ case 0x3002: sym = UKey_Kana_Fullstop; break;
+ case 0x300C: sym = UKey_Kana_OpeningBracket; break;
+ case 0x300D: sym = UKey_Kana_ClosingBracket; break;
+ case 0x3001: sym = UKey_Kana_Comma; break;
+ case 0x30FB: sym = UKey_Kana_Conjunctive; break;
+ case 0x30F2: sym = UKey_Kana_WO; break;
+ case 0x30A1: sym = UKey_Kana_a; break;
+ case 0x30A3: sym = UKey_Kana_i; break;
+ case 0x30A5: sym = UKey_Kana_u; break;
+ case 0x30A7: sym = UKey_Kana_e; break;
+ case 0x30A9: sym = UKey_Kana_o; break;
+ case 0x30E3: sym = UKey_Kana_ya; break;
+ case 0x30E5: sym = UKey_Kana_yu; break;
+ case 0x30E7: sym = UKey_Kana_yo; break;
+ case 0x30C3: sym = UKey_Kana_tsu; break;
+ case 0x30FC: sym = UKey_Kana_ProlongedSound; break;
+ case 0x30A2: sym = UKey_Kana_A; break;
+ case 0x30A4: sym = UKey_Kana_I; break;
+ case 0x30A6: sym = UKey_Kana_U; break;
+ case 0x30A8: sym = UKey_Kana_E; break;
+ case 0x30AA: sym = UKey_Kana_O; break;
+ case 0x30AB: sym = UKey_Kana_KA; break;
+ case 0x30AD: sym = UKey_Kana_KI; break;
+ case 0x30AF: sym = UKey_Kana_KU; break;
+ case 0x30B1: sym = UKey_Kana_KE; break;
+ case 0x30B3: sym = UKey_Kana_KO; break;
+ case 0x30B5: sym = UKey_Kana_SA; break;
+ case 0x30B7: sym = UKey_Kana_SHI; break;
+ case 0x30B9: sym = UKey_Kana_SU; break;
+ case 0x30BB: sym = UKey_Kana_SE; break;
+ case 0x30BD: sym = UKey_Kana_SO; break;
+ case 0x30BF: sym = UKey_Kana_TA; break;
+ case 0x30C1: sym = UKey_Kana_CHI; break;
+ case 0x30C4: sym = UKey_Kana_TSU; break;
+ case 0x30C6: sym = UKey_Kana_TE; break;
+ case 0x30C8: sym = UKey_Kana_TO; break;
+ case 0x30CA: sym = UKey_Kana_NA; break;
+ case 0x30CB: sym = UKey_Kana_NI; break;
+ case 0x30CC: sym = UKey_Kana_NU; break;
+ case 0x30CD: sym = UKey_Kana_NE; break;
+ case 0x30CE: sym = UKey_Kana_NO; break;
+ case 0x30CF: sym = UKey_Kana_HA; break;
+ case 0x30D2: sym = UKey_Kana_HI; break;
+ case 0x30D5: sym = UKey_Kana_FU; break;
+ case 0x30D8: sym = UKey_Kana_HE; break;
+ case 0x30DB: sym = UKey_Kana_HO; break;
+ case 0x30DE: sym = UKey_Kana_MA; break;
+ case 0x30DF: sym = UKey_Kana_MI; break;
+ case 0x30E0: sym = UKey_Kana_MU; break;
+ case 0x30E1: sym = UKey_Kana_ME; break;
+ case 0x30E2: sym = UKey_Kana_MO; break;
+ case 0x30E4: sym = UKey_Kana_YA; break;
+ case 0x30E6: sym = UKey_Kana_YU; break;
+ case 0x30E8: sym = UKey_Kana_YO; break;
+ case 0x30E9: sym = UKey_Kana_RA; break;
+ case 0x30EA: sym = UKey_Kana_RI; break;
+ case 0x30EB: sym = UKey_Kana_RU; break;
+ case 0x30EC: sym = UKey_Kana_RE; break;
+ case 0x30ED: sym = UKey_Kana_RO; break;
+ case 0x30EF: sym = UKey_Kana_WA; break;
+ case 0x30F3: sym = UKey_Kana_N; break;
+ case 0x309B: sym = UKey_Kana_VoicedSound; break;
+ case 0x309C: sym = UKey_Kana_SemivoicedSound; break;
+ default:
+ sym = UKey_Other;
+ break;
+ }
+
+ return sym;
}
Modified: trunk/qt/quiminputcontextplugin-qt4/quiminputcontext.h
==============================================================================
--- trunk/qt/quiminputcontextplugin-qt4/quiminputcontext.h (original)
+++ trunk/qt/quiminputcontextplugin-qt4/quiminputcontext.h Fri Sep 21
03:08:58 2007
@@ -13,6 +13,7 @@
class CandidateWindow;
class QUimHelperManager;
+class QUimTextUtil;
class PreeditSegment
{
@@ -49,11 +50,20 @@
uim_context uimContext() { return m_uc; }
static QUimInputContext *focusedIC();
+ static void reloadUim();
void commitString( const QString& str );
void readIMConf();
+ QUimTextUtil *textUtil() { return mTextUtil; }
+
+ QString getPreeditString();
+ int getPreeditCursorPosition();
+
+ void saveContext();
+ void restoreContext();
+
protected:
uim_context createUimContext( const char *imname );
virtual bool isPreeditPreservationEnabled(); // not a QInputContext func
@@ -62,8 +72,6 @@
private:
void setMicroFocus( int x, int y, int w, int h, QFont *f = 0 );
- QString getPreeditString();
- int getPreeditCursorPosition();
int getPreeditSelectionLength();
QList<QInputMethodEvent::Attribute> getPreeditAttrs();
@@ -78,6 +86,9 @@
static void cand_select_cb( void *ptr, int index );
static void cand_shift_page_cb( void* ptr, int index );
static void cand_deactivate_cb( void *ptr );
+ //imsw
+ static void switch_app_global_im_cb( void *ptr, const char *str );
+ static void switch_system_global_im_cb( void *ptr, const char *str );
/* real functions for callbacks (correspond order) */
//preedit
void clearPreedit();
@@ -87,6 +98,11 @@
void candidateActivate( int nr, int displayLimit );
void candidateSelect( int index );
void candidateDeactivate();
+ //imsw
+ void switch_app_global_im( const char *str );
+ void switch_system_global_im( const char *str );
+
+ QUimTextUtil *mTextUtil;
protected:
QString m_imname;
Modified: trunk/qt/quiminputcontextplugin-qt4/quiminputcontextplugin.pro
==============================================================================
--- trunk/qt/quiminputcontextplugin-qt4/quiminputcontextplugin.pro
(original)
+++ trunk/qt/quiminputcontextplugin-qt4/quiminputcontextplugin.pro Fri Sep
21 03:08:58 2007
@@ -15,13 +15,15 @@
plugin.h \
candidatewindow.h \
subwindow.h \
- quiminfomanager.h
+ quiminfomanager.h \
+ qtextutil.h
SOURCES += plugin.cpp \
qhelpermanager.cpp \
quiminputcontext.cpp \
candidatewindow.cpp \
subwindow.cpp \
- quiminfomanager.cpp
+ quiminfomanager.cpp \
+ qtextutil.cpp
TARGET = uiminputcontextplugin