author | harlekin <harlekin> | 2002-09-20 20:19:14 (UTC) |
---|---|---|
committer | harlekin <harlekin> | 2002-09-20 20:19:14 (UTC) |
commit | d2d73b6391fbc7f743199f48387d13e887bbac1e (patch) (unidiff) | |
tree | 7f289628796ee4bf0bf1f32d952b5455a42b17bd | |
parent | 681e6e75efaa5577d376d0bb191afdf323cb4e75 (diff) | |
download | opie-d2d73b6391fbc7f743199f48387d13e887bbac1e.zip opie-d2d73b6391fbc7f743199f48387d13e887bbac1e.tar.gz opie-d2d73b6391fbc7f743199f48387d13e887bbac1e.tar.bz2 |
fixed the crash when closing config dialog and also sorting of the plugins is working now
-rw-r--r-- | core/pim/today/today.cpp | 54 | ||||
-rw-r--r-- | core/pim/today/today.h | 3 | ||||
-rw-r--r-- | core/pim/today/todayconfig.cpp | 51 |
3 files changed, 66 insertions, 42 deletions
diff --git a/core/pim/today/today.cpp b/core/pim/today/today.cpp index 7537631..d8b427d 100644 --- a/core/pim/today/today.cpp +++ b/core/pim/today/today.cpp | |||
@@ -87,214 +87,232 @@ void Today::setOwnerField() { | |||
87 | QString file = Global::applicationFileName( "addressbook", "businesscard.vcf" ); | 87 | QString file = Global::applicationFileName( "addressbook", "businesscard.vcf" ); |
88 | if ( QFile::exists( file ) ) { | 88 | if ( QFile::exists( file ) ) { |
89 | Contact cont = Contact::readVCard( file )[0]; | 89 | Contact cont = Contact::readVCard( file )[0]; |
90 | QString returnString = cont.fullName(); | 90 | QString returnString = cont.fullName(); |
91 | OwnerField->setText( "<b>" + tr ( "Owned by " ) + returnString + "</b>" ); | 91 | OwnerField->setText( "<b>" + tr ( "Owned by " ) + returnString + "</b>" ); |
92 | } else { | 92 | } else { |
93 | OwnerField->setText( "<b>" + tr ( "Please fill out the business card" ) + " </b>" ); | 93 | OwnerField->setText( "<b>" + tr ( "Please fill out the business card" ) + " </b>" ); |
94 | } | 94 | } |
95 | } | 95 | } |
96 | 96 | ||
97 | /** | 97 | /** |
98 | * Set the owner field with a given QString, for example per qcop. | 98 | * Set the owner field with a given QString, for example per qcop. |
99 | */ | 99 | */ |
100 | void Today::setOwnerField( QString &message ) { | 100 | void Today::setOwnerField( QString &message ) { |
101 | if ( !message.isEmpty() ) { | 101 | if ( !message.isEmpty() ) { |
102 | OwnerField->setText( "<b>" + message + "</b>" ); | 102 | OwnerField->setText( "<b>" + message + "</b>" ); |
103 | } | 103 | } |
104 | } | 104 | } |
105 | 105 | ||
106 | 106 | ||
107 | /** | 107 | /** |
108 | * Init stuff needed for today. Reads the config file. | 108 | * Init stuff needed for today. Reads the config file. |
109 | */ | 109 | */ |
110 | void Today::init() { | 110 | void Today::init() { |
111 | |||
112 | QDate date = QDate::currentDate(); | ||
113 | QString time = ( tr( date.toString() ) ); | ||
114 | |||
115 | DateLabel->setText( QString( "<font color=#FFFFFF>" + time + "</font>" ) ); | ||
116 | |||
117 | // read config | 111 | // read config |
118 | Config cfg( "today" ); | 112 | Config cfg( "today" ); |
119 | cfg.setGroup( "Applets" ); | 113 | cfg.setGroup( "Plugins" ); |
114 | |||
120 | m_excludeApplets = cfg.readListEntry( "ExcludeApplets", ',' ); | 115 | m_excludeApplets = cfg.readListEntry( "ExcludeApplets", ',' ); |
116 | m_allApplets = cfg.readListEntry( "AllApplets", ',' ); | ||
121 | } | 117 | } |
122 | 118 | ||
123 | 119 | ||
124 | /** | 120 | /** |
125 | * Load the plugins | 121 | * Load the plugins |
126 | */ | 122 | */ |
127 | void Today::loadPlugins() { | 123 | void Today::loadPlugins() { |
128 | 124 | ||
129 | QValueList<TodayPlugin>::Iterator tit; | 125 | QValueList<TodayPlugin>::Iterator tit; |
130 | for ( tit = pluginList.begin(); tit != pluginList.end(); ++tit ) { | 126 | for ( tit = pluginList.begin(); tit != pluginList.end(); ++tit ) { |
131 | (*tit).library->unload(); | 127 | (*tit).library->unload(); |
132 | delete (*tit).library; | 128 | delete (*tit).library; |
133 | } | 129 | } |
134 | pluginList.clear(); | 130 | pluginList.clear(); |
135 | 131 | ||
136 | |||
137 | QString path = QPEApplication::qpeDir() + "/plugins/today"; | 132 | QString path = QPEApplication::qpeDir() + "/plugins/today"; |
138 | QDir dir( path, "lib*.so" ); | 133 | QDir dir( path, "lib*.so" ); |
139 | 134 | ||
140 | QStringList list = dir.entryList(); | 135 | QStringList list = dir.entryList(); |
141 | QStringList::Iterator it; | 136 | QStringList::Iterator it; |
142 | 137 | ||
138 | |||
139 | QMap<QString, TodayPlugin> tempList; | ||
140 | |||
143 | for ( it = list.begin(); it != list.end(); ++it ) { | 141 | for ( it = list.begin(); it != list.end(); ++it ) { |
144 | TodayPluginInterface *iface = 0; | 142 | TodayPluginInterface *iface = 0; |
145 | QLibrary *lib = new QLibrary( path + "/" + *it ); | 143 | QLibrary *lib = new QLibrary( path + "/" + *it ); |
146 | 144 | ||
147 | qDebug( "querying: %s", QString( path + "/" + *it ).latin1() ); | 145 | qDebug( "querying: %s", QString( path + "/" + *it ).latin1() ); |
148 | if ( lib->queryInterface( IID_TodayPluginInterface, (QUnknownInterface**)&iface ) == QS_OK ) { | 146 | if ( lib->queryInterface( IID_TodayPluginInterface, (QUnknownInterface**)&iface ) == QS_OK ) { |
149 | qDebug( "loading: %s", QString( path + "/" + *it ).latin1() ); | 147 | qDebug( "loading: %s", QString( path + "/" + *it ).latin1() ); |
150 | qDebug( QString(*it) ); | 148 | qDebug( QString(*it) ); |
151 | TodayPlugin plugin; | 149 | TodayPlugin plugin; |
152 | plugin.library = lib; | 150 | plugin.library = lib; |
153 | plugin.iface = iface; | 151 | plugin.iface = iface; |
154 | plugin.name = QString(*it); | 152 | plugin.name = QString(*it); |
155 | 153 | ||
156 | // find out if plugins should be shown | 154 | // find out if plugins should be shown |
157 | if ( m_excludeApplets.grep( *it ).isEmpty() ) { | 155 | if ( m_excludeApplets.grep( *it ).isEmpty() ) { |
158 | plugin.active = true; | 156 | plugin.active = true; |
159 | } else { | 157 | } else { |
160 | plugin.active = false; | 158 | plugin.active = false; |
161 | } | 159 | } |
162 | plugin.guiPart = plugin.iface->guiPart(); | 160 | plugin.guiPart = plugin.iface->guiPart(); |
163 | 161 | ||
164 | // package the whole thing into a qwidget so it can be shown and hidden | 162 | // package the whole thing into a qwidget so it can be shown and hidden |
165 | plugin.guiBox = new QWidget( this ); | 163 | plugin.guiBox = new QWidget( this ); |
166 | QHBoxLayout *boxLayout = new QHBoxLayout( plugin.guiBox ); | 164 | QHBoxLayout *boxLayout = new QHBoxLayout( plugin.guiBox ); |
167 | |||
168 | QPixmap plugPix; | 165 | QPixmap plugPix; |
169 | plugPix.convertFromImage( Resource::loadImage( plugin.guiPart->pixmapNameWidget() ).smoothScale( 18, 18 ), 0 ); | 166 | plugPix.convertFromImage( Resource::loadImage( plugin.guiPart->pixmapNameWidget() ).smoothScale( 18, 18 ), 0 ); |
170 | OClickableLabel* plugIcon = new OClickableLabel( plugin.guiBox ); | 167 | OClickableLabel* plugIcon = new OClickableLabel( plugin.guiBox ); |
171 | plugIcon->setPixmap( plugPix ); | 168 | plugIcon->setPixmap( plugPix ); |
172 | |||
173 | // a scrollview for each plugin | 169 | // a scrollview for each plugin |
174 | QScrollView* sv = new QScrollView( plugin.guiBox ); | 170 | QScrollView* sv = new QScrollView( plugin.guiBox ); |
175 | QWidget *plugWidget = plugin.guiPart->widget( sv->viewport() ); | 171 | QWidget *plugWidget = plugin.guiPart->widget( sv->viewport() ); |
176 | sv->setMinimumHeight( plugin.guiPart->minHeight() ); | 172 | sv->setMinimumHeight( plugin.guiPart->minHeight() ); |
177 | sv->setResizePolicy( QScrollView::AutoOneFit ); | 173 | sv->setResizePolicy( QScrollView::AutoOneFit ); |
178 | sv->setHScrollBarMode( QScrollView::AlwaysOff ); | 174 | sv->setHScrollBarMode( QScrollView::AlwaysOff ); |
179 | sv->setFrameShape( QFrame::NoFrame ); | 175 | sv->setFrameShape( QFrame::NoFrame ); |
180 | sv->addChild( plugWidget ); | 176 | sv->addChild( plugWidget ); |
181 | |||
182 | // make sure the icon is on the top alligned | 177 | // make sure the icon is on the top alligned |
183 | boxLayout->addWidget( plugIcon, 0, AlignTop ); | 178 | boxLayout->addWidget( plugIcon, 0, AlignTop ); |
184 | boxLayout->addWidget( sv, 0, AlignTop ); | 179 | boxLayout->addWidget( sv, 0, AlignTop ); |
185 | boxLayout->setStretchFactor( plugIcon, 1 ); | 180 | boxLayout->setStretchFactor( plugIcon, 1 ); |
186 | boxLayout->setStretchFactor( sv, 9 ); | 181 | boxLayout->setStretchFactor( sv, 9 ); |
187 | layout->addWidget( plugin.guiBox ); | 182 | // "prebuffer" it in one more list, to get the sorting done |
183 | tempList.insert( plugin.name, plugin ); | ||
188 | 184 | ||
189 | pluginList.append( plugin ); | 185 | // on first start the list is off course empty |
186 | if ( m_allApplets.isEmpty() ) { | ||
187 | layout->addWidget( plugin.guiBox ); | ||
188 | pluginList.append( plugin ); | ||
189 | } | ||
190 | } else { | 190 | } else { |
191 | qDebug( "could not recognize %s", QString( path + "/" + *it ).latin1() ); | 191 | qDebug( "could not recognize %s", QString( path + "/" + *it ).latin1() ); |
192 | delete lib; | 192 | delete lib; |
193 | } | 193 | } |
194 | } | 194 | } |
195 | |||
196 | if ( !m_allApplets.isEmpty() ) { | ||
197 | TodayPlugin tempPlugin; | ||
198 | QStringList::Iterator stringit; | ||
199 | for( stringit = m_allApplets.begin(); stringit != m_allApplets.end(); ++stringit ) { | ||
200 | tempPlugin = ( tempList.find( *stringit ) ).data(); | ||
201 | if ( !( (tempPlugin.name).isEmpty() ) ) { | ||
202 | layout->addWidget( tempPlugin.guiBox ); | ||
203 | pluginList.append( tempPlugin ); | ||
204 | } | ||
205 | } | ||
206 | } | ||
195 | } | 207 | } |
196 | 208 | ||
197 | 209 | ||
198 | /** | 210 | /** |
199 | * Repaint method. Reread all fields. | 211 | * Repaint method. Reread all fields. |
200 | */ | 212 | */ |
201 | void Today::draw() { | 213 | void Today::draw() { |
202 | 214 | ||
203 | if ( pluginList.count() == 0 ) { | 215 | if ( pluginList.count() == 0 ) { |
204 | QLabel *noPlugins = new QLabel( this ); | 216 | QLabel *noPlugins = new QLabel( this ); |
205 | noPlugins->setText( tr( "No plugins found" ) ); | 217 | noPlugins->setText( tr( "No plugins found" ) ); |
206 | layout->addWidget( noPlugins ); | 218 | layout->addWidget( noPlugins ); |
207 | return; | 219 | return; |
208 | } | 220 | } |
209 | 221 | ||
210 | uint count = 0; | 222 | uint count = 0; |
211 | TodayPlugin plugin; | 223 | TodayPlugin plugin; |
212 | for ( uint i = 0; i < pluginList.count(); i++ ) { | 224 | for ( uint i = 0; i < pluginList.count(); i++ ) { |
213 | plugin = pluginList[i]; | 225 | plugin = pluginList[i]; |
214 | 226 | ||
215 | if ( plugin.active ) { | 227 | if ( plugin.active ) { |
216 | qDebug( plugin.name + " is ACTIVE " ); | 228 | qDebug( plugin.name + " is ACTIVE " ); |
217 | plugin.guiBox->show(); | 229 | plugin.guiBox->show(); |
218 | } else { | 230 | } else { |
219 | qDebug( plugin.name + " is INACTIVE" ); | 231 | qDebug( plugin.name + " is INACTIVE" ); |
220 | plugin.guiBox->hide(); | 232 | plugin.guiBox->hide(); |
221 | } | 233 | } |
222 | count++; | 234 | count++; |
223 | } | 235 | } |
224 | 236 | ||
225 | if ( count == 0 ) { | 237 | if ( count == 0 ) { |
226 | QLabel *noPluginsActive = new QLabel( this ); | 238 | QLabel *noPluginsActive = new QLabel( this ); |
227 | noPluginsActive->setText( tr( "No plugins activated" ) ); | 239 | noPluginsActive->setText( tr( "No plugins activated" ) ); |
228 | layout->addWidget( noPluginsActive ); | 240 | layout->addWidget( noPluginsActive ); |
229 | } | 241 | } |
230 | //layout->addStretch(0); | 242 | layout->addStretch(0); |
231 | //layout->addItem( new QSpacerItem( 1,1, QSizePolicy::Minimum, QSizePolicy::Expanding ) ); | ||
232 | } | 243 | } |
233 | 244 | ||
234 | 245 | ||
235 | /** | 246 | /** |
236 | * The method for the configuration dialog. | 247 | * The method for the configuration dialog. |
237 | */ | 248 | */ |
238 | void Today::startConfig() { | 249 | void Today::startConfig() { |
239 | 250 | ||
240 | TodayConfig conf( this, "dialog", true ); | 251 | TodayConfig conf( this, "dialog", true ); |
241 | 252 | ||
242 | TodayPlugin plugin; | 253 | TodayPlugin plugin; |
243 | QList<ConfigWidget> configWidgetList; | 254 | QList<ConfigWidget> configWidgetList; |
244 | for ( uint i = 0; i < pluginList.count(); i++ ) { | 255 | |
256 | for ( int i = pluginList.count() - 1 ; i >= 0; i-- ) { | ||
245 | plugin = pluginList[i]; | 257 | plugin = pluginList[i]; |
246 | 258 | ||
247 | // load the config widgets in the tabs | 259 | // load the config widgets in the tabs |
248 | if ( plugin.guiPart->configWidget( this ) != 0l ) { | 260 | if ( plugin.guiPart->configWidget( this ) != 0l ) { |
249 | ConfigWidget* widget = plugin.guiPart->configWidget( this ); | 261 | ConfigWidget* widget = plugin.guiPart->configWidget( conf.TabWidget3 ); |
250 | configWidgetList.append( widget ); | 262 | configWidgetList.append( widget ); |
251 | conf.TabWidget3->insertTab( widget, plugin.guiPart->appName() ); | 263 | conf.TabWidget3->insertTab( widget, plugin.guiPart->appName() ); |
252 | } | 264 | } |
253 | // set the order/activate tab | 265 | // set the order/activate tab |
254 | conf.pluginManagement( plugin.name, plugin.guiPart->pluginName(), | 266 | conf.pluginManagement( plugin.name, plugin.guiPart->pluginName(), |
255 | Resource::loadPixmap( plugin.guiPart->pixmapNameWidget() ) ); | 267 | Resource::loadPixmap( plugin.guiPart->pixmapNameWidget() ) ); |
256 | } | 268 | } |
257 | 269 | ||
258 | if ( conf.exec() == QDialog::Accepted ) { | 270 | if ( conf.exec() == QDialog::Accepted ) { |
259 | conf.writeConfig(); | 271 | conf.writeConfig(); |
260 | ConfigWidget *confWidget; | 272 | ConfigWidget *confWidget; |
261 | for ( confWidget = configWidgetList.first(); confWidget != 0; | 273 | for ( confWidget = configWidgetList.first(); confWidget != 0; |
262 | confWidget = configWidgetList.next() ) { | 274 | confWidget = configWidgetList.next() ) { |
263 | confWidget->writeConfig(); | 275 | confWidget->writeConfig(); |
264 | } | 276 | } |
265 | refresh(); | 277 | refresh(); |
266 | } | 278 | } |
267 | } | 279 | } |
268 | 280 | ||
269 | 281 | ||
270 | /** | 282 | /** |
271 | * Refresh for the view. Reload all applets | 283 | * Refresh for the view. Reload all applets |
272 | * | 284 | * |
273 | */ | 285 | */ |
274 | void Today::refresh() { | 286 | void Today::refresh() { |
275 | init(); | 287 | init(); |
276 | 288 | ||
289 | // set the date in top label | ||
290 | QDate date = QDate::currentDate(); | ||
291 | QString time = ( tr( date.toString() ) ); | ||
292 | |||
293 | DateLabel->setText( QString( "<font color=#FFFFFF>" + time + "</font>" ) ); | ||
294 | |||
277 | if ( layout ) { | 295 | if ( layout ) { |
278 | delete layout; | 296 | delete layout; |
279 | } | 297 | } |
280 | layout = new QVBoxLayout( this ); | 298 | layout = new QVBoxLayout( this ); |
281 | layout->addWidget( Frame ); | 299 | layout->addWidget( Frame ); |
282 | layout->addWidget( OwnerField ); | 300 | layout->addWidget( OwnerField ); |
283 | 301 | ||
284 | loadPlugins(); | 302 | loadPlugins(); |
285 | draw(); | 303 | draw(); |
286 | } | 304 | } |
287 | 305 | ||
288 | void Today::startAddressbook() { | 306 | void Today::startAddressbook() { |
289 | QCopEnvelope e( "QPE/System", "execute(QString)" ); | 307 | QCopEnvelope e( "QPE/System", "execute(QString)" ); |
290 | e << QString( "addressbook" ); | 308 | e << QString( "addressbook" ); |
291 | } | 309 | } |
292 | 310 | ||
293 | 311 | ||
294 | /** | 312 | /** |
295 | * launch addressbook (personal card) | 313 | * launch addressbook (personal card) |
296 | */ | 314 | */ |
297 | void Today::editCard() { | 315 | void Today::editCard() { |
298 | startAddressbook(); | 316 | startAddressbook(); |
299 | while( !QCopChannel::isRegistered( "QPE/Addressbook" ) ) { | 317 | while( !QCopChannel::isRegistered( "QPE/Addressbook" ) ) { |
300 | qApp->processEvents(); | 318 | qApp->processEvents(); |
diff --git a/core/pim/today/today.h b/core/pim/today/today.h index 672adc4..b35c9b1 100644 --- a/core/pim/today/today.h +++ b/core/pim/today/today.h | |||
@@ -13,60 +13,61 @@ | |||
13 | * (at your option) any later version. * | 13 | * (at your option) any later version. * |
14 | * * | 14 | * * |
15 | ***************************************************************************/ | 15 | ***************************************************************************/ |
16 | 16 | ||
17 | 17 | ||
18 | #ifndef TODAY_H | 18 | #ifndef TODAY_H |
19 | #define TODAY_H | 19 | #define TODAY_H |
20 | 20 | ||
21 | #include <opie/tododb.h> | 21 | #include <opie/tododb.h> |
22 | 22 | ||
23 | #include <qdatetime.h> | 23 | #include <qdatetime.h> |
24 | #include <qlist.h> | 24 | #include <qlist.h> |
25 | #include <qhbox.h> | 25 | #include <qhbox.h> |
26 | 26 | ||
27 | #include <qpe/qlibrary.h> | 27 | #include <qpe/qlibrary.h> |
28 | #include <qpe/event.h> | 28 | #include <qpe/event.h> |
29 | 29 | ||
30 | #include "todayconfig.h" | 30 | #include "todayconfig.h" |
31 | #include "todaybase.h" | 31 | #include "todaybase.h" |
32 | #include "todayplugininterface.h" | 32 | #include "todayplugininterface.h" |
33 | 33 | ||
34 | class QVBoxLayout; | 34 | class QVBoxLayout; |
35 | 35 | ||
36 | 36 | ||
37 | |||
37 | class Today : public TodayBase { | 38 | class Today : public TodayBase { |
38 | 39 | ||
39 | Q_OBJECT | 40 | Q_OBJECT |
40 | 41 | ||
41 | public: | 42 | public: |
42 | Today( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); | 43 | Today( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); |
43 | ~Today(); | 44 | ~Today(); |
44 | 45 | ||
45 | private slots: | 46 | private slots: |
46 | void startConfig(); | 47 | void startConfig(); |
47 | void startAddressbook(); | 48 | void startAddressbook(); |
48 | void editCard(); | 49 | void editCard(); |
49 | void refresh(); | 50 | void refresh(); |
50 | 51 | ||
51 | private: | 52 | private: |
52 | void init(); | 53 | void init(); |
53 | void setOwnerField(); | 54 | void setOwnerField(); |
54 | void setOwnerField(QString &string); | 55 | void setOwnerField(QString &string); |
55 | void loadPlugins(); | 56 | void loadPlugins(); |
56 | void draw(); | 57 | void draw(); |
57 | 58 | ||
58 | |||
59 | private slots: | 59 | private slots: |
60 | void channelReceived(const QCString &msg, const QByteArray & data); | 60 | void channelReceived(const QCString &msg, const QByteArray & data); |
61 | 61 | ||
62 | private: | 62 | private: |
63 | TodayConfig *conf; | 63 | TodayConfig *conf; |
64 | QStringList m_excludeApplets; | 64 | QStringList m_excludeApplets; |
65 | QStringList m_allApplets; | ||
65 | 66 | ||
66 | // QString m_autoStartTimer; | 67 | // QString m_autoStartTimer; |
67 | int m_newStart; | 68 | int m_newStart; |
68 | // int m_autoStart; | 69 | // int m_autoStart; |
69 | int m_maxCharClip; | 70 | int m_maxCharClip; |
70 | }; | 71 | }; |
71 | 72 | ||
72 | #endif | 73 | #endif |
diff --git a/core/pim/today/todayconfig.cpp b/core/pim/today/todayconfig.cpp index 4f23471..532d126 100644 --- a/core/pim/today/todayconfig.cpp +++ b/core/pim/today/todayconfig.cpp | |||
@@ -14,202 +14,207 @@ | |||
14 | * * | 14 | * * |
15 | ***************************************************************************/ | 15 | ***************************************************************************/ |
16 | 16 | ||
17 | #include "todayconfig.h" | 17 | #include "todayconfig.h" |
18 | 18 | ||
19 | #include <qpe/config.h> | 19 | #include <qpe/config.h> |
20 | #include <qpe/resource.h> | 20 | #include <qpe/resource.h> |
21 | #include <qpe/qcopenvelope_qws.h> | 21 | #include <qpe/qcopenvelope_qws.h> |
22 | 22 | ||
23 | #include <qcheckbox.h> | 23 | #include <qcheckbox.h> |
24 | #include <qlabel.h> | 24 | #include <qlabel.h> |
25 | #include <qspinbox.h> | 25 | #include <qspinbox.h> |
26 | #include <qtabwidget.h> | 26 | #include <qtabwidget.h> |
27 | #include <qlayout.h> | 27 | #include <qlayout.h> |
28 | #include <qheader.h> | 28 | #include <qheader.h> |
29 | #include <qhbox.h> | 29 | #include <qhbox.h> |
30 | #include <qvbox.h> | 30 | #include <qvbox.h> |
31 | #include <qtoolbutton.h> | 31 | #include <qtoolbutton.h> |
32 | 32 | ||
33 | class ToolButton : public QToolButton { | 33 | class ToolButton : public QToolButton { |
34 | 34 | ||
35 | public: | 35 | public: |
36 | ToolButton( QWidget *parent, const char *name, const QString& icon, QObject *handler, const QString& slot, bool t = FALSE ) | 36 | ToolButton( QWidget *parent, const char *name, const QString& icon, QObject *handler, const QString& slot, bool t = FALSE ) |
37 | : QToolButton( parent, name ) { | 37 | : QToolButton( parent, name ) { |
38 | // setTextLabel( name ); | ||
39 | setPixmap( Resource::loadPixmap( icon ) ); | 38 | setPixmap( Resource::loadPixmap( icon ) ); |
40 | setAutoRaise( TRUE ); | 39 | setAutoRaise( TRUE ); |
41 | setFocusPolicy( QWidget::NoFocus ); | 40 | setFocusPolicy( QWidget::NoFocus ); |
42 | setToggleButton( t ); | 41 | setToggleButton( t ); |
43 | connect( this, t ? SIGNAL( toggled(bool) ) : SIGNAL( clicked() ), handler, slot ); | 42 | connect( this, t ? SIGNAL( toggled(bool) ) : SIGNAL( clicked() ), handler, slot ); |
44 | } | 43 | } |
45 | }; | 44 | }; |
46 | 45 | ||
47 | 46 | ||
48 | /** | 47 | /** |
49 | * The class has currently quite some duplicate code. | 48 | * The class has currently quite some duplicate code. |
50 | * By that way it would be real easy to have it as seperate app in settings tab | 49 | * By that way it would be real easy to have it as seperate app in settings tab |
51 | * | 50 | * |
52 | */ | 51 | */ |
53 | TodayConfig::TodayConfig( QWidget* parent, const char* name, bool modal, WFlags fl ) | 52 | TodayConfig::TodayConfig( QWidget* parent, const char* name, bool modal, WFlags fl ) |
54 | : QDialog( parent, name, modal, fl ) { | 53 | : QDialog( parent, name, modal, fl ) { |
55 | 54 | ||
56 | setCaption( tr( "Today config" ) ); | 55 | setCaption( tr( "Today config" ) ); |
57 | 56 | ||
58 | QVBoxLayout *layout = new QVBoxLayout( this ); | 57 | QVBoxLayout *layout = new QVBoxLayout( this ); |
59 | TabWidget3 = new QTabWidget( this, "TabWidget3" ); | 58 | TabWidget3 = new QTabWidget( this, "TabWidget3" ); |
60 | TabWidget3->setAutoMask( FALSE ); | 59 | TabWidget3->setAutoMask( FALSE ); |
61 | TabWidget3->setTabShape( QTabWidget::Rounded ); | 60 | TabWidget3->setTabShape( QTabWidget::Rounded ); |
62 | layout->addWidget( TabWidget3 ); | 61 | layout->addWidget( TabWidget3 ); |
63 | 62 | ||
64 | tab_2 = new QWidget( TabWidget3, "tab_2" ); | 63 | tab_2 = new QWidget( TabWidget3, "tab_2" ); |
65 | QVBoxLayout *tab2Layout = new QVBoxLayout( tab_2, 4 ,4 ); | 64 | QVBoxLayout *tab2Layout = new QVBoxLayout( tab_2, 4 ,4 ); |
66 | QLabel *l = new QLabel( tr( "Load which plugins in what order:" ), tab_2 ); | 65 | QLabel *l = new QLabel( tr( "Load which plugins in what order:" ), tab_2 ); |
67 | tab2Layout->addWidget( l ); | 66 | tab2Layout->addWidget( l ); |
68 | QHBox *hbox1 = new QHBox( tab_2 ); | 67 | QHBox *hbox1 = new QHBox( tab_2 ); |
69 | m_appletListView = new QListView( hbox1 ); | 68 | m_appletListView = new QListView( hbox1 ); |
70 | m_appletListView->addColumn( "PluginList" ); | 69 | m_appletListView->addColumn( "PluginList" ); |
71 | m_appletListView->header()->hide(); | 70 | m_appletListView->header()->hide(); |
71 | m_appletListView->setSorting( -1 ); | ||
72 | QVBox *vbox1 = new QVBox( hbox1 ); | 72 | QVBox *vbox1 = new QVBox( hbox1 ); |
73 | new ToolButton( vbox1, tr( "Move Up" ), "opieplayer/up", this , SLOT( moveSelectedUp() ) ); | 73 | new ToolButton( vbox1, tr( "Move Up" ), "opieplayer/up", this , SLOT( moveSelectedUp() ) ); |
74 | new ToolButton( vbox1, tr( "Move Down" ),"opieplayer/down", this , SLOT( moveSelectedDown() ) ); | 74 | new ToolButton( vbox1, tr( "Move Down" ),"opieplayer/down", this , SLOT( moveSelectedDown() ) ); |
75 | tab2Layout->addWidget( hbox1 ); | 75 | tab2Layout->addWidget( hbox1 ); |
76 | |||
77 | TabWidget3->insertTab( tab_2, tr( "active/order" ) ); | 76 | TabWidget3->insertTab( tab_2, tr( "active/order" ) ); |
77 | |||
78 | tab_3 = new QWidget( TabWidget3, "tab_3" ); | 78 | tab_3 = new QWidget( TabWidget3, "tab_3" ); |
79 | QVBoxLayout *tab3Layout = new QVBoxLayout( tab_3 ); | 79 | QVBoxLayout *tab3Layout = new QVBoxLayout( tab_3 ); |
80 | QHBox *hbox_clip = new QHBox( tab_3 ); | 80 | tab3Layout->setMargin( 20 ); |
81 | TextLabel1 = new QLabel( hbox_clip, "TextLabel1" ); | ||
82 | TextLabel1->setText( tr( "Clip after how\n" | ||
83 | "many letters" ) ); | ||
84 | SpinBox7 = new QSpinBox( hbox_clip, "SpinBox7" ); | ||
85 | SpinBox7->setMaxValue( 80 ); | ||
86 | QHBox *hbox_auto = new QHBox( tab_3 ); | 81 | QHBox *hbox_auto = new QHBox( tab_3 ); |
87 | TextLabel2 = new QLabel( hbox_auto, "AutoStart" ); | 82 | TextLabel2 = new QLabel( hbox_auto, "AutoStart" ); |
88 | TextLabel2->setText( tr( "autostart on \nresume? (Opie only)" ) ); | 83 | TextLabel2->setText( tr( "autostart on \nresume?\n (Opie only)" ) ); |
89 | CheckBoxAuto = new QCheckBox( hbox_auto, "CheckBoxAuto" ); | 84 | CheckBoxAuto = new QCheckBox( hbox_auto, "CheckBoxAuto" ); |
90 | QHBox *hbox_inactive = new QHBox( tab_3 ); | 85 | QHBox *hbox_inactive = new QHBox( tab_3 ); |
91 | TimeLabel = new QLabel( hbox_inactive , "TimeLabel" ); | 86 | TimeLabel = new QLabel( hbox_inactive , "TimeLabel" ); |
92 | TimeLabel->setText( tr( "minutes inactive" ) ); | 87 | TimeLabel->setText( tr( "minutes inactive" ) ); |
93 | SpinBoxTime = new QSpinBox( hbox_inactive, "TimeSpinner"); | 88 | SpinBoxTime = new QSpinBox( hbox_inactive, "TimeSpinner" ); |
94 | tab3Layout->addWidget( hbox_clip ); | ||
95 | tab3Layout->addWidget( hbox_auto ); | 89 | tab3Layout->addWidget( hbox_auto ); |
96 | tab3Layout->addWidget( hbox_inactive ); | 90 | tab3Layout->addWidget( hbox_inactive ); |
97 | TabWidget3->insertTab( tab_3, tr( "Misc" ) ); | 91 | TabWidget3->insertTab( tab_3, tr( "Misc" ) ); |
98 | 92 | ||
99 | m_applets_changed = false; | 93 | m_applets_changed = false; |
100 | 94 | ||
101 | connect ( m_appletListView , SIGNAL( clicked ( QListViewItem * ) ), this, SLOT( appletChanged ( ) ) ); | 95 | connect ( m_appletListView , SIGNAL( clicked ( QListViewItem * ) ), this, SLOT( appletChanged ( ) ) ); |
102 | 96 | ||
103 | readConfig(); | 97 | readConfig(); |
104 | showMaximized(); | 98 | showMaximized(); |
105 | } | 99 | } |
106 | 100 | ||
107 | 101 | ||
108 | /** | 102 | /** |
109 | * Autostart, uses the new (opie only) autostart method in the launcher code. | 103 | * Autostart, uses the new (opie only) autostart method in the launcher code. |
110 | * If registered against that today ist started on each resume. | 104 | * If registered against that today ist started on each resume. |
111 | */ | 105 | */ |
112 | void TodayConfig::setAutoStart() { | 106 | void TodayConfig::setAutoStart() { |
113 | Config cfg( "today" ); | 107 | Config cfg( "today" ); |
114 | cfg.setGroup( "Autostart" ); | 108 | cfg.setGroup( "Autostart" ); |
115 | int autostart = cfg.readNumEntry( "autostart", 1); | 109 | int autostart = cfg.readNumEntry( "autostart", 1 ); |
116 | if ( autostart ) { | 110 | if ( autostart ) { |
117 | QCopEnvelope e( "QPE/System", "autoStart(QString,QString,QString)" ); | 111 | QCopEnvelope e( "QPE/System", "autoStart(QString,QString,QString)" ); |
118 | e << QString( "add" ); | 112 | e << QString( "add" ); |
119 | e << QString( "today" ); | 113 | e << QString( "today" ); |
120 | e << m_autoStartTimer; | 114 | e << m_autoStartTimer; |
121 | } else { | 115 | } else { |
122 | QCopEnvelope e( "QPE/System", "autoStart(QString,QString)" ); | 116 | QCopEnvelope e( "QPE/System", "autoStart(QString,QString)" ); |
123 | e << QString( "remove" ); | 117 | e << QString( "remove" ); |
124 | e << QString( "today" ); | 118 | e << QString( "today" ); |
125 | } | 119 | } |
126 | } | 120 | } |
127 | 121 | ||
128 | /** | 122 | /** |
129 | * Read the config part | 123 | * Read the config part |
130 | */ | 124 | */ |
131 | void TodayConfig::readConfig() { | 125 | void TodayConfig::readConfig() { |
132 | Config cfg( "today" ); | 126 | Config cfg( "today" ); |
133 | cfg.setGroup( "Autostart" ); | 127 | cfg.setGroup( "Autostart" ); |
134 | m_autoStart = cfg.readNumEntry( "autostart", 1 ); | 128 | m_autoStart = cfg.readNumEntry( "autostart", 1 ); |
135 | CheckBoxAuto->setChecked( m_autoStart ); | 129 | CheckBoxAuto->setChecked( m_autoStart ); |
136 | m_autoStartTimer = cfg.readEntry( "autostartdelay", "0" ); | 130 | m_autoStartTimer = cfg.readEntry( "autostartdelay", "0" ); |
137 | SpinBoxTime->setValue( m_autoStartTimer.toInt() ); | 131 | SpinBoxTime->setValue( m_autoStartTimer.toInt() ); |
138 | 132 | ||
139 | cfg.setGroup( "Applets" ); | 133 | cfg.setGroup( "Plugins" ); |
140 | m_excludeApplets = cfg.readListEntry( "ExcludeApplets", ',' ); | 134 | m_excludeApplets = cfg.readListEntry( "ExcludeApplets", ',' ); |
141 | } | 135 | } |
142 | 136 | ||
143 | /** | 137 | /** |
144 | * Write the config part | 138 | * Write the config part |
145 | */ | 139 | */ |
146 | void TodayConfig::writeConfig() { | 140 | void TodayConfig::writeConfig() { |
147 | Config cfg( "today" ); | 141 | Config cfg( "today" ); |
148 | cfg. setGroup ( "Applets" ); | 142 | cfg.setGroup( "Plugins" ); |
149 | if ( m_applets_changed ) { | 143 | if ( m_applets_changed ) { |
150 | QStringList exclude; | 144 | QStringList exclude; |
151 | QStringList include; | 145 | QStringList include; |
152 | QMap <QString, QCheckListItem *>::Iterator it; | 146 | QStringList all_applets; |
153 | for ( it = m_applets.begin(); it != m_applets. end (); ++it ) { | 147 | |
154 | if ( !(*it)-> isOn () ) { | 148 | QListViewItemIterator list_it( m_appletListView ); |
155 | exclude << it.key(); | 149 | |
156 | } else { | 150 | // this makes sure the names get saved in the order selected |
157 | include << it.key(); | 151 | for ( ; list_it.current(); ++list_it ) { |
152 | QMap <QString, QCheckListItem *>::Iterator it; | ||
153 | for ( it = m_applets.begin(); it != m_applets. end (); ++it ) { | ||
154 | if ( list_it.current() == (*it) && !(*it)-> isOn () ) { | ||
155 | exclude << it.key(); | ||
156 | } else if ( list_it.current() == (*it) && (*it)-> isOn () ){ | ||
157 | include << it.key(); | ||
158 | } | ||
159 | if ( list_it.current() == (*it) ) { | ||
160 | all_applets << it.key(); | ||
161 | } | ||
158 | } | 162 | } |
159 | } | 163 | } |
160 | cfg.writeEntry( "ExcludeApplets", exclude, ',' ); | 164 | cfg.writeEntry( "ExcludeApplets", exclude, ',' ); |
161 | cfg.writeEntry( "IncludeApplets", include, ',' ); | 165 | cfg.writeEntry( "IncludeApplets", include, ',' ); |
166 | cfg.writeEntry( "AllApplets", all_applets, ',' ); | ||
162 | } | 167 | } |
163 | 168 | ||
164 | cfg.setGroup( "Autostart" ); | 169 | cfg.setGroup( "Autostart" ); |
165 | m_autoStart = CheckBoxAuto->isChecked(); | 170 | m_autoStart = CheckBoxAuto->isChecked(); |
166 | cfg.writeEntry( "autostart", m_autoStart ); | 171 | cfg.writeEntry( "autostart", m_autoStart ); |
167 | m_autoStartTimer = SpinBoxTime->value(); | 172 | m_autoStartTimer = SpinBoxTime->value(); |
168 | cfg.readEntry( "autostartdelay", m_autoStartTimer ); | 173 | cfg.readEntry( "autostartdelay", m_autoStartTimer ); |
169 | } | 174 | } |
170 | 175 | ||
171 | 176 | ||
172 | void TodayConfig::moveSelectedUp() { | 177 | void TodayConfig::moveSelectedUp() { |
173 | QListViewItem *item = m_appletListView->selectedItem(); | 178 | QListViewItem *item = m_appletListView->selectedItem(); |
174 | if ( item && item->itemAbove() ) { | 179 | if ( item && item->itemAbove() ) { |
175 | item->itemAbove()->moveItem( item ); | 180 | item->itemAbove()->moveItem( item ); |
176 | } | 181 | } |
177 | } | 182 | } |
178 | 183 | ||
179 | 184 | ||
180 | void TodayConfig::moveSelectedDown() { | 185 | void TodayConfig::moveSelectedDown() { |
181 | QListViewItem *item = m_appletListView->selectedItem(); | 186 | QListViewItem *item = m_appletListView->selectedItem(); |
182 | if ( item && item->itemBelow() ) { | 187 | if ( item && item->itemBelow() ) { |
183 | item->moveItem( item->itemBelow() ); | 188 | item->moveItem( item->itemBelow() ); |
184 | } | 189 | } |
185 | } | 190 | } |
186 | 191 | ||
187 | 192 | ||
188 | /** | 193 | /** |
189 | * Set up the | 194 | * Set up the |
190 | */ | 195 | */ |
191 | void TodayConfig::pluginManagement( QString libName, QString name, QPixmap icon ) { | 196 | void TodayConfig::pluginManagement( QString libName, QString name, QPixmap icon ) { |
192 | 197 | ||
193 | QCheckListItem *item; | 198 | QCheckListItem *item; |
194 | item = new QCheckListItem( m_appletListView, name, QCheckListItem::CheckBox ); | 199 | item = new QCheckListItem( m_appletListView, name, QCheckListItem::CheckBox ); |
195 | 200 | ||
196 | if ( !icon.isNull() ) { | 201 | if ( !icon.isNull() ) { |
197 | item->setPixmap( 0, icon ); | 202 | item->setPixmap( 0, icon ); |
198 | } | 203 | } |
199 | 204 | ||
200 | qDebug (" SUCHNAME: " + name ); | ||
201 | if ( m_excludeApplets.find( libName ) == m_excludeApplets.end() ) { | 205 | if ( m_excludeApplets.find( libName ) == m_excludeApplets.end() ) { |
202 | item->setOn( TRUE ); | 206 | item->setOn( TRUE ); |
203 | } | 207 | } |
208 | |||
204 | m_applets[libName] = item; | 209 | m_applets[libName] = item; |
205 | } | 210 | } |
206 | 211 | ||
207 | 212 | ||
208 | void TodayConfig::appletChanged() { | 213 | void TodayConfig::appletChanged() { |
209 | m_applets_changed = true; | 214 | m_applets_changed = true; |
210 | } | 215 | } |
211 | 216 | ||
212 | 217 | ||
213 | TodayConfig::~TodayConfig() { | 218 | TodayConfig::~TodayConfig() { |
214 | } | 219 | } |
215 | 220 | ||