-rw-r--r-- | core/settings/launcher/menusettings.cpp | 159 | ||||
-rw-r--r-- | core/settings/launcher/menusettings.h | 60 |
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 @@ | |||
1 | /* | ||
2 | This file is part of the OPIE Project | ||
3 | =. Copyright (c) 2002 Trolltech AS <info@trolltech.com> | ||
4 | .=l. Copyright (c) 2002 Robert Griebl <sandman@handhelds.org> | ||
5 | .>+-= | ||
6 | _;:, .> :=|. This file is free software; you can | ||
7 | .> <`_, > . <= redistribute it and/or modify it under | ||
8 | :`=1 )Y*s>-.-- : the terms of the GNU General Public | ||
9 | .="- .-=="i, .._ License as published by the Free Software | ||
10 | - . .-<_> .<> Foundation; either version 2 of the License, | ||
11 | ._= =} : or (at your option) any later version. | ||
12 | .%`+i> _;_. | ||
13 | .i_,=:_. -<s. This file is distributed in the hope that | ||
14 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | ||
15 | : .. .:, . . . without even the implied warranty of | ||
16 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | ||
17 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU General | ||
18 | ..}^=.= = ; Public License for more details. | ||
19 | ++= -. .` .: | ||
20 | : = ...= . :.=- You should have received a copy of the GNU | ||
21 | -. .:....=;==+<; General Public License along with this file; | ||
22 | -_. . . )=. = see the file COPYING. If not, write to the | ||
23 | -- :-=` Free Software Foundation, Inc., | ||
24 | 59 Temple Place - Suite 330, | ||
25 | Boston, MA 02111-1307, USA. | ||
26 | |||
27 | */ | ||
28 | |||
29 | #include "menusettings.h" | ||
30 | |||
31 | #include <qpe/config.h> | ||
32 | #include <qpe/qlibrary.h> | ||
33 | #include <qpe/qpeapplication.h> | ||
34 | #include <qpe/menuappletinterface.h> | ||
35 | #include <qpe/qcopenvelope_qws.h> | ||
36 | |||
37 | #include <qdir.h> | ||
38 | #include <qlistview.h> | ||
39 | #include <qcheckbox.h> | ||
40 | #include <qheader.h> | ||
41 | #include <qlayout.h> | ||
42 | #include <qlabel.h> | ||
43 | #include <qwhatsthis.h> | ||
44 | |||
45 | #include <stdlib.h> | ||
46 | |||
47 | |||
48 | MenuSettings::MenuSettings ( QWidget *parent, const char *name ) | ||
49 | : QWidget ( parent, name ) | ||
50 | { | ||
51 | m_applets_changed = false; | ||
52 | |||
53 | QBoxLayout *lay = new QVBoxLayout ( this, 4, 4 ); | ||
54 | |||
55 | QLabel *l = new QLabel ( tr( "Load applets in O-Menu:" ), this ); | ||
56 | lay-> addWidget ( l ); | ||
57 | |||
58 | m_list = new QListView ( this ); | ||
59 | m_list-> addColumn ( "foobar" ); | ||
60 | m_list-> header ( )-> hide ( ); | ||
61 | |||
62 | lay-> addWidget ( m_list ); | ||
63 | |||
64 | m_menutabs = new QCheckBox ( tr( "Show Launcher tabs in O-Menu" ), this ); | ||
65 | lay-> addWidget ( m_menutabs ); | ||
66 | |||
67 | QWhatsThis::add ( m_list, tr( "Check the applets that you want displayed in the O-Menu." )); | ||
68 | QWhatsThis::add ( m_menutabs, tr( "Adds the contents of the Launcher as menus in the O-Menu." )); | ||
69 | |||
70 | connect ( m_list, SIGNAL( clicked ( QListViewItem * )), this, SLOT( appletChanged ( ))); | ||
71 | |||
72 | init ( ); | ||
73 | } | ||
74 | |||
75 | void MenuSettings::init ( ) | ||
76 | { | ||
77 | Config cfg ( "StartMenu" ); | ||
78 | cfg. setGroup ( "Applets" ); | ||
79 | QStringList exclude = cfg. readListEntry ( "ExcludeApplets", ',' ); | ||
80 | |||
81 | QString path = QPEApplication::qpeDir ( ) + "/plugins/applets"; | ||
82 | QStringList list = QDir ( path, "lib*.so" ). entryList ( ); | ||
83 | |||
84 | for ( QStringList::Iterator it = list. begin ( ); it != list. end ( ); ++it ) { | ||
85 | QString name; | ||
86 | QPixmap icon; | ||
87 | MenuAppletInterface *iface = 0; | ||
88 | |||
89 | QLibrary *lib = new QLibrary ( path + "/" + *it ); | ||
90 | lib-> queryInterface ( IID_MenuApplet, (QUnknownInterface**) &iface ); | ||
91 | if ( iface ) { | ||
92 | QString lang = getenv( "LANG" ); | ||
93 | QTranslator *trans = new QTranslator ( qApp ); | ||
94 | QString type = (*it). left ((*it). find (".")); | ||
95 | QString tfn = QPEApplication::qpeDir ( ) + "/i18n/" + lang + "/" + type + ".qm"; | ||
96 | if ( trans-> load ( tfn )) | ||
97 | qApp-> installTranslator ( trans ); | ||
98 | else | ||
99 | delete trans; | ||
100 | name = iface-> name ( ); | ||
101 | icon = iface-> icon ( ). pixmap ( QIconSet::Small, QIconSet::Normal ); | ||
102 | iface-> release ( ); | ||
103 | lib-> unload ( ); | ||
104 | |||
105 | QCheckListItem *item; | ||
106 | item = new QCheckListItem ( m_list, name, QCheckListItem::CheckBox ); | ||
107 | if ( !icon. isNull ( )) | ||
108 | item-> setPixmap ( 0, icon ); | ||
109 | item-> setOn ( exclude. find ( *it ) == exclude. end ( )); | ||
110 | m_applets [*it] = item; | ||
111 | } else { | ||
112 | delete lib; | ||
113 | } | ||
114 | } | ||
115 | |||
116 | cfg. setGroup ( "Menu" ); | ||
117 | m_menutabs-> setChecked ( cfg. readBoolEntry ( "LauncherTabs", true )); | ||
118 | } | ||
119 | |||
120 | void MenuSettings::appletChanged() | ||
121 | { | ||
122 | m_applets_changed = true; | ||
123 | } | ||
124 | |||
125 | void MenuSettings::accept ( ) | ||
126 | { | ||
127 | bool apps_changed = false; | ||
128 | |||
129 | Config cfg ( "StartMenu" ); | ||
130 | cfg. setGroup ( "Applets" ); | ||
131 | if ( m_applets_changed ) { | ||
132 | QStringList exclude; | ||
133 | QMap <QString, QCheckListItem *>::Iterator it; | ||
134 | for ( it = m_applets. begin ( ); it != m_applets. end ( ); ++it ) { | ||
135 | if ( !(*it)-> isOn ( )) | ||
136 | exclude << it. key ( ); | ||
137 | } | ||
138 | cfg. writeEntry ( "ExcludeApplets", exclude, ',' ); | ||
139 | } | ||
140 | cfg. writeEntry ( "SafeMode", false ); | ||
141 | |||
142 | cfg. setGroup ( "Menu" ); | ||
143 | |||
144 | if ( m_menutabs-> isChecked ( ) != cfg. readBoolEntry ( "LauncherTabs", true )) { | ||
145 | apps_changed = true; | ||
146 | cfg. writeEntry ( "LauncherTabs", m_menutabs-> isChecked ( )); | ||
147 | } | ||
148 | |||
149 | cfg. write ( ); | ||
150 | |||
151 | if ( m_applets_changed ) { | ||
152 | QCopEnvelope ( "QPE/TaskBar", "reloadApplets()" ); | ||
153 | m_applets_changed = false; | ||
154 | } | ||
155 | if ( apps_changed ) { | ||
156 | QCopEnvelope ( "QPE/TaskBar", "reloadApps()" ); | ||
157 | } | ||
158 | } | ||
159 | |||
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 @@ | |||
1 | /* | ||
2 | =. This file is part of the OPIE Project | ||
3 | .=l. Copyright (c) 2002 Robert Griebl <sandman@handhelds.org> | ||
4 | .>+-= | ||
5 | _;:, .> :=|. This file is free software; you can | ||
6 | .> <`_, > . <= redistribute it and/or modify it under | ||
7 | :`=1 )Y*s>-.-- : the terms of the GNU General Public | ||
8 | .="- .-=="i, .._ License as published by the Free Software | ||
9 | - . .-<_> .<> Foundation; either version 2 of the License, | ||
10 | ._= =} : or (at your option) any later version. | ||
11 | .%`+i> _;_. | ||
12 | .i_,=:_. -<s. This file is distributed in the hope that | ||
13 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | ||
14 | : .. .:, . . . without even the implied warranty of | ||
15 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | ||
16 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU General | ||
17 | ..}^=.= = ; Public License for more details. | ||
18 | ++= -. .` .: | ||
19 | : = ...= . :.=- You should have received a copy of the GNU | ||
20 | -. .:....=;==+<; General Public License along with this file; | ||
21 | -_. . . )=. = see the file COPYING. If not, write to the | ||
22 | -- :-=` Free Software Foundation, Inc., | ||
23 | 59 Temple Place - Suite 330, | ||
24 | Boston, MA 02111-1307, USA. | ||
25 | |||
26 | */ | ||
27 | |||
28 | #ifndef __MENU_SETTINGS_H__ | ||
29 | #define __MENU_SETTINGS_H__ | ||
30 | |||
31 | #include <qwidget.h> | ||
32 | #include <qmap.h> | ||
33 | |||
34 | class QListView; | ||
35 | class QCheckListItem; | ||
36 | class QCheckBox; | ||
37 | |||
38 | |||
39 | class MenuSettings : public QWidget { | ||
40 | Q_OBJECT | ||
41 | |||
42 | public: | ||
43 | MenuSettings ( QWidget *parent = 0, const char *name = 0 ); | ||
44 | |||
45 | void accept ( ); | ||
46 | |||
47 | protected slots: | ||
48 | void appletChanged ( ); | ||
49 | |||
50 | protected: | ||
51 | void init ( ); | ||
52 | |||
53 | private: | ||
54 | QListView *m_list; | ||
55 | QMap <QString, QCheckListItem *> m_applets; | ||
56 | bool m_applets_changed; | ||
57 | QCheckBox *m_menutabs; | ||
58 | }; | ||
59 | |||
60 | #endif | ||