summaryrefslogtreecommitdiffabout
path: root/kaddressbook/viewmanager.cpp
Unidiff
Diffstat (limited to 'kaddressbook/viewmanager.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/viewmanager.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/kaddressbook/viewmanager.cpp b/kaddressbook/viewmanager.cpp
index 4be860e..04759a7 100644
--- a/kaddressbook/viewmanager.cpp
+++ b/kaddressbook/viewmanager.cpp
@@ -111,272 +111,276 @@ void ViewManager::restoreSettings()
111 if (QApplication::desktop()->width() == 480 ) 111 if (QApplication::desktop()->width() == 480 )
112 cw = 0; 112 cw = 0;
113 mActionSelectFilter->setComboWidth( cw ); 113 mActionSelectFilter->setComboWidth( cw );
114 // Tell the views to reread their config, since they may have 114 // Tell the views to reread their config, since they may have
115 // been modified by global settings 115 // been modified by global settings
116 QString _oldgroup = mCore->config()->group(); 116 QString _oldgroup = mCore->config()->group();
117 117
118 QDictIterator<KAddressBookView> it( mViewDict ); 118 QDictIterator<KAddressBookView> it( mViewDict );
119 for ( it.toFirst(); it.current(); ++it ) { 119 for ( it.toFirst(); it.current(); ++it ) {
120 KConfigGroupSaver saver( mCore->config(), it.currentKey() ); 120 KConfigGroupSaver saver( mCore->config(), it.currentKey() );
121 it.current()->readConfig( mCore->config() ); 121 it.current()->readConfig( mCore->config() );
122 } 122 }
123 setActiveView( activeViewName ); 123 setActiveView( activeViewName );
124 124
125 mActionDeleteView->setEnabled( mViewNameList.count() > 1 ); 125 mActionDeleteView->setEnabled( mViewNameList.count() > 1 );
126} 126}
127 127
128void ViewManager::saveSettings() 128void ViewManager::saveSettings()
129{ 129{
130 QString _oldgroup = mCore->config()->group(); 130 QString _oldgroup = mCore->config()->group();
131 131
132 QDictIterator<KAddressBookView> it( mViewDict ); 132 QDictIterator<KAddressBookView> it( mViewDict );
133 for ( it.toFirst(); it.current(); ++it ) { 133 for ( it.toFirst(); it.current(); ++it ) {
134 KConfigGroupSaver saver( mCore->config(), it.currentKey() ); 134 KConfigGroupSaver saver( mCore->config(), it.currentKey() );
135#ifdef DESKTOP_VERSION 135#ifdef DESKTOP_VERSION
136 (*it)->writeConfig( mCore->config() ); 136 (*it)->writeConfig( mCore->config() );
137#else 137#else
138 (*it).writeConfig( mCore->config() ); 138 (*it).writeConfig( mCore->config() );
139#endif 139#endif
140 } 140 }
141 141
142 Filter::save( mCore->config(), "Filter", mFilterList ); 142 Filter::save( mCore->config(), "Filter", mFilterList );
143 KABPrefs::instance()->mCurrentFilter = mActionSelectFilter->currentItem(); 143 KABPrefs::instance()->mCurrentFilter = mActionSelectFilter->currentItem();
144 144
145 // write the view name list 145 // write the view name list
146 KABPrefs::instance()->mViewNames = mViewNameList; 146 KABPrefs::instance()->mViewNames = mViewNameList;
147 KABPrefs::instance()->mCurrentView = mActiveView->caption(); 147 KABPrefs::instance()->mCurrentView = mActiveView->caption();
148 148
149} 149}
150 150
151QStringList ViewManager::selectedUids() const 151QStringList ViewManager::selectedUids() const
152{ 152{
153 if ( mActiveView ) 153 if ( mActiveView )
154 return mActiveView->selectedUids(); 154 return mActiveView->selectedUids();
155 else 155 else
156 return QStringList(); 156 return QStringList();
157} 157}
158 158
159QStringList ViewManager::selectedEmails() const 159QStringList 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
167KABC::Addressee::List ViewManager::selectedAddressees() const 167KABC::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.
183void ViewManager::setSelected() 183void ViewManager::setSelected()
184{ 184{
185 setSelected( QString::null, true ); 185 setSelected( QString::null, true );
186} 186}
187 187
188void ViewManager::setSelected( const QString &uid, bool selected ) 188void 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
194void ViewManager::setListSelected(QStringList list) 194void 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}
201void ViewManager::unloadViews() 201void ViewManager::unloadViews()
202{ 202{
203 mViewDict.clear(); 203 mViewDict.clear();
204 mActiveView = 0; 204 mActiveView = 0;
205} 205}
206 206
207void ViewManager::selectView( const QString &name )
208{
209 setActiveView( name );
210 mCore->saveSettings();
211}
207void ViewManager::setActiveView( const QString &name ) 212void ViewManager::setActiveView( const QString &name )
208{ 213{
209 KAddressBookView *view = 0; 214 KAddressBookView *view = 0;
210 215
211 // Check that this isn't the same as the current active view 216 // Check that this isn't the same as the current active view
212 if ( mActiveView && ( mActiveView->caption() == name ) ) 217 if ( mActiveView && ( mActiveView->caption() == name ) )
213 return; 218 return;
214 219
215 // At this point we know the view that should be active is not 220 // 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 221 // 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 222 // we can't find it, it means it hasn't been instantiated, so we will
218 // create it on demand. 223 // create it on demand.
219 224
220 view = mViewDict.find( name ); 225 view = mViewDict.find( name );
221 226
222 // Check if we found the view. If we didn't, then we need to create it 227 // Check if we found the view. If we didn't, then we need to create it
223 if ( view == 0 ) { 228 if ( view == 0 ) {
224 KConfig *config = mCore->config(); 229 KConfig *config = mCore->config();
225 230
226 KConfigGroupSaver saver( config, name ); 231 KConfigGroupSaver saver( config, name );
227 232
228 QString type = config->readEntry( "Type", "Table" ); 233 QString type = config->readEntry( "Type", "Table" );
229 234
230 kdDebug(5720) << "ViewManager::setActiveView: creating view - " << name << endl; 235 kdDebug(5720) << "ViewManager::setActiveView: creating view - " << name << endl;
231 236
232 ViewFactory *factory = mViewFactoryDict.find( type ); 237 ViewFactory *factory = mViewFactoryDict.find( type );
233 if ( factory ) 238 if ( factory )
234 view = factory->view( mCore->addressBook(), mViewWidgetStack ); 239 view = factory->view( mCore->addressBook(), mViewWidgetStack );
235 240
236 if ( view ) { 241 if ( view ) {
237 view->setCaption( name ); 242 view->setCaption( name );
238 mViewDict.insert( name, view ); 243 mViewDict.insert( name, view );
239//US my version needs an int as second parameter to addWidget 244//US my version needs an int as second parameter to addWidget
240 mViewWidgetStack->addWidget( view, -1 ); 245 mViewWidgetStack->addWidget( view, -1 );
241 view->readConfig( config ); 246 view->readConfig( config );
242 247
243 // The manager just relays the signals 248 // The manager just relays the signals
244 connect( view, SIGNAL( selected( const QString& ) ), 249 connect( view, SIGNAL( selected( const QString& ) ),
245 SIGNAL( selected( const QString & ) ) ); 250 SIGNAL( selected( const QString & ) ) );
246 connect( view, SIGNAL( executed( const QString& ) ), 251 connect( view, SIGNAL( executed( const QString& ) ),
247 SIGNAL( executed( const QString& ) ) ); 252 SIGNAL( executed( const QString& ) ) );
248 253
249 connect( view, SIGNAL( deleteRequest( ) ), 254 connect( view, SIGNAL( deleteRequest( ) ),
250 SIGNAL( deleteRequest( ) ) ); 255 SIGNAL( deleteRequest( ) ) );
251 256
252 connect( view, SIGNAL( modified() ), SIGNAL( modified() ) ); 257 connect( view, SIGNAL( modified() ), SIGNAL( modified() ) );
253 connect( view, SIGNAL( dropped( QDropEvent* ) ), 258 connect( view, SIGNAL( dropped( QDropEvent* ) ),
254 SLOT( dropped( QDropEvent* ) ) ); 259 SLOT( dropped( QDropEvent* ) ) );
255 connect( view, SIGNAL( startDrag() ), SLOT( startDrag() ) ); 260 connect( view, SIGNAL( startDrag() ), SLOT( startDrag() ) );
256 } 261 }
257 } 262 }
258 263
259 // If we found or created the view, raise it and refresh it 264 // If we found or created the view, raise it and refresh it
260 if ( view ) { 265 if ( view ) {
261 mActiveView = view; 266 mActiveView = view;
262 mViewWidgetStack->raiseWidget( view ); 267 mViewWidgetStack->raiseWidget( view );
263 // Set the proper filter in the view. By setting the combo 268 // Set the proper filter in the view. By setting the combo
264 // box, the activated slot will be called, which will push 269 // box, the activated slot will be called, which will push
265 // the filter to the view and refresh it. 270 // the filter to the view and refresh it.
266 271
267 if ( view->defaultFilterType() == KAddressBookView::None ) { 272 if ( view->defaultFilterType() == KAddressBookView::None ) {
268 273
269 mActionSelectFilter->setCurrentItem( 0 ); 274 mActionSelectFilter->setCurrentItem( 0 );
270 setActiveFilter( 0 ); 275 setActiveFilter( 0 );
271 } else if ( view->defaultFilterType() == KAddressBookView::Active ) { 276 } else if ( view->defaultFilterType() == KAddressBookView::Active ) {
272 setActiveFilter( mActionSelectFilter->currentItem() ); 277 setActiveFilter( mActionSelectFilter->currentItem() );
273 } else { 278 } else {
274 uint pos = filterPosition( view->defaultFilterName() ); 279 uint pos = filterPosition( view->defaultFilterName() );
275 mActionSelectFilter->setCurrentItem( pos ); 280 mActionSelectFilter->setCurrentItem( pos );
276 setActiveFilter( pos ); 281 setActiveFilter( pos );
277 } 282 }
278//US qDebug("ViewManager::setActiveView 6" ); 283//US qDebug("ViewManager::setActiveView 6" );
279 284
280 // Update the inc search widget to show the fields in the new active 285 // Update the inc search widget to show the fields in the new active
281 // view. 286 // view.
282 mCore->setSearchFields( mActiveView->fields() ); 287 mCore->setSearchFields( mActiveView->fields() );
283 288
284//US performance optimization. setActiveFilter calls also mActiveView->refresh() 289//US performance optimization. setActiveFilter calls also mActiveView->refresh()
285//US mActiveView->refresh(); 290//US mActiveView->refresh();
286 mCore->saveSettings();
287 } 291 }
288 else 292 else
289 { 293 {
290 qDebug("ViewManager::setActiveView: unable to find view" ); 294 qDebug("ViewManager::setActiveView: unable to find view" );
291 } 295 }
292} 296}
293 297
294//US added another method with no parameter, since my moc compiler does not support default parameters. 298//US added another method with no parameter, since my moc compiler does not support default parameters.
295void ViewManager::refreshView() 299void ViewManager::refreshView()
296{ 300{
297 refreshView( QString::null ); 301 refreshView( QString::null );
298} 302}
299 303
300void ViewManager::refreshView( const QString &uid ) 304void ViewManager::refreshView( const QString &uid )
301{ 305{
302 if ( mActiveView ) 306 if ( mActiveView )
303 mActiveView->refresh( uid ); 307 mActiveView->refresh( uid );
304} 308}
305 309
306void ViewManager::setFocusAV() 310void ViewManager::setFocusAV()
307{ 311{
308 if ( mActiveView ) 312 if ( mActiveView )
309 mActiveView->setFocusAV(); 313 mActiveView->setFocusAV();
310} 314}
311void ViewManager::editView() 315void ViewManager::editView()
312{ 316{
313 if ( !mActiveView ) 317 if ( !mActiveView )
314 return; 318 return;
315 319
316 ViewFactory *factory = mViewFactoryDict.find( mActiveView->type() ); 320 ViewFactory *factory = mViewFactoryDict.find( mActiveView->type() );
317 ViewConfigureWidget *wdg = 0; 321 ViewConfigureWidget *wdg = 0;
318 ViewConfigureDialog* dlg = 0; 322 ViewConfigureDialog* dlg = 0;
319 if ( factory ) { 323 if ( factory ) {
320 // Save the filters so the dialog has the latest set 324 // Save the filters so the dialog has the latest set
321 Filter::save( mCore->config(), "Filter", mFilterList ); 325 Filter::save( mCore->config(), "Filter", mFilterList );
322 dlg = new ViewConfigureDialog( 0, mActiveView->caption(), this, "conf_dlg" ); 326 dlg = new ViewConfigureDialog( 0, mActiveView->caption(), this, "conf_dlg" );
323 wdg = factory->configureWidget( mCore->addressBook(), dlg,"conf_wid" ); 327 wdg = factory->configureWidget( mCore->addressBook(), dlg,"conf_wid" );
324 } else { 328 } else {
325 qDebug("ViewManager::editView()::cannot find viewfactory "); 329 qDebug("ViewManager::editView()::cannot find viewfactory ");
326 return; 330 return;
327 } 331 }
328 if ( wdg ) { 332 if ( wdg ) {
329 dlg->setWidget( wdg ); 333 dlg->setWidget( wdg );
330 334
331#ifndef DESKTOP_VERSION 335#ifndef DESKTOP_VERSION
332 //dlg.setMaximumSize( 640, 480 ); 336 //dlg.setMaximumSize( 640, 480 );
333 //dlg->setGeometry( 40,40, 400, 300); 337 //dlg->setGeometry( 40,40, 400, 300);
334 dlg->showMaximized(); 338 dlg->showMaximized();
335#endif 339#endif
336 340
337 KConfigGroupSaver saver( mCore->config(), mActiveView->caption() ); 341 KConfigGroupSaver saver( mCore->config(), mActiveView->caption() );
338 342
339 dlg->restoreSettings( mCore->config() ); 343 dlg->restoreSettings( mCore->config() );
340 344
341 if ( dlg->exec() ) { 345 if ( dlg->exec() ) {
342 dlg->saveSettings( mCore->config() ); 346 dlg->saveSettings( mCore->config() );
343 mActiveView->readConfig( mCore->config() ); 347 mActiveView->readConfig( mCore->config() );
344 348
345 // Set the proper filter in the view. By setting the combo 349 // Set the proper filter in the view. By setting the combo
346 // box, the activated slot will be called, which will push 350 // box, the activated slot will be called, which will push
347 // the filter to the view and refresh it. 351 // the filter to the view and refresh it.
348 if ( mActiveView->defaultFilterType() == KAddressBookView::None ) { 352 if ( mActiveView->defaultFilterType() == KAddressBookView::None ) {
349 mActionSelectFilter->setCurrentItem( 0 ); 353 mActionSelectFilter->setCurrentItem( 0 );
350 setActiveFilter( 0 ); 354 setActiveFilter( 0 );
351 } else if ( mActiveView->defaultFilterType() == KAddressBookView::Active ) { 355 } else if ( mActiveView->defaultFilterType() == KAddressBookView::Active ) {
352 setActiveFilter( mActionSelectFilter->currentItem() ); 356 setActiveFilter( mActionSelectFilter->currentItem() );
353 } else { 357 } else {
354 uint pos = filterPosition( mActiveView->defaultFilterName() ); 358 uint pos = filterPosition( mActiveView->defaultFilterName() );
355 mActionSelectFilter->setCurrentItem( pos ); 359 mActionSelectFilter->setCurrentItem( pos );
356 setActiveFilter( pos ); 360 setActiveFilter( pos );
357 } 361 }
358 mCore->setSearchFields( mActiveView->fields() ); 362 mCore->setSearchFields( mActiveView->fields() );
359//US performance optimization. setActiveFilter calls also mActiveView->refresh() 363//US performance optimization. setActiveFilter calls also mActiveView->refresh()
360//US mActiveView->refresh(); 364//US mActiveView->refresh();
361 365
362 366
363 //US this is a bugfix, that we get notified if we change a views configuration 367 //US this is a bugfix, that we get notified if we change a views configuration
364 emit modified(); 368 emit modified();
365 369
366 } 370 }
367 371
368 } 372 }
369 delete dlg; 373 delete dlg;
370} 374}
371 375
372void ViewManager::deleteView() 376void ViewManager::deleteView()
373{ 377{
374 QString text = i18n( "<qt>Are you sure that you want to delete the view <b>%1</b>?</qt>" ) 378 QString text = i18n( "<qt>Are you sure that you want to delete the view <b>%1</b>?</qt>" )
375 .arg( mActiveView->caption() ); 379 .arg( mActiveView->caption() );
376 QString caption = i18n( "Confirm Delete" ); 380 QString caption = i18n( "Confirm Delete" );
377 381
378 382
379 if (QMessageBox::information( this, caption, 383 if (QMessageBox::information( this, caption,
380 text, 384 text,
381 i18n("Yes!"), i18n("No"), 0, 0 ) == 0) 385 i18n("Yes!"), i18n("No"), 0, 0 ) == 0)
382 { 386 {
@@ -396,339 +400,338 @@ void ViewManager::deleteView()
396 mActionSelectView->setCurrentItem( 0 ); 400 mActionSelectView->setCurrentItem( 0 );
397 setActiveView( mViewNameList[ 0 ] ); 401 setActiveView( mViewNameList[ 0 ] );
398 } 402 }
399 mActionDeleteView->setEnabled( mViewNameList.count() > 1 ); 403 mActionDeleteView->setEnabled( mViewNameList.count() > 1 );
400 } 404 }
401} 405}
402 406
403void ViewManager::addView() 407void ViewManager::addView()
404{ 408{
405 AddViewDialog dialog( &mViewFactoryDict, this ); 409 AddViewDialog dialog( &mViewFactoryDict, this );
406 410
407 if ( dialog.exec() ) { 411 if ( dialog.exec() ) {
408 QString newName = dialog.viewName(); 412 QString newName = dialog.viewName();
409 QString type = dialog.viewType(); 413 QString type = dialog.viewType();
410 414
411 // Check for name conflicts 415 // Check for name conflicts
412 bool firstConflict = true; 416 bool firstConflict = true;
413 int numTries = 1; 417 int numTries = 1;
414 while ( mViewNameList.contains( newName ) > 0 ) { 418 while ( mViewNameList.contains( newName ) > 0 ) {
415 if ( !firstConflict ) { 419 if ( !firstConflict ) {
416 newName = newName.left( newName.length() - 4 ); 420 newName = newName.left( newName.length() - 4 );
417 firstConflict = false; 421 firstConflict = false;
418 } 422 }
419 423
420 newName = QString( "%1 <%2>" ).arg( newName ).arg( numTries ); 424 newName = QString( "%1 <%2>" ).arg( newName ).arg( numTries );
421 numTries++; 425 numTries++;
422 } 426 }
423 427
424 // Add the new one to the list 428 // Add the new one to the list
425 mViewNameList.append( newName ); 429 mViewNameList.append( newName );
426 430
427 // write the view to the config file, 431 // write the view to the config file,
428 KConfig *config = mCore->config(); 432 KConfig *config = mCore->config();
429 433
430 config->deleteGroup( newName ); 434 config->deleteGroup( newName );
431 435
432 KConfigGroupSaver saver( config, newName ); 436 KConfigGroupSaver saver( config, newName );
433 437
434 config->writeEntry( "Type", type ); 438 config->writeEntry( "Type", type );
435 439
436 // try to set the active view 440 // try to set the active view
437 mActionSelectView->setItems( mViewNameList ); 441 mActionSelectView->setItems( mViewNameList );
438 mActionSelectView->setCurrentItem( mViewNameList.findIndex( newName ) ); 442 mActionSelectView->setCurrentItem( mViewNameList.findIndex( newName ) );
439 setActiveView( newName ); 443 setActiveView( newName );
440 444
441 editView(); 445 editView();
442 446
443 mActionDeleteView->setEnabled( mViewNameList.count() > 1 ); 447 mActionDeleteView->setEnabled( mViewNameList.count() > 1 );
444 } 448 }
445} 449}
446 450
447void ViewManager::createViewFactories() 451void ViewManager::createViewFactories()
448{ 452{
449#ifndef KAB_EMBEDDED 453#ifndef KAB_EMBEDDED
450 KTrader::OfferList plugins = KTrader::self()->query( "KAddressBook/View" ); 454 KTrader::OfferList plugins = KTrader::self()->query( "KAddressBook/View" );
451 KTrader::OfferList::ConstIterator it; 455 KTrader::OfferList::ConstIterator it;
452 for ( it = plugins.begin(); it != plugins.end(); ++it ) { 456 for ( it = plugins.begin(); it != plugins.end(); ++it ) {
453 if ( !(*it)->hasServiceType( "KAddressBook/View" ) ) 457 if ( !(*it)->hasServiceType( "KAddressBook/View" ) )
454 continue; 458 continue;
455 459
456 KLibFactory *factory = KLibLoader::self()->factory( (*it)->library().latin1() ); 460 KLibFactory *factory = KLibLoader::self()->factory( (*it)->library().latin1() );
457 461
458 if ( !factory ) { 462 if ( !factory ) {
459 kdDebug(5720) << "ViewManager::createViewFactories(): Factory creation failed" << endl; 463 kdDebug(5720) << "ViewManager::createViewFactories(): Factory creation failed" << endl;
460 continue; 464 continue;
461 } 465 }
462 466
463 ViewFactory *viewFactory = static_cast<ViewFactory*>( factory ); 467 ViewFactory *viewFactory = static_cast<ViewFactory*>( factory );
464 468
465 if ( !viewFactory ) { 469 if ( !viewFactory ) {
466 kdDebug(5720) << "ViewManager::createViewFactories(): Cast failed" << endl; 470 kdDebug(5720) << "ViewManager::createViewFactories(): Cast failed" << endl;
467 continue; 471 continue;
468 } 472 }
469 473
470 mViewFactoryDict.insert( viewFactory->type(), viewFactory ); 474 mViewFactoryDict.insert( viewFactory->type(), viewFactory );
471 } 475 }
472 476
473#else //KAB_EMBEDDED 477#else //KAB_EMBEDDED
474 ViewFactory* viewFactory = new IconViewFactory(); 478 ViewFactory* viewFactory = new IconViewFactory();
475 mViewFactoryDict.insert( viewFactory->type(), viewFactory ); 479 mViewFactoryDict.insert( viewFactory->type(), viewFactory );
476// qDebug("ViewManager::createViewFactories() Loading factory: %s", viewFactory->type().latin1()); 480// qDebug("ViewManager::createViewFactories() Loading factory: %s", viewFactory->type().latin1());
477 481
478 viewFactory = new TableViewFactory(); 482 viewFactory = new TableViewFactory();
479 mViewFactoryDict.insert( viewFactory->type(), viewFactory ); 483 mViewFactoryDict.insert( viewFactory->type(), viewFactory );
480// qDebug("ViewManager::createViewFactories() Loading factory: %s", viewFactory->type().latin1()); 484// qDebug("ViewManager::createViewFactories() Loading factory: %s", viewFactory->type().latin1());
481 485
482 viewFactory = new CardViewFactory(); 486 viewFactory = new CardViewFactory();
483 mViewFactoryDict.insert( viewFactory->type(), viewFactory ); 487 mViewFactoryDict.insert( viewFactory->type(), viewFactory );
484// qDebug("ViewManager::createViewFactories() Loading factory: %s", viewFactory->type().latin1()); 488// qDebug("ViewManager::createViewFactories() Loading factory: %s", viewFactory->type().latin1());
485 489
486#endif //KAB_EMBEDDED 490#endif //KAB_EMBEDDED
487 491
488} 492}
489 493
490void ViewManager::dropped( QDropEvent *e ) 494void ViewManager::dropped( QDropEvent *e )
491{ 495{
492 kdDebug(5720) << "ViewManager::dropped: got a drop event" << endl;
493 496
494#ifndef KAB_EMBEDDED 497#ifndef KAB_EMBEDDED
495 498
496 QString clipText, vcards; 499 QString clipText, vcards;
497 KURL::List urls; 500 KURL::List urls;
498 501
499 if ( KURLDrag::decode( e, urls) ) { 502 if ( KURLDrag::decode( e, urls) ) {
500 KURL::List::Iterator it = urls.begin(); 503 KURL::List::Iterator it = urls.begin();
501 int c = urls.count(); 504 int c = urls.count();
502 if ( c > 1 ) { 505 if ( c > 1 ) {
503 QString questionString = i18n( "Import one contact into your addressbook?", "Import %n contacts into your addressbook?", c ); 506 QString questionString = i18n( "Import one contact into your addressbook?", "Import %n contacts into your addressbook?", c );
504 if ( KMessageBox::questionYesNo( this, questionString, i18n( "Import Contacts?" ) ) == KMessageBox::Yes ) { 507 if ( KMessageBox::questionYesNo( this, questionString, i18n( "Import Contacts?" ) ) == KMessageBox::Yes ) {
505 for ( ; it != urls.end(); ++it ) 508 for ( ; it != urls.end(); ++it )
506 emit urlDropped( *it ); 509 emit urlDropped( *it );
507 } 510 }
508 } else if ( c == 1 ) 511 } else if ( c == 1 )
509 emit urlDropped( *it ); 512 emit urlDropped( *it );
510 } else if ( KVCardDrag::decode( e, vcards ) ) { 513 } else if ( KVCardDrag::decode( e, vcards ) ) {
511 KABC::Addressee addr; 514 KABC::Addressee addr;
512 KABC::VCardConverter converter; 515 KABC::VCardConverter converter;
513 QStringList list = QStringList::split( "\r\n\r\n", vcards ); 516 QStringList list = QStringList::split( "\r\n\r\n", vcards );
514 QStringList::Iterator it; 517 QStringList::Iterator it;
515 for ( it = list.begin(); it != list.end(); ++it ) { 518 for ( it = list.begin(); it != list.end(); ++it ) {
516 if ( converter.vCardToAddressee( (*it).stripWhiteSpace(), addr ) ) { 519 if ( converter.vCardToAddressee( (*it).stripWhiteSpace(), addr ) ) {
517 KABC::Addressee a = mCore->addressBook()->findByUid( addr.uid() ); 520 KABC::Addressee a = mCore->addressBook()->findByUid( addr.uid() );
518 if ( a.isEmpty() ) { 521 if ( a.isEmpty() ) {
519 mCore->addressBook()->insertAddressee( addr ); 522 mCore->addressBook()->insertAddressee( addr );
520 emit modified(); 523 emit modified();
521 } 524 }
522 } 525 }
523 } 526 }
524 527
525 mActiveView->refresh(); 528 mActiveView->refresh();
526 } 529 }
527#else //KAB_EMBEDDED 530#else //KAB_EMBEDDED
528qDebug("ViewManager::dropped() has to be changed!!" ); 531qDebug("ViewManager::dropped() has to be changed!!" );
529#endif //KAB_EMBEDDED 532#endif //KAB_EMBEDDED
530 533
531} 534}
532 535
533void ViewManager::startDrag() 536void ViewManager::startDrag()
534{ 537{
535 kdDebug(5720) << "ViewManager::startDrag: starting to drag" << endl; 538 kdDebug(5720) << "ViewManager::startDrag: starting to drag" << endl;
536 539
537#ifndef KAB_EMBEDDED 540#ifndef KAB_EMBEDDED
538 541
539 // Get the list of all the selected addressees 542 // Get the list of all the selected addressees
540 KABC::Addressee::List addrList; 543 KABC::Addressee::List addrList;
541 QStringList uidList = selectedUids(); 544 QStringList uidList = selectedUids();
542 QStringList::Iterator iter; 545 QStringList::Iterator iter;
543 for ( iter = uidList.begin(); iter != uidList.end(); ++iter ) 546 for ( iter = uidList.begin(); iter != uidList.end(); ++iter )
544 addrList.append( mCore->addressBook()->findByUid( *iter ) ); 547 addrList.append( mCore->addressBook()->findByUid( *iter ) );
545 548
546 KMultipleDrag *drag = new KMultipleDrag( this ); 549 KMultipleDrag *drag = new KMultipleDrag( this );
547 drag->addDragObject( new QTextDrag( AddresseeUtil::addresseesToClipboard(addrList), this ) ); 550 drag->addDragObject( new QTextDrag( AddresseeUtil::addresseesToClipboard(addrList), this ) );
548 KABC::Addressee::List::Iterator it; 551 KABC::Addressee::List::Iterator it;
549 QStringList vcards; 552 QStringList vcards;
550 for ( it = addrList.begin(); it != addrList.end(); ++it ) { 553 for ( it = addrList.begin(); it != addrList.end(); ++it ) {
551 QString vcard = QString::null; 554 QString vcard = QString::null;
552 KABC::VCardConverter converter; 555 KABC::VCardConverter converter;
553 if ( converter.addresseeToVCard( *it, vcard ) ) 556 if ( converter.addresseeToVCard( *it, vcard ) )
554 vcards.append( vcard ); 557 vcards.append( vcard );
555 } 558 }
556 drag->addDragObject( new KVCardDrag( vcards.join( "\r\n" ), this ) ); 559 drag->addDragObject( new KVCardDrag( vcards.join( "\r\n" ), this ) );
557 560
558 drag->setPixmap( KGlobal::iconLoader()->loadIcon( "vcard", KIcon::Desktop ) ); 561 drag->setPixmap( KGlobal::iconLoader()->loadIcon( "vcard", KIcon::Desktop ) );
559 drag->dragCopy(); 562 drag->dragCopy();
560 563
561#else //KAB_EMBEDDED 564#else //KAB_EMBEDDED
562qDebug("ViewManager::startDrag() has to be changed!!" ); 565qDebug("ViewManager::startDrag() has to be changed!!" );
563#endif //KAB_EMBEDDED 566#endif //KAB_EMBEDDED
564 567
565} 568}
566void ViewManager::doSearch( const QString& s,KABC::Field *field ) 569void ViewManager::doSearch( const QString& s,KABC::Field *field )
567{ 570{
568 if ( mActiveView ) 571 if ( mActiveView )
569 mActiveView->doSearch( s, field ); 572 mActiveView->doSearch( s, field );
570 573
571} 574}
572void ViewManager::setActiveFilter( int index ) 575void ViewManager::setActiveFilter( int index )
573{ 576{
574 Filter currentFilter; 577 Filter currentFilter;
575 578
576 if ( ( index - 1 ) < 0 ) 579 if ( ( index - 1 ) < 0 )
577 currentFilter = Filter(); 580 currentFilter = Filter();
578 else 581 else
579 currentFilter = mFilterList[ index - 1 ]; 582 currentFilter = mFilterList[ index - 1 ];
580 583
581 // Check if we have a view. Since the filter combo is created before 584 // Check if we have a view. Since the filter combo is created before
582 // the view, this slot could be called before there is a valid view. 585 // the view, this slot could be called before there is a valid view.
583 if ( mActiveView ) { 586 if ( mActiveView ) {
584 mActiveView->setFilter( currentFilter ); 587 mActiveView->setFilter( currentFilter );
585 mActiveView->refresh(); 588 mActiveView->refresh();
586 emit selected( QString::null ); 589 emit selected( QString::null );
587 } 590 }
588} 591}
589 592
590void ViewManager::configureFilters() 593void ViewManager::configureFilters()
591{ 594{
592 FilterDialog dlg( this ); 595 FilterDialog dlg( this );
593 596
594 dlg.setFilters( mFilterList ); 597 dlg.setFilters( mFilterList );
595 598
596 if ( dlg.exec() ) 599 if ( dlg.exec() )
597 mFilterList = dlg.filters(); 600 mFilterList = dlg.filters();
598 601
599 uint pos = mActionSelectFilter->currentItem(); 602 uint pos = mActionSelectFilter->currentItem();
600 mActionSelectFilter->setItems( filterNames() ); 603 mActionSelectFilter->setItems( filterNames() );
601 mActionSelectFilter->setCurrentItem( pos ); 604 mActionSelectFilter->setCurrentItem( pos );
602 setActiveFilter( pos ); 605 setActiveFilter( pos );
603 int cw = 150; 606 int cw = 150;
604 if (QApplication::desktop()->width() == 480 ) 607 if (QApplication::desktop()->width() == 480 )
605 cw = 0; 608 cw = 0;
606 mActionSelectFilter->setComboWidth( cw ); 609 mActionSelectFilter->setComboWidth( cw );
607 saveSettings(); 610 saveSettings();
608} 611}
609 612
610QStringList ViewManager::filterNames() const 613QStringList ViewManager::filterNames() const
611{ 614{
612 QStringList names( i18n( "No Filter" ) ); 615 QStringList names( i18n( "No Filter" ) );
613 616
614 Filter::List::ConstIterator it; 617 Filter::List::ConstIterator it;
615 for ( it = mFilterList.begin(); it != mFilterList.end(); ++it ) 618 for ( it = mFilterList.begin(); it != mFilterList.end(); ++it )
616 names.append( (*it).name() ); 619 names.append( (*it).name() );
617 620
618 return names; 621 return names;
619} 622}
620Filter ViewManager::getFilterByName( const QString &name ) const 623Filter ViewManager::getFilterByName( const QString &name ) const
621{ 624{
622 Filter::List::ConstIterator it; 625 Filter::List::ConstIterator it;
623 for ( it = mFilterList.begin(); it != mFilterList.end(); ++it ) 626 for ( it = mFilterList.begin(); it != mFilterList.end(); ++it )
624 if ( name == (*it).name() ) 627 if ( name == (*it).name() )
625 return (*it); 628 return (*it);
626 629
627 return Filter(); 630 return Filter();
628} 631}
629 632
630int ViewManager::filterPosition( const QString &name ) const 633int ViewManager::filterPosition( const QString &name ) const
631{ 634{
632 int pos = 0; 635 int pos = 0;
633 636
634 Filter::List::ConstIterator it; 637 Filter::List::ConstIterator it;
635 for ( it = mFilterList.begin(); it != mFilterList.end(); ++it, ++pos ) 638 for ( it = mFilterList.begin(); it != mFilterList.end(); ++it, ++pos )
636 if ( name == (*it).name() ) 639 if ( name == (*it).name() )
637 return pos + 1; 640 return pos + 1;
638 641
639 return 0; 642 return 0;
640} 643}
641 644
642void ViewManager::initActions() 645void ViewManager::initActions()
643{ 646{
644//US <ActionList name="view_loadedviews"/> 647//US <ActionList name="view_loadedviews"/>
645//US <Separator/> 648//US <Separator/>
646 649
647#ifdef KAB_EMBEDDED 650#ifdef KAB_EMBEDDED
648 QPopupMenu *viewmenu = (QPopupMenu*)mCore->getViewMenu(); 651 QPopupMenu *viewmenu = (QPopupMenu*)mCore->getViewMenu();
649 QPopupMenu *settingsmenu = (QPopupMenu*)mCore->getSettingsMenu(); 652 QPopupMenu *settingsmenu = (QPopupMenu*)mCore->getSettingsMenu();
650 QPopupMenu *filtermenu = (QPopupMenu*)mCore->getFilterMenu(); 653 QPopupMenu *filtermenu = (QPopupMenu*)mCore->getFilterMenu();
651#endif //KAB_EMBEDDED 654#endif //KAB_EMBEDDED
652 655
653 mActionSelectView = new KSelectAction( i18n( "Select View" ), 0, mCore->actionCollection(), "select_view" ); 656 mActionSelectView = new KSelectAction( i18n( "Select View" ), 0, mCore->actionCollection(), "select_view" );
654#if KDE_VERSION >= 309 657#if KDE_VERSION >= 309
655 mActionSelectView->setMenuAccelsEnabled( false ); 658 mActionSelectView->setMenuAccelsEnabled( false );
656#endif 659#endif
657 connect( mActionSelectView, SIGNAL( activated( const QString& ) ), 660 connect( mActionSelectView, SIGNAL( activated( const QString& ) ),
658 SLOT( setActiveView( const QString& ) ) ); 661 SLOT( selectView( const QString& ) ) );
659 662
660 663
661#ifdef KAB_EMBEDDED 664#ifdef KAB_EMBEDDED
662 mActionSelectView->plug(viewmenu); 665 mActionSelectView->plug(viewmenu);
663 viewmenu->insertSeparator(); 666 viewmenu->insertSeparator();
664#endif //KAB_EMBEDDED 667#endif //KAB_EMBEDDED
665 668
666 KAction *action; 669 KAction *action;
667 670
668 action = new KAction( i18n( "Modify View..." ), "configure", 0, this, 671 action = new KAction( i18n( "Modify View..." ), "configure", 0, this,
669 SLOT( editView() ), mCore->actionCollection(), "view_modify" ); 672 SLOT( editView() ), mCore->actionCollection(), "view_modify" );
670#ifndef KAB_EMBEDDED 673#ifndef KAB_EMBEDDED
671 action->setWhatsThis( i18n( "By pressing this button a dialog opens that allows you to modify the view of the addressbook. There you can add or remove fields that you want to be shown or hidden in the addressbook like the name for example." ) ); 674 action->setWhatsThis( i18n( "By pressing this button a dialog opens that allows you to modify the view of the addressbook. There you can add or remove fields that you want to be shown or hidden in the addressbook like the name for example." ) );
672#else //KAB_EMBEDDED 675#else //KAB_EMBEDDED
673 action->plug(viewmenu); 676 action->plug(viewmenu);
674#endif //KAB_EMBEDDED 677#endif //KAB_EMBEDDED
675 678
676 action = new KAction( i18n( "Add View..." ), "window_new", 0, this, 679 action = new KAction( i18n( "Add View..." ), "window_new", 0, this,
677 SLOT( addView() ), mCore->actionCollection(), "view_add" ); 680 SLOT( addView() ), mCore->actionCollection(), "view_add" );
678#ifndef KAB_EMBEDDED 681#ifndef KAB_EMBEDDED
679 action->setWhatsThis( i18n( "You can add a new view by choosing one of the dialog that appears after pressing the button. You have to give the view a name, so that you can distinguish between the different views." ) ); 682 action->setWhatsThis( i18n( "You can add a new view by choosing one of the dialog that appears after pressing the button. You have to give the view a name, so that you can distinguish between the different views." ) );
680#else //KAB_EMBEDDED 683#else //KAB_EMBEDDED
681 action->plug(viewmenu); 684 action->plug(viewmenu);
682#endif //KAB_EMBEDDED 685#endif //KAB_EMBEDDED
683 686
684 mActionDeleteView = new KAction( i18n( "Delete View" ), "view_remove", 0, 687 mActionDeleteView = new KAction( i18n( "Delete View" ), "view_remove", 0,
685 this, SLOT( deleteView() ), 688 this, SLOT( deleteView() ),
686 mCore->actionCollection(), "view_delete" ); 689 mCore->actionCollection(), "view_delete" );
687#ifndef KAB_EMBEDDED 690#ifndef KAB_EMBEDDED
688 mActionDeleteView->setWhatsThis( i18n( "By pressing this button you can delete the actual view, which you have added before." ) ); 691 mActionDeleteView->setWhatsThis( i18n( "By pressing this button you can delete the actual view, which you have added before." ) );
689#else //KAB_EMBEDDED 692#else //KAB_EMBEDDED
690 mActionDeleteView->plug(viewmenu); 693 mActionDeleteView->plug(viewmenu);
691 viewmenu->insertSeparator(); 694 viewmenu->insertSeparator();
692#endif //KAB_EMBEDDED 695#endif //KAB_EMBEDDED
693 696
694#ifndef KAB_EMBEDDED 697#ifndef KAB_EMBEDDED
695 action = new KAction( i18n( "Refresh View" ), "reload", 0, this, 698 action = new KAction( i18n( "Refresh View" ), "reload", 0, this,
696 SLOT( refreshView(const QString &) ), mCore->actionCollection(), 699 SLOT( refreshView(const QString &) ), mCore->actionCollection(),
697 "view_refresh" ); 700 "view_refresh" );
698 action->setWhatsThis( i18n( "The view will be refreshed by pressing this button." ) ); 701 action->setWhatsThis( i18n( "The view will be refreshed by pressing this button." ) );
699#else //KAB_EMBEDDED 702#else //KAB_EMBEDDED
700 action = new KAction( i18n( "Refresh View" ), "reload", 0, this, 703 action = new KAction( i18n( "Refresh View" ), "reload", 0, this,
701 SLOT( refreshView()), mCore->actionCollection(), 704 SLOT( refreshView()), mCore->actionCollection(),
702 "view_refresh" ); 705 "view_refresh" );
703 action->plug(viewmenu); 706 action->plug(viewmenu);
704 viewmenu->insertSeparator(); 707 viewmenu->insertSeparator();
705#endif //KAB_EMBEDDED 708#endif //KAB_EMBEDDED
706 709
707 action = new KAction( i18n( "Edit &Filters..." ), "filter", 0, this, 710 action = new KAction( i18n( "Edit &Filters..." ), "filter", 0, this,
708 SLOT( configureFilters() ), mCore->actionCollection(), 711 SLOT( configureFilters() ), mCore->actionCollection(),
709 "options_edit_filters" ); 712 "options_edit_filters" );
710 713
711 mActionSelectFilter = new KSelectAction( i18n( "Select Filter" ), "filter", mCore->actionCollection(), "select_filter" ); 714 mActionSelectFilter = new KSelectAction( i18n( "Select Filter" ), "filter", mCore->actionCollection(), "select_filter" );
712#if KDE_VERSION >= 309 715#if KDE_VERSION >= 309
713 mActionSelectFilter->setMenuAccelsEnabled( false ); 716 mActionSelectFilter->setMenuAccelsEnabled( false );
714#endif 717#endif
715 connect( mActionSelectFilter, SIGNAL( activated( int ) ), 718 connect( mActionSelectFilter, SIGNAL( activated( int ) ),
716 SLOT( setActiveFilter( int ) ) ); 719 SLOT( setActiveFilter( int ) ) );
717 720
718#ifdef KAB_EMBEDDED 721#ifdef KAB_EMBEDDED
719 action->plug(settingsmenu); 722 action->plug(settingsmenu);
720 mActionSelectFilter->plug(viewmenu); 723 mActionSelectFilter->plug(viewmenu);
721#endif //KAB_EMBEDDED 724#endif //KAB_EMBEDDED
722 725
723} 726}
724 727
725void ViewManager::initGUI() 728void ViewManager::initGUI()
726{ 729{
727 QHBoxLayout *layout = new QHBoxLayout( this, 0, 0 ); 730 QHBoxLayout *layout = new QHBoxLayout( this, 0, 0 );
728 mViewWidgetStack = new QWidgetStack( this ); 731 mViewWidgetStack = new QWidgetStack( this );
729 layout->addWidget( mViewWidgetStack ); 732 layout->addWidget( mViewWidgetStack );
730} 733}
731 734
732#ifndef KAB_EMBEDDED 735#ifndef KAB_EMBEDDED
733#include "viewmanager.moc" 736#include "viewmanager.moc"
734#endif //KAB_EMBEDDED 737#endif //KAB_EMBEDDED