summaryrefslogtreecommitdiff
path: root/core
Side-by-side diff
Diffstat (limited to 'core') (more/less context) (ignore whitespace changes)
-rw-r--r--core/settings/launcher/menusettings.cpp159
-rw-r--r--core/settings/launcher/menusettings.h60
2 files changed, 219 insertions, 0 deletions
diff --git a/core/settings/launcher/menusettings.cpp b/core/settings/launcher/menusettings.cpp
new file mode 100644
index 0000000..8d363fa
--- a/dev/null
+++ b/core/settings/launcher/menusettings.cpp
@@ -0,0 +1,159 @@
+/*
+                This file is part of the OPIE Project
+ =. Copyright (c) 2002 Trolltech AS <info@trolltech.com>
+             .=l. Copyright (c) 2002 Robert Griebl <sandman@handhelds.org>
+           .>+-=
+ _;:,     .>    :=|. This file is free software; you can
+.> <`_,   >  .   <= redistribute it and/or modify it under
+:`=1 )Y*s>-.--   : the terms of the GNU General Public
+.="- .-=="i,     .._ License as published by the Free Software
+ - .   .-<_>     .<> Foundation; either version 2 of the License,
+     ._= =}       : or (at your option) any later version.
+    .%`+i>       _;_.
+    .i_,=:_.      -<s. This file is distributed in the hope that
+     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
+    : ..    .:,     . . . without even the implied warranty of
+    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
+  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU General
+..}^=.=       =       ; Public License for more details.
+++=   -.     .`     .:
+ :     =  ...= . :.=- You should have received a copy of the GNU
+ -.   .:....=;==+<; General Public License along with this file;
+  -_. . .   )=.  = see the file COPYING. If not, write to the
+    --        :-=` Free Software Foundation, Inc.,
+ 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+
+*/
+
+#include "menusettings.h"
+
+#include <qpe/config.h>
+#include <qpe/qlibrary.h>
+#include <qpe/qpeapplication.h>
+#include <qpe/menuappletinterface.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>
+
+
+MenuSettings::MenuSettings ( 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 in O-Menu:" ), this );
+ lay-> addWidget ( l );
+
+ m_list = new QListView ( this );
+ m_list-> addColumn ( "foobar" );
+ m_list-> header ( )-> hide ( );
+
+ lay-> addWidget ( m_list );
+
+ m_menutabs = new QCheckBox ( tr( "Show Launcher tabs in O-Menu" ), this );
+ lay-> addWidget ( m_menutabs );
+
+ QWhatsThis::add ( m_list, tr( "Check the applets that you want displayed in the O-Menu." ));
+ QWhatsThis::add ( m_menutabs, tr( "Adds the contents of the Launcher as menus in the O-Menu." ));
+
+ connect ( m_list, SIGNAL( clicked ( QListViewItem * )), this, SLOT( appletChanged ( )));
+
+ init ( );
+}
+
+void MenuSettings::init ( )
+{
+ Config cfg ( "StartMenu" );
+ 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;
+ MenuAppletInterface *iface = 0;
+
+ QLibrary *lib = new QLibrary ( path + "/" + *it );
+ lib-> queryInterface ( IID_MenuApplet, (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 ( ). pixmap ( QIconSet::Small, QIconSet::Normal );
+ iface-> release ( );
+ lib-> unload ( );
+
+ 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;
+ } else {
+ delete lib;
+ }
+ }
+
+ cfg. setGroup ( "Menu" );
+ m_menutabs-> setChecked ( cfg. readBoolEntry ( "LauncherTabs", true ));
+}
+
+void MenuSettings::appletChanged()
+{
+ m_applets_changed = true;
+}
+
+void MenuSettings::accept ( )
+{
+ bool apps_changed = false;
+
+ Config cfg ( "StartMenu" );
+ 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. setGroup ( "Menu" );
+
+ if ( m_menutabs-> isChecked ( ) != cfg. readBoolEntry ( "LauncherTabs", true )) {
+ apps_changed = true;
+ cfg. writeEntry ( "LauncherTabs", m_menutabs-> isChecked ( ));
+ }
+
+ cfg. write ( );
+
+ if ( m_applets_changed ) {
+ QCopEnvelope ( "QPE/TaskBar", "reloadApplets()" );
+ m_applets_changed = false;
+ }
+ if ( apps_changed ) {
+ QCopEnvelope ( "QPE/TaskBar", "reloadApps()" );
+ }
+}
+
diff --git a/core/settings/launcher/menusettings.h b/core/settings/launcher/menusettings.h
new file mode 100644
index 0000000..5986958
--- a/dev/null
+++ b/core/settings/launcher/menusettings.h
@@ -0,0 +1,60 @@
+/*
+               =. This file is part of the OPIE Project
+             .=l. Copyright (c) 2002 Robert Griebl <sandman@handhelds.org>
+           .>+-=
+ _;:,     .>    :=|. This file is free software; you can
+.> <`_,   >  .   <= redistribute it and/or modify it under
+:`=1 )Y*s>-.--   : the terms of the GNU General Public
+.="- .-=="i,     .._ License as published by the Free Software
+ - .   .-<_>     .<> Foundation; either version 2 of the License,
+     ._= =}       : or (at your option) any later version.
+    .%`+i>       _;_.
+    .i_,=:_.      -<s. This file is distributed in the hope that
+     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
+    : ..    .:,     . . . without even the implied warranty of
+    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
+  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU General
+..}^=.=       =       ; Public License for more details.
+++=   -.     .`     .:
+ :     =  ...= . :.=- You should have received a copy of the GNU
+ -.   .:....=;==+<; General Public License along with this file;
+  -_. . .   )=.  = see the file COPYING. If not, write to the
+    --        :-=` Free Software Foundation, Inc.,
+ 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+
+*/
+
+#ifndef __MENU_SETTINGS_H__
+#define __MENU_SETTINGS_H__
+
+#include <qwidget.h>
+#include <qmap.h>
+
+class QListView;
+class QCheckListItem;
+class QCheckBox;
+
+
+class MenuSettings : public QWidget {
+ Q_OBJECT
+
+public:
+ MenuSettings ( QWidget *parent = 0, const char *name = 0 );
+
+ void accept ( );
+
+protected slots:
+ void appletChanged ( );
+
+protected:
+ void init ( );
+
+private:
+ QListView *m_list;
+ QMap <QString, QCheckListItem *> m_applets;
+ bool m_applets_changed;
+ QCheckBox *m_menutabs;
+};
+
+#endif