author | llornkcor <llornkcor> | 2002-03-16 22:22:53 (UTC) |
---|---|---|
committer | llornkcor <llornkcor> | 2002-03-16 22:22:53 (UTC) |
commit | 152ca79d3a2d0277934eb0c844c15f0170de2044 (patch) (side-by-side diff) | |
tree | 5cf8fd5c17e14a6266912103d125153a3b860bf6 | |
parent | 8111d4bf6281420b7f44ae70c26d2531cfe34401 (diff) | |
download | opie-152ca79d3a2d0277934eb0c844c15f0170de2044.zip opie-152ca79d3a2d0277934eb0c844c15f0170de2044.tar.gz opie-152ca79d3a2d0277934eb0c844c15f0170de2044.tar.bz2 |
added ability to remember the preferred (last used) input method on qpe restart
-rw-r--r-- | core/launcher/inputmethods.cpp | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/core/launcher/inputmethods.cpp b/core/launcher/inputmethods.cpp index 003dc77..da98e07 100644 --- a/core/launcher/inputmethods.cpp +++ b/core/launcher/inputmethods.cpp @@ -9,30 +9,32 @@ ** packaging of this file. ** ** 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/gpl/ for GPL licensing information. ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ +#define QTOPIA_INTERNAL_LANGLIST #include "inputmethods.h" #include <qpe/config.h> #include <qpe/qpeapplication.h> #include <qpe/inputmethodinterface.h> #include <qpe/qlibrary.h> +#include <qpe/global.h> #include <qpopupmenu.h> #include <qpushbutton.h> #include <qtoolbutton.h> #include <qwidget.h> #include <qlayout.h> #include <qtimer.h> #include <qdir.h> #include <stdlib.h> #include <qtranslator.h> #ifdef Q_WS_QWS @@ -169,54 +171,71 @@ void InputMethods::loadInputMethods() QStringList list = dir.entryList(); QStringList::Iterator it; for ( it = list.begin(); it != list.end(); ++it ) { InputMethodInterface *iface = 0; QLibrary *lib = new QLibrary( path + "/" + *it ); if ( lib->queryInterface( IID_InputMethod, (QUnknownInterface**)&iface ) == QS_OK ) { InputMethod input; input.library = lib; input.interface = iface; input.widget = input.interface->inputMethod( 0, inputWidgetStyle ); input.interface->onKeyPress( this, SLOT(sendKey(ushort,ushort,ushort,bool,bool)) ); inputMethodList.append( input ); - QString lang = getenv( "LANG" ); - QTranslator * trans = new QTranslator(qApp); + QString type = (*it).left( (*it).find(".") ); + QStringList langs = Global::languageList(); + for (QStringList::ConstIterator lit = langs.begin(); lit!=langs.end(); ++lit) { + QString lang = *lit; + QTranslator * trans = new QTranslator(qApp); QString tfn = QPEApplication::qpeDir()+"/i18n/"+lang+"/"+type+".qm"; - qDebug("tr for inputmethod: %s", tfn.latin1() ); if ( trans->load( tfn )) qApp->installTranslator( trans ); else delete trans; + } } else { delete lib; } } #else InputMethod input; input.interface = new HandwritingImpl(); input.widget = input.interface->inputMethod( 0, inputWidgetStyle ); input.interface->onKeyPress( this, SLOT(sendKey(ushort,ushort,ushort,bool,bool)) ); inputMethodList.append( input ); input.interface = new KeyboardImpl(); input.widget = input.interface->inputMethod( 0, inputWidgetStyle ); input.interface->onKeyPress( this, SLOT(sendKey(ushort,ushort,ushort,bool,bool)) ); inputMethodList.append( input ); input.interface = new PickboardImpl(); input.widget = input.interface->inputMethod( 0, inputWidgetStyle ); input.interface->onKeyPress( this, SLOT(sendKey(ushort,ushort,ushort,bool,bool)) ); inputMethodList.append( input ); #endif if ( !inputMethodList.isEmpty() ) { + Config cfg("qpe"); + cfg.setGroup("InputMethod"); + QString curMethod = cfg.readEntry("current",""); + if(curMethod.isEmpty()) { method = &inputMethodList[0]; + } else { + int i = 0; + QValueList<InputMethod>::Iterator it; + for ( it = inputMethodList.begin(); it != inputMethodList.end(); ++it, i++ ) { + if((*it).interface->name() == curMethod) { + method = &inputMethodList[i]; +// qDebug(curMethod); + } + } + } kbdButton->setPixmap( *method->interface->icon() ); } if ( !inputMethodList.isEmpty() ) kbdButton->show(); else kbdButton->hide(); if ( inputMethodList.count() > 1 ) kbdChoice->show(); else kbdChoice->hide(); } @@ -240,24 +259,27 @@ void InputMethods::chooseKbd() if ( i == -1 ) return; InputMethod *im = &inputMethodList[i]; chooseMethod(im); } void InputMethods::chooseMethod(InputMethod* im) { if ( im != method ) { if ( method && method->widget->isVisible() ) method->widget->hide(); method = im; + Config cfg("qpe"); + cfg.setGroup("InputMethod"); + cfg.writeEntry("current", method->interface->name()); kbdButton->setPixmap( *method->interface->icon() ); } if ( !kbdButton->isOn() ) kbdButton->setOn( TRUE ); else showKbd( TRUE ); } void InputMethods::showKbd( bool on ) { if ( !method ) |