summaryrefslogtreecommitdiff
authorleseb <leseb>2002-06-22 12:21:10 (UTC)
committer leseb <leseb>2002-06-22 12:21:10 (UTC)
commit01dce280dcbf2ffd3a3a60001a2876a872440bbb (patch) (side-by-side diff)
treefb70e4415b14d107f51160f9ce7d6e4bf1505d7b
parent38dd150a175af073a6df068a930f597c4fa86669 (diff)
downloadopie-01dce280dcbf2ffd3a3a60001a2876a872440bbb.zip
opie-01dce280dcbf2ffd3a3a60001a2876a872440bbb.tar.gz
opie-01dce280dcbf2ffd3a3a60001a2876a872440bbb.tar.bz2
Fix a bug when config is set to a plugin not available
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--core/launcher/inputmethods.cpp6
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() );
}