Diffstat (limited to 'core/settings/launcher/taskbarsettings.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | core/settings/launcher/taskbarsettings.cpp | 68 |
1 files changed, 38 insertions, 30 deletions
diff --git a/core/settings/launcher/taskbarsettings.cpp b/core/settings/launcher/taskbarsettings.cpp index b5c03c8..5bc5ad2 100644 --- a/core/settings/launcher/taskbarsettings.cpp +++ b/core/settings/launcher/taskbarsettings.cpp @@ -31,111 +31,119 @@ #include <qpe/config.h> #include <qpe/qlibrary.h> #include <qpe/qpeapplication.h> #include <qpe/taskbarappletinterface.h> #include <qpe/qcopenvelope_qws.h> #include <qdir.h> #include <qlistview.h> #include <qcheckbox.h> #include <qheader.h> #include <qlayout.h> #include <qlabel.h> #include <qwhatsthis.h> #include <stdlib.h> TaskbarSettings::TaskbarSettings ( QWidget *parent, const char *name ) : QWidget ( parent, name ) { m_applets_changed = false; QBoxLayout *lay = new QVBoxLayout ( this, 4, 4 ); - QLabel *l = new QLabel ( tr( "Load applets:" ), this ); + QLabel *l = new QLabel ( tr( "Load applets in Taskbar:" ), this ); lay-> addWidget ( l ); m_list = new QListView ( this ); m_list-> addColumn ( "foobar" ); m_list-> header ( )-> hide ( ); lay-> addWidget ( m_list ); QWhatsThis::add ( m_list, tr( "Check the applets that you want displayed in the Taskbar." )); connect ( m_list, SIGNAL( clicked ( QListViewItem * )), this, SLOT( appletChanged ( ))); init ( ); } void TaskbarSettings::init ( ) { Config cfg ( "Taskbar" ); cfg. setGroup ( "Applets" ); QStringList exclude = cfg. readListEntry ( "ExcludeApplets", ',' ); QString path = QPEApplication::qpeDir ( ) + "/plugins/applets"; QStringList list = QDir ( path, "lib*.so" ). entryList ( ); for ( QStringList::Iterator it = list. begin ( ); it != list. end ( ); ++it ) { QString name; QPixmap icon; TaskbarNamedAppletInterface *iface = 0; QLibrary *lib = new QLibrary ( path + "/" + *it ); lib-> queryInterface ( IID_TaskbarNamedApplet, (QUnknownInterface**) &iface ); - if ( iface ) { - - 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; - name = iface-> name ( ); - icon = iface-> icon ( ); + if ( iface ) { + 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; + name = iface-> name ( ); + icon = iface-> icon ( ); iface-> release ( ); - lib-> unload ( ); - } else { - delete lib; - name = (*it). mid ( 3 ); - int sep = name. find( ".so" ); - if ( sep > 0 ) - name. truncate ( sep ); - sep = name. find ( "applet" ); - if ( sep == (int) name.length ( ) - 6 ) - name. truncate ( sep ); - name[0] = name[0]. upper ( ); } - QCheckListItem *item; - item = new QCheckListItem ( m_list, name, QCheckListItem::CheckBox ); - if ( !icon. isNull ( )) - item-> setPixmap ( 0, icon ); - item-> setOn ( exclude. find ( *it ) == exclude. end ( )); - m_applets [*it] = item; + if ( !iface ) { + lib-> queryInterface ( IID_TaskbarApplet, (QUnknownInterface**) &iface ); + + if ( iface ) { + name = (*it). mid ( 3 ); + int sep = name. find( ".so" ); + if ( sep > 0 ) + name. truncate ( sep ); + sep = name. find ( "applet" ); + if ( sep == (int) name.length ( ) - 6 ) + name. truncate ( sep ); + name[0] = name[0]. upper ( ); + iface-> release ( ); + } + } + + if ( iface ) { + QCheckListItem *item; + item = new QCheckListItem ( m_list, name, QCheckListItem::CheckBox ); + if ( !icon. isNull ( )) + item-> setPixmap ( 0, icon ); + item-> setOn ( exclude. find ( *it ) == exclude. end ( )); + m_applets [*it] = item; + } + lib-> unload ( ); + delete lib; } } void TaskbarSettings::appletChanged() { m_applets_changed = true; } void TaskbarSettings::accept ( ) { Config cfg ( "Taskbar" ); cfg. setGroup ( "Applets" ); if ( m_applets_changed ) { QStringList exclude; QMap <QString, QCheckListItem *>::Iterator it; for ( it = m_applets. begin ( ); it != m_applets. end ( ); ++it ) { if ( !(*it)-> isOn ( )) exclude << it. key ( ); } cfg. writeEntry ( "ExcludeApplets", exclude, ',' ); } cfg. writeEntry ( "SafeMode", false ); cfg. write ( ); |