Diffstat (limited to 'kaddressbook/viewmanager.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | kaddressbook/viewmanager.cpp | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/kaddressbook/viewmanager.cpp b/kaddressbook/viewmanager.cpp index 9c3a641..4be860e 100644 --- a/kaddressbook/viewmanager.cpp +++ b/kaddressbook/viewmanager.cpp | |||
@@ -158,262 +158,261 @@ QStringList ViewManager::selectedUids() const | |||
158 | 158 | ||
159 | QStringList ViewManager::selectedEmails() const | 159 | QStringList ViewManager::selectedEmails() const |
160 | { | 160 | { |
161 | if ( mActiveView ) | 161 | if ( mActiveView ) |
162 | return mActiveView->selectedEmails(); | 162 | return mActiveView->selectedEmails(); |
163 | else | 163 | else |
164 | return QStringList(); | 164 | return QStringList(); |
165 | } | 165 | } |
166 | 166 | ||
167 | KABC::Addressee::List ViewManager::selectedAddressees() const | 167 | KABC::Addressee::List ViewManager::selectedAddressees() const |
168 | { | 168 | { |
169 | KABC::Addressee::List list; | 169 | KABC::Addressee::List list; |
170 | if ( mActiveView ) { | 170 | if ( mActiveView ) { |
171 | QStringList uids = mActiveView->selectedUids(); | 171 | QStringList uids = mActiveView->selectedUids(); |
172 | QStringList::Iterator it; | 172 | QStringList::Iterator it; |
173 | for ( it = uids.begin(); it != uids.end(); ++it ) { | 173 | for ( it = uids.begin(); it != uids.end(); ++it ) { |
174 | KABC::Addressee addr = mCore->addressBook()->findByUid( *it ); | 174 | KABC::Addressee addr = mCore->addressBook()->findByUid( *it ); |
175 | if ( !addr.isEmpty() ) | 175 | if ( !addr.isEmpty() ) |
176 | list.append( addr ); | 176 | list.append( addr ); |
177 | } | 177 | } |
178 | } | 178 | } |
179 | 179 | ||
180 | return list; | 180 | return list; |
181 | } | 181 | } |
182 | //US added another method with no parameter, since my moc compiler does not support default parameters. | 182 | //US added another method with no parameter, since my moc compiler does not support default parameters. |
183 | void ViewManager::setSelected() | 183 | void ViewManager::setSelected() |
184 | { | 184 | { |
185 | setSelected( QString::null, true ); | 185 | setSelected( QString::null, true ); |
186 | } | 186 | } |
187 | 187 | ||
188 | void ViewManager::setSelected( const QString &uid, bool selected ) | 188 | void ViewManager::setSelected( const QString &uid, bool selected ) |
189 | { | 189 | { |
190 | if ( mActiveView ) | 190 | if ( mActiveView ) |
191 | mActiveView->setSelected( uid, selected ); | 191 | mActiveView->setSelected( uid, selected ); |
192 | } | 192 | } |
193 | 193 | ||
194 | void ViewManager::setListSelected(QStringList list) | 194 | void ViewManager::setListSelected(QStringList list) |
195 | { | 195 | { |
196 | int i, count = list.count(); | 196 | int i, count = list.count(); |
197 | for ( i = 0; i < count;++i ) | 197 | for ( i = 0; i < count;++i ) |
198 | setSelected( list[i], true ); | 198 | setSelected( list[i], true ); |
199 | 199 | ||
200 | } | 200 | } |
201 | void ViewManager::unloadViews() | 201 | void ViewManager::unloadViews() |
202 | { | 202 | { |
203 | mViewDict.clear(); | 203 | mViewDict.clear(); |
204 | mActiveView = 0; | 204 | mActiveView = 0; |
205 | } | 205 | } |
206 | 206 | ||
207 | void ViewManager::setActiveView( const QString &name ) | 207 | void ViewManager::setActiveView( const QString &name ) |
208 | { | 208 | { |
209 | KAddressBookView *view = 0; | 209 | KAddressBookView *view = 0; |
210 | 210 | ||
211 | // Check that this isn't the same as the current active view | 211 | // Check that this isn't the same as the current active view |
212 | if ( mActiveView && ( mActiveView->caption() == name ) ) | 212 | if ( mActiveView && ( mActiveView->caption() == name ) ) |
213 | return; | 213 | return; |
214 | 214 | ||
215 | // At this point we know the view that should be active is not | 215 | // At this point we know the view that should be active is not |
216 | // currently active. We will try to find the new on in the list. If | 216 | // currently active. We will try to find the new on in the list. If |
217 | // we can't find it, it means it hasn't been instantiated, so we will | 217 | // we can't find it, it means it hasn't been instantiated, so we will |
218 | // create it on demand. | 218 | // create it on demand. |
219 | 219 | ||
220 | view = mViewDict.find( name ); | 220 | view = mViewDict.find( name ); |
221 | 221 | ||
222 | // Check if we found the view. If we didn't, then we need to create it | 222 | // Check if we found the view. If we didn't, then we need to create it |
223 | if ( view == 0 ) { | 223 | if ( view == 0 ) { |
224 | KConfig *config = mCore->config(); | 224 | KConfig *config = mCore->config(); |
225 | 225 | ||
226 | KConfigGroupSaver saver( config, name ); | 226 | KConfigGroupSaver saver( config, name ); |
227 | 227 | ||
228 | QString type = config->readEntry( "Type", "Table" ); | 228 | QString type = config->readEntry( "Type", "Table" ); |
229 | 229 | ||
230 | kdDebug(5720) << "ViewManager::setActiveView: creating view - " << name << endl; | 230 | kdDebug(5720) << "ViewManager::setActiveView: creating view - " << name << endl; |
231 | 231 | ||
232 | ViewFactory *factory = mViewFactoryDict.find( type ); | 232 | ViewFactory *factory = mViewFactoryDict.find( type ); |
233 | if ( factory ) | 233 | if ( factory ) |
234 | view = factory->view( mCore->addressBook(), mViewWidgetStack ); | 234 | view = factory->view( mCore->addressBook(), mViewWidgetStack ); |
235 | 235 | ||
236 | if ( view ) { | 236 | if ( view ) { |
237 | view->setCaption( name ); | 237 | view->setCaption( name ); |
238 | mViewDict.insert( name, view ); | 238 | mViewDict.insert( name, view ); |
239 | //US my version needs an int as second parameter to addWidget | 239 | //US my version needs an int as second parameter to addWidget |
240 | mViewWidgetStack->addWidget( view, -1 ); | 240 | mViewWidgetStack->addWidget( view, -1 ); |
241 | view->readConfig( config ); | 241 | view->readConfig( config ); |
242 | 242 | ||
243 | // The manager just relays the signals | 243 | // The manager just relays the signals |
244 | connect( view, SIGNAL( selected( const QString& ) ), | 244 | connect( view, SIGNAL( selected( const QString& ) ), |
245 | SIGNAL( selected( const QString & ) ) ); | 245 | SIGNAL( selected( const QString & ) ) ); |
246 | connect( view, SIGNAL( executed( const QString& ) ), | 246 | connect( view, SIGNAL( executed( const QString& ) ), |
247 | SIGNAL( executed( const QString& ) ) ); | 247 | SIGNAL( executed( const QString& ) ) ); |
248 | 248 | ||
249 | connect( view, SIGNAL( deleteRequest( ) ), | 249 | connect( view, SIGNAL( deleteRequest( ) ), |
250 | SIGNAL( deleteRequest( ) ) ); | 250 | SIGNAL( deleteRequest( ) ) ); |
251 | 251 | ||
252 | connect( view, SIGNAL( modified() ), SIGNAL( modified() ) ); | 252 | connect( view, SIGNAL( modified() ), SIGNAL( modified() ) ); |
253 | connect( view, SIGNAL( dropped( QDropEvent* ) ), | 253 | connect( view, SIGNAL( dropped( QDropEvent* ) ), |
254 | SLOT( dropped( QDropEvent* ) ) ); | 254 | SLOT( dropped( QDropEvent* ) ) ); |
255 | connect( view, SIGNAL( startDrag() ), SLOT( startDrag() ) ); | 255 | connect( view, SIGNAL( startDrag() ), SLOT( startDrag() ) ); |
256 | } | 256 | } |
257 | } | 257 | } |
258 | 258 | ||
259 | // If we found or created the view, raise it and refresh it | 259 | // If we found or created the view, raise it and refresh it |
260 | if ( view ) { | 260 | if ( view ) { |
261 | mActiveView = view; | 261 | mActiveView = view; |
262 | mViewWidgetStack->raiseWidget( view ); | 262 | mViewWidgetStack->raiseWidget( view ); |
263 | // Set the proper filter in the view. By setting the combo | 263 | // Set the proper filter in the view. By setting the combo |
264 | // box, the activated slot will be called, which will push | 264 | // box, the activated slot will be called, which will push |
265 | // the filter to the view and refresh it. | 265 | // the filter to the view and refresh it. |
266 | 266 | ||
267 | if ( view->defaultFilterType() == KAddressBookView::None ) { | 267 | if ( view->defaultFilterType() == KAddressBookView::None ) { |
268 | 268 | ||
269 | mActionSelectFilter->setCurrentItem( 0 ); | 269 | mActionSelectFilter->setCurrentItem( 0 ); |
270 | setActiveFilter( 0 ); | 270 | setActiveFilter( 0 ); |
271 | } else if ( view->defaultFilterType() == KAddressBookView::Active ) { | 271 | } else if ( view->defaultFilterType() == KAddressBookView::Active ) { |
272 | setActiveFilter( mActionSelectFilter->currentItem() ); | 272 | setActiveFilter( mActionSelectFilter->currentItem() ); |
273 | } else { | 273 | } else { |
274 | uint pos = filterPosition( view->defaultFilterName() ); | 274 | uint pos = filterPosition( view->defaultFilterName() ); |
275 | mActionSelectFilter->setCurrentItem( pos ); | 275 | mActionSelectFilter->setCurrentItem( pos ); |
276 | setActiveFilter( pos ); | 276 | setActiveFilter( pos ); |
277 | } | 277 | } |
278 | //US qDebug("ViewManager::setActiveView 6" ); | 278 | //US qDebug("ViewManager::setActiveView 6" ); |
279 | 279 | ||
280 | // Update the inc search widget to show the fields in the new active | 280 | // Update the inc search widget to show the fields in the new active |
281 | // view. | 281 | // view. |
282 | mCore->setSearchFields( mActiveView->fields() ); | 282 | mCore->setSearchFields( mActiveView->fields() ); |
283 | 283 | ||
284 | //US performance optimization. setActiveFilter calls also mActiveView->refresh() | 284 | //US performance optimization. setActiveFilter calls also mActiveView->refresh() |
285 | //US mActiveView->refresh(); | 285 | //US mActiveView->refresh(); |
286 | 286 | mCore->saveSettings(); | |
287 | } | 287 | } |
288 | else | 288 | else |
289 | { | 289 | { |
290 | qDebug("ViewManager::setActiveView: unable to find view" ); | 290 | qDebug("ViewManager::setActiveView: unable to find view" ); |
291 | kdDebug(5720) << "ViewManager::setActiveView: unable to find view\n"; | ||
292 | } | 291 | } |
293 | } | 292 | } |
294 | 293 | ||
295 | //US added another method with no parameter, since my moc compiler does not support default parameters. | 294 | //US added another method with no parameter, since my moc compiler does not support default parameters. |
296 | void ViewManager::refreshView() | 295 | void ViewManager::refreshView() |
297 | { | 296 | { |
298 | refreshView( QString::null ); | 297 | refreshView( QString::null ); |
299 | } | 298 | } |
300 | 299 | ||
301 | void ViewManager::refreshView( const QString &uid ) | 300 | void ViewManager::refreshView( const QString &uid ) |
302 | { | 301 | { |
303 | if ( mActiveView ) | 302 | if ( mActiveView ) |
304 | mActiveView->refresh( uid ); | 303 | mActiveView->refresh( uid ); |
305 | } | 304 | } |
306 | 305 | ||
307 | void ViewManager::setFocusAV() | 306 | void ViewManager::setFocusAV() |
308 | { | 307 | { |
309 | if ( mActiveView ) | 308 | if ( mActiveView ) |
310 | mActiveView->setFocusAV(); | 309 | mActiveView->setFocusAV(); |
311 | } | 310 | } |
312 | void ViewManager::editView() | 311 | void ViewManager::editView() |
313 | { | 312 | { |
314 | if ( !mActiveView ) | 313 | if ( !mActiveView ) |
315 | return; | 314 | return; |
316 | 315 | ||
317 | ViewFactory *factory = mViewFactoryDict.find( mActiveView->type() ); | 316 | ViewFactory *factory = mViewFactoryDict.find( mActiveView->type() ); |
318 | ViewConfigureWidget *wdg = 0; | 317 | ViewConfigureWidget *wdg = 0; |
319 | ViewConfigureDialog* dlg = 0; | 318 | ViewConfigureDialog* dlg = 0; |
320 | if ( factory ) { | 319 | if ( factory ) { |
321 | // Save the filters so the dialog has the latest set | 320 | // Save the filters so the dialog has the latest set |
322 | Filter::save( mCore->config(), "Filter", mFilterList ); | 321 | Filter::save( mCore->config(), "Filter", mFilterList ); |
323 | dlg = new ViewConfigureDialog( 0, mActiveView->caption(), this, "conf_dlg" ); | 322 | dlg = new ViewConfigureDialog( 0, mActiveView->caption(), this, "conf_dlg" ); |
324 | wdg = factory->configureWidget( mCore->addressBook(), dlg,"conf_wid" ); | 323 | wdg = factory->configureWidget( mCore->addressBook(), dlg,"conf_wid" ); |
325 | } else { | 324 | } else { |
326 | qDebug("ViewManager::editView()::cannot find viewfactory "); | 325 | qDebug("ViewManager::editView()::cannot find viewfactory "); |
327 | return; | 326 | return; |
328 | } | 327 | } |
329 | if ( wdg ) { | 328 | if ( wdg ) { |
330 | dlg->setWidget( wdg ); | 329 | dlg->setWidget( wdg ); |
331 | 330 | ||
332 | #ifndef DESKTOP_VERSION | 331 | #ifndef DESKTOP_VERSION |
333 | //dlg.setMaximumSize( 640, 480 ); | 332 | //dlg.setMaximumSize( 640, 480 ); |
334 | //dlg->setGeometry( 40,40, 400, 300); | 333 | //dlg->setGeometry( 40,40, 400, 300); |
335 | dlg->showMaximized(); | 334 | dlg->showMaximized(); |
336 | #endif | 335 | #endif |
337 | 336 | ||
338 | KConfigGroupSaver saver( mCore->config(), mActiveView->caption() ); | 337 | KConfigGroupSaver saver( mCore->config(), mActiveView->caption() ); |
339 | 338 | ||
340 | dlg->restoreSettings( mCore->config() ); | 339 | dlg->restoreSettings( mCore->config() ); |
341 | 340 | ||
342 | if ( dlg->exec() ) { | 341 | if ( dlg->exec() ) { |
343 | dlg->saveSettings( mCore->config() ); | 342 | dlg->saveSettings( mCore->config() ); |
344 | mActiveView->readConfig( mCore->config() ); | 343 | mActiveView->readConfig( mCore->config() ); |
345 | 344 | ||
346 | // Set the proper filter in the view. By setting the combo | 345 | // Set the proper filter in the view. By setting the combo |
347 | // box, the activated slot will be called, which will push | 346 | // box, the activated slot will be called, which will push |
348 | // the filter to the view and refresh it. | 347 | // the filter to the view and refresh it. |
349 | if ( mActiveView->defaultFilterType() == KAddressBookView::None ) { | 348 | if ( mActiveView->defaultFilterType() == KAddressBookView::None ) { |
350 | mActionSelectFilter->setCurrentItem( 0 ); | 349 | mActionSelectFilter->setCurrentItem( 0 ); |
351 | setActiveFilter( 0 ); | 350 | setActiveFilter( 0 ); |
352 | } else if ( mActiveView->defaultFilterType() == KAddressBookView::Active ) { | 351 | } else if ( mActiveView->defaultFilterType() == KAddressBookView::Active ) { |
353 | setActiveFilter( mActionSelectFilter->currentItem() ); | 352 | setActiveFilter( mActionSelectFilter->currentItem() ); |
354 | } else { | 353 | } else { |
355 | uint pos = filterPosition( mActiveView->defaultFilterName() ); | 354 | uint pos = filterPosition( mActiveView->defaultFilterName() ); |
356 | mActionSelectFilter->setCurrentItem( pos ); | 355 | mActionSelectFilter->setCurrentItem( pos ); |
357 | setActiveFilter( pos ); | 356 | setActiveFilter( pos ); |
358 | } | 357 | } |
359 | mCore->setSearchFields( mActiveView->fields() ); | 358 | mCore->setSearchFields( mActiveView->fields() ); |
360 | //US performance optimization. setActiveFilter calls also mActiveView->refresh() | 359 | //US performance optimization. setActiveFilter calls also mActiveView->refresh() |
361 | //US mActiveView->refresh(); | 360 | //US mActiveView->refresh(); |
362 | 361 | ||
363 | 362 | ||
364 | //US this is a bugfix, that we get notified if we change a views configuration | 363 | //US this is a bugfix, that we get notified if we change a views configuration |
365 | emit modified(); | 364 | emit modified(); |
366 | 365 | ||
367 | } | 366 | } |
368 | 367 | ||
369 | } | 368 | } |
370 | delete dlg; | 369 | delete dlg; |
371 | } | 370 | } |
372 | 371 | ||
373 | void ViewManager::deleteView() | 372 | void ViewManager::deleteView() |
374 | { | 373 | { |
375 | QString text = i18n( "<qt>Are you sure that you want to delete the view <b>%1</b>?</qt>" ) | 374 | QString text = i18n( "<qt>Are you sure that you want to delete the view <b>%1</b>?</qt>" ) |
376 | .arg( mActiveView->caption() ); | 375 | .arg( mActiveView->caption() ); |
377 | QString caption = i18n( "Confirm Delete" ); | 376 | QString caption = i18n( "Confirm Delete" ); |
378 | 377 | ||
379 | 378 | ||
380 | if (QMessageBox::information( this, caption, | 379 | if (QMessageBox::information( this, caption, |
381 | text, | 380 | text, |
382 | i18n("Yes!"), i18n("No"), 0, 0 ) == 0) | 381 | i18n("Yes!"), i18n("No"), 0, 0 ) == 0) |
383 | { | 382 | { |
384 | mViewNameList.remove( mActiveView->caption() ); | 383 | mViewNameList.remove( mActiveView->caption() ); |
385 | 384 | ||
386 | // remove the view from the config file | 385 | // remove the view from the config file |
387 | KConfig *config = mCore->config(); | 386 | KConfig *config = mCore->config(); |
388 | config->deleteGroup( mActiveView->caption() ); | 387 | config->deleteGroup( mActiveView->caption() ); |
389 | 388 | ||
390 | mViewDict.remove( mActiveView->caption() ); | 389 | mViewDict.remove( mActiveView->caption() ); |
391 | mActiveView = 0; | 390 | mActiveView = 0; |
392 | 391 | ||
393 | // we are in an invalid state now, but that should be fixed after | 392 | // we are in an invalid state now, but that should be fixed after |
394 | // we emit the signal | 393 | // we emit the signal |
395 | mActionSelectView->setItems( mViewNameList ); | 394 | mActionSelectView->setItems( mViewNameList ); |
396 | if ( mViewNameList.count() > 0 ) { | 395 | if ( mViewNameList.count() > 0 ) { |
397 | mActionSelectView->setCurrentItem( 0 ); | 396 | mActionSelectView->setCurrentItem( 0 ); |
398 | setActiveView( mViewNameList[ 0 ] ); | 397 | setActiveView( mViewNameList[ 0 ] ); |
399 | } | 398 | } |
400 | mActionDeleteView->setEnabled( mViewNameList.count() > 1 ); | 399 | mActionDeleteView->setEnabled( mViewNameList.count() > 1 ); |
401 | } | 400 | } |
402 | } | 401 | } |
403 | 402 | ||
404 | void ViewManager::addView() | 403 | void ViewManager::addView() |
405 | { | 404 | { |
406 | AddViewDialog dialog( &mViewFactoryDict, this ); | 405 | AddViewDialog dialog( &mViewFactoryDict, this ); |
407 | 406 | ||
408 | if ( dialog.exec() ) { | 407 | if ( dialog.exec() ) { |
409 | QString newName = dialog.viewName(); | 408 | QString newName = dialog.viewName(); |
410 | QString type = dialog.viewType(); | 409 | QString type = dialog.viewType(); |
411 | 410 | ||
412 | // Check for name conflicts | 411 | // Check for name conflicts |
413 | bool firstConflict = true; | 412 | bool firstConflict = true; |
414 | int numTries = 1; | 413 | int numTries = 1; |
415 | while ( mViewNameList.contains( newName ) > 0 ) { | 414 | while ( mViewNameList.contains( newName ) > 0 ) { |
416 | if ( !firstConflict ) { | 415 | if ( !firstConflict ) { |
417 | newName = newName.left( newName.length() - 4 ); | 416 | newName = newName.left( newName.length() - 4 ); |
418 | firstConflict = false; | 417 | firstConflict = false; |
419 | } | 418 | } |