summaryrefslogtreecommitdiffstats
path: root/tqtinterface/qt4/plugins/src/inputmethods/simple/tqsimpleinputcontext.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tqtinterface/qt4/plugins/src/inputmethods/simple/tqsimpleinputcontext.cpp')
-rw-r--r--tqtinterface/qt4/plugins/src/inputmethods/simple/tqsimpleinputcontext.cpp285
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
-** immodule-qt@freedesktop.org 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 sales@trolltech.com 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 info@trolltech.com 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;
-}
-