summaryrefslogtreecommitdiff
authorllornkcor <llornkcor>2002-03-16 22:22:53 (UTC)
committer llornkcor <llornkcor>2002-03-16 22:22:53 (UTC)
commit152ca79d3a2d0277934eb0c844c15f0170de2044 (patch) (side-by-side diff)
tree5cf8fd5c17e14a6266912103d125153a3b860bf6
parent8111d4bf6281420b7f44ae70c26d2531cfe34401 (diff)
downloadopie-152ca79d3a2d0277934eb0c844c15f0170de2044.zip
opie-152ca79d3a2d0277934eb0c844c15f0170de2044.tar.gz
opie-152ca79d3a2d0277934eb0c844c15f0170de2044.tar.bz2
added ability to remember the preferred (last used) input method on qpe restart
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--core/launcher/inputmethods.cpp28
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 )