summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/kabcore.cpp13
1 files changed, 9 insertions, 4 deletions
diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp
index 755da11..d99a9cd 100644
--- a/kaddressbook/kabcore.cpp
+++ b/kaddressbook/kabcore.cpp
@@ -1241,1760 +1241,1765 @@ void KABCore::editContact( const QString &uid )
1241 localUID = *( uidList.at( 0 ) ); 1241 localUID = *( uidList.at( 0 ) );
1242 } 1242 }
1243 1243
1244 KABC::Addressee addr = mAddressBook->findByUid( localUID ); 1244 KABC::Addressee addr = mAddressBook->findByUid( localUID );
1245 if ( !addr.isEmpty() ) { 1245 if ( !addr.isEmpty() ) {
1246 mEditorDialog->setAddressee( addr ); 1246 mEditorDialog->setAddressee( addr );
1247 KApplication::execDialog ( mEditorDialog ); 1247 KApplication::execDialog ( mEditorDialog );
1248 } 1248 }
1249} 1249}
1250 1250
1251/** 1251/**
1252 Shows or edits the detail view for the given uid. If the uid is QString::null, 1252 Shows or edits the detail view for the given uid. If the uid is QString::null,
1253 the method will try to find a selected addressee in the view. 1253 the method will try to find a selected addressee in the view.
1254 */ 1254 */
1255void KABCore::executeContact( const QString &uid /*US = QString::null*/ ) 1255void KABCore::executeContact( const QString &uid /*US = QString::null*/ )
1256{ 1256{
1257 if ( mMultipleViewsAtOnce ) 1257 if ( mMultipleViewsAtOnce )
1258 { 1258 {
1259 editContact( uid ); 1259 editContact( uid );
1260 } 1260 }
1261 else 1261 else
1262 { 1262 {
1263 setDetailsVisible( true ); 1263 setDetailsVisible( true );
1264 mActionDetails->setChecked(true); 1264 mActionDetails->setChecked(true);
1265 } 1265 }
1266 1266
1267} 1267}
1268 1268
1269void KABCore::save() 1269void KABCore::save()
1270{ 1270{
1271 if (syncManager->blockSave()) 1271 if (syncManager->blockSave())
1272 return; 1272 return;
1273 if ( !mModified ) 1273 if ( !mModified )
1274 return; 1274 return;
1275 1275
1276 syncManager->setBlockSave(true); 1276 syncManager->setBlockSave(true);
1277 QString text = i18n( "There was an error while attempting to save\n the " 1277 QString text = i18n( "There was an error while attempting to save\n the "
1278 "address book. Please check that some \nother application is " 1278 "address book. Please check that some \nother application is "
1279 "not using it. " ); 1279 "not using it. " );
1280 message(i18n("Saving addressbook ... ")); 1280 message(i18n("Saving addressbook ... "));
1281#ifndef KAB_EMBEDDED 1281#ifndef KAB_EMBEDDED
1282 KABC::StdAddressBook *b = dynamic_cast<KABC::StdAddressBook*>( mAddressBook ); 1282 KABC::StdAddressBook *b = dynamic_cast<KABC::StdAddressBook*>( mAddressBook );
1283 if ( !b || !b->save() ) { 1283 if ( !b || !b->save() ) {
1284 KMessageBox::error( this, text, i18n( "Unable to Save" ) ); 1284 KMessageBox::error( this, text, i18n( "Unable to Save" ) );
1285 } 1285 }
1286#else //KAB_EMBEDDED 1286#else //KAB_EMBEDDED
1287 KABC::StdAddressBook *b = (KABC::StdAddressBook*)( mAddressBook ); 1287 KABC::StdAddressBook *b = (KABC::StdAddressBook*)( mAddressBook );
1288 if ( !b || !b->save() ) { 1288 if ( !b || !b->save() ) {
1289 QMessageBox::critical( this, i18n( "Unable to Save" ), text, i18n("Ok")); 1289 QMessageBox::critical( this, i18n( "Unable to Save" ), text, i18n("Ok"));
1290 } 1290 }
1291#endif //KAB_EMBEDDED 1291#endif //KAB_EMBEDDED
1292 1292
1293 message(i18n("Addressbook saved!")); 1293 message(i18n("Addressbook saved!"));
1294 setModified( false ); 1294 setModified( false );
1295 syncManager->setBlockSave(false); 1295 syncManager->setBlockSave(false);
1296} 1296}
1297 1297
1298 1298
1299void KABCore::undo() 1299void KABCore::undo()
1300{ 1300{
1301 UndoStack::instance()->undo(); 1301 UndoStack::instance()->undo();
1302 1302
1303 // Refresh the view 1303 // Refresh the view
1304 mViewManager->refreshView(); 1304 mViewManager->refreshView();
1305} 1305}
1306 1306
1307void KABCore::redo() 1307void KABCore::redo()
1308{ 1308{
1309 RedoStack::instance()->redo(); 1309 RedoStack::instance()->redo();
1310 1310
1311 // Refresh the view 1311 // Refresh the view
1312 mViewManager->refreshView(); 1312 mViewManager->refreshView();
1313} 1313}
1314 1314
1315void KABCore::setJumpButtonBarVisible( bool visible ) 1315void KABCore::setJumpButtonBarVisible( bool visible )
1316{ 1316{
1317 if (mMultipleViewsAtOnce) 1317 if (mMultipleViewsAtOnce)
1318 { 1318 {
1319 if ( visible ) 1319 if ( visible )
1320 mJumpButtonBar->show(); 1320 mJumpButtonBar->show();
1321 else 1321 else
1322 mJumpButtonBar->hide(); 1322 mJumpButtonBar->hide();
1323 } 1323 }
1324 else 1324 else
1325 { 1325 {
1326 // show the jumpbar only if "the details are hidden" == "viewmanager are shown" 1326 // show the jumpbar only if "the details are hidden" == "viewmanager are shown"
1327 if (mViewManager->isVisible()) 1327 if (mViewManager->isVisible())
1328 { 1328 {
1329 if ( visible ) 1329 if ( visible )
1330 mJumpButtonBar->show(); 1330 mJumpButtonBar->show();
1331 else 1331 else
1332 mJumpButtonBar->hide(); 1332 mJumpButtonBar->hide();
1333 } 1333 }
1334 else 1334 else
1335 { 1335 {
1336 mJumpButtonBar->hide(); 1336 mJumpButtonBar->hide();
1337 } 1337 }
1338 } 1338 }
1339} 1339}
1340 1340
1341 1341
1342void KABCore::setDetailsToState() 1342void KABCore::setDetailsToState()
1343{ 1343{
1344 setDetailsVisible( mActionDetails->isChecked() ); 1344 setDetailsVisible( mActionDetails->isChecked() );
1345} 1345}
1346void KABCore::setDetailsToggle() 1346void KABCore::setDetailsToggle()
1347{ 1347{
1348 mActionDetails->setChecked( !mActionDetails->isChecked() ); 1348 mActionDetails->setChecked( !mActionDetails->isChecked() );
1349 setDetailsToState(); 1349 setDetailsToState();
1350} 1350}
1351 1351
1352 1352
1353 1353
1354void KABCore::setDetailsVisible( bool visible ) 1354void KABCore::setDetailsVisible( bool visible )
1355{ 1355{
1356 if (visible && mDetails->isHidden()) 1356 if (visible && mDetails->isHidden())
1357 { 1357 {
1358 KABC::Addressee::List addrList = mViewManager->selectedAddressees(); 1358 KABC::Addressee::List addrList = mViewManager->selectedAddressees();
1359 if ( addrList.count() > 0 ) 1359 if ( addrList.count() > 0 )
1360 mDetails->setAddressee( addrList[ 0 ] ); 1360 mDetails->setAddressee( addrList[ 0 ] );
1361 } 1361 }
1362 1362
1363 // mMultipleViewsAtOnce=false: mDetails is always visible. But we switch between 1363 // mMultipleViewsAtOnce=false: mDetails is always visible. But we switch between
1364 // the listview and the detailview. We do that by changing the splitbar size. 1364 // the listview and the detailview. We do that by changing the splitbar size.
1365 if (mMultipleViewsAtOnce) 1365 if (mMultipleViewsAtOnce)
1366 { 1366 {
1367 if ( visible ) 1367 if ( visible )
1368 mDetails->show(); 1368 mDetails->show();
1369 else 1369 else
1370 mDetails->hide(); 1370 mDetails->hide();
1371 } 1371 }
1372 else 1372 else
1373 { 1373 {
1374 if ( visible ) { 1374 if ( visible ) {
1375 mViewManager->hide(); 1375 mViewManager->hide();
1376 mDetails->show(); 1376 mDetails->show();
1377 mIncSearchWidget->setFocus(); 1377 mIncSearchWidget->setFocus();
1378 } 1378 }
1379 else { 1379 else {
1380 mViewManager->show(); 1380 mViewManager->show();
1381 mDetails->hide(); 1381 mDetails->hide();
1382 mViewManager->setFocusAV(); 1382 mViewManager->setFocusAV();
1383 } 1383 }
1384 setJumpButtonBarVisible( !visible ); 1384 setJumpButtonBarVisible( !visible );
1385 } 1385 }
1386 1386
1387} 1387}
1388 1388
1389void KABCore::extensionChanged( int id ) 1389void KABCore::extensionChanged( int id )
1390{ 1390{
1391 //change the details view only for non desktop systems 1391 //change the details view only for non desktop systems
1392#ifndef DESKTOP_VERSION 1392#ifndef DESKTOP_VERSION
1393 1393
1394 if (id == 0) 1394 if (id == 0)
1395 { 1395 {
1396 //the user disabled the extension. 1396 //the user disabled the extension.
1397 1397
1398 if (mMultipleViewsAtOnce) 1398 if (mMultipleViewsAtOnce)
1399 { // enable detailsview again 1399 { // enable detailsview again
1400 setDetailsVisible( true ); 1400 setDetailsVisible( true );
1401 mActionDetails->setChecked( true ); 1401 mActionDetails->setChecked( true );
1402 } 1402 }
1403 else 1403 else
1404 { //go back to the listview 1404 { //go back to the listview
1405 setDetailsVisible( false ); 1405 setDetailsVisible( false );
1406 mActionDetails->setChecked( false ); 1406 mActionDetails->setChecked( false );
1407 mActionDetails->setEnabled(true); 1407 mActionDetails->setEnabled(true);
1408 } 1408 }
1409 1409
1410 } 1410 }
1411 else 1411 else
1412 { 1412 {
1413 //the user enabled the extension. 1413 //the user enabled the extension.
1414 setDetailsVisible( false ); 1414 setDetailsVisible( false );
1415 mActionDetails->setChecked( false ); 1415 mActionDetails->setChecked( false );
1416 1416
1417 if (!mMultipleViewsAtOnce) 1417 if (!mMultipleViewsAtOnce)
1418 { 1418 {
1419 mActionDetails->setEnabled(false); 1419 mActionDetails->setEnabled(false);
1420 } 1420 }
1421 1421
1422 mExtensionManager->setSelectionChanged(); 1422 mExtensionManager->setSelectionChanged();
1423 1423
1424 } 1424 }
1425 1425
1426#endif// DESKTOP_VERSION 1426#endif// DESKTOP_VERSION
1427 1427
1428} 1428}
1429 1429
1430 1430
1431void KABCore::extensionModified( const KABC::Addressee::List &list ) 1431void KABCore::extensionModified( const KABC::Addressee::List &list )
1432{ 1432{
1433 1433
1434 if ( list.count() != 0 ) { 1434 if ( list.count() != 0 ) {
1435 KABC::Addressee::List::ConstIterator it; 1435 KABC::Addressee::List::ConstIterator it;
1436 for ( it = list.begin(); it != list.end(); ++it ) 1436 for ( it = list.begin(); it != list.end(); ++it )
1437 mAddressBook->insertAddressee( *it ); 1437 mAddressBook->insertAddressee( *it );
1438 if ( list.count() > 1 ) 1438 if ( list.count() > 1 )
1439 setModified(); 1439 setModified();
1440 else 1440 else
1441 setModifiedWOrefresh(); 1441 setModifiedWOrefresh();
1442 } 1442 }
1443 if ( list.count() == 0 ) 1443 if ( list.count() == 0 )
1444 mViewManager->refreshView(); 1444 mViewManager->refreshView();
1445 else 1445 else
1446 mViewManager->refreshView( list[ 0 ].uid() ); 1446 mViewManager->refreshView( list[ 0 ].uid() );
1447 1447
1448 1448
1449 1449
1450} 1450}
1451 1451
1452QString KABCore::getNameByPhone( const QString &phone ) 1452QString KABCore::getNameByPhone( const QString &phone )
1453{ 1453{
1454#ifndef KAB_EMBEDDED 1454#ifndef KAB_EMBEDDED
1455 QRegExp r( "[/*/-/ ]" ); 1455 QRegExp r( "[/*/-/ ]" );
1456 QString localPhone( phone ); 1456 QString localPhone( phone );
1457 1457
1458 bool found = false; 1458 bool found = false;
1459 QString ownerName = ""; 1459 QString ownerName = "";
1460 KABC::AddressBook::Iterator iter; 1460 KABC::AddressBook::Iterator iter;
1461 KABC::PhoneNumber::List::Iterator phoneIter; 1461 KABC::PhoneNumber::List::Iterator phoneIter;
1462 KABC::PhoneNumber::List phoneList; 1462 KABC::PhoneNumber::List phoneList;
1463 for ( iter = mAddressBook->begin(); !found && ( iter != mAddressBook->end() ); ++iter ) { 1463 for ( iter = mAddressBook->begin(); !found && ( iter != mAddressBook->end() ); ++iter ) {
1464 phoneList = (*iter).phoneNumbers(); 1464 phoneList = (*iter).phoneNumbers();
1465 for ( phoneIter = phoneList.begin(); !found && ( phoneIter != phoneList.end() ); 1465 for ( phoneIter = phoneList.begin(); !found && ( phoneIter != phoneList.end() );
1466 ++phoneIter) { 1466 ++phoneIter) {
1467 // Get rid of separator chars so just the numbers are compared. 1467 // Get rid of separator chars so just the numbers are compared.
1468 if ( (*phoneIter).number().replace( r, "" ) == localPhone.replace( r, "" ) ) { 1468 if ( (*phoneIter).number().replace( r, "" ) == localPhone.replace( r, "" ) ) {
1469 ownerName = (*iter).formattedName(); 1469 ownerName = (*iter).formattedName();
1470 found = true; 1470 found = true;
1471 } 1471 }
1472 } 1472 }
1473 } 1473 }
1474 1474
1475 return ownerName; 1475 return ownerName;
1476#else //KAB_EMBEDDED 1476#else //KAB_EMBEDDED
1477 qDebug("KABCore::getNameByPhone finsih method"); 1477 qDebug("KABCore::getNameByPhone finsih method");
1478 return ""; 1478 return "";
1479#endif //KAB_EMBEDDED 1479#endif //KAB_EMBEDDED
1480 1480
1481} 1481}
1482 1482
1483void KABCore::openConfigDialog() 1483void KABCore::openConfigDialog()
1484{ 1484{
1485 KCMultiDialog* ConfigureDialog = new KCMultiDialog( "PIM", this ,"kabconfigdialog", true ); 1485 KCMultiDialog* ConfigureDialog = new KCMultiDialog( "PIM", this ,"kabconfigdialog", true );
1486 KCMKabConfig* kabcfg = new KCMKabConfig( ConfigureDialog->getNewVBoxPage(i18n( "Addressbook")) , "KCMKabConfig" ); 1486 KCMKabConfig* kabcfg = new KCMKabConfig( ConfigureDialog->getNewVBoxPage(i18n( "Addressbook")) , "KCMKabConfig" );
1487 ConfigureDialog->addModule(kabcfg ); 1487 ConfigureDialog->addModule(kabcfg );
1488 KCMKdePimConfig* kdelibcfg = new KCMKdePimConfig( ConfigureDialog->getNewVBoxPage(i18n( "Global")) , "KCMKdeLibConfig" ); 1488 KCMKdePimConfig* kdelibcfg = new KCMKdePimConfig( ConfigureDialog->getNewVBoxPage(i18n( "Global")) , "KCMKdeLibConfig" );
1489 ConfigureDialog->addModule(kdelibcfg ); 1489 ConfigureDialog->addModule(kdelibcfg );
1490 1490
1491 connect( ConfigureDialog, SIGNAL( applyClicked() ), 1491 connect( ConfigureDialog, SIGNAL( applyClicked() ),
1492 this, SLOT( configurationChanged() ) ); 1492 this, SLOT( configurationChanged() ) );
1493 connect( ConfigureDialog, SIGNAL( okClicked() ), 1493 connect( ConfigureDialog, SIGNAL( okClicked() ),
1494 this, SLOT( configurationChanged() ) ); 1494 this, SLOT( configurationChanged() ) );
1495 saveSettings(); 1495 saveSettings();
1496#ifndef DESKTOP_VERSION 1496#ifndef DESKTOP_VERSION
1497 ConfigureDialog->showMaximized(); 1497 ConfigureDialog->showMaximized();
1498#endif 1498#endif
1499 if ( ConfigureDialog->exec() ) 1499 if ( ConfigureDialog->exec() )
1500 KMessageBox::information( this, i18n("Some changes are only\neffective after a restart!\n") ); 1500 KMessageBox::information( this, i18n("Some changes are only\neffective after a restart!\n") );
1501 delete ConfigureDialog; 1501 delete ConfigureDialog;
1502} 1502}
1503 1503
1504void KABCore::openLDAPDialog() 1504void KABCore::openLDAPDialog()
1505{ 1505{
1506#ifndef KAB_EMBEDDED 1506#ifndef KAB_EMBEDDED
1507 if ( !mLdapSearchDialog ) { 1507 if ( !mLdapSearchDialog ) {
1508 mLdapSearchDialog = new LDAPSearchDialog( mAddressBook, this ); 1508 mLdapSearchDialog = new LDAPSearchDialog( mAddressBook, this );
1509 connect( mLdapSearchDialog, SIGNAL( addresseesAdded() ), mViewManager, 1509 connect( mLdapSearchDialog, SIGNAL( addresseesAdded() ), mViewManager,
1510 SLOT( refreshView() ) ); 1510 SLOT( refreshView() ) );
1511 connect( mLdapSearchDialog, SIGNAL( addresseesAdded() ), this, 1511 connect( mLdapSearchDialog, SIGNAL( addresseesAdded() ), this,
1512 SLOT( setModified() ) ); 1512 SLOT( setModified() ) );
1513 } else 1513 } else
1514 mLdapSearchDialog->restoreSettings(); 1514 mLdapSearchDialog->restoreSettings();
1515 1515
1516 if ( mLdapSearchDialog->isOK() ) 1516 if ( mLdapSearchDialog->isOK() )
1517 mLdapSearchDialog->exec(); 1517 mLdapSearchDialog->exec();
1518#else //KAB_EMBEDDED 1518#else //KAB_EMBEDDED
1519 qDebug("KABCore::openLDAPDialog() finsih method"); 1519 qDebug("KABCore::openLDAPDialog() finsih method");
1520#endif //KAB_EMBEDDED 1520#endif //KAB_EMBEDDED
1521} 1521}
1522 1522
1523void KABCore::print() 1523void KABCore::print()
1524{ 1524{
1525#ifndef KAB_EMBEDDED 1525#ifndef KAB_EMBEDDED
1526 KPrinter printer; 1526 KPrinter printer;
1527 if ( !printer.setup( this ) ) 1527 if ( !printer.setup( this ) )
1528 return; 1528 return;
1529 1529
1530 KABPrinting::PrintingWizard wizard( &printer, mAddressBook, 1530 KABPrinting::PrintingWizard wizard( &printer, mAddressBook,
1531 mViewManager->selectedUids(), this ); 1531 mViewManager->selectedUids(), this );
1532 1532
1533 wizard.exec(); 1533 wizard.exec();
1534#else //KAB_EMBEDDED 1534#else //KAB_EMBEDDED
1535 qDebug("KABCore::print() finsih method"); 1535 qDebug("KABCore::print() finsih method");
1536#endif //KAB_EMBEDDED 1536#endif //KAB_EMBEDDED
1537 1537
1538} 1538}
1539 1539
1540 1540
1541void KABCore::addGUIClient( KXMLGUIClient *client ) 1541void KABCore::addGUIClient( KXMLGUIClient *client )
1542{ 1542{
1543 if ( mGUIClient ) 1543 if ( mGUIClient )
1544 mGUIClient->insertChildClient( client ); 1544 mGUIClient->insertChildClient( client );
1545 else 1545 else
1546 KMessageBox::error( this, "no KXMLGUICLient"); 1546 KMessageBox::error( this, "no KXMLGUICLient");
1547} 1547}
1548 1548
1549 1549
1550void KABCore::configurationChanged() 1550void KABCore::configurationChanged()
1551{ 1551{
1552 mExtensionManager->reconfigure(); 1552 mExtensionManager->reconfigure();
1553} 1553}
1554 1554
1555void KABCore::addressBookChanged() 1555void KABCore::addressBookChanged()
1556{ 1556{
1557/*US 1557/*US
1558 QDictIterator<AddresseeEditorDialog> it( mEditorDict ); 1558 QDictIterator<AddresseeEditorDialog> it( mEditorDict );
1559 while ( it.current() ) { 1559 while ( it.current() ) {
1560 if ( it.current()->dirty() ) { 1560 if ( it.current()->dirty() ) {
1561 QString text = i18n( "Data has been changed externally. Unsaved " 1561 QString text = i18n( "Data has been changed externally. Unsaved "
1562 "changes will be lost." ); 1562 "changes will be lost." );
1563 KMessageBox::information( this, text ); 1563 KMessageBox::information( this, text );
1564 } 1564 }
1565 it.current()->setAddressee( mAddressBook->findByUid( it.currentKey() ) ); 1565 it.current()->setAddressee( mAddressBook->findByUid( it.currentKey() ) );
1566 ++it; 1566 ++it;
1567 } 1567 }
1568*/ 1568*/
1569 if (mEditorDialog) 1569 if (mEditorDialog)
1570 { 1570 {
1571 if (mEditorDialog->dirty()) 1571 if (mEditorDialog->dirty())
1572 { 1572 {
1573 QString text = i18n( "Data has been changed externally. Unsaved " 1573 QString text = i18n( "Data has been changed externally. Unsaved "
1574 "changes will be lost." ); 1574 "changes will be lost." );
1575 KMessageBox::information( this, text ); 1575 KMessageBox::information( this, text );
1576 } 1576 }
1577 QString currentuid = mEditorDialog->addressee().uid(); 1577 QString currentuid = mEditorDialog->addressee().uid();
1578 mEditorDialog->setAddressee( mAddressBook->findByUid( currentuid ) ); 1578 mEditorDialog->setAddressee( mAddressBook->findByUid( currentuid ) );
1579 } 1579 }
1580 mViewManager->refreshView(); 1580 mViewManager->refreshView();
1581// mDetails->refreshView(); 1581// mDetails->refreshView();
1582 1582
1583 1583
1584} 1584}
1585 1585
1586AddresseeEditorDialog *KABCore::createAddresseeEditorDialog( QWidget *parent, 1586AddresseeEditorDialog *KABCore::createAddresseeEditorDialog( QWidget *parent,
1587 const char *name ) 1587 const char *name )
1588{ 1588{
1589 1589
1590 if ( mEditorDialog == 0 ) { 1590 if ( mEditorDialog == 0 ) {
1591 mEditorDialog = new AddresseeEditorDialog( this, parent, 1591 mEditorDialog = new AddresseeEditorDialog( this, parent,
1592 name ? name : "editorDialog" ); 1592 name ? name : "editorDialog" );
1593 1593
1594 1594
1595 connect( mEditorDialog, SIGNAL( contactModified( const KABC::Addressee& ) ), 1595 connect( mEditorDialog, SIGNAL( contactModified( const KABC::Addressee& ) ),
1596 SLOT( contactModified( const KABC::Addressee& ) ) ); 1596 SLOT( contactModified( const KABC::Addressee& ) ) );
1597 //connect( mEditorDialog, SIGNAL( editorDestroyed( const QString& ) ), 1597 //connect( mEditorDialog, SIGNAL( editorDestroyed( const QString& ) ),
1598 // SLOT( slotEditorDestroyed( const QString& ) ) ; 1598 // SLOT( slotEditorDestroyed( const QString& ) ) ;
1599 } 1599 }
1600 1600
1601 return mEditorDialog; 1601 return mEditorDialog;
1602} 1602}
1603 1603
1604void KABCore::slotEditorDestroyed( const QString &uid ) 1604void KABCore::slotEditorDestroyed( const QString &uid )
1605{ 1605{
1606 //mEditorDict.remove( uid ); 1606 //mEditorDict.remove( uid );
1607} 1607}
1608 1608
1609void KABCore::initGUI() 1609void KABCore::initGUI()
1610{ 1610{
1611#ifndef KAB_EMBEDDED 1611#ifndef KAB_EMBEDDED
1612 QHBoxLayout *topLayout = new QHBoxLayout( this ); 1612 QHBoxLayout *topLayout = new QHBoxLayout( this );
1613 topLayout->setSpacing( KDialogBase::spacingHint() ); 1613 topLayout->setSpacing( KDialogBase::spacingHint() );
1614 1614
1615 mExtensionBarSplitter = new QSplitter( this ); 1615 mExtensionBarSplitter = new QSplitter( this );
1616 mExtensionBarSplitter->setOrientation( Qt::Vertical ); 1616 mExtensionBarSplitter->setOrientation( Qt::Vertical );
1617 1617
1618 mDetailsSplitter = new QSplitter( mExtensionBarSplitter ); 1618 mDetailsSplitter = new QSplitter( mExtensionBarSplitter );
1619 1619
1620 QVBox *viewSpace = new QVBox( mDetailsSplitter ); 1620 QVBox *viewSpace = new QVBox( mDetailsSplitter );
1621 mIncSearchWidget = new IncSearchWidget( viewSpace ); 1621 mIncSearchWidget = new IncSearchWidget( viewSpace );
1622 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ), 1622 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ),
1623 SLOT( incrementalSearch( const QString& ) ) ); 1623 SLOT( incrementalSearch( const QString& ) ) );
1624 1624
1625 mViewManager = new ViewManager( this, viewSpace ); 1625 mViewManager = new ViewManager( this, viewSpace );
1626 viewSpace->setStretchFactor( mViewManager, 1 ); 1626 viewSpace->setStretchFactor( mViewManager, 1 );
1627 1627
1628 mDetails = new ViewContainer( mDetailsSplitter ); 1628 mDetails = new ViewContainer( mDetailsSplitter );
1629 1629
1630 mJumpButtonBar = new JumpButtonBar( this, this ); 1630 mJumpButtonBar = new JumpButtonBar( this, this );
1631 1631
1632 mExtensionManager = new ExtensionManager( this, mExtensionBarSplitter ); 1632 mExtensionManager = new ExtensionManager( this, mExtensionBarSplitter );
1633 1633
1634 topLayout->addWidget( mExtensionBarSplitter ); 1634 topLayout->addWidget( mExtensionBarSplitter );
1635 topLayout->setStretchFactor( mExtensionBarSplitter, 100 ); 1635 topLayout->setStretchFactor( mExtensionBarSplitter, 100 );
1636 topLayout->addWidget( mJumpButtonBar ); 1636 topLayout->addWidget( mJumpButtonBar );
1637 topLayout->setStretchFactor( mJumpButtonBar, 1 ); 1637 topLayout->setStretchFactor( mJumpButtonBar, 1 );
1638 1638
1639 mXXPortManager = new XXPortManager( this, this ); 1639 mXXPortManager = new XXPortManager( this, this );
1640 1640
1641#else //KAB_EMBEDDED 1641#else //KAB_EMBEDDED
1642 //US initialize viewMenu before settingup viewmanager. 1642 //US initialize viewMenu before settingup viewmanager.
1643 // Viewmanager needs this menu to plugin submenues. 1643 // Viewmanager needs this menu to plugin submenues.
1644 viewMenu = new QPopupMenu( this ); 1644 viewMenu = new QPopupMenu( this );
1645 settingsMenu = new QPopupMenu( this ); 1645 settingsMenu = new QPopupMenu( this );
1646 //filterMenu = new QPopupMenu( this ); 1646 //filterMenu = new QPopupMenu( this );
1647 ImportMenu = new QPopupMenu( this ); 1647 ImportMenu = new QPopupMenu( this );
1648 ExportMenu = new QPopupMenu( this ); 1648 ExportMenu = new QPopupMenu( this );
1649 syncMenu = new QPopupMenu( this ); 1649 syncMenu = new QPopupMenu( this );
1650 changeMenu= new QPopupMenu( this ); 1650 changeMenu= new QPopupMenu( this );
1651 1651
1652//US since we have no splitter for the embedded system, setup 1652//US since we have no splitter for the embedded system, setup
1653// a layout with two frames. One left and one right. 1653// a layout with two frames. One left and one right.
1654 1654
1655 QBoxLayout *topLayout; 1655 QBoxLayout *topLayout;
1656 1656
1657 // = new QHBoxLayout( this ); 1657 // = new QHBoxLayout( this );
1658// QBoxLayout *topLayout = (QBoxLayout*)layout(); 1658// QBoxLayout *topLayout = (QBoxLayout*)layout();
1659 1659
1660// QWidget *mainBox = new QWidget( this ); 1660// QWidget *mainBox = new QWidget( this );
1661// QBoxLayout * mainBoxLayout = new QHBoxLayout(mainBox); 1661// QBoxLayout * mainBoxLayout = new QHBoxLayout(mainBox);
1662 1662
1663#ifdef DESKTOP_VERSION 1663#ifdef DESKTOP_VERSION
1664 topLayout = new QHBoxLayout( this ); 1664 topLayout = new QHBoxLayout( this );
1665 1665
1666 1666
1667 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this); 1667 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this);
1668 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right ); 1668 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right );
1669 1669
1670 topLayout->addWidget(mMiniSplitter ); 1670 topLayout->addWidget(mMiniSplitter );
1671 1671
1672 mExtensionBarSplitter = new KDGanttMinimizeSplitter( Qt::Vertical,mMiniSplitter ); 1672 mExtensionBarSplitter = new KDGanttMinimizeSplitter( Qt::Vertical,mMiniSplitter );
1673 mExtensionBarSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down ); 1673 mExtensionBarSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down );
1674 mViewManager = new ViewManager( this, mExtensionBarSplitter ); 1674 mViewManager = new ViewManager( this, mExtensionBarSplitter );
1675 mDetails = new ViewContainer( mMiniSplitter ); 1675 mDetails = new ViewContainer( mMiniSplitter );
1676 mExtensionManager = new ExtensionManager( this, mExtensionBarSplitter ); 1676 mExtensionManager = new ExtensionManager( this, mExtensionBarSplitter );
1677#else 1677#else
1678 if ( QApplication::desktop()->width() > 480 ) { 1678 if ( QApplication::desktop()->width() > 480 ) {
1679 topLayout = new QHBoxLayout( this ); 1679 topLayout = new QHBoxLayout( this );
1680 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this); 1680 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this);
1681 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right ); 1681 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right );
1682 } else { 1682 } else {
1683 1683
1684 topLayout = new QHBoxLayout( this ); 1684 topLayout = new QHBoxLayout( this );
1685 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Vertical, this); 1685 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Vertical, this);
1686 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down ); 1686 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down );
1687 } 1687 }
1688 1688
1689 topLayout->addWidget(mMiniSplitter ); 1689 topLayout->addWidget(mMiniSplitter );
1690 mViewManager = new ViewManager( this, mMiniSplitter ); 1690 mViewManager = new ViewManager( this, mMiniSplitter );
1691 mDetails = new ViewContainer( mMiniSplitter ); 1691 mDetails = new ViewContainer( mMiniSplitter );
1692 1692
1693 1693
1694 mExtensionManager = new ExtensionManager( this, mMiniSplitter ); 1694 mExtensionManager = new ExtensionManager( this, mMiniSplitter );
1695#endif 1695#endif
1696 //eh->hide(); 1696 //eh->hide();
1697 // topLayout->addWidget(mExtensionManager ); 1697 // topLayout->addWidget(mExtensionManager );
1698 1698
1699 1699
1700/*US 1700/*US
1701#ifndef KAB_NOSPLITTER 1701#ifndef KAB_NOSPLITTER
1702 QHBoxLayout *topLayout = new QHBoxLayout( this ); 1702 QHBoxLayout *topLayout = new QHBoxLayout( this );
1703//US topLayout->setSpacing( KDialogBase::spacingHint() ); 1703//US topLayout->setSpacing( KDialogBase::spacingHint() );
1704 topLayout->setSpacing( 10 ); 1704 topLayout->setSpacing( 10 );
1705 1705
1706 mDetailsSplitter = new QSplitter( this ); 1706 mDetailsSplitter = new QSplitter( this );
1707 1707
1708 QVBox *viewSpace = new QVBox( mDetailsSplitter ); 1708 QVBox *viewSpace = new QVBox( mDetailsSplitter );
1709 1709
1710 mViewManager = new ViewManager( this, viewSpace ); 1710 mViewManager = new ViewManager( this, viewSpace );
1711 viewSpace->setStretchFactor( mViewManager, 1 ); 1711 viewSpace->setStretchFactor( mViewManager, 1 );
1712 1712
1713 mDetails = new ViewContainer( mDetailsSplitter ); 1713 mDetails = new ViewContainer( mDetailsSplitter );
1714 1714
1715 topLayout->addWidget( mDetailsSplitter ); 1715 topLayout->addWidget( mDetailsSplitter );
1716 topLayout->setStretchFactor( mDetailsSplitter, 100 ); 1716 topLayout->setStretchFactor( mDetailsSplitter, 100 );
1717#else //KAB_NOSPLITTER 1717#else //KAB_NOSPLITTER
1718 QHBoxLayout *topLayout = new QHBoxLayout( this ); 1718 QHBoxLayout *topLayout = new QHBoxLayout( this );
1719//US topLayout->setSpacing( KDialogBase::spacingHint() ); 1719//US topLayout->setSpacing( KDialogBase::spacingHint() );
1720 topLayout->setSpacing( 10 ); 1720 topLayout->setSpacing( 10 );
1721 1721
1722// mDetailsSplitter = new QSplitter( this ); 1722// mDetailsSplitter = new QSplitter( this );
1723 1723
1724 QVBox *viewSpace = new QVBox( this ); 1724 QVBox *viewSpace = new QVBox( this );
1725 1725
1726 mViewManager = new ViewManager( this, viewSpace ); 1726 mViewManager = new ViewManager( this, viewSpace );
1727 viewSpace->setStretchFactor( mViewManager, 1 ); 1727 viewSpace->setStretchFactor( mViewManager, 1 );
1728 1728
1729 mDetails = new ViewContainer( this ); 1729 mDetails = new ViewContainer( this );
1730 1730
1731 topLayout->addWidget( viewSpace ); 1731 topLayout->addWidget( viewSpace );
1732// topLayout->setStretchFactor( mDetailsSplitter, 100 ); 1732// topLayout->setStretchFactor( mDetailsSplitter, 100 );
1733 topLayout->addWidget( mDetails ); 1733 topLayout->addWidget( mDetails );
1734#endif //KAB_NOSPLITTER 1734#endif //KAB_NOSPLITTER
1735*/ 1735*/
1736 1736
1737 syncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)this, KSyncManager::KAPI, KABPrefs::instance(), syncMenu); 1737 syncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)this, KSyncManager::KAPI, KABPrefs::instance(), syncMenu);
1738 syncManager->setBlockSave(false); 1738 syncManager->setBlockSave(false);
1739 1739
1740 connect(syncManager , SIGNAL( request_file() ), this, SLOT( syncFileRequest() ) ); 1740 connect(syncManager , SIGNAL( request_file() ), this, SLOT( syncFileRequest() ) );
1741 connect(syncManager , SIGNAL( getFile( bool )), this, SLOT(getFile( bool ) ) ); 1741 connect(syncManager , SIGNAL( getFile( bool )), this, SLOT(getFile( bool ) ) );
1742 syncManager->setDefaultFileName( sentSyncFile()); 1742 syncManager->setDefaultFileName( sentSyncFile());
1743 //connect(syncManager , SIGNAL( ), this, SLOT( ) ); 1743 //connect(syncManager , SIGNAL( ), this, SLOT( ) );
1744 1744
1745#endif //KAB_EMBEDDED 1745#endif //KAB_EMBEDDED
1746 initActions(); 1746 initActions();
1747 1747
1748#ifdef KAB_EMBEDDED 1748#ifdef KAB_EMBEDDED
1749 addActionsManually(); 1749 addActionsManually();
1750 //US make sure the export and import menues are initialized before creating the xxPortManager. 1750 //US make sure the export and import menues are initialized before creating the xxPortManager.
1751 mXXPortManager = new XXPortManager( this, this ); 1751 mXXPortManager = new XXPortManager( this, this );
1752 1752
1753 // LR mIncSearchWidget = new IncSearchWidget( mMainWindow->getIconToolBar() ); 1753 // LR mIncSearchWidget = new IncSearchWidget( mMainWindow->getIconToolBar() );
1754 //mMainWindow->toolBar()->insertWidget(-1, 4, mIncSearchWidget); 1754 //mMainWindow->toolBar()->insertWidget(-1, 4, mIncSearchWidget);
1755 // mActionQuit->plug ( mMainWindow->toolBar()); 1755 // mActionQuit->plug ( mMainWindow->toolBar());
1756 //mIncSearchWidget = new IncSearchWidget( mMainWindow->toolBar() ); 1756 //mIncSearchWidget = new IncSearchWidget( mMainWindow->toolBar() );
1757 //mMainWindow->toolBar()->insertWidget(-1, 0, mIncSearchWidget); 1757 //mMainWindow->toolBar()->insertWidget(-1, 0, mIncSearchWidget);
1758 // mIncSearchWidget->hide(); 1758 // mIncSearchWidget->hide();
1759 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ), 1759 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ),
1760 SLOT( incrementalSearch( const QString& ) ) ); 1760 SLOT( incrementalSearch( const QString& ) ) );
1761 connect( mIncSearchWidget, SIGNAL( scrollUP() ),mViewManager, SLOT( scrollUP() ) ); 1761 connect( mIncSearchWidget, SIGNAL( scrollUP() ),mViewManager, SLOT( scrollUP() ) );
1762 connect( mIncSearchWidget, SIGNAL( scrollDOWN() ),mViewManager, SLOT( scrollDOWN() ) ); 1762 connect( mIncSearchWidget, SIGNAL( scrollDOWN() ),mViewManager, SLOT( scrollDOWN() ) );
1763 1763
1764 mJumpButtonBar = new JumpButtonBar( this, this ); 1764 mJumpButtonBar = new JumpButtonBar( this, this );
1765 1765
1766 topLayout->addWidget( mJumpButtonBar ); 1766 topLayout->addWidget( mJumpButtonBar );
1767//US topLayout->setStretchFactor( mJumpButtonBar, 10 ); 1767//US topLayout->setStretchFactor( mJumpButtonBar, 10 );
1768 1768
1769// mMainWindow->getIconToolBar()->raise(); 1769// mMainWindow->getIconToolBar()->raise();
1770 1770
1771#endif //KAB_EMBEDDED 1771#endif //KAB_EMBEDDED
1772 1772
1773} 1773}
1774void KABCore::initActions() 1774void KABCore::initActions()
1775{ 1775{
1776//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart); 1776//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart);
1777 1777
1778#ifndef KAB_EMBEDDED 1778#ifndef KAB_EMBEDDED
1779 connect( QApplication::clipboard(), SIGNAL( dataChanged() ), 1779 connect( QApplication::clipboard(), SIGNAL( dataChanged() ),
1780 SLOT( clipboardDataChanged() ) ); 1780 SLOT( clipboardDataChanged() ) );
1781#endif //KAB_EMBEDDED 1781#endif //KAB_EMBEDDED
1782 1782
1783 // file menu 1783 // file menu
1784 if ( mIsPart ) { 1784 if ( mIsPart ) {
1785 mActionMail = new KAction( i18n( "&Mail" ), "mail_generic", 0, this, 1785 mActionMail = new KAction( i18n( "&Mail" ), "mail_generic", 0, this,
1786 SLOT( sendMail() ), actionCollection(), 1786 SLOT( sendMail() ), actionCollection(),
1787 "kaddressbook_mail" ); 1787 "kaddressbook_mail" );
1788 mActionPrint = new KAction( i18n( "&Print" ), "fileprint", CTRL + Key_P, this, 1788 mActionPrint = new KAction( i18n( "&Print" ), "fileprint", CTRL + Key_P, this,
1789 SLOT( print() ), actionCollection(), "kaddressbook_print" ); 1789 SLOT( print() ), actionCollection(), "kaddressbook_print" );
1790 1790
1791 } else { 1791 } else {
1792 mActionMail = KStdAction::mail( this, SLOT( sendMail() ), actionCollection() ); 1792 mActionMail = KStdAction::mail( this, SLOT( sendMail() ), actionCollection() );
1793 mActionPrint = KStdAction::print( this, SLOT( print() ), actionCollection() ); 1793 mActionPrint = KStdAction::print( this, SLOT( print() ), actionCollection() );
1794 } 1794 }
1795 1795
1796 1796
1797 mActionSave = new KAction( i18n( "&Save" ), "filesave", CTRL+Key_S, this, 1797 mActionSave = new KAction( i18n( "&Save" ), "filesave", CTRL+Key_S, this,
1798 SLOT( save() ), actionCollection(), "file_sync" ); 1798 SLOT( save() ), actionCollection(), "file_sync" );
1799 1799
1800 mActionNewContact = new KAction( i18n( "&New Contact..." ), "filenew", CTRL+Key_N, this, 1800 mActionNewContact = new KAction( i18n( "&New Contact..." ), "filenew", CTRL+Key_N, this,
1801 SLOT( newContact() ), actionCollection(), "file_new_contact" ); 1801 SLOT( newContact() ), actionCollection(), "file_new_contact" );
1802 1802
1803 mActionMailVCard = new KAction(i18n("Mail &vCard..."), "mail_post_to", 0, 1803 mActionMailVCard = new KAction(i18n("Mail &vCard..."), "mail_post_to", 0,
1804 this, SLOT( mailVCard() ), 1804 this, SLOT( mailVCard() ),
1805 actionCollection(), "file_mail_vcard"); 1805 actionCollection(), "file_mail_vcard");
1806 1806
1807 mActionExport2phone = new KAction( i18n( "Export to phone" ), "ex2phone", 0, this, 1807 mActionExport2phone = new KAction( i18n( "Export to phone" ), "ex2phone", 0, this,
1808 SLOT( export2phone() ), actionCollection(), 1808 SLOT( export2phone() ), actionCollection(),
1809 "kaddressbook_ex2phone" ); 1809 "kaddressbook_ex2phone" );
1810 1810
1811 mActionBeamVCard = 0; 1811 mActionBeamVCard = 0;
1812 mActionBeam = 0; 1812 mActionBeam = 0;
1813 1813
1814#ifndef DESKTOP_VERSION 1814#ifndef DESKTOP_VERSION
1815 if ( Ir::supported() ) { 1815 if ( Ir::supported() ) {
1816 mActionBeamVCard = new KAction( i18n( "Beam selected v&Card(s)" ), "beam", 0, this, 1816 mActionBeamVCard = new KAction( i18n( "Beam selected v&Card(s)" ), "beam", 0, this,
1817 SLOT( beamVCard() ), actionCollection(), 1817 SLOT( beamVCard() ), actionCollection(),
1818 "kaddressbook_beam_vcard" ); 1818 "kaddressbook_beam_vcard" );
1819 1819
1820 mActionBeam = new KAction( i18n( "&Beam personal vCard" ), "beam", 0, this, 1820 mActionBeam = new KAction( i18n( "&Beam personal vCard" ), "beam", 0, this,
1821 SLOT( beamMySelf() ), actionCollection(), 1821 SLOT( beamMySelf() ), actionCollection(),
1822 "kaddressbook_beam_myself" ); 1822 "kaddressbook_beam_myself" );
1823 } 1823 }
1824#endif 1824#endif
1825 1825
1826 mActionEditAddressee = new KAction( i18n( "&Edit Contact..." ), "edit", 0, 1826 mActionEditAddressee = new KAction( i18n( "&Edit Contact..." ), "edit", 0,
1827 this, SLOT( editContact2() ), 1827 this, SLOT( editContact2() ),
1828 actionCollection(), "file_properties" ); 1828 actionCollection(), "file_properties" );
1829 1829
1830#ifdef KAB_EMBEDDED 1830#ifdef KAB_EMBEDDED
1831 // mActionQuit = KStdAction::quit( mMainWindow, SLOT( exit() ), actionCollection() ); 1831 // mActionQuit = KStdAction::quit( mMainWindow, SLOT( exit() ), actionCollection() );
1832 mActionQuit = new KAction( i18n( "&Exit" ), "exit", 0, 1832 mActionQuit = new KAction( i18n( "&Exit" ), "exit", 0,
1833 mMainWindow, SLOT( exit() ), 1833 mMainWindow, SLOT( exit() ),
1834 actionCollection(), "quit" ); 1834 actionCollection(), "quit" );
1835#endif //KAB_EMBEDDED 1835#endif //KAB_EMBEDDED
1836 1836
1837 // edit menu 1837 // edit menu
1838 if ( mIsPart ) { 1838 if ( mIsPart ) {
1839 mActionCopy = new KAction( i18n( "&Copy" ), "editcopy", CTRL + Key_C, this, 1839 mActionCopy = new KAction( i18n( "&Copy" ), "editcopy", CTRL + Key_C, this,
1840 SLOT( copyContacts() ), actionCollection(), 1840 SLOT( copyContacts() ), actionCollection(),
1841 "kaddressbook_copy" ); 1841 "kaddressbook_copy" );
1842 mActionCut = new KAction( i18n( "Cu&t" ), "editcut", CTRL + Key_X, this, 1842 mActionCut = new KAction( i18n( "Cu&t" ), "editcut", CTRL + Key_X, this,
1843 SLOT( cutContacts() ), actionCollection(), 1843 SLOT( cutContacts() ), actionCollection(),
1844 "kaddressbook_cut" ); 1844 "kaddressbook_cut" );
1845 mActionPaste = new KAction( i18n( "&Paste" ), "editpaste", CTRL + Key_V, this, 1845 mActionPaste = new KAction( i18n( "&Paste" ), "editpaste", CTRL + Key_V, this,
1846 SLOT( pasteContacts() ), actionCollection(), 1846 SLOT( pasteContacts() ), actionCollection(),
1847 "kaddressbook_paste" ); 1847 "kaddressbook_paste" );
1848 mActionSelectAll = new KAction( i18n( "Select &All" ), CTRL + Key_A, this, 1848 mActionSelectAll = new KAction( i18n( "Select &All" ), CTRL + Key_A, this,
1849 SLOT( selectAllContacts() ), actionCollection(), 1849 SLOT( selectAllContacts() ), actionCollection(),
1850 "kaddressbook_select_all" ); 1850 "kaddressbook_select_all" );
1851 mActionUndo = new KAction( i18n( "&Undo" ), "undo", CTRL + Key_Z, this, 1851 mActionUndo = new KAction( i18n( "&Undo" ), "undo", CTRL + Key_Z, this,
1852 SLOT( undo() ), actionCollection(), 1852 SLOT( undo() ), actionCollection(),
1853 "kaddressbook_undo" ); 1853 "kaddressbook_undo" );
1854 mActionRedo = new KAction( i18n( "Re&do" ), "redo", CTRL + SHIFT + Key_Z, 1854 mActionRedo = new KAction( i18n( "Re&do" ), "redo", CTRL + SHIFT + Key_Z,
1855 this, SLOT( redo() ), actionCollection(), 1855 this, SLOT( redo() ), actionCollection(),
1856 "kaddressbook_redo" ); 1856 "kaddressbook_redo" );
1857 } else { 1857 } else {
1858 mActionCopy = KStdAction::copy( this, SLOT( copyContacts() ), actionCollection() ); 1858 mActionCopy = KStdAction::copy( this, SLOT( copyContacts() ), actionCollection() );
1859 mActionCut = KStdAction::cut( this, SLOT( cutContacts() ), actionCollection() ); 1859 mActionCut = KStdAction::cut( this, SLOT( cutContacts() ), actionCollection() );
1860 mActionPaste = KStdAction::paste( this, SLOT( pasteContacts() ), actionCollection() ); 1860 mActionPaste = KStdAction::paste( this, SLOT( pasteContacts() ), actionCollection() );
1861 mActionSelectAll = KStdAction::selectAll( this, SLOT( selectAllContacts() ), actionCollection() ); 1861 mActionSelectAll = KStdAction::selectAll( this, SLOT( selectAllContacts() ), actionCollection() );
1862 mActionUndo = KStdAction::undo( this, SLOT( undo() ), actionCollection() ); 1862 mActionUndo = KStdAction::undo( this, SLOT( undo() ), actionCollection() );
1863 mActionRedo = KStdAction::redo( this, SLOT( redo() ), actionCollection() ); 1863 mActionRedo = KStdAction::redo( this, SLOT( redo() ), actionCollection() );
1864 } 1864 }
1865 1865
1866 mActionDelete = new KAction( i18n( "&Delete Contact" ), "editdelete", 1866 mActionDelete = new KAction( i18n( "&Delete Contact" ), "editdelete",
1867 Key_Delete, this, SLOT( deleteContacts() ), 1867 Key_Delete, this, SLOT( deleteContacts() ),
1868 actionCollection(), "edit_delete" ); 1868 actionCollection(), "edit_delete" );
1869 1869
1870 mActionUndo->setEnabled( false ); 1870 mActionUndo->setEnabled( false );
1871 mActionRedo->setEnabled( false ); 1871 mActionRedo->setEnabled( false );
1872 1872
1873 // settings menu 1873 // settings menu
1874#ifdef KAB_EMBEDDED 1874#ifdef KAB_EMBEDDED
1875//US special menuentry to configure the addressbook resources. On KDE 1875//US special menuentry to configure the addressbook resources. On KDE
1876// you do that through the control center !!! 1876// you do that through the control center !!!
1877 mActionConfigResources = new KAction( i18n( "Configure &Resources..." ), "configure_resources", 0, this, 1877 mActionConfigResources = new KAction( i18n( "Configure &Resources..." ), "configure_resources", 0, this,
1878 SLOT( configureResources() ), actionCollection(), 1878 SLOT( configureResources() ), actionCollection(),
1879 "kaddressbook_configure_resources" ); 1879 "kaddressbook_configure_resources" );
1880#endif //KAB_EMBEDDED 1880#endif //KAB_EMBEDDED
1881 1881
1882 if ( mIsPart ) { 1882 if ( mIsPart ) {
1883 mActionConfigKAddressbook = new KAction( i18n( "&Configure KAddressBook..." ), "configure", 0, this, 1883 mActionConfigKAddressbook = new KAction( i18n( "&Configure KAddressBook..." ), "configure", 0, this,
1884 SLOT( openConfigDialog() ), actionCollection(), 1884 SLOT( openConfigDialog() ), actionCollection(),
1885 "kaddressbook_configure" ); 1885 "kaddressbook_configure" );
1886 1886
1887 //US not implemented yet 1887 //US not implemented yet
1888 //mActionConfigShortcuts = new KAction( i18n( "Configure S&hortcuts..." ), "configure_shortcuts", 0, 1888 //mActionConfigShortcuts = new KAction( i18n( "Configure S&hortcuts..." ), "configure_shortcuts", 0,
1889 // this, SLOT( configureKeyBindings() ), actionCollection(), 1889 // this, SLOT( configureKeyBindings() ), actionCollection(),
1890 // "kaddressbook_configure_shortcuts" ); 1890 // "kaddressbook_configure_shortcuts" );
1891#ifdef KAB_EMBEDDED 1891#ifdef KAB_EMBEDDED
1892 mActionConfigureToolbars = KStdAction::configureToolbars( this, SLOT( mMainWindow->configureToolbars() ), actionCollection() ); 1892 mActionConfigureToolbars = KStdAction::configureToolbars( this, SLOT( mMainWindow->configureToolbars() ), actionCollection() );
1893 mActionConfigureToolbars->setEnabled( false ); 1893 mActionConfigureToolbars->setEnabled( false );
1894#endif //KAB_EMBEDDED 1894#endif //KAB_EMBEDDED
1895 1895
1896 } else { 1896 } else {
1897 mActionConfigKAddressbook = KStdAction::preferences( this, SLOT( openConfigDialog() ), actionCollection() ); 1897 mActionConfigKAddressbook = KStdAction::preferences( this, SLOT( openConfigDialog() ), actionCollection() );
1898 1898
1899 //US not implemented yet 1899 //US not implemented yet
1900 //mActionKeyBindings = KStdAction::keyBindings( this, SLOT( configureKeyBindings() ), actionCollection() ); 1900 //mActionKeyBindings = KStdAction::keyBindings( this, SLOT( configureKeyBindings() ), actionCollection() );
1901 } 1901 }
1902 1902
1903 mActionJumpBar = new KToggleAction( i18n( "Show Jump Bar" ), 0, 0, 1903 mActionJumpBar = new KToggleAction( i18n( "Show Jump Bar" ), 0, 0,
1904 actionCollection(), "options_show_jump_bar" ); 1904 actionCollection(), "options_show_jump_bar" );
1905 connect( mActionJumpBar, SIGNAL( toggled( bool ) ), SLOT( setJumpButtonBarVisible( bool ) ) ); 1905 connect( mActionJumpBar, SIGNAL( toggled( bool ) ), SLOT( setJumpButtonBarVisible( bool ) ) );
1906 1906
1907 mActionDetails = new KToggleAction( i18n( "Show Details" ), "listview", 0, 1907 mActionDetails = new KToggleAction( i18n( "Show Details" ), "listview", 0,
1908 actionCollection(), "options_show_details" ); 1908 actionCollection(), "options_show_details" );
1909 connect( mActionDetails, SIGNAL( toggled( bool ) ), SLOT( setDetailsVisible( bool ) ) ); 1909 connect( mActionDetails, SIGNAL( toggled( bool ) ), SLOT( setDetailsVisible( bool ) ) );
1910 1910
1911 1911
1912 mActionBR = new KToggleAction( i18n( "Beam receive enabled" ), "beam", 0, this, 1912 mActionBR = new KToggleAction( i18n( "Beam receive enabled" ), "beam", 0, this,
1913 SLOT( toggleBeamReceive() ), actionCollection(), 1913 SLOT( toggleBeamReceive() ), actionCollection(),
1914 "kaddressbook_beam_rec" ); 1914 "kaddressbook_beam_rec" );
1915 1915
1916 1916
1917 // misc 1917 // misc
1918 // only enable LDAP lookup if we can handle the protocol 1918 // only enable LDAP lookup if we can handle the protocol
1919#ifndef KAB_EMBEDDED 1919#ifndef KAB_EMBEDDED
1920 if ( KProtocolInfo::isKnownProtocol( KURL( "ldap://localhost" ) ) ) { 1920 if ( KProtocolInfo::isKnownProtocol( KURL( "ldap://localhost" ) ) ) {
1921 new KAction( i18n( "&Lookup Addresses in Directory" ), "find", 0, 1921 new KAction( i18n( "&Lookup Addresses in Directory" ), "find", 0,
1922 this, SLOT( openLDAPDialog() ), actionCollection(), 1922 this, SLOT( openLDAPDialog() ), actionCollection(),
1923 "ldap_lookup" ); 1923 "ldap_lookup" );
1924 } 1924 }
1925#else //KAB_EMBEDDED 1925#else //KAB_EMBEDDED
1926 //qDebug("KABCore::initActions() LDAP has to be implemented"); 1926 //qDebug("KABCore::initActions() LDAP has to be implemented");
1927#endif //KAB_EMBEDDED 1927#endif //KAB_EMBEDDED
1928 1928
1929 1929
1930 mActionWhoAmI = new KAction( i18n( "Set Who Am I" ), "personal", 0, this, 1930 mActionWhoAmI = new KAction( i18n( "Set Who Am I" ), "personal", 0, this,
1931 SLOT( setWhoAmI() ), actionCollection(), 1931 SLOT( setWhoAmI() ), actionCollection(),
1932 "set_personal" ); 1932 "set_personal" );
1933 1933
1934 1934
1935 mActionCategories = new KAction( i18n( "Set Categories" ), 0, this, 1935 mActionCategories = new KAction( i18n( "Set Categories" ), 0, this,
1936 SLOT( setCategories() ), actionCollection(), 1936 SLOT( setCategories() ), actionCollection(),
1937 "edit_set_categories" ); 1937 "edit_set_categories" );
1938 mActionEditCategories = new KAction( i18n( "Edit Categories" ), 0, this, 1938 mActionEditCategories = new KAction( i18n( "Edit Categories" ), 0, this,
1939 SLOT( editCategories() ), actionCollection(), 1939 SLOT( editCategories() ), actionCollection(),
1940 "edit__categories" ); 1940 "edit__categories" );
1941 1941
1942 mActionRemoveVoice = new KAction( i18n( "Remove \"voice\"..." ), 0, this, 1942 mActionRemoveVoice = new KAction( i18n( "Remove \"voice\"..." ), 0, this,
1943 SLOT( removeVoice() ), actionCollection(), 1943 SLOT( removeVoice() ), actionCollection(),
1944 "remove_voice" ); 1944 "remove_voice" );
1945 1945
1946 mActionManageCategories= new KAction( i18n( "Manage new categories..." ), 0, this, 1946 mActionManageCategories= new KAction( i18n( "Manage new categories..." ), 0, this,
1947 SLOT( manageCategories() ), actionCollection(), 1947 SLOT( manageCategories() ), actionCollection(),
1948 "remove_voice" ); 1948 "remove_voice" );
1949 1949
1950 1950
1951 mActionImportOL = new KAction( i18n( "Import from Outlook..." ), 0, this, 1951 mActionImportOL = new KAction( i18n( "Import from Outlook..." ), 0, this,
1952 SLOT( importFromOL() ), actionCollection(), 1952 SLOT( importFromOL() ), actionCollection(),
1953 "import_OL" ); 1953 "import_OL" );
1954#ifdef KAB_EMBEDDED 1954#ifdef KAB_EMBEDDED
1955 mActionLicence = new KAction( i18n( "Licence" ), 0, 1955 mActionLicence = new KAction( i18n( "Licence" ), 0,
1956 this, SLOT( showLicence() ), actionCollection(), 1956 this, SLOT( showLicence() ), actionCollection(),
1957 "licence_about_data" ); 1957 "licence_about_data" );
1958 mActionFaq = new KAction( i18n( "Faq" ), 0, 1958 mActionFaq = new KAction( i18n( "Faq" ), 0,
1959 this, SLOT( faq() ), actionCollection(), 1959 this, SLOT( faq() ), actionCollection(),
1960 "faq_about_data" ); 1960 "faq_about_data" );
1961 mActionWN = new KAction( i18n( "What's New?" ), 0, 1961 mActionWN = new KAction( i18n( "What's New?" ), 0,
1962 this, SLOT( whatsnew() ), actionCollection(), 1962 this, SLOT( whatsnew() ), actionCollection(),
1963 "wn" ); 1963 "wn" );
1964 mActionSyncHowto = new KAction( i18n( "Sync HowTo" ), 0, 1964 mActionSyncHowto = new KAction( i18n( "Sync HowTo" ), 0,
1965 this, SLOT( synchowto() ), actionCollection(), 1965 this, SLOT( synchowto() ), actionCollection(),
1966 "sync" ); 1966 "sync" );
1967 mActionKdeSyncHowto = new KAction( i18n( "Kde Sync HowTo" ), 0, 1967 mActionKdeSyncHowto = new KAction( i18n( "Kde Sync HowTo" ), 0,
1968 this, SLOT( kdesynchowto() ), actionCollection(), 1968 this, SLOT( kdesynchowto() ), actionCollection(),
1969 "kdesync" ); 1969 "kdesync" );
1970 mActionMultiSyncHowto = new KAction( i18n( "Multi Sync HowTo" ), 0, 1970 mActionMultiSyncHowto = new KAction( i18n( "Multi Sync HowTo" ), 0,
1971 this, SLOT( multisynchowto() ), actionCollection(), 1971 this, SLOT( multisynchowto() ), actionCollection(),
1972 "multisync" ); 1972 "multisync" );
1973 1973
1974 mActionAboutKAddressbook = new KAction( i18n( "&About KAddressBook" ), "kaddressbook2", 0, 1974 mActionAboutKAddressbook = new KAction( i18n( "&About KAddressBook" ), "kaddressbook2", 0,
1975 this, SLOT( createAboutData() ), actionCollection(), 1975 this, SLOT( createAboutData() ), actionCollection(),
1976 "kaddressbook_about_data" ); 1976 "kaddressbook_about_data" );
1977#endif //KAB_EMBEDDED 1977#endif //KAB_EMBEDDED
1978 1978
1979 clipboardDataChanged(); 1979 clipboardDataChanged();
1980 connect( UndoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) ); 1980 connect( UndoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) );
1981 connect( RedoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) ); 1981 connect( RedoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) );
1982} 1982}
1983 1983
1984//US we need this function, to plug all actions into the correct menues. 1984//US we need this function, to plug all actions into the correct menues.
1985// KDE uses a XML format to plug the actions, but we work her without this overhead. 1985// KDE uses a XML format to plug the actions, but we work her without this overhead.
1986void KABCore::addActionsManually() 1986void KABCore::addActionsManually()
1987{ 1987{
1988//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart); 1988//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart);
1989 1989
1990#ifdef KAB_EMBEDDED 1990#ifdef KAB_EMBEDDED
1991 QPopupMenu *fileMenu = new QPopupMenu( this ); 1991 QPopupMenu *fileMenu = new QPopupMenu( this );
1992 QPopupMenu *editMenu = new QPopupMenu( this ); 1992 QPopupMenu *editMenu = new QPopupMenu( this );
1993 QPopupMenu *helpMenu = new QPopupMenu( this ); 1993 QPopupMenu *helpMenu = new QPopupMenu( this );
1994 1994
1995 KToolBar* tb = mMainWindow->toolBar(); 1995 KToolBar* tb = mMainWindow->toolBar();
1996 1996
1997#ifndef DESKTOP_VERSION 1997#ifndef DESKTOP_VERSION
1998 if ( KABPrefs::instance()->mFullMenuBarVisible ) { 1998 if ( KABPrefs::instance()->mFullMenuBarVisible ) {
1999#endif 1999#endif
2000 QMenuBar* mb = mMainWindow->menuBar(); 2000 QMenuBar* mb = mMainWindow->menuBar();
2001 2001
2002 //US setup menubar. 2002 //US setup menubar.
2003 //Disable the following block if you do not want to have a menubar. 2003 //Disable the following block if you do not want to have a menubar.
2004 mb->insertItem( i18n("&File"), fileMenu ); 2004 mb->insertItem( i18n("&File"), fileMenu );
2005 mb->insertItem( i18n("&Edit"), editMenu ); 2005 mb->insertItem( i18n("&Edit"), editMenu );
2006 mb->insertItem( i18n("&View"), viewMenu ); 2006 mb->insertItem( i18n("&View"), viewMenu );
2007 mb->insertItem( i18n("&Settings"), settingsMenu ); 2007 mb->insertItem( i18n("&Settings"), settingsMenu );
2008 mb->insertItem( i18n("Synchronize"), syncMenu ); 2008 mb->insertItem( i18n("Synchronize"), syncMenu );
2009 mb->insertItem( i18n("&Change selected"), changeMenu ); 2009 //mb->insertItem( i18n("&Change"), changeMenu );
2010 mb->insertItem( i18n("&Help"), helpMenu ); 2010 mb->insertItem( i18n("&Help"), helpMenu );
2011 mIncSearchWidget = new IncSearchWidget( tb ); 2011 mIncSearchWidget = new IncSearchWidget( tb );
2012 // tb->insertWidget(-1, 0, mIncSearchWidget); 2012 // tb->insertWidget(-1, 0, mIncSearchWidget);
2013#ifndef DESKTOP_VERSION 2013#ifndef DESKTOP_VERSION
2014 } else { 2014 } else {
2015 //US setup toolbar 2015 //US setup toolbar
2016 QPEMenuBar *menuBarTB = new QPEMenuBar( tb ); 2016 QPEMenuBar *menuBarTB = new QPEMenuBar( tb );
2017 QPopupMenu *popupBarTB = new QPopupMenu( this ); 2017 QPopupMenu *popupBarTB = new QPopupMenu( this );
2018 menuBarTB->insertItem( "ME", popupBarTB); 2018 menuBarTB->insertItem( "ME", popupBarTB);
2019 tb->insertWidget(-1, 0, menuBarTB); 2019 tb->insertWidget(-1, 0, menuBarTB);
2020 mIncSearchWidget = new IncSearchWidget( tb ); 2020 mIncSearchWidget = new IncSearchWidget( tb );
2021 2021
2022 tb->enableMoving(false); 2022 tb->enableMoving(false);
2023 popupBarTB->insertItem( i18n("&File"), fileMenu ); 2023 popupBarTB->insertItem( i18n("&File"), fileMenu );
2024 popupBarTB->insertItem( i18n("&Edit"), editMenu ); 2024 popupBarTB->insertItem( i18n("&Edit"), editMenu );
2025 popupBarTB->insertItem( i18n("&View"), viewMenu ); 2025 popupBarTB->insertItem( i18n("&View"), viewMenu );
2026 popupBarTB->insertItem( i18n("&Settings"), settingsMenu ); 2026 popupBarTB->insertItem( i18n("&Settings"), settingsMenu );
2027 popupBarTB->insertItem( i18n("Synchronize"), syncMenu ); 2027 popupBarTB->insertItem( i18n("Synchronize"), syncMenu );
2028 mViewManager->getFilterAction()->plug ( popupBarTB); 2028 mViewManager->getFilterAction()->plug ( popupBarTB);
2029 popupBarTB->insertItem( i18n("&Change selected"), changeMenu ); 2029 //popupBarTB->insertItem( i18n("&Change selected"), changeMenu );
2030 popupBarTB->insertItem( i18n("&Help"), helpMenu ); 2030 popupBarTB->insertItem( i18n("&Help"), helpMenu );
2031 if (QApplication::desktop()->width() > 320 ) { 2031 if (QApplication::desktop()->width() > 320 ) {
2032 // mViewManager->getFilterAction()->plug ( tb); 2032 // mViewManager->getFilterAction()->plug ( tb);
2033 } 2033 }
2034 } 2034 }
2035#endif 2035#endif
2036 // mActionQuit->plug ( mMainWindow->toolBar()); 2036 // mActionQuit->plug ( mMainWindow->toolBar());
2037 2037
2038 2038
2039 2039
2040 //US Now connect the actions with the menue entries. 2040 //US Now connect the actions with the menue entries.
2041 mActionPrint->plug( fileMenu ); 2041 mActionPrint->plug( fileMenu );
2042 mActionMail->plug( fileMenu ); 2042 mActionMail->plug( fileMenu );
2043 fileMenu->insertSeparator(); 2043 fileMenu->insertSeparator();
2044 2044
2045 mActionNewContact->plug( fileMenu ); 2045 mActionNewContact->plug( fileMenu );
2046 mActionNewContact->plug( tb ); 2046 mActionNewContact->plug( tb );
2047 2047
2048 mActionEditAddressee->plug( fileMenu ); 2048 mActionEditAddressee->plug( fileMenu );
2049 // if ((KGlobal::getDesktopSize() > KGlobal::Small ) || 2049 // if ((KGlobal::getDesktopSize() > KGlobal::Small ) ||
2050 // (!KABPrefs::instance()->mMultipleViewsAtOnce )) 2050 // (!KABPrefs::instance()->mMultipleViewsAtOnce ))
2051 mActionEditAddressee->plug( tb ); 2051 mActionEditAddressee->plug( tb );
2052 2052
2053 fileMenu->insertSeparator(); 2053 fileMenu->insertSeparator();
2054 mActionSave->plug( fileMenu ); 2054 mActionSave->plug( fileMenu );
2055 fileMenu->insertItem( "&Import", ImportMenu ); 2055 fileMenu->insertItem( "&Import", ImportMenu );
2056 fileMenu->insertItem( "&Export", ExportMenu ); 2056 fileMenu->insertItem( "&Export", ExportMenu );
2057 fileMenu->insertItem( i18n("&Change"), changeMenu );
2057 fileMenu->insertSeparator(); 2058 fileMenu->insertSeparator();
2058 mActionMailVCard->plug( fileMenu ); 2059 mActionMailVCard->plug( fileMenu );
2059#ifndef DESKTOP_VERSION 2060#ifndef DESKTOP_VERSION
2060 if ( Ir::supported() ) mActionBeamVCard->plug( fileMenu ); 2061 if ( Ir::supported() ) mActionBeamVCard->plug( fileMenu );
2061 if ( Ir::supported() ) mActionBeam->plug(fileMenu ); 2062 if ( Ir::supported() ) mActionBeam->plug(fileMenu );
2062#endif 2063#endif
2063 fileMenu->insertSeparator(); 2064 fileMenu->insertSeparator();
2064 mActionQuit->plug( fileMenu ); 2065 mActionQuit->plug( fileMenu );
2065#ifdef _WIN32_ 2066#ifdef _WIN32_
2066 mActionImportOL->plug( ImportMenu ); 2067 mActionImportOL->plug( ImportMenu );
2067#endif 2068#endif
2068 // edit menu 2069 // edit menu
2069 mActionUndo->plug( editMenu ); 2070 mActionUndo->plug( editMenu );
2070 mActionRedo->plug( editMenu ); 2071 mActionRedo->plug( editMenu );
2071 editMenu->insertSeparator(); 2072 editMenu->insertSeparator();
2072 mActionCut->plug( editMenu ); 2073 mActionCut->plug( editMenu );
2073 mActionCopy->plug( editMenu ); 2074 mActionCopy->plug( editMenu );
2074 mActionPaste->plug( editMenu ); 2075 mActionPaste->plug( editMenu );
2075 mActionDelete->plug( editMenu ); 2076 mActionDelete->plug( editMenu );
2076 editMenu->insertSeparator(); 2077 editMenu->insertSeparator();
2077 mActionSelectAll->plug( editMenu ); 2078 mActionSelectAll->plug( editMenu );
2078 2079
2079 mActionRemoveVoice->plug( changeMenu ); 2080 mActionRemoveVoice->plug( changeMenu );
2080 // settings menu 2081 // settings menu
2081//US special menuentry to configure the addressbook resources. On KDE 2082//US special menuentry to configure the addressbook resources. On KDE
2082// you do that through the control center !!! 2083// you do that through the control center !!!
2083 mActionConfigResources->plug( settingsMenu ); 2084 mActionConfigResources->plug( settingsMenu );
2084 settingsMenu->insertSeparator(); 2085 settingsMenu->insertSeparator();
2085 2086
2086 mActionConfigKAddressbook->plug( settingsMenu ); 2087 mActionConfigKAddressbook->plug( settingsMenu );
2087 2088
2088 if ( mIsPart ) { 2089 if ( mIsPart ) {
2089 //US not implemented yet 2090 //US not implemented yet
2090 //mActionConfigShortcuts->plug( settingsMenu ); 2091 //mActionConfigShortcuts->plug( settingsMenu );
2091 //mActionConfigureToolbars->plug( settingsMenu ); 2092 //mActionConfigureToolbars->plug( settingsMenu );
2092 2093
2093 } else { 2094 } else {
2094 //US not implemented yet 2095 //US not implemented yet
2095 //mActionKeyBindings->plug( settingsMenu ); 2096 //mActionKeyBindings->plug( settingsMenu );
2096 } 2097 }
2097 2098
2098 settingsMenu->insertSeparator(); 2099 settingsMenu->insertSeparator();
2099 2100
2100 mActionJumpBar->plug( settingsMenu ); 2101 mActionJumpBar->plug( settingsMenu );
2101 mActionDetails->plug( settingsMenu ); 2102 mActionDetails->plug( settingsMenu );
2102 //if (!KABPrefs::instance()->mMultipleViewsAtOnce || KGlobal::getDesktopSize() == KGlobal::Desktop ) 2103 //if (!KABPrefs::instance()->mMultipleViewsAtOnce || KGlobal::getDesktopSize() == KGlobal::Desktop )
2103 mActionDetails->plug( tb ); 2104 mActionDetails->plug( tb );
2104 settingsMenu->insertSeparator(); 2105 settingsMenu->insertSeparator();
2105 mActionBR->plug(settingsMenu ); 2106 mActionBR->plug(settingsMenu );
2106 settingsMenu->insertSeparator(); 2107 settingsMenu->insertSeparator();
2107 2108
2108 mActionWhoAmI->plug( settingsMenu ); 2109 mActionWhoAmI->plug( settingsMenu );
2109 mActionEditCategories->plug( settingsMenu ); 2110 mActionEditCategories->plug( settingsMenu );
2110 mActionCategories->plug( settingsMenu ); 2111 mActionCategories->plug( settingsMenu );
2111 mActionManageCategories->plug( settingsMenu ); 2112 mActionManageCategories->plug( settingsMenu );
2112 2113
2113 2114
2114 mActionWN->plug( helpMenu ); 2115 mActionWN->plug( helpMenu );
2115 mActionSyncHowto->plug( helpMenu ); 2116 mActionSyncHowto->plug( helpMenu );
2116 mActionKdeSyncHowto->plug( helpMenu ); 2117 mActionKdeSyncHowto->plug( helpMenu );
2117 mActionMultiSyncHowto->plug( helpMenu ); 2118 mActionMultiSyncHowto->plug( helpMenu );
2118 mActionFaq->plug( helpMenu ); 2119 mActionFaq->plug( helpMenu );
2119 mActionLicence->plug( helpMenu ); 2120 mActionLicence->plug( helpMenu );
2120 mActionAboutKAddressbook->plug( helpMenu ); 2121 mActionAboutKAddressbook->plug( helpMenu );
2121 2122
2122 if (KGlobal::getDesktopSize() > KGlobal::Small ) { 2123 if (KGlobal::getDesktopSize() > KGlobal::Small ) {
2123 2124
2124 mActionSave->plug( tb ); 2125 mActionSave->plug( tb );
2125 mViewManager->getFilterAction()->plug ( tb); 2126 mViewManager->getFilterAction()->plug ( tb);
2126 if (KGlobal::getDesktopSize() == KGlobal::Desktop ) { 2127 if (KGlobal::getDesktopSize() == KGlobal::Desktop ) {
2127 mActionUndo->plug( tb ); 2128 mActionUndo->plug( tb );
2128 mActionDelete->plug( tb ); 2129 mActionDelete->plug( tb );
2129 mActionRedo->plug( tb ); 2130 mActionRedo->plug( tb );
2130 } 2131 }
2131 } else { 2132 } else {
2132 mActionSave->plug( tb ); 2133 mActionSave->plug( tb );
2133 tb->enableMoving(false); 2134 tb->enableMoving(false);
2134 } 2135 }
2135 //mActionQuit->plug ( tb ); 2136 //mActionQuit->plug ( tb );
2136 // tb->insertWidget(-1, 0, mIncSearchWidget, 6); 2137 // tb->insertWidget(-1, 0, mIncSearchWidget, 6);
2137 2138
2138 //US link the searchwidget first to this. 2139 //US link the searchwidget first to this.
2139 // The real linkage to the toolbar happens later. 2140 // The real linkage to the toolbar happens later.
2140//US mIncSearchWidget->reparent(tb, 0, QPoint(50,0), TRUE); 2141//US mIncSearchWidget->reparent(tb, 0, QPoint(50,0), TRUE);
2141//US tb->insertItem( mIncSearchWidget ); 2142//US tb->insertItem( mIncSearchWidget );
2142/*US 2143/*US
2143 mIncSearchWidget = new IncSearchWidget( tb ); 2144 mIncSearchWidget = new IncSearchWidget( tb );
2144 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ), 2145 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ),
2145 SLOT( incrementalSearch( const QString& ) ) ); 2146 SLOT( incrementalSearch( const QString& ) ) );
2146 2147
2147 mJumpButtonBar = new JumpButtonBar( this, this ); 2148 mJumpButtonBar = new JumpButtonBar( this, this );
2148 2149
2149//US topLayout->addWidget( mJumpButtonBar ); 2150//US topLayout->addWidget( mJumpButtonBar );
2150 this->layout()->add( mJumpButtonBar ); 2151 this->layout()->add( mJumpButtonBar );
2151*/ 2152*/
2152 2153
2153#endif //KAB_EMBEDDED 2154#endif //KAB_EMBEDDED
2154 2155
2155 mActionExport2phone->plug( ExportMenu ); 2156 mActionExport2phone->plug( ExportMenu );
2156 connect ( syncMenu, SIGNAL( activated ( int ) ), syncManager, SLOT (slotSyncMenu( int ) ) ); 2157 connect ( syncMenu, SIGNAL( activated ( int ) ), syncManager, SLOT (slotSyncMenu( int ) ) );
2157 syncManager->fillSyncMenu(); 2158 syncManager->fillSyncMenu();
2158 2159
2159} 2160}
2160void KABCore::showLicence() 2161void KABCore::showLicence()
2161{ 2162{
2162 KApplication::showLicence(); 2163 KApplication::showLicence();
2163} 2164}
2164 2165
2165void KABCore::manageCategories( ) 2166void KABCore::manageCategories( )
2166{ 2167{
2167 KABCatPrefs* cp = new KABCatPrefs(); 2168 KABCatPrefs* cp = new KABCatPrefs();
2168 cp->show(); 2169 cp->show();
2169 int w =cp->sizeHint().width() ; 2170 int w =cp->sizeHint().width() ;
2170 int h = cp->sizeHint().height() ; 2171 int h = cp->sizeHint().height() ;
2171 int dw = QApplication::desktop()->width(); 2172 int dw = QApplication::desktop()->width();
2172 int dh = QApplication::desktop()->height(); 2173 int dh = QApplication::desktop()->height();
2173 cp->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 2174 cp->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
2174 if ( !cp->exec() ) { 2175 if ( !cp->exec() ) {
2175 delete cp; 2176 delete cp;
2176 return; 2177 return;
2177 } 2178 }
2178 int count = 0; 2179 int count = 0;
2179 message( i18n("Please wait, processing categories...")); 2180 message( i18n("Please wait, processing categories..."));
2180 if ( cp->addCat() ) { 2181 if ( cp->addCat() ) {
2181 KABC::AddressBook::Iterator it; 2182 KABC::AddressBook::Iterator it;
2182 QStringList catList = KABPrefs::instance()->mCustomCategories; 2183 QStringList catList = KABPrefs::instance()->mCustomCategories;
2183 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) { 2184 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) {
2184 QStringList catIncList = (*it).categories(); 2185 QStringList catIncList = (*it).categories();
2185 int i; 2186 int i;
2186 for( i = 0; i< catIncList.count(); ++i ) { 2187 for( i = 0; i< catIncList.count(); ++i ) {
2187 if ( !catList.contains (catIncList[i])) { 2188 if ( !catList.contains (catIncList[i])) {
2188 catList.append( catIncList[i] ); 2189 catList.append( catIncList[i] );
2189 //qDebug("add cat %s ", catIncList[i].latin1()); 2190 //qDebug("add cat %s ", catIncList[i].latin1());
2190 ++count; 2191 ++count;
2191 } 2192 }
2192 } 2193 }
2193 } 2194 }
2194 catList.sort(); 2195 catList.sort();
2195 KABPrefs::instance()->mCustomCategories = catList; 2196 KABPrefs::instance()->mCustomCategories = catList;
2196 KABPrefs::instance()->writeConfig(); 2197 KABPrefs::instance()->writeConfig();
2197 message(QString::number( count )+ i18n(" categories added to list! ")); 2198 message(QString::number( count )+ i18n(" categories added to list! "));
2198 } else { 2199 } else {
2199 QStringList catList = KABPrefs::instance()->mCustomCategories; 2200 QStringList catList = KABPrefs::instance()->mCustomCategories;
2200 QStringList catIncList; 2201 QStringList catIncList;
2201 QStringList newCatList; 2202 QStringList newCatList;
2202 KABC::AddressBook::Iterator it; 2203 KABC::AddressBook::Iterator it;
2203 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) { 2204 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) {
2204 QStringList catIncList = (*it).categories(); 2205 QStringList catIncList = (*it).categories();
2205 int i; 2206 int i;
2206 if ( catIncList.count() ) { 2207 if ( catIncList.count() ) {
2207 newCatList.clear(); 2208 newCatList.clear();
2208 for( i = 0; i< catIncList.count(); ++i ) { 2209 for( i = 0; i< catIncList.count(); ++i ) {
2209 if ( catList.contains (catIncList[i])) { 2210 if ( catList.contains (catIncList[i])) {
2210 newCatList.append( catIncList[i] ); 2211 newCatList.append( catIncList[i] );
2211 } 2212 }
2212 } 2213 }
2213 newCatList.sort(); 2214 newCatList.sort();
2214 (*it).setCategories( newCatList ); 2215 (*it).setCategories( newCatList );
2215 mAddressBook->insertAddressee( (*it) ); 2216 mAddressBook->insertAddressee( (*it) );
2216 } 2217 }
2217 } 2218 }
2218 setModified( true ); 2219 setModified( true );
2219 mViewManager->refreshView(); 2220 mViewManager->refreshView();
2220 mDetails->refreshView(); 2221 mDetails->refreshView();
2221 message( i18n("Removing categories done!")); 2222 message( i18n("Removing categories done!"));
2222 } 2223 }
2223 delete cp; 2224 delete cp;
2224} 2225}
2225void KABCore::removeVoice() 2226void KABCore::removeVoice()
2226{ 2227{
2227 if ( KMessageBox::questionYesNo( this, i18n("After importing, phone numbers\nmay have two or more types.\n(E.g. work+voice)\nThese numbers are shown as \"other\".\nClick Yes to remove the voice type\nfrom numbers with more than one type.\n\nRemove voice type?") ) == KMessageBox::No ) 2228 if ( KMessageBox::questionYesNo( this, i18n("After importing, phone numbers\nmay have two or more types.\n(E.g. work+voice)\nThese numbers are shown as \"other\".\nClick Yes to remove the voice type\nfrom numbers with more than one type.\n\nRemove voice type?") ) == KMessageBox::No )
2228 return; 2229 return;
2229 KABC::Addressee::List list = mViewManager->selectedAddressees(); 2230 KABC::Addressee::List list;
2231 XXPortSelectDialog dlg( this, false, this );
2232 if ( dlg.exec() )
2233 list = dlg.contacts();
2234 else
2235 return;
2230 KABC::Addressee::List::Iterator it; 2236 KABC::Addressee::List::Iterator it;
2231 for ( it = list.begin(); it != list.end(); ++it ) { 2237 for ( it = list.begin(); it != list.end(); ++it ) {
2232
2233 if ( (*it).removeVoice() ) 2238 if ( (*it).removeVoice() )
2234 contactModified((*it) ); 2239 contactModified((*it) );
2235 } 2240 }
2236} 2241}
2237 2242
2238 2243
2239 2244
2240void KABCore::clipboardDataChanged() 2245void KABCore::clipboardDataChanged()
2241{ 2246{
2242 2247
2243 if ( mReadWrite ) 2248 if ( mReadWrite )
2244 mActionPaste->setEnabled( !QApplication::clipboard()->text().isEmpty() ); 2249 mActionPaste->setEnabled( !QApplication::clipboard()->text().isEmpty() );
2245 2250
2246} 2251}
2247 2252
2248void KABCore::updateActionMenu() 2253void KABCore::updateActionMenu()
2249{ 2254{
2250 UndoStack *undo = UndoStack::instance(); 2255 UndoStack *undo = UndoStack::instance();
2251 RedoStack *redo = RedoStack::instance(); 2256 RedoStack *redo = RedoStack::instance();
2252 2257
2253 if ( undo->isEmpty() ) 2258 if ( undo->isEmpty() )
2254 mActionUndo->setText( i18n( "Undo" ) ); 2259 mActionUndo->setText( i18n( "Undo" ) );
2255 else 2260 else
2256 mActionUndo->setText( i18n( "Undo %1" ).arg( undo->top()->name() ) ); 2261 mActionUndo->setText( i18n( "Undo %1" ).arg( undo->top()->name() ) );
2257 2262
2258 mActionUndo->setEnabled( !undo->isEmpty() ); 2263 mActionUndo->setEnabled( !undo->isEmpty() );
2259 2264
2260 if ( !redo->top() ) 2265 if ( !redo->top() )
2261 mActionRedo->setText( i18n( "Redo" ) ); 2266 mActionRedo->setText( i18n( "Redo" ) );
2262 else 2267 else
2263 mActionRedo->setText( i18n( "Redo %1" ).arg( redo->top()->name() ) ); 2268 mActionRedo->setText( i18n( "Redo %1" ).arg( redo->top()->name() ) );
2264 2269
2265 mActionRedo->setEnabled( !redo->isEmpty() ); 2270 mActionRedo->setEnabled( !redo->isEmpty() );
2266} 2271}
2267 2272
2268void KABCore::configureKeyBindings() 2273void KABCore::configureKeyBindings()
2269{ 2274{
2270#ifndef KAB_EMBEDDED 2275#ifndef KAB_EMBEDDED
2271 KKeyDialog::configure( actionCollection(), true ); 2276 KKeyDialog::configure( actionCollection(), true );
2272#else //KAB_EMBEDDED 2277#else //KAB_EMBEDDED
2273 qDebug("KABCore::configureKeyBindings() not implemented"); 2278 qDebug("KABCore::configureKeyBindings() not implemented");
2274#endif //KAB_EMBEDDED 2279#endif //KAB_EMBEDDED
2275} 2280}
2276 2281
2277#ifdef KAB_EMBEDDED 2282#ifdef KAB_EMBEDDED
2278void KABCore::configureResources() 2283void KABCore::configureResources()
2279{ 2284{
2280 KRES::KCMKResources dlg( this, "" , 0 ); 2285 KRES::KCMKResources dlg( this, "" , 0 );
2281 2286
2282 if ( !dlg.exec() ) 2287 if ( !dlg.exec() )
2283 return; 2288 return;
2284 KMessageBox::information( this, i18n("Please restart to get the \nchanged resources (re)loaded!\n") ); 2289 KMessageBox::information( this, i18n("Please restart to get the \nchanged resources (re)loaded!\n") );
2285} 2290}
2286#endif //KAB_EMBEDDED 2291#endif //KAB_EMBEDDED
2287 2292
2288 2293
2289/* this method will be called through the QCop interface from Ko/Pi to select addresses 2294/* this method will be called through the QCop interface from Ko/Pi to select addresses
2290 * for the attendees list of an event. 2295 * for the attendees list of an event.
2291 */ 2296 */
2292void KABCore::requestForNameEmailUidList(const QString& sourceChannel, const QString& uid) 2297void KABCore::requestForNameEmailUidList(const QString& sourceChannel, const QString& uid)
2293{ 2298{
2294 QStringList nameList; 2299 QStringList nameList;
2295 QStringList emailList; 2300 QStringList emailList;
2296 QStringList uidList; 2301 QStringList uidList;
2297 2302
2298 KABC::Addressee::List list = KABC::AddresseeDialog::getAddressees(this); 2303 KABC::Addressee::List list = KABC::AddresseeDialog::getAddressees(this);
2299 uint i=0; 2304 uint i=0;
2300 for (i=0; i < list.count(); i++) 2305 for (i=0; i < list.count(); i++)
2301 { 2306 {
2302 nameList.append(list[i].realName()); 2307 nameList.append(list[i].realName());
2303 emailList.append(list[i].preferredEmail()); 2308 emailList.append(list[i].preferredEmail());
2304 uidList.append(list[i].uid()); 2309 uidList.append(list[i].uid());
2305 } 2310 }
2306 2311
2307 bool res = ExternalAppHandler::instance()->returnNameEmailUidListFromKAPI(sourceChannel, uid, nameList, emailList, uidList); 2312 bool res = ExternalAppHandler::instance()->returnNameEmailUidListFromKAPI(sourceChannel, uid, nameList, emailList, uidList);
2308 2313
2309} 2314}
2310 2315
2311/* this method will be called through the QCop interface from Ko/Pi to select birthdays 2316/* this method will be called through the QCop interface from Ko/Pi to select birthdays
2312 * to put them into the calendar. 2317 * to put them into the calendar.
2313 */ 2318 */
2314void KABCore::requestForBirthdayList(const QString& sourceChannel, const QString& uid) 2319void KABCore::requestForBirthdayList(const QString& sourceChannel, const QString& uid)
2315{ 2320{
2316 // qDebug("KABCore::requestForBirthdayList"); 2321 // qDebug("KABCore::requestForBirthdayList");
2317 QStringList birthdayList; 2322 QStringList birthdayList;
2318 QStringList anniversaryList; 2323 QStringList anniversaryList;
2319 QStringList realNameList; 2324 QStringList realNameList;
2320 QStringList preferredEmailList; 2325 QStringList preferredEmailList;
2321 QStringList assembledNameList; 2326 QStringList assembledNameList;
2322 QStringList uidList; 2327 QStringList uidList;
2323 2328
2324 KABC::AddressBook::Iterator it; 2329 KABC::AddressBook::Iterator it;
2325 2330
2326 int count = 0; 2331 int count = 0;
2327 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) { 2332 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) {
2328 ++count; 2333 ++count;
2329 } 2334 }
2330 QProgressBar bar(count,0 ); 2335 QProgressBar bar(count,0 );
2331 int w = 300; 2336 int w = 300;
2332 if ( QApplication::desktop()->width() < 320 ) 2337 if ( QApplication::desktop()->width() < 320 )
2333 w = 220; 2338 w = 220;
2334 int h = bar.sizeHint().height() ; 2339 int h = bar.sizeHint().height() ;
2335 int dw = QApplication::desktop()->width(); 2340 int dw = QApplication::desktop()->width();
2336 int dh = QApplication::desktop()->height(); 2341 int dh = QApplication::desktop()->height();
2337 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 2342 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
2338 bar.show(); 2343 bar.show();
2339 bar.setCaption (i18n("Collecting birthdays - close to abort!") ); 2344 bar.setCaption (i18n("Collecting birthdays - close to abort!") );
2340 qApp->processEvents(); 2345 qApp->processEvents();
2341 2346
2342 QDate bday; 2347 QDate bday;
2343 QString anni; 2348 QString anni;
2344 QString formattedbday; 2349 QString formattedbday;
2345 2350
2346 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) 2351 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it )
2347 { 2352 {
2348 if ( ! bar.isVisible() ) 2353 if ( ! bar.isVisible() )
2349 return; 2354 return;
2350 bar.setProgress( count++ ); 2355 bar.setProgress( count++ );
2351 qApp->processEvents(); 2356 qApp->processEvents();
2352 bday = (*it).birthday().date(); 2357 bday = (*it).birthday().date();
2353 anni = (*it).custom("KADDRESSBOOK", "X-Anniversary" ); 2358 anni = (*it).custom("KADDRESSBOOK", "X-Anniversary" );
2354 2359
2355 if ( bday.isValid() || !anni.isEmpty()) 2360 if ( bday.isValid() || !anni.isEmpty())
2356 { 2361 {
2357 if (bday.isValid()) 2362 if (bday.isValid())
2358 formattedbday = KGlobal::locale()->formatDate(bday, true, KLocale::ISODate); 2363 formattedbday = KGlobal::locale()->formatDate(bday, true, KLocale::ISODate);
2359 else 2364 else
2360 formattedbday = "NOTVALID"; 2365 formattedbday = "NOTVALID";
2361 if (anni.isEmpty()) 2366 if (anni.isEmpty())
2362 anni = "INVALID"; 2367 anni = "INVALID";
2363 2368
2364 birthdayList.append(formattedbday); 2369 birthdayList.append(formattedbday);
2365 anniversaryList.append(anni); //should be ISODate 2370 anniversaryList.append(anni); //should be ISODate
2366 realNameList.append((*it).realName()); 2371 realNameList.append((*it).realName());
2367 preferredEmailList.append((*it).preferredEmail()); 2372 preferredEmailList.append((*it).preferredEmail());
2368 assembledNameList.append((*it).assembledName()); 2373 assembledNameList.append((*it).assembledName());
2369 uidList.append((*it).uid()); 2374 uidList.append((*it).uid());
2370 2375
2371 //qDebug("found birthday in KA/Pi: %s,%s,%s,%s: %s, %s", (*it).realName().latin1(), (*it).preferredEmail().latin1(), (*it).assembledName().latin1(), (*it).uid().latin1(), formattedbday.latin1(), anni.latin1() ); 2376 //qDebug("found birthday in KA/Pi: %s,%s,%s,%s: %s, %s", (*it).realName().latin1(), (*it).preferredEmail().latin1(), (*it).assembledName().latin1(), (*it).uid().latin1(), formattedbday.latin1(), anni.latin1() );
2372 } 2377 }
2373 } 2378 }
2374 2379
2375 bool res = ExternalAppHandler::instance()->returnBirthdayListFromKAPI(sourceChannel, uid, birthdayList, anniversaryList, realNameList, preferredEmailList, assembledNameList, uidList); 2380 bool res = ExternalAppHandler::instance()->returnBirthdayListFromKAPI(sourceChannel, uid, birthdayList, anniversaryList, realNameList, preferredEmailList, assembledNameList, uidList);
2376 2381
2377} 2382}
2378 2383
2379/* this method will be called through the QCop interface from other apps to show details of a contact. 2384/* this method will be called through the QCop interface from other apps to show details of a contact.
2380 */ 2385 */
2381void KABCore::requestForDetails(const QString& sourceChannel, const QString& sessionuid, const QString& name, const QString& email, const QString& uid) 2386void KABCore::requestForDetails(const QString& sourceChannel, const QString& sessionuid, const QString& name, const QString& email, const QString& uid)
2382{ 2387{
2383 //qDebug("KABCore::requestForDetails %s %s %s %s %s", sourceChannel.latin1(), sessionuid.latin1(), name.latin1(), email.latin1(), uid.latin1()); 2388 //qDebug("KABCore::requestForDetails %s %s %s %s %s", sourceChannel.latin1(), sessionuid.latin1(), name.latin1(), email.latin1(), uid.latin1());
2384 2389
2385 QString foundUid = QString::null; 2390 QString foundUid = QString::null;
2386 if ( ! uid.isEmpty() ) { 2391 if ( ! uid.isEmpty() ) {
2387 Addressee adrr = mAddressBook->findByUid( uid ); 2392 Addressee adrr = mAddressBook->findByUid( uid );
2388 if ( !adrr.isEmpty() ) { 2393 if ( !adrr.isEmpty() ) {
2389 foundUid = uid; 2394 foundUid = uid;
2390 } 2395 }
2391 if ( email == "sendbacklist" ) { 2396 if ( email == "sendbacklist" ) {
2392 //qDebug("ssssssssssssssssssssssend "); 2397 //qDebug("ssssssssssssssssssssssend ");
2393 QStringList nameList; 2398 QStringList nameList;
2394 QStringList emailList; 2399 QStringList emailList;
2395 QStringList uidList; 2400 QStringList uidList;
2396 nameList.append(adrr.realName()); 2401 nameList.append(adrr.realName());
2397 emailList = adrr.emails(); 2402 emailList = adrr.emails();
2398 uidList.append( adrr.preferredEmail()); 2403 uidList.append( adrr.preferredEmail());
2399 bool res = ExternalAppHandler::instance()->returnNameEmailUidListFromKAPI("QPE/Application/ompi", uid, nameList, emailList, uidList); 2404 bool res = ExternalAppHandler::instance()->returnNameEmailUidListFromKAPI("QPE/Application/ompi", uid, nameList, emailList, uidList);
2400 return; 2405 return;
2401 } 2406 }
2402 2407
2403 } 2408 }
2404 2409
2405 if ( email == "sendbacklist" ) 2410 if ( email == "sendbacklist" )
2406 return; 2411 return;
2407 if (foundUid.isEmpty()) 2412 if (foundUid.isEmpty())
2408 { 2413 {
2409 //find the uid of the person first 2414 //find the uid of the person first
2410 Addressee::List namelist; 2415 Addressee::List namelist;
2411 Addressee::List emaillist; 2416 Addressee::List emaillist;
2412 2417
2413 if (!name.isEmpty()) 2418 if (!name.isEmpty())
2414 namelist = mAddressBook->findByName( name ); 2419 namelist = mAddressBook->findByName( name );
2415 2420
2416 if (!email.isEmpty()) 2421 if (!email.isEmpty())
2417 emaillist = mAddressBook->findByEmail( email ); 2422 emaillist = mAddressBook->findByEmail( email );
2418 //qDebug("count %d %d ", namelist.count(),emaillist.count() ); 2423 //qDebug("count %d %d ", namelist.count(),emaillist.count() );
2419 //check if we have a match in Namelist and Emaillist 2424 //check if we have a match in Namelist and Emaillist
2420 if ((namelist.count() == 0) && (emaillist.count() > 0)) { 2425 if ((namelist.count() == 0) && (emaillist.count() > 0)) {
2421 foundUid = emaillist[0].uid(); 2426 foundUid = emaillist[0].uid();
2422 } 2427 }
2423 else if ((namelist.count() > 0) && (emaillist.count() == 0)) 2428 else if ((namelist.count() > 0) && (emaillist.count() == 0))
2424 foundUid = namelist[0].uid(); 2429 foundUid = namelist[0].uid();
2425 else 2430 else
2426 { 2431 {
2427 for (int i = 0; i < namelist.count(); i++) 2432 for (int i = 0; i < namelist.count(); i++)
2428 { 2433 {
2429 for (int j = 0; j < emaillist.count(); j++) 2434 for (int j = 0; j < emaillist.count(); j++)
2430 { 2435 {
2431 if (namelist[i] == emaillist[j]) 2436 if (namelist[i] == emaillist[j])
2432 { 2437 {
2433 foundUid = namelist[i].uid(); 2438 foundUid = namelist[i].uid();
2434 } 2439 }
2435 } 2440 }
2436 } 2441 }
2437 } 2442 }
2438 } 2443 }
2439 else 2444 else
2440 { 2445 {
2441 foundUid = uid; 2446 foundUid = uid;
2442 } 2447 }
2443 2448
2444 if (!foundUid.isEmpty()) 2449 if (!foundUid.isEmpty())
2445 { 2450 {
2446 2451
2447 // raise Ka/Pi if it is in the background 2452 // raise Ka/Pi if it is in the background
2448#ifndef DESKTOP_VERSION 2453#ifndef DESKTOP_VERSION
2449#ifndef KORG_NODCOP 2454#ifndef KORG_NODCOP
2450 //QCopEnvelope e("QPE/Application/kapi", "raise()"); 2455 //QCopEnvelope e("QPE/Application/kapi", "raise()");
2451#endif 2456#endif
2452#endif 2457#endif
2453 2458
2454 mMainWindow->showMaximized(); 2459 mMainWindow->showMaximized();
2455 mMainWindow-> raise(); 2460 mMainWindow-> raise();
2456 2461
2457 mViewManager->setSelected( "", false); 2462 mViewManager->setSelected( "", false);
2458 mViewManager->refreshView( "" ); 2463 mViewManager->refreshView( "" );
2459 mViewManager->setSelected( foundUid, true ); 2464 mViewManager->setSelected( foundUid, true );
2460 mViewManager->refreshView( foundUid ); 2465 mViewManager->refreshView( foundUid );
2461 2466
2462 if ( !mMultipleViewsAtOnce ) 2467 if ( !mMultipleViewsAtOnce )
2463 { 2468 {
2464 setDetailsVisible( true ); 2469 setDetailsVisible( true );
2465 mActionDetails->setChecked(true); 2470 mActionDetails->setChecked(true);
2466 } 2471 }
2467 } 2472 }
2468} 2473}
2469 2474
2470void KABCore::whatsnew() 2475void KABCore::whatsnew()
2471{ 2476{
2472 KApplication::showFile( "KDE-Pim/Pi Version Info", "kdepim/WhatsNew.txt" ); 2477 KApplication::showFile( "KDE-Pim/Pi Version Info", "kdepim/WhatsNew.txt" );
2473} 2478}
2474void KABCore::synchowto() 2479void KABCore::synchowto()
2475{ 2480{
2476 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/SyncHowto.txt" ); 2481 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/SyncHowto.txt" );
2477} 2482}
2478void KABCore::kdesynchowto() 2483void KABCore::kdesynchowto()
2479{ 2484{
2480 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/Zaurus-KDE_syncHowTo.txt" ); 2485 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/Zaurus-KDE_syncHowTo.txt" );
2481} 2486}
2482void KABCore::multisynchowto() 2487void KABCore::multisynchowto()
2483{ 2488{
2484 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/MultiSyncHowTo.txt" ); 2489 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/MultiSyncHowTo.txt" );
2485} 2490}
2486void KABCore::faq() 2491void KABCore::faq()
2487{ 2492{
2488 KApplication::showFile( "KA/Pi FAQ", "kdepim/kaddressbook/kapiFAQ.txt" ); 2493 KApplication::showFile( "KA/Pi FAQ", "kdepim/kaddressbook/kapiFAQ.txt" );
2489} 2494}
2490 2495
2491#include <libkcal/syncdefines.h> 2496#include <libkcal/syncdefines.h>
2492 2497
2493KABC::Addressee KABCore::getLastSyncAddressee() 2498KABC::Addressee KABCore::getLastSyncAddressee()
2494{ 2499{
2495 Addressee lse; 2500 Addressee lse;
2496 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice(); 2501 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice();
2497 2502
2498 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() ); 2503 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() );
2499 lse = mAddressBook->findByUid( "last-syncAddressee-"+mCurrentSyncDevice ); 2504 lse = mAddressBook->findByUid( "last-syncAddressee-"+mCurrentSyncDevice );
2500 if (lse.isEmpty()) { 2505 if (lse.isEmpty()) {
2501 qDebug("Creating new last-syncAddressee "); 2506 qDebug("Creating new last-syncAddressee ");
2502 lse.setUid( "last-syncAddressee-"+mCurrentSyncDevice ); 2507 lse.setUid( "last-syncAddressee-"+mCurrentSyncDevice );
2503 QString sum = ""; 2508 QString sum = "";
2504 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) 2509 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL )
2505 sum = "E: "; 2510 sum = "E: ";
2506 lse.setFamilyName("!"+sum+mCurrentSyncDevice + i18n(" - sync event")); 2511 lse.setFamilyName("!"+sum+mCurrentSyncDevice + i18n(" - sync event"));
2507 lse.setRevision( mLastAddressbookSync ); 2512 lse.setRevision( mLastAddressbookSync );
2508 lse.setCategories( i18n("SyncEvent") ); 2513 lse.setCategories( i18n("SyncEvent") );
2509 mAddressBook->insertAddressee( lse ); 2514 mAddressBook->insertAddressee( lse );
2510 } 2515 }
2511 return lse; 2516 return lse;
2512} 2517}
2513int KABCore::takeAddressee( KABC::Addressee* local, KABC::Addressee* remote, int mode , bool full ) 2518int KABCore::takeAddressee( KABC::Addressee* local, KABC::Addressee* remote, int mode , bool full )
2514{ 2519{
2515 2520
2516 //void setZaurusId(int id); 2521 //void setZaurusId(int id);
2517 // int zaurusId() const; 2522 // int zaurusId() const;
2518 // void setZaurusUid(int id); 2523 // void setZaurusUid(int id);
2519 // int zaurusUid() const; 2524 // int zaurusUid() const;
2520 // void setZaurusStat(int id); 2525 // void setZaurusStat(int id);
2521 // int zaurusStat() const; 2526 // int zaurusStat() const;
2522 // 0 equal 2527 // 0 equal
2523 // 1 take local 2528 // 1 take local
2524 // 2 take remote 2529 // 2 take remote
2525 // 3 cancel 2530 // 3 cancel
2526 QDateTime lastSync = mLastAddressbookSync; 2531 QDateTime lastSync = mLastAddressbookSync;
2527 QDateTime localMod = local->revision(); 2532 QDateTime localMod = local->revision();
2528 QDateTime remoteMod = remote->revision(); 2533 QDateTime remoteMod = remote->revision();
2529 2534
2530 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice(); 2535 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice();
2531 2536
2532 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2537 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2533 bool remCh, locCh; 2538 bool remCh, locCh;
2534 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) ); 2539 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) );
2535 //qDebug("loc %s rem %s", local->getCsum(mCurrentSyncDevice).latin1(), remote->getCsum(mCurrentSyncDevice).latin1() ); 2540 //qDebug("loc %s rem %s", local->getCsum(mCurrentSyncDevice).latin1(), remote->getCsum(mCurrentSyncDevice).latin1() );
2536 locCh = ( localMod > mLastAddressbookSync ); 2541 locCh = ( localMod > mLastAddressbookSync );
2537 if ( !remCh && ! locCh ) { 2542 if ( !remCh && ! locCh ) {
2538 //qDebug("both not changed "); 2543 //qDebug("both not changed ");
2539 lastSync = localMod.addDays(1); 2544 lastSync = localMod.addDays(1);
2540 if ( mode <= SYNC_PREF_ASK ) 2545 if ( mode <= SYNC_PREF_ASK )
2541 return 0; 2546 return 0;
2542 } else { 2547 } else {
2543 if ( locCh ) { 2548 if ( locCh ) {
2544 //qDebug("loc changed %s %s", localMod.toString().latin1(), mLastAddressbookSync.toString().latin1()); 2549 //qDebug("loc changed %s %s", localMod.toString().latin1(), mLastAddressbookSync.toString().latin1());
2545 lastSync = localMod.addDays( -1 ); 2550 lastSync = localMod.addDays( -1 );
2546 if ( !remCh ) 2551 if ( !remCh )
2547 remoteMod =( lastSync.addDays( -1 ) ); 2552 remoteMod =( lastSync.addDays( -1 ) );
2548 } else { 2553 } else {
2549 //qDebug(" not loc changed "); 2554 //qDebug(" not loc changed ");
2550 lastSync = localMod.addDays( 1 ); 2555 lastSync = localMod.addDays( 1 );
2551 if ( remCh ) { 2556 if ( remCh ) {
2552 //qDebug("rem changed "); 2557 //qDebug("rem changed ");
2553 remoteMod =( lastSync.addDays( 1 ) ); 2558 remoteMod =( lastSync.addDays( 1 ) );
2554 } 2559 }
2555 2560
2556 } 2561 }
2557 } 2562 }
2558 full = true; 2563 full = true;
2559 if ( mode < SYNC_PREF_ASK ) 2564 if ( mode < SYNC_PREF_ASK )
2560 mode = SYNC_PREF_ASK; 2565 mode = SYNC_PREF_ASK;
2561 } else { 2566 } else {
2562 if ( localMod == remoteMod ) 2567 if ( localMod == remoteMod )
2563 return 0; 2568 return 0;
2564 2569
2565 } 2570 }
2566 //qDebug("%s %s --- %d %d", localMod.toString().latin1() , remoteMod.toString().latin1(), localMod.time().msec(), remoteMod.time().msec()); 2571 //qDebug("%s %s --- %d %d", localMod.toString().latin1() , remoteMod.toString().latin1(), localMod.time().msec(), remoteMod.time().msec());
2567 //qDebug("lastsync %s ", lastSync.toString().latin1() ); 2572 //qDebug("lastsync %s ", lastSync.toString().latin1() );
2568 //full = true; //debug only 2573 //full = true; //debug only
2569 if ( full ) { 2574 if ( full ) {
2570 bool equ = ( (*local) == (*remote) ); 2575 bool equ = ( (*local) == (*remote) );
2571 if ( equ ) { 2576 if ( equ ) {
2572 //qDebug("equal "); 2577 //qDebug("equal ");
2573 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2578 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2574 local->setCsum( mCurrentSyncDevice, remote->getCsum(mCurrentSyncDevice) ); 2579 local->setCsum( mCurrentSyncDevice, remote->getCsum(mCurrentSyncDevice) );
2575 } 2580 }
2576 if ( mode < SYNC_PREF_FORCE_LOCAL ) 2581 if ( mode < SYNC_PREF_FORCE_LOCAL )
2577 return 0; 2582 return 0;
2578 2583
2579 }//else //debug only 2584 }//else //debug only
2580 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1()); 2585 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1());
2581 } 2586 }
2582 int result; 2587 int result;
2583 bool localIsNew; 2588 bool localIsNew;
2584 //qDebug("%s -- %s mLastCalendarSync %s lastsync %s --- local %s remote %s ",local->summary().latin1(), remote->summary().latin1(),mLastCalendarSync.toString().latin1() ,lastSync.toString().latin1() , local->lastModified().toString().latin1() , remote->lastModified().toString().latin1() ); 2589 //qDebug("%s -- %s mLastCalendarSync %s lastsync %s --- local %s remote %s ",local->summary().latin1(), remote->summary().latin1(),mLastCalendarSync.toString().latin1() ,lastSync.toString().latin1() , local->lastModified().toString().latin1() , remote->lastModified().toString().latin1() );
2585 2590
2586 if ( full && mode < SYNC_PREF_NEWEST ) 2591 if ( full && mode < SYNC_PREF_NEWEST )
2587 mode = SYNC_PREF_ASK; 2592 mode = SYNC_PREF_ASK;
2588 2593
2589 switch( mode ) { 2594 switch( mode ) {
2590 case SYNC_PREF_LOCAL: 2595 case SYNC_PREF_LOCAL:
2591 if ( lastSync > remoteMod ) 2596 if ( lastSync > remoteMod )
2592 return 1; 2597 return 1;
2593 if ( lastSync > localMod ) 2598 if ( lastSync > localMod )
2594 return 2; 2599 return 2;
2595 return 1; 2600 return 1;
2596 break; 2601 break;
2597 case SYNC_PREF_REMOTE: 2602 case SYNC_PREF_REMOTE:
2598 if ( lastSync > remoteMod ) 2603 if ( lastSync > remoteMod )
2599 return 1; 2604 return 1;
2600 if ( lastSync > localMod ) 2605 if ( lastSync > localMod )
2601 return 2; 2606 return 2;
2602 return 2; 2607 return 2;
2603 break; 2608 break;
2604 case SYNC_PREF_NEWEST: 2609 case SYNC_PREF_NEWEST:
2605 if ( localMod > remoteMod ) 2610 if ( localMod > remoteMod )
2606 return 1; 2611 return 1;
2607 else 2612 else
2608 return 2; 2613 return 2;
2609 break; 2614 break;
2610 case SYNC_PREF_ASK: 2615 case SYNC_PREF_ASK:
2611 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() ); 2616 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() );
2612 if ( lastSync > remoteMod ) 2617 if ( lastSync > remoteMod )
2613 return 1; 2618 return 1;
2614 if ( lastSync > localMod ) 2619 if ( lastSync > localMod )
2615 return 2; 2620 return 2;
2616 localIsNew = localMod >= remoteMod; 2621 localIsNew = localMod >= remoteMod;
2617 //qDebug("conflict! ************************************** "); 2622 //qDebug("conflict! ************************************** ");
2618 { 2623 {
2619 KPIM::AddresseeChooser acd ( *local,*remote, localIsNew , this ); 2624 KPIM::AddresseeChooser acd ( *local,*remote, localIsNew , this );
2620 result = acd.executeD(localIsNew); 2625 result = acd.executeD(localIsNew);
2621 return result; 2626 return result;
2622 } 2627 }
2623 break; 2628 break;
2624 case SYNC_PREF_FORCE_LOCAL: 2629 case SYNC_PREF_FORCE_LOCAL:
2625 return 1; 2630 return 1;
2626 break; 2631 break;
2627 case SYNC_PREF_FORCE_REMOTE: 2632 case SYNC_PREF_FORCE_REMOTE:
2628 return 2; 2633 return 2;
2629 break; 2634 break;
2630 2635
2631 default: 2636 default:
2632 // SYNC_PREF_TAKE_BOTH not implemented 2637 // SYNC_PREF_TAKE_BOTH not implemented
2633 break; 2638 break;
2634 } 2639 }
2635 return 0; 2640 return 0;
2636} 2641}
2637 2642
2638 2643
2639bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBook* remote,int mode) 2644bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBook* remote,int mode)
2640{ 2645{
2641 bool syncOK = true; 2646 bool syncOK = true;
2642 int addedAddressee = 0; 2647 int addedAddressee = 0;
2643 int addedAddresseeR = 0; 2648 int addedAddresseeR = 0;
2644 int deletedAddresseeR = 0; 2649 int deletedAddresseeR = 0;
2645 int deletedAddresseeL = 0; 2650 int deletedAddresseeL = 0;
2646 int changedLocal = 0; 2651 int changedLocal = 0;
2647 int changedRemote = 0; 2652 int changedRemote = 0;
2648 2653
2649 QString mCurrentSyncName = syncManager->getCurrentSyncName(); 2654 QString mCurrentSyncName = syncManager->getCurrentSyncName();
2650 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice(); 2655 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice();
2651 2656
2652 //QPtrList<Addressee> el = local->rawAddressees(); 2657 //QPtrList<Addressee> el = local->rawAddressees();
2653 Addressee addresseeR; 2658 Addressee addresseeR;
2654 QString uid; 2659 QString uid;
2655 int take; 2660 int take;
2656 Addressee addresseeL; 2661 Addressee addresseeL;
2657 Addressee addresseeRSync; 2662 Addressee addresseeRSync;
2658 Addressee addresseeLSync; 2663 Addressee addresseeLSync;
2659 // KABC::Addressee::List addresseeRSyncSharp = remote->getExternLastSyncAddressees(); 2664 // KABC::Addressee::List addresseeRSyncSharp = remote->getExternLastSyncAddressees();
2660 //KABC::Addressee::List addresseeLSyncSharp = local->getExternLastSyncAddressees(); 2665 //KABC::Addressee::List addresseeLSyncSharp = local->getExternLastSyncAddressees();
2661 bool fullDateRange = false; 2666 bool fullDateRange = false;
2662 local->resetTempSyncStat(); 2667 local->resetTempSyncStat();
2663 mLastAddressbookSync = QDateTime::currentDateTime(); 2668 mLastAddressbookSync = QDateTime::currentDateTime();
2664 if ( syncManager->syncWithDesktop() ) { 2669 if ( syncManager->syncWithDesktop() ) {
2665 // remote->removeSyncInfo( QString());//remove all info 2670 // remote->removeSyncInfo( QString());//remove all info
2666 if ( KSyncManager::mRequestedSyncEvent.isValid() ) { 2671 if ( KSyncManager::mRequestedSyncEvent.isValid() ) {
2667 mLastAddressbookSync = KSyncManager::mRequestedSyncEvent; 2672 mLastAddressbookSync = KSyncManager::mRequestedSyncEvent;
2668 qDebug("using extern time for calendar sync: %s ", mLastAddressbookSync.toString().latin1() ); 2673 qDebug("using extern time for calendar sync: %s ", mLastAddressbookSync.toString().latin1() );
2669 } else { 2674 } else {
2670 qDebug("KSyncManager::mRequestedSyncEvent has invalid datatime "); 2675 qDebug("KSyncManager::mRequestedSyncEvent has invalid datatime ");
2671 } 2676 }
2672 } 2677 }
2673 QDateTime modifiedCalendar = mLastAddressbookSync; 2678 QDateTime modifiedCalendar = mLastAddressbookSync;
2674 addresseeLSync = getLastSyncAddressee(); 2679 addresseeLSync = getLastSyncAddressee();
2675 qDebug("Last Sync %s ", addresseeLSync.revision().toString().latin1()); 2680 qDebug("Last Sync %s ", addresseeLSync.revision().toString().latin1());
2676 addresseeR = remote->findByUid("last-syncAddressee-"+mCurrentSyncName ); 2681 addresseeR = remote->findByUid("last-syncAddressee-"+mCurrentSyncName );
2677 if ( !addresseeR.isEmpty() ) { 2682 if ( !addresseeR.isEmpty() ) {
2678 addresseeRSync = addresseeR; 2683 addresseeRSync = addresseeR;
2679 remote->removeAddressee(addresseeR ); 2684 remote->removeAddressee(addresseeR );
2680 2685
2681 } else { 2686 } else {
2682 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2687 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2683 addresseeRSync = addresseeLSync ; 2688 addresseeRSync = addresseeLSync ;
2684 } else { 2689 } else {
2685 //qDebug("FULLDATE 1"); 2690 //qDebug("FULLDATE 1");
2686 fullDateRange = true; 2691 fullDateRange = true;
2687 Addressee newAdd; 2692 Addressee newAdd;
2688 addresseeRSync = newAdd; 2693 addresseeRSync = newAdd;
2689 addresseeRSync.setFamilyName(mCurrentSyncName + i18n(" - sync addressee")); 2694 addresseeRSync.setFamilyName(mCurrentSyncName + i18n(" - sync addressee"));
2690 addresseeRSync.setUid("last-syncAddressee-"+mCurrentSyncName ); 2695 addresseeRSync.setUid("last-syncAddressee-"+mCurrentSyncName );
2691 addresseeRSync.setRevision( mLastAddressbookSync ); 2696 addresseeRSync.setRevision( mLastAddressbookSync );
2692 addresseeRSync.setCategories( i18n("SyncAddressee") ); 2697 addresseeRSync.setCategories( i18n("SyncAddressee") );
2693 } 2698 }
2694 } 2699 }
2695 if ( addresseeLSync.revision() == mLastAddressbookSync ) { 2700 if ( addresseeLSync.revision() == mLastAddressbookSync ) {
2696 // qDebug("FULLDATE 2"); 2701 // qDebug("FULLDATE 2");
2697 fullDateRange = true; 2702 fullDateRange = true;
2698 } 2703 }
2699 if ( ! fullDateRange ) { 2704 if ( ! fullDateRange ) {
2700 if ( addresseeLSync.revision() != addresseeRSync.revision() ) { 2705 if ( addresseeLSync.revision() != addresseeRSync.revision() ) {
2701 2706
2702 // qDebug("set fulldate to true %s %s" ,addresseeLSync->dtStart().toString().latin1(), addresseeRSync->dtStart().toString().latin1() ); 2707 // qDebug("set fulldate to true %s %s" ,addresseeLSync->dtStart().toString().latin1(), addresseeRSync->dtStart().toString().latin1() );
2703 //qDebug("%d %d %d %d ", addresseeLSync->dtStart().time().second(), addresseeLSync->dtStart().time().msec() , addresseeRSync->dtStart().time().second(), addresseeRSync->dtStart().time().msec()); 2708 //qDebug("%d %d %d %d ", addresseeLSync->dtStart().time().second(), addresseeLSync->dtStart().time().msec() , addresseeRSync->dtStart().time().second(), addresseeRSync->dtStart().time().msec());
2704 fullDateRange = true; 2709 fullDateRange = true;
2705 //qDebug("FULLDATE 3 %s %s", addresseeLSync.revision().toString().latin1() , addresseeRSync.revision().toString().latin1() ); 2710 //qDebug("FULLDATE 3 %s %s", addresseeLSync.revision().toString().latin1() , addresseeRSync.revision().toString().latin1() );
2706 } 2711 }
2707 } 2712 }
2708 // fullDateRange = true; // debug only! 2713 // fullDateRange = true; // debug only!
2709 if ( fullDateRange ) 2714 if ( fullDateRange )
2710 mLastAddressbookSync = QDateTime::currentDateTime().addDays( -100*365); 2715 mLastAddressbookSync = QDateTime::currentDateTime().addDays( -100*365);
2711 else 2716 else
2712 mLastAddressbookSync = addresseeLSync.revision(); 2717 mLastAddressbookSync = addresseeLSync.revision();
2713 // for resyncing if own file has changed 2718 // for resyncing if own file has changed
2714 // PENDING fixme later when implemented 2719 // PENDING fixme later when implemented
2715#if 0 2720#if 0
2716 if ( mCurrentSyncDevice == "deleteaftersync" ) { 2721 if ( mCurrentSyncDevice == "deleteaftersync" ) {
2717 mLastAddressbookSync = loadedFileVersion; 2722 mLastAddressbookSync = loadedFileVersion;
2718 qDebug("setting mLastAddressbookSync "); 2723 qDebug("setting mLastAddressbookSync ");
2719 } 2724 }
2720#endif 2725#endif
2721 2726
2722 //qDebug("*************************** "); 2727 //qDebug("*************************** ");
2723 // qDebug("mLastAddressbookSync %s ",mLastAddressbookSync.toString().latin1() ); 2728 // qDebug("mLastAddressbookSync %s ",mLastAddressbookSync.toString().latin1() );
2724 QStringList er = remote->uidList(); 2729 QStringList er = remote->uidList();
2725 Addressee inR ;//= er.first(); 2730 Addressee inR ;//= er.first();
2726 Addressee inL; 2731 Addressee inL;
2727 2732
2728 syncManager->showProgressBar(0, i18n("Syncing - close to abort!"), er.count()); 2733 syncManager->showProgressBar(0, i18n("Syncing - close to abort!"), er.count());
2729 2734
2730 int modulo = (er.count()/10)+1; 2735 int modulo = (er.count()/10)+1;
2731 int incCounter = 0; 2736 int incCounter = 0;
2732 while ( incCounter < er.count()) { 2737 while ( incCounter < er.count()) {
2733 if (syncManager->isProgressBarCanceled()) 2738 if (syncManager->isProgressBarCanceled())
2734 return false; 2739 return false;
2735 if ( incCounter % modulo == 0 ) 2740 if ( incCounter % modulo == 0 )
2736 syncManager->showProgressBar(incCounter); 2741 syncManager->showProgressBar(incCounter);
2737 2742
2738 uid = er[ incCounter ]; 2743 uid = er[ incCounter ];
2739 bool skipIncidence = false; 2744 bool skipIncidence = false;
2740 if ( uid.left(19) == QString("last-syncAddressee-") ) 2745 if ( uid.left(19) == QString("last-syncAddressee-") )
2741 skipIncidence = true; 2746 skipIncidence = true;
2742 QString idS,OidS; 2747 QString idS,OidS;
2743 qApp->processEvents(); 2748 qApp->processEvents();
2744 if ( !skipIncidence ) { 2749 if ( !skipIncidence ) {
2745 inL = local->findByUid( uid ); 2750 inL = local->findByUid( uid );
2746 inR = remote->findByUid( uid ); 2751 inR = remote->findByUid( uid );
2747 //inL.setResource( 0 ); 2752 //inL.setResource( 0 );
2748 //inR.setResource( 0 ); 2753 //inR.setResource( 0 );
2749 if ( !inL.isEmpty() ) { // maybe conflict - same uid in both calendars 2754 if ( !inL.isEmpty() ) { // maybe conflict - same uid in both calendars
2750 if ( !inL.resource() || inL.resource()->includeInSync() ) { 2755 if ( !inL.resource() || inL.resource()->includeInSync() ) {
2751 if ( (take = takeAddressee( &inL, &inR, mode, fullDateRange )) ) { 2756 if ( (take = takeAddressee( &inL, &inR, mode, fullDateRange )) ) {
2752 //qDebug("take %d %s ", take, inL.summary().latin1()); 2757 //qDebug("take %d %s ", take, inL.summary().latin1());
2753 if ( take == 3 ) 2758 if ( take == 3 )
2754 return false; 2759 return false;
2755 if ( take == 1 ) {// take local ********************** 2760 if ( take == 1 ) {// take local **********************
2756 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2761 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2757 inL.setCsum( mCurrentSyncDevice, inR.getCsum(mCurrentSyncDevice) ); 2762 inL.setCsum( mCurrentSyncDevice, inR.getCsum(mCurrentSyncDevice) );
2758 inL.setID( mCurrentSyncDevice, inR.getID(mCurrentSyncDevice) ); 2763 inL.setID( mCurrentSyncDevice, inR.getID(mCurrentSyncDevice) );
2759 local->insertAddressee( inL, false ); 2764 local->insertAddressee( inL, false );
2760 idS = inR.externalUID(); 2765 idS = inR.externalUID();
2761 OidS = inR.originalExternalUID(); 2766 OidS = inR.originalExternalUID();
2762 } 2767 }
2763 else 2768 else
2764 idS = inR.IDStr(); 2769 idS = inR.IDStr();
2765 remote->removeAddressee( inR ); 2770 remote->removeAddressee( inR );
2766 inR = inL; 2771 inR = inL;
2767 inR.setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 2772 inR.setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
2768 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2773 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2769 inR.setOriginalExternalUID( OidS ); 2774 inR.setOriginalExternalUID( OidS );
2770 inR.setExternalUID( idS ); 2775 inR.setExternalUID( idS );
2771 if ( syncManager->syncWithDesktop() ) { 2776 if ( syncManager->syncWithDesktop() ) {
2772 inR.setIDStr("changed" ); 2777 inR.setIDStr("changed" );
2773 } 2778 }
2774 //inR.insertCustom( "KADDRESSBOOK", "X-KDESYNC","changed" ); 2779 //inR.insertCustom( "KADDRESSBOOK", "X-KDESYNC","changed" );
2775 } else { 2780 } else {
2776 inR.setIDStr( idS ); 2781 inR.setIDStr( idS );
2777 } 2782 }
2778 inR.setResource( 0 ); 2783 inR.setResource( 0 );
2779 remote->insertAddressee( inR , false); 2784 remote->insertAddressee( inR , false);
2780 ++changedRemote; 2785 ++changedRemote;
2781 } else { // take == 2 take remote ********************** 2786 } else { // take == 2 take remote **********************
2782 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2787 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2783 if ( inR.revision().date().year() < 2004 ) 2788 if ( inR.revision().date().year() < 2004 )
2784 inR.setRevision( modifiedCalendar ); 2789 inR.setRevision( modifiedCalendar );
2785 } 2790 }
2786 idS = inL.IDStr(); 2791 idS = inL.IDStr();
2787 local->removeAddressee( inL ); 2792 local->removeAddressee( inL );
2788 inL = inR; 2793 inL = inR;
2789 inL.setIDStr( idS ); 2794 inL.setIDStr( idS );
2790 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2795 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2791 inL.setCsum( mCurrentSyncDevice, inR.getCsum(mCurrentSyncDevice) ); 2796 inL.setCsum( mCurrentSyncDevice, inR.getCsum(mCurrentSyncDevice) );
2792 inL.setID( mCurrentSyncDevice, inR.getID(mCurrentSyncDevice) ); 2797 inL.setID( mCurrentSyncDevice, inR.getID(mCurrentSyncDevice) );
2793 } 2798 }
2794 inL.setResource( 0 ); 2799 inL.setResource( 0 );
2795 local->insertAddressee( inL , false ); 2800 local->insertAddressee( inL , false );
2796 ++changedLocal; 2801 ++changedLocal;
2797 } 2802 }
2798 } 2803 }
2799 } 2804 }
2800 } else { // no conflict ********** add or delete remote 2805 } else { // no conflict ********** add or delete remote
2801 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2806 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2802 QString des = addresseeLSync.note(); 2807 QString des = addresseeLSync.note();
2803 if ( des.find( inR.getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it 2808 if ( des.find( inR.getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it
2804 inR.setTempSyncStat( SYNC_TEMPSTATE_DELETE ); 2809 inR.setTempSyncStat( SYNC_TEMPSTATE_DELETE );
2805 remote->insertAddressee( inR, false ); 2810 remote->insertAddressee( inR, false );
2806 ++deletedAddresseeR; 2811 ++deletedAddresseeR;
2807 } else { 2812 } else {
2808 inR.setRevision( modifiedCalendar ); 2813 inR.setRevision( modifiedCalendar );
2809 remote->insertAddressee( inR, false ); 2814 remote->insertAddressee( inR, false );
2810 inL = inR; 2815 inL = inR;
2811 inL.setIDStr( ":" ); 2816 inL.setIDStr( ":" );
2812 inL.setCsum( mCurrentSyncDevice, inR.getCsum(mCurrentSyncDevice) ); 2817 inL.setCsum( mCurrentSyncDevice, inR.getCsum(mCurrentSyncDevice) );
2813 inL.setID( mCurrentSyncDevice, inR.getID(mCurrentSyncDevice) ); 2818 inL.setID( mCurrentSyncDevice, inR.getID(mCurrentSyncDevice) );
2814 inL.setResource( 0 ); 2819 inL.setResource( 0 );
2815 local->insertAddressee( inL , false); 2820 local->insertAddressee( inL , false);
2816 ++addedAddressee; 2821 ++addedAddressee;
2817 } 2822 }
2818 } else { 2823 } else {
2819 if ( inR.revision() > mLastAddressbookSync || mode == 5 ) { 2824 if ( inR.revision() > mLastAddressbookSync || mode == 5 ) {
2820 inR.setRevision( modifiedCalendar ); 2825 inR.setRevision( modifiedCalendar );
2821 remote->insertAddressee( inR, false ); 2826 remote->insertAddressee( inR, false );
2822 inR.setResource( 0 ); 2827 inR.setResource( 0 );
2823 local->insertAddressee( inR, false ); 2828 local->insertAddressee( inR, false );
2824 ++addedAddressee; 2829 ++addedAddressee;
2825 } else { 2830 } else {
2826 // pending checkExternSyncAddressee(addresseeRSyncSharp, inR); 2831 // pending checkExternSyncAddressee(addresseeRSyncSharp, inR);
2827 remote->removeAddressee( inR ); 2832 remote->removeAddressee( inR );
2828 ++deletedAddresseeR; 2833 ++deletedAddresseeR;
2829 } 2834 }
2830 } 2835 }
2831 } 2836 }
2832 } 2837 }
2833 ++incCounter; 2838 ++incCounter;
2834 } 2839 }
2835 er.clear(); 2840 er.clear();
2836 QStringList el = local->uidList(); 2841 QStringList el = local->uidList();
2837 modulo = (el.count()/10)+1; 2842 modulo = (el.count()/10)+1;
2838 2843
2839 syncManager->showProgressBar(0, i18n("Add / remove addressees"), el.count()); 2844 syncManager->showProgressBar(0, i18n("Add / remove addressees"), el.count());
2840 incCounter = 0; 2845 incCounter = 0;
2841 while ( incCounter < el.count()) { 2846 while ( incCounter < el.count()) {
2842 qApp->processEvents(); 2847 qApp->processEvents();
2843 if (syncManager->isProgressBarCanceled()) 2848 if (syncManager->isProgressBarCanceled())
2844 return false; 2849 return false;
2845 if ( incCounter % modulo == 0 ) 2850 if ( incCounter % modulo == 0 )
2846 syncManager->showProgressBar(incCounter); 2851 syncManager->showProgressBar(incCounter);
2847 uid = el[ incCounter ]; 2852 uid = el[ incCounter ];
2848 bool skipIncidence = false; 2853 bool skipIncidence = false;
2849 if ( uid.left(19) == QString("last-syncAddressee-") ) 2854 if ( uid.left(19) == QString("last-syncAddressee-") )
2850 skipIncidence = true; 2855 skipIncidence = true;
2851 if ( !skipIncidence ) { 2856 if ( !skipIncidence ) {
2852 inL = local->findByUid( uid ); 2857 inL = local->findByUid( uid );
2853 if ( !inL.resource() || inL.resource()->includeInSync() ) { 2858 if ( !inL.resource() || inL.resource()->includeInSync() ) {
2854 inR = remote->findByUid( uid ); 2859 inR = remote->findByUid( uid );
2855 if ( inR.isEmpty() ) { // no conflict ********** add or delete local 2860 if ( inR.isEmpty() ) { // no conflict ********** add or delete local
2856 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2861 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2857 if ( !inL.getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) { 2862 if ( !inL.getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) {
2858 // pending checkExternSyncAddressee(addresseeLSyncSharp, inL); 2863 // pending checkExternSyncAddressee(addresseeLSyncSharp, inL);
2859 local->removeAddressee( inL ); 2864 local->removeAddressee( inL );
2860 ++deletedAddresseeL; 2865 ++deletedAddresseeL;
2861 } else { 2866 } else {
2862 if ( ! syncManager->mWriteBackExistingOnly ) { 2867 if ( ! syncManager->mWriteBackExistingOnly ) {
2863 inL.removeID(mCurrentSyncDevice ); 2868 inL.removeID(mCurrentSyncDevice );
2864 ++addedAddresseeR; 2869 ++addedAddresseeR;
2865 inL.setRevision( modifiedCalendar ); 2870 inL.setRevision( modifiedCalendar );
2866 local->insertAddressee( inL, false ); 2871 local->insertAddressee( inL, false );
2867 inR = inL; 2872 inR = inL;
2868 inR.setTempSyncStat( SYNC_TEMPSTATE_ADDED_EXTERNAL ); 2873 inR.setTempSyncStat( SYNC_TEMPSTATE_ADDED_EXTERNAL );
2869 inR.setResource( 0 ); 2874 inR.setResource( 0 );
2870 remote->insertAddressee( inR, false ); 2875 remote->insertAddressee( inR, false );
2871 } 2876 }
2872 } 2877 }
2873 } else { 2878 } else {
2874 if ( inL.revision() < mLastAddressbookSync && mode != 4 ) { 2879 if ( inL.revision() < mLastAddressbookSync && mode != 4 ) {
2875 //qDebug("data %s ", inL.revision().toString().latin1()); 2880 //qDebug("data %s ", inL.revision().toString().latin1());
2876 // pending checkExternSyncAddressee(addresseeLSyncSharp, inL); 2881 // pending checkExternSyncAddressee(addresseeLSyncSharp, inL);
2877 local->removeAddressee( inL ); 2882 local->removeAddressee( inL );
2878 ++deletedAddresseeL; 2883 ++deletedAddresseeL;
2879 } else { 2884 } else {
2880 if ( ! syncManager->mWriteBackExistingOnly ) { 2885 if ( ! syncManager->mWriteBackExistingOnly ) {
2881 ++addedAddresseeR; 2886 ++addedAddresseeR;
2882 inL.setRevision( modifiedCalendar ); 2887 inL.setRevision( modifiedCalendar );
2883 local->insertAddressee( inL, false ); 2888 local->insertAddressee( inL, false );
2884 inR = inL; 2889 inR = inL;
2885 inR.setIDStr( ":" ); 2890 inR.setIDStr( ":" );
2886 inR.setResource( 0 ); 2891 inR.setResource( 0 );
2887 remote->insertAddressee( inR, false ); 2892 remote->insertAddressee( inR, false );
2888 } 2893 }
2889 } 2894 }
2890 } 2895 }
2891 } 2896 }
2892 } 2897 }
2893 } 2898 }
2894 ++incCounter; 2899 ++incCounter;
2895 } 2900 }
2896 el.clear(); 2901 el.clear();
2897 syncManager->hideProgressBar(); 2902 syncManager->hideProgressBar();
2898 mLastAddressbookSync = QDateTime::currentDateTime().addSecs( 1 ); 2903 mLastAddressbookSync = QDateTime::currentDateTime().addSecs( 1 );
2899 // get rid of micro seconds 2904 // get rid of micro seconds
2900 QTime t = mLastAddressbookSync.time(); 2905 QTime t = mLastAddressbookSync.time();
2901 mLastAddressbookSync.setTime( QTime (t.hour (), t.minute (), t.second () ) ); 2906 mLastAddressbookSync.setTime( QTime (t.hour (), t.minute (), t.second () ) );
2902 addresseeLSync.setRevision( mLastAddressbookSync ); 2907 addresseeLSync.setRevision( mLastAddressbookSync );
2903 addresseeRSync.setRevision( mLastAddressbookSync ); 2908 addresseeRSync.setRevision( mLastAddressbookSync );
2904 addresseeRSync.setRole( i18n("!Remote from: ")+mCurrentSyncName ) ; 2909 addresseeRSync.setRole( i18n("!Remote from: ")+mCurrentSyncName ) ;
2905 addresseeLSync.setRole(i18n("!Local from: ") + mCurrentSyncName ); 2910 addresseeLSync.setRole(i18n("!Local from: ") + mCurrentSyncName );
2906 addresseeRSync.setGivenName( i18n("!DO NOT EDIT!") ) ; 2911 addresseeRSync.setGivenName( i18n("!DO NOT EDIT!") ) ;
2907 addresseeLSync.setGivenName(i18n("!DO NOT EDIT!") ); 2912 addresseeLSync.setGivenName(i18n("!DO NOT EDIT!") );
2908 addresseeRSync.setOrganization( "!"+mLastAddressbookSync.toString() ) ; 2913 addresseeRSync.setOrganization( "!"+mLastAddressbookSync.toString() ) ;
2909 addresseeLSync.setOrganization("!"+ mLastAddressbookSync.toString() ); 2914 addresseeLSync.setOrganization("!"+ mLastAddressbookSync.toString() );
2910 addresseeRSync.setNote( "" ) ; 2915 addresseeRSync.setNote( "" ) ;
2911 addresseeLSync.setNote( "" ); 2916 addresseeLSync.setNote( "" );
2912 2917
2913 if ( mGlobalSyncMode == SYNC_MODE_NORMAL) 2918 if ( mGlobalSyncMode == SYNC_MODE_NORMAL)
2914 remote->insertAddressee( addresseeRSync, false ); 2919 remote->insertAddressee( addresseeRSync, false );
2915 local->insertAddressee( addresseeLSync, false ); 2920 local->insertAddressee( addresseeLSync, false );
2916 QString mes; 2921 QString mes;
2917 mes .sprintf( i18n("Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n"),addedAddressee, addedAddresseeR, changedLocal, changedRemote, deletedAddresseeL, deletedAddresseeR ); 2922 mes .sprintf( i18n("Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n"),addedAddressee, addedAddresseeR, changedLocal, changedRemote, deletedAddresseeL, deletedAddresseeR );
2918 qDebug( mes ); 2923 qDebug( mes );
2919 mes = i18n("Local addressbook changed!\n") +mes; 2924 mes = i18n("Local addressbook changed!\n") +mes;
2920 if ( syncManager->mShowSyncSummary ) { 2925 if ( syncManager->mShowSyncSummary ) {
2921 if ( KMessageBox::Cancel == KMessageBox::warningContinueCancel(this, mes, 2926 if ( KMessageBox::Cancel == KMessageBox::warningContinueCancel(this, mes,
2922 i18n("KA/Pi Synchronization"),i18n("Write back"))) { 2927 i18n("KA/Pi Synchronization"),i18n("Write back"))) {
2923 qDebug("cancelled "); 2928 qDebug("cancelled ");
2924 return false; 2929 return false;
2925 } 2930 }
2926 } 2931 }
2927 return syncOK; 2932 return syncOK;
2928} 2933}
2929 2934
2930 2935
2931//this is a overwritten callbackmethods from the syncinterface 2936//this is a overwritten callbackmethods from the syncinterface
2932bool KABCore::sync(KSyncManager* manager, QString filename, int mode) 2937bool KABCore::sync(KSyncManager* manager, QString filename, int mode)
2933{ 2938{
2934 2939
2935 //pending prepare addresseeview for output 2940 //pending prepare addresseeview for output
2936 //pending detect, if remote file has REV field. if not switch to external sync 2941 //pending detect, if remote file has REV field. if not switch to external sync
2937 mGlobalSyncMode = SYNC_MODE_NORMAL; 2942 mGlobalSyncMode = SYNC_MODE_NORMAL;
2938 QString mCurrentSyncDevice = manager->getCurrentSyncDevice(); 2943 QString mCurrentSyncDevice = manager->getCurrentSyncDevice();
2939 2944
2940 AddressBook abLocal(filename,"syncContact"); 2945 AddressBook abLocal(filename,"syncContact");
2941 bool syncOK = false; 2946 bool syncOK = false;
2942 if ( abLocal.load() ) { 2947 if ( abLocal.load() ) {
2943 qDebug("AB loaded %s,sync mode %d",filename.latin1(), mode ); 2948 qDebug("AB loaded %s,sync mode %d",filename.latin1(), mode );
2944 bool external = false; 2949 bool external = false;
2945 bool isXML = false; 2950 bool isXML = false;
2946 if ( filename.right(4) == ".xml") { 2951 if ( filename.right(4) == ".xml") {
2947 mGlobalSyncMode = SYNC_MODE_EXTERNAL; 2952 mGlobalSyncMode = SYNC_MODE_EXTERNAL;
2948 isXML = true; 2953 isXML = true;
2949 abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice, true ); 2954 abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice, true );
2950 } else { 2955 } else {
2951 external = !manager->mIsKapiFile; 2956 external = !manager->mIsKapiFile;
2952 if ( external ) { 2957 if ( external ) {
2953 qDebug("Setting vcf mode to external "); 2958 qDebug("Setting vcf mode to external ");
2954 mGlobalSyncMode = SYNC_MODE_EXTERNAL; 2959 mGlobalSyncMode = SYNC_MODE_EXTERNAL;
2955 AddressBook::Iterator it; 2960 AddressBook::Iterator it;
2956 for ( it = abLocal.begin(); it != abLocal.end(); ++it ) { 2961 for ( it = abLocal.begin(); it != abLocal.end(); ++it ) {
2957 (*it).setID( mCurrentSyncDevice, (*it).uid() ); 2962 (*it).setID( mCurrentSyncDevice, (*it).uid() );
2958 (*it).computeCsum( mCurrentSyncDevice ); 2963 (*it).computeCsum( mCurrentSyncDevice );
2959 } 2964 }
2960 } 2965 }
2961 } 2966 }
2962 //AddressBook::Iterator it; 2967 //AddressBook::Iterator it;
2963 //QStringList vcards; 2968 //QStringList vcards;
2964 //for ( it = abLocal.begin(); it != abLocal.end(); ++it ) { 2969 //for ( it = abLocal.begin(); it != abLocal.end(); ++it ) {
2965 // qDebug("Name %s ", (*it).familyName().latin1()); 2970 // qDebug("Name %s ", (*it).familyName().latin1());
2966 //} 2971 //}
2967 syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, mode ); 2972 syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, mode );
2968 if ( syncOK ) { 2973 if ( syncOK ) {
2969 if ( syncManager->mWriteBackFile ) 2974 if ( syncManager->mWriteBackFile )
2970 { 2975 {
2971 if ( external ) 2976 if ( external )
2972 abLocal.removeSyncAddressees( !isXML); 2977 abLocal.removeSyncAddressees( !isXML);
2973 qDebug("Saving remote AB "); 2978 qDebug("Saving remote AB ");
2974 if ( ! abLocal.saveAB()) 2979 if ( ! abLocal.saveAB())
2975 qDebug("Error writing back AB to file "); 2980 qDebug("Error writing back AB to file ");
2976 if ( external ) { 2981 if ( external ) {
2977 // afterwrite processing 2982 // afterwrite processing
2978 abLocal.postExternSync( mAddressBook,mCurrentSyncDevice ,isXML); 2983 abLocal.postExternSync( mAddressBook,mCurrentSyncDevice ,isXML);
2979 } 2984 }
2980 } 2985 }
2981 } 2986 }
2982 setModified(); 2987 setModified();
2983 2988
2984 } 2989 }
2985 abLocal.removeResources(); 2990 abLocal.removeResources();
2986 if ( syncOK ) 2991 if ( syncOK )
2987 mViewManager->refreshView(); 2992 mViewManager->refreshView();
2988 return syncOK; 2993 return syncOK;
2989 2994
2990} 2995}
2991void KABCore::removeSyncInfo( QString syncProfile) 2996void KABCore::removeSyncInfo( QString syncProfile)
2992{ 2997{
2993 qDebug("AB:removeSyncInfo for profile %s ", syncProfile.latin1()); 2998 qDebug("AB:removeSyncInfo for profile %s ", syncProfile.latin1());
2994 mAddressBook->removeSyncInfo( syncProfile ); 2999 mAddressBook->removeSyncInfo( syncProfile );
2995 setModified(); 3000 setModified();
2996} 3001}
2997 3002
2998 3003
2999//this is a overwritten callbackmethods from the syncinterface 3004//this is a overwritten callbackmethods from the syncinterface
3000bool KABCore::syncExternal(KSyncManager* manager, QString resource) 3005bool KABCore::syncExternal(KSyncManager* manager, QString resource)