author | leseb <leseb> | 2002-06-22 12:21:10 (UTC) |
---|---|---|
committer | leseb <leseb> | 2002-06-22 12:21:10 (UTC) |
commit | 01dce280dcbf2ffd3a3a60001a2876a872440bbb (patch) (side-by-side diff) | |
tree | fb70e4415b14d107f51160f9ce7d6e4bf1505d7b | |
parent | 38dd150a175af073a6df068a930f597c4fa86669 (diff) | |
download | opie-01dce280dcbf2ffd3a3a60001a2876a872440bbb.zip opie-01dce280dcbf2ffd3a3a60001a2876a872440bbb.tar.gz opie-01dce280dcbf2ffd3a3a60001a2876a872440bbb.tar.bz2 |
Fix a bug when config is set to a plugin not available
-rw-r--r-- | core/launcher/inputmethods.cpp | 6 |
1 files changed, 1 insertions, 5 deletions
diff --git a/core/launcher/inputmethods.cpp b/core/launcher/inputmethods.cpp index ac72b02..acd0d59 100644 --- a/core/launcher/inputmethods.cpp +++ b/core/launcher/inputmethods.cpp @@ -169,109 +169,105 @@ void InputMethods::loadInputMethods() inputMethodList.clear(); QString path = QPEApplication::qpeDir() + "/plugins/inputmethods"; QDir dir( path, "lib*.so" ); 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 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"; 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() ) { + method = &inputMethodList[0]; 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(); } void InputMethods::chooseKbd() { QPopupMenu pop( this ); int i = 0; QValueList<InputMethod>::Iterator it; for ( it = inputMethodList.begin(); it != inputMethodList.end(); ++it, i++ ) { pop.insertItem( (*it).interface->name(), i ); if ( method == &(*it) ) pop.setItemChecked( i, TRUE ); } QPoint pt = mapToGlobal(kbdChoice->geometry().topRight()); QSize s = pop.sizeHint(); pt.ry() -= s.height(); pt.rx() -= s.width(); i = pop.exec( pt ); 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() ); } |