-rw-r--r-- | core/launcher/startmenu.cpp | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/core/launcher/startmenu.cpp b/core/launcher/startmenu.cpp index 917f4c1..7373ea8 100644 --- a/core/launcher/startmenu.cpp +++ b/core/launcher/startmenu.cpp @@ -291,86 +291,87 @@ void StartMenu::clearApplets() applet-> iface-> release(); applet-> library-> unload(); delete applet-> library; } applets.clear(); } void StartMenu::loadApplets() { Config cfg( "StartMenu" ); cfg.setGroup( "Applets" ); // SafeMode causes too much problems, so we disable it for now -- // maybe we should reenable it for OPIE 1.0 - sandman 26.09.02 bool safe = false; //cfg.readBoolEntry("SafeMode",FALSE); if ( safe && !safety_tid ) return; cfg.writeEntry("SafeMode",TRUE); cfg.write(); QStringList exclude = cfg.readListEntry( "ExcludeApplets", ',' ); + QString lang = getenv( "LANG" ); QString path = QPEApplication::qpeDir() + "/plugins/applets"; QDir dir( path, "lib*.so" ); QStringList list = dir.entryList(); QStringList::Iterator it; int napplets=0; MenuApplet* *xapplets = new MenuApplet*[list.count()]; for ( it = list.begin(); it != list.end(); ++it ) { if ( exclude.find( *it ) != exclude.end() ) continue; MenuAppletInterface *iface = 0; QLibrary *lib = new QLibrary( path + "/" + *it ); if (( lib->queryInterface( IID_MenuApplet, (QUnknownInterface**)&iface ) == QS_OK ) && iface ) { MenuApplet *applet = new MenuApplet; xapplets[napplets++] = applet; applet->library = lib; applet->iface = iface; + + QTranslator *trans = new QTranslator(qApp); + QString type = (*it).left( (*it).find(".") ); + QString tfn = QPEApplication::qpeDir()+"/i18n/"+lang+"/"+type+".qm"; + if ( trans->load( tfn )) + qApp->installTranslator( trans ); + else + delete trans; } else { exclude += *it; delete lib; } } cfg.writeEntry( "ExcludeApplets", exclude, ',' ); qsort(xapplets,napplets,sizeof(applets[0]),compareAppletPositions); if ( sepId ) launchMenu-> removeItem ( sepId ); sepId = ( launchMenu-> count ( )) ? launchMenu-> insertSeparator ( ) : 0; while (napplets--) { MenuApplet *applet = xapplets[napplets]; - QString lang = getenv( "LANG" ); - QTranslator * trans = new QTranslator(qApp); - QString type = (*it).left( (*it).find(".") ); - QString tfn = QPEApplication::qpeDir()+"/i18n/"+lang+"/"+type+".qm"; - if ( trans->load( tfn )) - qApp->installTranslator( trans ); - else - delete trans; applet-> popup = applet-> iface-> popup ( this ); if ( applet-> popup ) applet-> id = launchMenu-> insertItem ( applet-> iface-> icon ( ), applet-> iface-> text ( ), applet-> popup ); else applet-> id = launchMenu-> insertItem ( applet-> iface-> icon ( ), applet-> iface-> text ( ) ); applets.insert ( applet-> id, new MenuApplet(*applet)); } delete xapplets; if ( sepId && ( launchMenu-> idAt ( launchMenu-> count ( ) - 1 ) == sepId )) { // no applets launchMenu-> removeItem ( sepId ); sepId = 0; } if ( !launchMenu-> count ( )) // if we don't do this QPopupMenu will insert a dummy Separator, which won't go away later sepId = launchMenu-> insertSeparator ( ); if ( !safety_tid ) safety_tid = startTimer(2000); // TT has 5000, but this is a PITA for a developer ;) (sandman) } void StartMenu::timerEvent(QTimerEvent* e) { |