diff options
Diffstat (limited to 'tqtinterface/qt4/plugins/src/inputmethods/simple/tqsimpleinputcontext.cpp')
-rw-r--r-- | tqtinterface/qt4/plugins/src/inputmethods/simple/tqsimpleinputcontext.cpp | 285 |
1 files changed, 0 insertions, 285 deletions
diff --git a/tqtinterface/qt4/plugins/src/inputmethods/simple/tqsimpleinputcontext.cpp b/tqtinterface/qt4/plugins/src/inputmethods/simple/tqsimpleinputcontext.cpp deleted file mode 100644 index d717d74..0000000 --- a/tqtinterface/qt4/plugins/src/inputmethods/simple/tqsimpleinputcontext.cpp +++ /dev/null @@ -1,285 +0,0 @@ -/**************************************************************************** -** $Id$ -** -** Implementation of TQSimpleInputContext class -** -** Copyright (C) 2004 immodule for TQt Project. All rights reserved. -** -** This file is written to contribute to Trolltech AS under their own -** licence. You may use this file under your TQt license. Following -** description is copied from their original file headers. Contact -** [email protected] if any conditions of this licensing are -** not clear to you. -** -** -** This file is part of the input method module of the TQt GUI Toolkit. -** -** This file may be distributed under the terms of the Q Public License -** as defined by Trolltech AS of Norway and appearing in the file -** LICENSE.TQPL included in the packaging of this file. -** -** This file may be distributed and/or modified under the terms of the -** GNU General Public License version 2 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. -** -** Licensees holding valid TQt Enterprise Edition or TQt Professional Edition -** licenses may use this file in accordance with the TQt Commercial License -** Agreement provided with the Software. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** See http://www.trolltech.com/pricing.html or email [email protected] for -** information about TQt Commercial License Agreements. -** See http://www.trolltech.com/qpl/ for TQPL licensing information. -** See http://www.trolltech.com/gpl/ for GPL licensing information. -** -** Contact [email protected] if any conditions of this licensing are -** not clear to you. -** -**********************************************************************/ - -#include "tqsimpleinputcontext.h" - -#include <tqnamespace.h> -#include <tqevent.h> -#include <tqglobal.h> -#include <algorithm> - -static const int ignoreKeys[] = { - TQt::Key_Shift, - TQt::Key_Control, - TQt::Key_Meta, - TQt::Key_Alt, - TQt::Key_CapsLock, - TQt::Key_Super_L, - TQt::Key_Super_R, - TQt::Key_Hyper_L, - TQt::Key_Hyper_R, - TQt::Key_Mode_switch -}; - -static const int composingKeys[] = { - TQt::Key_Multi_key, - TQt::Key_Dead_Grave, - TQt::Key_Dead_Acute, - TQt::Key_Dead_Circumflex, - TQt::Key_Dead_Tilde, - TQt::Key_Dead_Macron, - TQt::Key_Dead_Breve, - TQt::Key_Dead_Abovedot, - TQt::Key_Dead_Diaeresis, - TQt::Key_Dead_Abovering, - TQt::Key_Dead_Doubleacute, - TQt::Key_Dead_Caron, - TQt::Key_Dead_Cedilla, - TQt::Key_Dead_Ogonek, - TQt::Key_Dead_Iota, - TQt::Key_Dead_Voiced_Sound, - TQt::Key_Dead_Semivoiced_Sound, - TQt::Key_Dead_Belowdot, - TQt::Key_Dead_Hook, - TQt::Key_Dead_Horn -}; - -class Cmp -{ -public: - bool operator () (const TQComposeTableElement &lhs, const TQComposeTableElement &rhs) const { - for ( size_t i=0; i < TQT_KEYSEQUENCE_MAX_LEN; i++ ) { - if ( lhs.keys[i] < rhs.keys[i] ) return TRUE; - else - if ( lhs.keys[i] > rhs.keys[i] ) return FALSE; - } - return FALSE; - } - - bool operator () (const TQComposeTableElement &lhs, const uint rhs[TQT_KEYSEQUENCE_MAX_LEN]) const { - for ( size_t i=0; i < TQT_KEYSEQUENCE_MAX_LEN; i++ ) { - if ( lhs.keys[i] < rhs[i] ) return TRUE; - else - if ( lhs.keys[i] > rhs[i] ) return FALSE; - } - return FALSE; - } -}; - -TQSimpleInputContext::TQSimpleInputContext() - : TQInputContext() -{ - clearComposeBuffer(); -} - -TQSimpleInputContext::~TQSimpleInputContext() -{ - clearComposeBuffer(); -} - -bool TQSimpleInputContext::filterEvent( const TQEvent *event ) -{ - if ( event->type() != TQEvent::KeyPress ) - return FALSE; - - TQKeyEvent *keyevent = (TQKeyEvent *)event; - int keyval = keyevent->key(); - int val = 0; - - if ( isIgnoreKeys( keyval ) ) - return FALSE; - - if ( isComposingKeys( keyval ) ) { - // If composing keys are pressed, use keyval directly - val = UNITIZE( keyval ); - } else { - TQString text = keyevent->text(); - if ( text.isEmpty() ) - return FALSE; - - // If not composing keys are pressed, use the character's tqunicode value - // NOTE : The contents of TQKeyEvent::text() is restricted to - // only one character. See description of - // TQInputContext::filterEvent() about key compression. - val = text[0].tqunicode(); - // qDebug( "str = %s", (const char*)keyevent->text().local8Bit() ); - } - - // Store value - int nCompose = 0; - while ( composeBuffer[nCompose] != 0 && nCompose < TQT_KEYSEQUENCE_MAX_LEN ) - nCompose++; - - if ( nCompose == TQT_KEYSEQUENCE_MAX_LEN ) { - clearComposeBuffer(); - nCompose = 0; - } - - composeBuffer[nCompose] = val; - - // check sequence - if( checkComposeTable( composeBuffer, &defaultComposeTable ) ) - return TRUE; - - return FALSE; -} - -void TQSimpleInputContext::setFocus() -{ - //qDebug( "TQSimpleInputContext: %p->setFocus(), tqfocusWidget()=%p", - //this, tqfocusWidget() ); -} - -void TQSimpleInputContext::unsetFocus() -{ - //qDebug( "TQSimpleInputContext: %p->unsetFocus(), tqfocusWidget()=%p", - //this, tqfocusWidget() ); - reset(); -} - -void TQSimpleInputContext::setMicroFocus( int x, int y, int w, int h, TQFont *f ) -{ -} - -void TQSimpleInputContext::mouseHandler( int x, TQEvent::Type type, - TQt::ButtonState button, - TQt::ButtonState state ) -{ - switch ( type ) { - case TQEvent::MouseButtonPress: - case TQEvent::MouseButtonRelease: - case TQEvent::MouseButtonDblClick: - case TQEvent::MouseMove: - // qDebug( "TQSimpleInputContext::mouseHandler: " - // "x=%d, type=%d, button=%d, state=%d", x, type, button, state ); - break; - default: - break; - } -} - - -void TQSimpleInputContext::reset() -{ - clearComposeBuffer(); - TQInputContext::reset(); -} - -TQString TQSimpleInputContext::identifierName() -{ - return "simple"; -} - -TQString TQSimpleInputContext::language() -{ - return ""; // FIXME -} - -bool TQSimpleInputContext::isIgnoreKeys( int keyval ) -{ - for ( uint i = 0; i < (sizeof(ignoreKeys)/sizeof(ignoreKeys[0])); i++ ) - if ( keyval == ignoreKeys[i] ) - return TRUE; - - return FALSE; -} - -bool TQSimpleInputContext::isComposingKeys( int keyval ) -{ - for ( uint i = 0; i < (sizeof(composingKeys)/sizeof(composingKeys[0])); i++ ) - if ( keyval == composingKeys[i] ) - return TRUE; - - return FALSE; -} - -bool TQSimpleInputContext::checkComposeTable( uint* composeBuffer, const TQComposeTable *composeTable ) -{ - const TQComposeTableElement *p = std::lower_bound( composeTable->data, - composeTable->data + composeTable->size, - composeBuffer, - Cmp() ); - - // no entries were found - if ( p == composeTable->data + composeTable->size ) { - // qDebug( "no match" ); - clearComposeBuffer(); - return FALSE; - } - - // check if compose buffer is matched - for ( int i=0; i < TQT_KEYSEQUENCE_MAX_LEN; i++ ) { - - // check if partial match - if ( composeBuffer[i] == 0 && p->keys[i] ) { - // qDebug("partial match"); - return TRUE; - } - - if ( composeBuffer[i] != p->keys[i] ) { - // qDebug("different entry"); - clearComposeBuffer(); - return i!=0; - } - } - - // qDebug("match exactly"); - - // match exactly - commitChar( p->value ); - clearComposeBuffer(); - - return TRUE; -} - -void TQSimpleInputContext::commitChar( uint c ) -{ - sendIMEvent( TQEvent::IMStart ); - sendIMEvent( TQEvent::IMEnd, TQString(TQChar(c)) ); -} - -void TQSimpleInputContext::clearComposeBuffer(void) -{ - for ( uint i=0; i < (sizeof(composeBuffer)/sizeof(int)); i++ ) - composeBuffer[i] = 0; -} - |