-rw-r--r-- | core/pim/today/today.cpp | 167 |
1 files changed, 90 insertions, 77 deletions
diff --git a/core/pim/today/today.cpp b/core/pim/today/today.cpp index 09540bd..d78b5b5 100644 --- a/core/pim/today/today.cpp +++ b/core/pim/today/today.cpp | |||
@@ -32,10 +32,21 @@ | |||
32 | #include <qtimer.h> | 32 | #include <qtimer.h> |
33 | #include <qpixmap.h> | 33 | #include <qpixmap.h> |
34 | #include <qlayout.h> | 34 | #include <qlayout.h> |
35 | #include <qhbox.h> | ||
35 | #include <qtabwidget.h> | 36 | #include <qtabwidget.h> |
36 | #include <qdialog.h> | 37 | #include <qdialog.h> |
37 | 38 | ||
38 | 39 | ||
40 | struct TodayPlugin { | ||
41 | QLibrary *library; | ||
42 | TodayPluginInterface *iface; | ||
43 | TodayPluginObject *guiPart; | ||
44 | QHBox *guiBox; | ||
45 | QString name; | ||
46 | bool active; | ||
47 | int pos; | ||
48 | }; | ||
49 | |||
39 | static QValueList<TodayPlugin> pluginList; | 50 | static QValueList<TodayPlugin> pluginList; |
40 | 51 | ||
41 | Today::Today( QWidget* parent, const char* name, WFlags fl ) | 52 | Today::Today( QWidget* parent, const char* name, WFlags fl ) |
@@ -52,11 +63,12 @@ Today::Today( QWidget* parent, const char* name, WFlags fl ) | |||
52 | #endif | 63 | #endif |
53 | #endif | 64 | #endif |
54 | 65 | ||
55 | pluginLayout = 0l; | 66 | // pluginLayout = 0l; |
56 | 67 | ||
57 | setOwnerField(); | 68 | setOwnerField(); |
58 | init(); | 69 | init(); |
59 | refresh(); | 70 | loadPlugins(); |
71 | draw(); | ||
60 | showMaximized(); | 72 | showMaximized(); |
61 | } | 73 | } |
62 | 74 | ||
@@ -124,6 +136,7 @@ void Today::loadPlugins() { | |||
124 | (*tit).library->unload(); | 136 | (*tit).library->unload(); |
125 | delete (*tit).library; | 137 | delete (*tit).library; |
126 | } | 138 | } |
139 | pluginList.clear(); | ||
127 | 140 | ||
128 | QString path = QPEApplication::qpeDir() + "/plugins/today"; | 141 | QString path = QPEApplication::qpeDir() + "/plugins/today"; |
129 | QDir dir( path, "lib*.so" ); | 142 | QDir dir( path, "lib*.so" ); |
@@ -139,11 +152,11 @@ void Today::loadPlugins() { | |||
139 | qDebug( "querying: %s", QString( path + "/" + *it ).latin1() ); | 152 | qDebug( "querying: %s", QString( path + "/" + *it ).latin1() ); |
140 | if ( lib->queryInterface( IID_TodayPluginInterface, (QUnknownInterface**)&iface ) == QS_OK ) { | 153 | if ( lib->queryInterface( IID_TodayPluginInterface, (QUnknownInterface**)&iface ) == QS_OK ) { |
141 | qDebug( "loading: %s", QString( path + "/" + *it ).latin1() ); | 154 | qDebug( "loading: %s", QString( path + "/" + *it ).latin1() ); |
142 | qDebug( QString(*it).latin1() ); | 155 | qDebug( QString(*it) ); |
143 | TodayPlugin plugin; | 156 | TodayPlugin plugin; |
144 | plugin.library = lib; | 157 | plugin.library = lib; |
145 | plugin.iface = iface; | 158 | plugin.iface = iface; |
146 | plugin.name = QString(*it).latin1(); | 159 | plugin.name = QString(*it); |
147 | 160 | ||
148 | if ( m_excludeApplets.grep( *it ).isEmpty() ) { | 161 | if ( m_excludeApplets.grep( *it ).isEmpty() ) { |
149 | plugin.active = true; | 162 | plugin.active = true; |
@@ -151,6 +164,27 @@ void Today::loadPlugins() { | |||
151 | plugin.active = false; | 164 | plugin.active = false; |
152 | } | 165 | } |
153 | plugin.guiPart = plugin.iface->guiPart(); | 166 | plugin.guiPart = plugin.iface->guiPart(); |
167 | |||
168 | plugin.guiBox = new QHBox( this ); | ||
169 | QPixmap plugPix; | ||
170 | plugPix.convertFromImage( Resource::loadImage( plugin.guiPart->pixmapNameWidget() ).smoothScale( 18, 18 ), 0 ); | ||
171 | OClickableLabel* plugIcon = new OClickableLabel( plugin.guiBox ); | ||
172 | plugIcon->setPixmap( plugPix ); | ||
173 | QScrollView* sv = new QScrollView( plugin.guiBox ); | ||
174 | QWidget *plugWidget = plugin.guiPart->widget( sv->viewport() ); | ||
175 | sv->setMinimumHeight( plugin.guiPart->minHeight() ); | ||
176 | //sv->setMaximumHeight( plugin.guiPart->maxHeight() ); | ||
177 | sv->setResizePolicy( QScrollView::AutoOneFit ); | ||
178 | sv->setHScrollBarMode( QScrollView::AlwaysOff ); | ||
179 | sv->setFrameShape( QFrame::NoFrame ); | ||
180 | sv->addChild( plugWidget ); | ||
181 | |||
182 | //plugin.guiBox->addWidget( plugIcon, 0, AlignTop ); | ||
183 | //plugin.guiBox->addWidget( sv, 0, AlignTop ); | ||
184 | plugin.guiBox->setStretchFactor( plugIcon, 1 ); | ||
185 | plugin.guiBox->setStretchFactor( sv, 9 ); | ||
186 | layout->addWidget( plugin.guiBox ); | ||
187 | |||
154 | pluginList.append( plugin ); | 188 | pluginList.append( plugin ); |
155 | count++; | 189 | count++; |
156 | } else { | 190 | } else { |
@@ -166,11 +200,6 @@ void Today::loadPlugins() { | |||
166 | */ | 200 | */ |
167 | void Today::draw() { | 201 | void Today::draw() { |
168 | 202 | ||
169 | if ( pluginLayout ) { | ||
170 | delete pluginLayout; | ||
171 | } | ||
172 | pluginLayout = new QVBoxLayout( layout ); | ||
173 | |||
174 | if ( pluginList.count() == 0 ) { | 203 | if ( pluginList.count() == 0 ) { |
175 | QLabel *noPlugins = new QLabel( this ); | 204 | QLabel *noPlugins = new QLabel( this ); |
176 | noPlugins->setText( tr( "No plugins found" ) ); | 205 | noPlugins->setText( tr( "No plugins found" ) ); |
@@ -184,29 +213,15 @@ void Today::draw() { | |||
184 | plugin = pluginList[i]; | 213 | plugin = pluginList[i]; |
185 | 214 | ||
186 | if ( plugin.active ) { | 215 | if ( plugin.active ) { |
187 | QHBoxLayout* plugLayout = new QHBoxLayout( this ); | 216 | qDebug( plugin.name + " is ACTIVE " ); |
188 | QPixmap plugPix; | 217 | // QHBoxLayout* plugLayout = new QHBoxLayout( this ); |
189 | plugPix.convertFromImage( Resource::loadImage( plugin.guiPart->pixmapNameWidget() ).smoothScale( 18, 18 ), 0 ); | 218 | plugin.guiBox->show(); |
190 | OClickableLabel* plugIcon = new OClickableLabel( this ); | 219 | } else { |
191 | plugIcon->setPixmap( plugPix ); | 220 | // plugin.guiWidget->hide(); |
192 | QScrollView* sv = new QScrollView( this ); | 221 | qDebug( plugin.name + " is INACTIVE" ); |
193 | QWidget* plugWidget = plugin.guiPart->widget( sv->viewport() ); | 222 | plugin.guiBox->hide(); |
194 | // plugWidget->reparent( sv->viewport(), QPoint( 0, 0 ) ); | 223 | } |
195 | sv->setMinimumHeight( plugin.guiPart->minHeight() ); | 224 | count++; |
196 | //sv->setMaximumHeight( plugin.guiPart->maxHeight() ); | ||
197 | |||
198 | sv->setResizePolicy( QScrollView::AutoOneFit ); | ||
199 | sv->setHScrollBarMode( QScrollView::AlwaysOff ); | ||
200 | sv->setFrameShape( QFrame::NoFrame ); | ||
201 | sv->addChild( plugWidget ); | ||
202 | |||
203 | plugLayout->addWidget( plugIcon, 0, AlignTop ); | ||
204 | plugLayout->addWidget( sv, 0, AlignTop ); | ||
205 | plugLayout->setStretchFactor( plugIcon, 1 ); | ||
206 | plugLayout->setStretchFactor( sv, 9 ); | ||
207 | pluginLayout->addLayout( plugLayout ); | ||
208 | count++; | ||
209 | } | ||
210 | } | 225 | } |
211 | 226 | ||
212 | if ( count == 0 ) { | 227 | if ( count == 0 ) { |
@@ -216,18 +231,6 @@ void Today::draw() { | |||
216 | } | 231 | } |
217 | 232 | ||
218 | layout->addItem( new QSpacerItem( 1,1, QSizePolicy::Minimum, QSizePolicy::Expanding ) ); | 233 | layout->addItem( new QSpacerItem( 1,1, QSizePolicy::Minimum, QSizePolicy::Expanding ) ); |
219 | |||
220 | |||
221 | // how often refresh - later have qcop update calls in *db | ||
222 | // QTimer::singleShot( 20*1000, this, SLOT( draw() ) ); | ||
223 | } | ||
224 | |||
225 | |||
226 | void Today::refresh() { | ||
227 | loadPlugins(); | ||
228 | draw(); | ||
229 | qDebug( "redraw" ); | ||
230 | // QTimer::singleShot( 30*1000, this, SLOT( refresh() ) ); | ||
231 | } | 234 | } |
232 | 235 | ||
233 | 236 | ||
@@ -235,43 +238,53 @@ void Today::refresh() { | |||
235 | * The method for the configuration dialog. | 238 | * The method for the configuration dialog. |
236 | */ | 239 | */ |
237 | void Today::startConfig() { | 240 | void Today::startConfig() { |
238 | conf = new TodayConfig ( this, "", true ); | 241 | |
239 | 242 | TodayConfig conf( this, "dialog", true ); | |
240 | uint count = 0; | 243 | |
241 | TodayPlugin plugin; | 244 | TodayPlugin plugin; |
242 | 245 | ||
243 | QList<ConfigWidget> configWidgetList; | 246 | QList<ConfigWidget> configWidgetList; |
244 | for ( uint i = 0; i < pluginList.count(); i++ ) { | 247 | for ( uint i = 0; i < pluginList.count(); i++ ) { |
245 | plugin = pluginList[i]; | 248 | plugin = pluginList[i]; |
246 | 249 | ||
247 | // load the config widgets in the tabs | 250 | // load the config widgets in the tabs |
248 | if ( plugin.guiPart->configWidget( this ) != 0l ) { | 251 | if ( plugin.guiPart->configWidget( this ) != 0l ) { |
249 | ConfigWidget* widget = plugin.guiPart->configWidget( this ); | 252 | ConfigWidget* widget = plugin.guiPart->configWidget( this ); |
250 | widget->reparent( conf , QPoint( 0,0 ) ); | 253 | configWidgetList.append( widget ); |
251 | configWidgetList.append( widget ); | 254 | conf.TabWidget3->insertTab( widget, plugin.guiPart->appName() ); |
252 | conf->TabWidget3->insertTab( widget, plugin.guiPart->appName() ); | 255 | } |
253 | } | 256 | // set the order/activate tab |
254 | // set the order/activate tab | 257 | conf.pluginManagement( plugin.name, plugin.guiPart->pluginName(), |
255 | conf->pluginManagement( plugin.name, plugin.guiPart->pluginName(), | ||
256 | Resource::loadPixmap( plugin.guiPart->pixmapNameWidget() ) ); | 258 | Resource::loadPixmap( plugin.guiPart->pixmapNameWidget() ) ); |
257 | count++; | 259 | } |
258 | } | ||
259 | 260 | ||
260 | conf->showMaximized(); | 261 | conf.exec(); |
262 | if ( conf.exec() == QDialog::Accepted ) { | ||
263 | conf.writeConfig(); | ||
264 | ConfigWidget *confWidget; | ||
265 | for ( confWidget = configWidgetList.first(); confWidget != 0; | ||
266 | confWidget = configWidgetList.next() ) { | ||
267 | confWidget->writeConfig(); | ||
268 | } | ||
269 | init(); | ||
261 | 270 | ||
262 | if ( conf->exec() == QDialog::Accepted ) { | ||
263 | ConfigWidget *confWidget; | ||
264 | for ( confWidget=configWidgetList.first(); confWidget != 0; | ||
265 | confWidget = configWidgetList.next() ) { | ||
266 | confWidget->writeConfig(); | ||
267 | } | ||
268 | conf->writeConfig(); | ||
269 | 271 | ||
270 | init(); | 272 | TodayPlugin plugin; |
271 | loadPlugins(); | 273 | for ( uint i = 0; i < pluginList.count(); i++ ) { |
272 | draw(); | 274 | plugin = pluginList[i]; |
273 | } | 275 | |
274 | delete conf; | 276 | if ( m_excludeApplets.grep( plugin.name ).isEmpty() ) { |
277 | qDebug("CONFIG" + plugin.name + "ACTIVE"); | ||
278 | plugin.active = true; | ||
279 | } else { | ||
280 | qDebug("CONFIG" + plugin.name + "INACTIVE"); | ||
281 | |||
282 | plugin.active = false; | ||
283 | } | ||
284 | } | ||
285 | |||
286 | draw(); | ||
287 | } | ||
275 | } | 288 | } |
276 | 289 | ||
277 | 290 | ||