summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--korganizer/calendarview.cpp11
-rw-r--r--libkdepim/ksyncmanager.cpp42
-rw-r--r--libkdepim/ksyncmanager.h2
3 files changed, 47 insertions, 8 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index e45240a..6128137 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -1476,107 +1476,110 @@ int CalendarView::takeEvent( Incidence* local, Incidence* remote, int mode , b
1476 mode = SYNC_PREF_ASK; 1476 mode = SYNC_PREF_ASK;
1477 1477
1478 switch( mode ) { 1478 switch( mode ) {
1479 case SYNC_PREF_LOCAL: 1479 case SYNC_PREF_LOCAL:
1480 if ( lastSync > remoteMod ) 1480 if ( lastSync > remoteMod )
1481 return 1; 1481 return 1;
1482 if ( lastSync > localMod ) 1482 if ( lastSync > localMod )
1483 return 2; 1483 return 2;
1484 return 1; 1484 return 1;
1485 break; 1485 break;
1486 case SYNC_PREF_REMOTE: 1486 case SYNC_PREF_REMOTE:
1487 if ( lastSync > localMod ) 1487 if ( lastSync > localMod )
1488 return 2; 1488 return 2;
1489 if ( lastSync > remoteMod ) 1489 if ( lastSync > remoteMod )
1490 return 1; 1490 return 1;
1491 return 2; 1491 return 2;
1492 break; 1492 break;
1493 case SYNC_PREF_NEWEST: 1493 case SYNC_PREF_NEWEST:
1494 if ( localMod >= remoteMod ) 1494 if ( localMod >= remoteMod )
1495 return 1; 1495 return 1;
1496 else 1496 else
1497 return 2; 1497 return 2;
1498 break; 1498 break;
1499 case SYNC_PREF_ASK: 1499 case SYNC_PREF_ASK:
1500 qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() ); 1500 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() );
1501 if ( lastSync > remoteMod && lastSync > localMod) 1501 if ( lastSync > remoteMod && lastSync > localMod)
1502 return 0; 1502 return 0;
1503 if ( lastSync > remoteMod ) 1503 if ( lastSync > remoteMod )
1504 return 1; 1504 return 1;
1505 if ( lastSync > localMod ) 1505 if ( lastSync > localMod )
1506 return 2; 1506 return 2;
1507 qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() ); 1507 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() );
1508 localIsNew = localMod >= remoteMod; 1508 localIsNew = localMod >= remoteMod;
1509 if ( localIsNew ) 1509 if ( localIsNew )
1510 getEventViewerDialog()->setColorMode( 1 ); 1510 getEventViewerDialog()->setColorMode( 1 );
1511 else 1511 else
1512 getEventViewerDialog()->setColorMode( 2 ); 1512 getEventViewerDialog()->setColorMode( 2 );
1513 getEventViewerDialog()->setIncidence(local); 1513 getEventViewerDialog()->setIncidence(local);
1514 if ( localIsNew ) 1514 if ( localIsNew )
1515 getEventViewerDialog()->setColorMode( 2 ); 1515 getEventViewerDialog()->setColorMode( 2 );
1516 else 1516 else
1517 getEventViewerDialog()->setColorMode( 1 ); 1517 getEventViewerDialog()->setColorMode( 1 );
1518 getEventViewerDialog()->addIncidence(remote); 1518 getEventViewerDialog()->addIncidence(remote);
1519 getEventViewerDialog()->setColorMode( 0 ); 1519 getEventViewerDialog()->setColorMode( 0 );
1520 //qDebug("local %d remote %d ",local->relatedTo(),remote->relatedTo() ); 1520 //qDebug("local %d remote %d ",local->relatedTo(),remote->relatedTo() );
1521 getEventViewerDialog()->setCaption( mCurrentSyncDevice +i18n(" : Conflict! Please choose entry!")); 1521 getEventViewerDialog()->setCaption( mCurrentSyncDevice +i18n(" : Conflict! Please choose entry!"));
1522 getEventViewerDialog()->showMe(); 1522 getEventViewerDialog()->showMe();
1523 result = getEventViewerDialog()->executeS( localIsNew ); 1523 result = getEventViewerDialog()->executeS( localIsNew );
1524 return result; 1524 return result;
1525 1525
1526 break; 1526 break;
1527 case SYNC_PREF_FORCE_LOCAL: 1527 case SYNC_PREF_FORCE_LOCAL:
1528 return 1; 1528 return 1;
1529 break; 1529 break;
1530 case SYNC_PREF_FORCE_REMOTE: 1530 case SYNC_PREF_FORCE_REMOTE:
1531 return 2; 1531 return 2;
1532 break; 1532 break;
1533 1533
1534 default: 1534 default:
1535 // SYNC_PREF_TAKE_BOTH not implemented 1535 // SYNC_PREF_TAKE_BOTH not implemented
1536 break; 1536 break;
1537 } 1537 }
1538 return 0; 1538 return 0;
1539} 1539}
1540Event* CalendarView::getLastSyncEvent() 1540Event* CalendarView::getLastSyncEvent()
1541{ 1541{
1542 Event* lse; 1542 Event* lse;
1543 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() ); 1543 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() );
1544 mCalendar->setSyncEventsEnabled();
1544 lse = mCalendar->event( "last-syncEvent-"+mCurrentSyncDevice ); 1545 lse = mCalendar->event( "last-syncEvent-"+mCurrentSyncDevice );
1545 if (!lse) { 1546 if (!lse) {
1547 qDebug("KO: New last Syncevent created for local: %s",mCurrentSyncDevice.latin1() );
1546 lse = new Event(); 1548 lse = new Event();
1547 lse->setUid( "last-syncEvent-"+mCurrentSyncDevice ); 1549 lse->setUid( "last-syncEvent-"+mCurrentSyncDevice );
1548 QString sum = ""; 1550 QString sum = "";
1549 if ( mSyncManager->mExternSyncProfiles.contains( mCurrentSyncDevice ) ) 1551 if ( mSyncManager->mExternSyncProfiles.contains( mCurrentSyncDevice ) )
1550 sum = "E: "; 1552 sum = "E: ";
1551 lse->setSummary(sum+mCurrentSyncDevice + i18n(" - sync event")); 1553 lse->setSummary(sum+mCurrentSyncDevice + i18n(" - sync event"));
1552 lse->setDtStart( mLastCalendarSync ); 1554 lse->setDtStart( mLastCalendarSync );
1553 lse->setDtEnd( mLastCalendarSync.addSecs( 7200 ) ); 1555 lse->setDtEnd( mLastCalendarSync.addSecs( 7200 ) );
1554 lse->setCategories( i18n("SyncEvent") ); 1556 lse->setCategories( i18n("SyncEvent") );
1555 lse->setReadOnly( true ); 1557 lse->setReadOnly( true );
1556 lse->setCalID( 1 ); 1558 lse->setCalID( 1 );
1557 mCalendar->addEvent( lse ); 1559 mCalendar->addEvent( lse );
1558 } 1560 } else
1561 qDebug("KO: Last Syncevent on local found");
1559 1562
1560 return lse; 1563 return lse;
1561 1564
1562} 1565}
1563 1566
1564// we check, if the to delete event has a id for a profile 1567// we check, if the to delete event has a id for a profile
1565// if yes, we set this id in the profile to delete 1568// if yes, we set this id in the profile to delete
1566void CalendarView::checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete ) 1569void CalendarView::checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete )
1567{ 1570{
1568 if ( lastSync.count() == 0 ) { 1571 if ( lastSync.count() == 0 ) {
1569 //qDebug(" lastSync.count() == 0"); 1572 //qDebug(" lastSync.count() == 0");
1570 return; 1573 return;
1571 } 1574 }
1572 if ( toDelete->typeID() == journalID ) 1575 if ( toDelete->typeID() == journalID )
1573 return; 1576 return;
1574 1577
1575 Event* eve = lastSync.first(); 1578 Event* eve = lastSync.first();
1576 1579
1577 while ( eve ) { 1580 while ( eve ) {
1578 QString id = toDelete->getID( eve->uid().mid( 15 ) ); // this is the sync profile name 1581 QString id = toDelete->getID( eve->uid().mid( 15 ) ); // this is the sync profile name
1579 if ( !id.isEmpty() ) { 1582 if ( !id.isEmpty() ) {
1580 QString des = eve->description(); 1583 QString des = eve->description();
1581 QString pref = "e"; 1584 QString pref = "e";
1582 if ( toDelete->typeID() == todoID ) 1585 if ( toDelete->typeID() == todoID )
@@ -1612,49 +1615,49 @@ bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int
1612 Event* eventR; 1615 Event* eventR;
1613 QString uid; 1616 QString uid;
1614 int take; 1617 int take;
1615 Event* eventRSync; 1618 Event* eventRSync;
1616 Event* eventLSync; 1619 Event* eventLSync;
1617 clearAllViews(); 1620 clearAllViews();
1618 QPtrList<Event> eventRSyncSharp = remote->getExternLastSyncEvents(); 1621 QPtrList<Event> eventRSyncSharp = remote->getExternLastSyncEvents();
1619 QPtrList<Event> eventLSyncSharp = local->getExternLastSyncEvents(); 1622 QPtrList<Event> eventLSyncSharp = local->getExternLastSyncEvents();
1620 bool fullDateRange = false; 1623 bool fullDateRange = false;
1621 local->resetTempSyncStat(); 1624 local->resetTempSyncStat();
1622 mLastCalendarSync = QDateTime::currentDateTime(); 1625 mLastCalendarSync = QDateTime::currentDateTime();
1623 if ( mSyncManager->syncWithDesktop() ) { 1626 if ( mSyncManager->syncWithDesktop() ) {
1624 remote->resetPilotStat(1); 1627 remote->resetPilotStat(1);
1625 if ( KSyncManager::mRequestedSyncEvent.isValid() ) { 1628 if ( KSyncManager::mRequestedSyncEvent.isValid() ) {
1626 mLastCalendarSync = KSyncManager::mRequestedSyncEvent; 1629 mLastCalendarSync = KSyncManager::mRequestedSyncEvent;
1627 qDebug("KO: using extern time for calendar sync: %s ", mLastCalendarSync.toString().latin1() ); 1630 qDebug("KO: using extern time for calendar sync: %s ", mLastCalendarSync.toString().latin1() );
1628 } else { 1631 } else {
1629 qDebug("KSyncManager::mRequestedSyncEvent has invalid datatime "); 1632 qDebug("KSyncManager::mRequestedSyncEvent has invalid datatime ");
1630 } 1633 }
1631 } 1634 }
1632 QDateTime modifiedCalendar = mLastCalendarSync; 1635 QDateTime modifiedCalendar = mLastCalendarSync;
1633 eventLSync = getLastSyncEvent(); 1636 eventLSync = getLastSyncEvent();
1634 eventR = remote->event("last-syncEvent-"+mCurrentSyncName ); 1637 eventR = remote->event("last-syncEvent-"+mCurrentSyncName );
1635 if ( eventR ) { 1638 if ( eventR ) {
1636 qDebug("last-syncEvent on remote found "); 1639 qDebug("KO: Last-syncEvent on remote found ");
1637 eventRSync = (Event*) eventR->clone(); 1640 eventRSync = (Event*) eventR->clone();
1638 remote->deleteEvent(eventR ); 1641 remote->deleteEvent(eventR );
1639 1642
1640 } else { 1643 } else {
1641 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL || mSyncManager->syncWithDesktop()) { 1644 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL || mSyncManager->syncWithDesktop()) {
1642 eventRSync = (Event*)eventLSync->clone(); 1645 eventRSync = (Event*)eventLSync->clone();
1643 } else { 1646 } else {
1644 fullDateRange = true; 1647 fullDateRange = true;
1645 eventRSync = new Event(); 1648 eventRSync = new Event();
1646 eventRSync->setSummary(mCurrentSyncName + i18n(" - sync event")); 1649 eventRSync->setSummary(mCurrentSyncName + i18n(" - sync event"));
1647 eventRSync->setUid("last-syncEvent-"+mCurrentSyncName ); 1650 eventRSync->setUid("last-syncEvent-"+mCurrentSyncName );
1648 eventRSync->setDtStart( mLastCalendarSync ); 1651 eventRSync->setDtStart( mLastCalendarSync );
1649 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 7200 ) ); 1652 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 7200 ) );
1650 eventRSync->setCategories( i18n("SyncEvent") ); 1653 eventRSync->setCategories( i18n("SyncEvent") );
1651 } 1654 }
1652 } 1655 }
1653 if ( eventLSync->dtStart() == mLastCalendarSync ) 1656 if ( eventLSync->dtStart() == mLastCalendarSync )
1654 fullDateRange = true; 1657 fullDateRange = true;
1655 1658
1656 if ( ! fullDateRange ) { 1659 if ( ! fullDateRange ) {
1657 if ( eventLSync->dtStart() != eventRSync->dtStart() ) { 1660 if ( eventLSync->dtStart() != eventRSync->dtStart() ) {
1658 1661
1659 qDebug("KO: Sync: Set fulldate to true! Local: %s --- Remote: %s" ,eventLSync->dtStart().toString().latin1(), eventRSync->dtStart().toString().latin1() ); 1662 qDebug("KO: Sync: Set fulldate to true! Local: %s --- Remote: %s" ,eventLSync->dtStart().toString().latin1(), eventRSync->dtStart().toString().latin1() );
1660 //qDebug("%d %d %d %d ", eventLSync->dtStart().time().second(), eventLSync->dtStart().time().msec() , eventRSync->dtStart().time().second(), eventRSync->dtStart().time().msec()); 1663 //qDebug("%d %d %d %d ", eventLSync->dtStart().time().second(), eventLSync->dtStart().time().msec() , eventRSync->dtStart().time().second(), eventRSync->dtStart().time().msec());
diff --git a/libkdepim/ksyncmanager.cpp b/libkdepim/ksyncmanager.cpp
index e1b15d2..8bf0d27 100644
--- a/libkdepim/ksyncmanager.cpp
+++ b/libkdepim/ksyncmanager.cpp
@@ -1139,58 +1139,69 @@ void KSyncManager::syncPi()
1139 return; 1139 return;
1140 } 1140 }
1141 mCurrentResourceLocal = ""; 1141 mCurrentResourceLocal = "";
1142 mCurrentResourceRemote = ""; 1142 mCurrentResourceRemote = "";
1143 if ( mSpecificResources.count() ) { 1143 if ( mSpecificResources.count() ) {
1144 int lastSyncRes = mSpecificResources.count()/2; 1144 int lastSyncRes = mSpecificResources.count()/2;
1145 int ccc = mSpecificResources.count()-1; 1145 int ccc = mSpecificResources.count()-1;
1146 while ( lastSyncRes > 0 && ccc > 0 && mSpecificResources[ ccc ].isEmpty() ) { 1146 while ( lastSyncRes > 0 && ccc > 0 && mSpecificResources[ ccc ].isEmpty() ) {
1147 --ccc; 1147 --ccc;
1148 --lastSyncRes; 1148 --lastSyncRes;
1149 //qDebug ( "KSM: sync pi %d",ccc ); 1149 //qDebug ( "KSM: sync pi %d",ccc );
1150 } 1150 }
1151 int startLocal = 0; 1151 int startLocal = 0;
1152 int startRemote = mSpecificResources.count()/2; 1152 int startRemote = mSpecificResources.count()/2;
1153 emit multiResourceSyncStart( true ); 1153 emit multiResourceSyncStart( true );
1154 while ( startLocal < mSpecificResources.count()/2 ) { 1154 while ( startLocal < mSpecificResources.count()/2 ) {
1155 if ( startLocal+1 >= lastSyncRes ) 1155 if ( startLocal+1 >= lastSyncRes )
1156 emit multiResourceSyncStart( false ); 1156 emit multiResourceSyncStart( false );
1157 mPisyncFinished = false; 1157 mPisyncFinished = false;
1158 mCurrentResourceLocal = mSpecificResources[ startLocal ]; 1158 mCurrentResourceLocal = mSpecificResources[ startLocal ];
1159 mCurrentResourceRemote = mSpecificResources[ startRemote ]; 1159 mCurrentResourceRemote = mSpecificResources[ startRemote ];
1160 //qDebug ( "KSM: AAASyncing resources: Local: %s --- Remote: %s ",mCurrentResourceLocal.latin1(), mCurrentResourceRemote.latin1() ); 1160 //qDebug ( "KSM: AAASyncing resources: Local: %s --- Remote: %s ",mCurrentResourceLocal.latin1(), mCurrentResourceRemote.latin1() );
1161 if ( !mCurrentResourceRemote.isEmpty() ) { 1161 if ( !mCurrentResourceRemote.isEmpty() ) {
1162 qDebug ( "KSM: Syncing resources: Local: %s --- Remote: %s ",mCurrentResourceLocal.latin1(), mCurrentResourceRemote.latin1() ); 1162 qDebug ( "KSM: Syncing resources: Local: %s --- Remote: %s ",mCurrentResourceLocal.latin1(), mCurrentResourceRemote.latin1() );
1163
1163 KCommandSocket* commandSocket = new KCommandSocket( mCurrentResourceRemote, mPassWordPiSync, port, mActiveSyncIP, this, mParent->topLevelWidget() ); 1164 KCommandSocket* commandSocket = new KCommandSocket( mCurrentResourceRemote, mPassWordPiSync, port, mActiveSyncIP, this, mParent->topLevelWidget() );
1164 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int )), this, SLOT(deleteCommandSocket(KCommandSocket*, int)) ); 1165 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int )), this, SLOT(deleteCommandSocket(KCommandSocket*, int)) );
1165 commandSocket->readFile( syncFileName() ); 1166 commandSocket->readFile( syncFileName() );
1167 mParent->topLevelWidget()->setCaption( i18n("Syncing %1 <-> %2").arg( mCurrentResourceLocal ).arg( mCurrentResourceRemote ) );
1166 while ( !mPisyncFinished ) { 1168 while ( !mPisyncFinished ) {
1167 //qDebug("waiting "); 1169 //qDebug("waiting ");
1168 qApp->processEvents(); 1170 qApp->processEvents();
1169 } 1171 }
1172 if ( startLocal+1 < mSpecificResources.count()/2 ) {
1173 mParent->topLevelWidget()->setCaption( i18n("Waiting 2 secs before syncing next resource...") );
1174 QTime timer;
1175 timer.start();
1176 while ( timer.elapsed () < 2000 ) {
1177 qApp->processEvents();
1178 }
1179 }
1170 } 1180 }
1171 ++startRemote; 1181 ++startRemote;
1172 ++startLocal; 1182 ++startLocal;
1183
1173 } 1184 }
1174 mPisyncFinished = true; 1185 mPisyncFinished = true;
1175 } else { 1186 } else {
1176 KCommandSocket* commandSocket = new KCommandSocket( "", mPassWordPiSync, port, mActiveSyncIP, this, mParent->topLevelWidget() ); 1187 KCommandSocket* commandSocket = new KCommandSocket( "", mPassWordPiSync, port, mActiveSyncIP, this, mParent->topLevelWidget() );
1177 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int )), this, SLOT(deleteCommandSocket(KCommandSocket*, int)) ); 1188 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int )), this, SLOT(deleteCommandSocket(KCommandSocket*, int)) );
1178 commandSocket->readFile( syncFileName() ); 1189 commandSocket->readFile( syncFileName() );
1179 } 1190 }
1180} 1191}
1181 1192
1182void KSyncManager::deleteCommandSocket(KCommandSocket*s, int state) 1193void KSyncManager::deleteCommandSocket(KCommandSocket*s, int state)
1183{ 1194{
1184 //enum { success, errorW, errorR, quiet }; 1195 //enum { success, errorW, errorR, quiet };
1185 1196
1186 1197
1187 1198
1188 if ( state == KCommandSocket::errorR ||state == KCommandSocket::errorTO ||state == KCommandSocket::errorPW || 1199 if ( state == KCommandSocket::errorR ||state == KCommandSocket::errorTO ||state == KCommandSocket::errorPW ||
1189 state == KCommandSocket::errorCA ||state == KCommandSocket::errorFI ||state == KCommandSocket::errorUN||state == KCommandSocket::errorED ) { 1200 state == KCommandSocket::errorCA ||state == KCommandSocket::errorFI ||state == KCommandSocket::errorUN||state == KCommandSocket::errorED ) {
1190 if ( state == KCommandSocket::errorPW ) 1201 if ( state == KCommandSocket::errorPW )
1191 mParent->topLevelWidget()->setCaption( i18n("Wrong password: Receiving remote file failed.") ); 1202 mParent->topLevelWidget()->setCaption( i18n("Wrong password: Receiving remote file failed.") );
1192 else if ( state == KCommandSocket::errorR ||state == KCommandSocket::errorTO ) 1203 else if ( state == KCommandSocket::errorR ||state == KCommandSocket::errorTO )
1193 mParent->topLevelWidget()->setCaption( i18n("ERROR: Receiving remote file failed.") ); 1204 mParent->topLevelWidget()->setCaption( i18n("ERROR: Receiving remote file failed.") );
1194 else if ( state == KCommandSocket::errorCA ) 1205 else if ( state == KCommandSocket::errorCA )
1195 mParent->topLevelWidget()->setCaption( i18n("Sync cancelled from remote.") ); 1206 mParent->topLevelWidget()->setCaption( i18n("Sync cancelled from remote.") );
1196 else if ( state == KCommandSocket::errorFI ) 1207 else if ( state == KCommandSocket::errorFI )
@@ -1233,63 +1244,84 @@ void KSyncManager::readFileFromSocket()
1233{ 1244{
1234 QString fileName = syncFileName(); 1245 QString fileName = syncFileName();
1235 bool syncOK = true; 1246 bool syncOK = true;
1236 mParent->topLevelWidget()->setCaption( i18n("Remote file saved to temp file.") ); 1247 mParent->topLevelWidget()->setCaption( i18n("Remote file saved to temp file.") );
1237 if ( ! syncWithFile( fileName , true ) ) { 1248 if ( ! syncWithFile( fileName , true ) ) {
1238 mParent->topLevelWidget()->setCaption( i18n("Syncing failed.") ); 1249 mParent->topLevelWidget()->setCaption( i18n("Syncing failed.") );
1239 syncOK = false; 1250 syncOK = false;
1240 } 1251 }
1241 KCommandSocket* commandSocket = new KCommandSocket( mCurrentResourceRemote,mPassWordPiSync, mActiveSyncPort.toUInt(), mActiveSyncIP, this, mParent->topLevelWidget() ); 1252 KCommandSocket* commandSocket = new KCommandSocket( mCurrentResourceRemote,mPassWordPiSync, mActiveSyncPort.toUInt(), mActiveSyncIP, this, mParent->topLevelWidget() );
1242 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int)), this, SLOT(deleteCommandSocket(KCommandSocket*, int )) ); 1253 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int)), this, SLOT(deleteCommandSocket(KCommandSocket*, int )) );
1243 if ( mWriteBackFile && syncOK ) { 1254 if ( mWriteBackFile && syncOK ) {
1244 mParent->topLevelWidget()->setCaption( i18n("Sending back file ...") ); 1255 mParent->topLevelWidget()->setCaption( i18n("Sending back file ...") );
1245 commandSocket->writeFile( fileName ); 1256 commandSocket->writeFile( fileName );
1246 } 1257 }
1247 else { 1258 else {
1248 commandSocket->sendStop(); 1259 commandSocket->sendStop();
1249 if ( syncOK ) 1260 if ( syncOK )
1250 mParent->topLevelWidget()->setCaption( i18n("Pi-Sync succesful!") ); 1261 mParent->topLevelWidget()->setCaption( i18n("Pi-Sync succesful!") );
1251 mPisyncFinished = true; 1262 mPisyncFinished = true;
1252 } 1263 }
1253} 1264}
1254 1265
1255KServerSocket:: KServerSocket ( QString pw, Q_UINT16 port, int backlog, QObject * parent, const char * name ) : QServerSocket( port, backlog, parent, name ) 1266KServerSocket:: KServerSocket ( QString pw, Q_UINT16 port, int backlog, QObject * parent, const char * name ) : QServerSocket( port, backlog, parent, name )
1256{ 1267{
1268 mPendingConnect = 0;
1257 mPassWord = pw; 1269 mPassWord = pw;
1258 mSocket = 0; 1270 mSocket = 0;
1259 mSyncActionDialog = 0; 1271 mSyncActionDialog = 0;
1260 blockRC = false; 1272 blockRC = false;
1261 mErrorMessage = 0; 1273 mErrorMessage = 0;
1262} 1274}
1263 1275void KServerSocket::waitForSocketFinish()
1276{
1277 if ( mSocket ) {
1278 qDebug("KSS:: waiting for finish operation");
1279 QTimer::singleShot( 250, this , SLOT ( waitForSocketFinish()));
1280 return;
1281 }
1282 mSocket = new QSocket( this );
1283 connect( mSocket , SIGNAL(readyRead()), this, SLOT(readClient()) );
1284 connect( mSocket , SIGNAL(delayedCloseFinished()), this, SLOT(discardClient()) );
1285 mSocket->setSocket( mPendingConnect );
1286 mPendingConnect = 0;
1287}
1264void KServerSocket::newConnection ( int socket ) 1288void KServerSocket::newConnection ( int socket )
1265{ 1289{
1266 // qDebug("KServerSocket:New connection %d ", socket); 1290 // qDebug("KServerSocket:New connection %d ", socket);
1291 if ( mPendingConnect ) {
1292 qDebug("KSS::Error : new Connection");
1293 return;
1294 }
1267 if ( mSocket ) { 1295 if ( mSocket ) {
1296 mPendingConnect = socket;
1297 QTimer::singleShot( 250, this , SLOT ( waitForSocketFinish()));
1298 return;
1268 qDebug("KSS::newConnection Socket deleted! "); 1299 qDebug("KSS::newConnection Socket deleted! ");
1269 delete mSocket; 1300 delete mSocket;
1270 mSocket = 0; 1301 mSocket = 0;
1271 } 1302 }
1303 mPendingConnect = 0;
1272 mSocket = new QSocket( this ); 1304 mSocket = new QSocket( this );
1273 connect( mSocket , SIGNAL(readyRead()), this, SLOT(readClient()) ); 1305 connect( mSocket , SIGNAL(readyRead()), this, SLOT(readClient()) );
1274 connect( mSocket , SIGNAL(delayedCloseFinished()), this, SLOT(discardClient()) ); 1306 connect( mSocket , SIGNAL(delayedCloseFinished()), this, SLOT(discardClient()) );
1275 mSocket->setSocket( socket ); 1307 mSocket->setSocket( socket );
1276} 1308}
1277 1309
1278void KServerSocket::discardClient() 1310void KServerSocket::discardClient()
1279{ 1311{
1280 QTimer::singleShot( 10, this , SLOT ( deleteSocket())); 1312 QTimer::singleShot( 10, this , SLOT ( deleteSocket()));
1281} 1313}
1282void KServerSocket::deleteSocket() 1314void KServerSocket::deleteSocket()
1283{ 1315{
1284 qDebug("KSS::deleteSocket"); 1316 qDebug("KSS::deleteSocket");
1285 if ( mSocket ) { 1317 if ( mSocket ) {
1286 delete mSocket; 1318 delete mSocket;
1287 mSocket = 0; 1319 mSocket = 0;
1288 } 1320 }
1289 if ( mErrorMessage ) 1321 if ( mErrorMessage )
1290 QTimer::singleShot( 10, this , SLOT ( displayErrorMessage())); 1322 QTimer::singleShot( 10, this , SLOT ( displayErrorMessage()));
1291} 1323}
1292void KServerSocket::readClient() 1324void KServerSocket::readClient()
1293{ 1325{
1294 if ( blockRC ) 1326 if ( blockRC )
1295 return; 1327 return;
@@ -1522,84 +1554,86 @@ KCommandSocket::KCommandSocket ( QString remres, QString password, Q_UINT16 port
1522 mRemoteResource = "ALL"; 1554 mRemoteResource = "ALL";
1523 else 1555 else
1524 mRemoteResource.replace (QRegExp (" "),"_" ); 1556 mRemoteResource.replace (QRegExp (" "),"_" );
1525 mPassWord = password; 1557 mPassWord = password;
1526 mSocket = 0; 1558 mSocket = 0;
1527 mFirst = false; 1559 mFirst = false;
1528 mFirstLine = true; 1560 mFirstLine = true;
1529 mPort = port; 1561 mPort = port;
1530 mHost = host; 1562 mHost = host;
1531 tlw = cap; 1563 tlw = cap;
1532 mRetVal = quiet; 1564 mRetVal = quiet;
1533 mTimerSocket = new QTimer ( this ); 1565 mTimerSocket = new QTimer ( this );
1534 connect( mTimerSocket, SIGNAL ( timeout () ), this, SLOT ( updateConnectDialog() ) ); 1566 connect( mTimerSocket, SIGNAL ( timeout () ), this, SLOT ( updateConnectDialog() ) );
1535 mConnectProgress.setCaption( i18n("Pi-Sync") ); 1567 mConnectProgress.setCaption( i18n("Pi-Sync") );
1536 connect( &mConnectProgress, SIGNAL ( cancelled () ), this, SLOT ( deleteSocket() ) ); 1568 connect( &mConnectProgress, SIGNAL ( cancelled () ), this, SLOT ( deleteSocket() ) );
1537 mConnectCount = -1; 1569 mConnectCount = -1;
1538} 1570}
1539void KCommandSocket::sendFileRequest() 1571void KCommandSocket::sendFileRequest()
1540{ 1572{
1541 if ( tlw ) 1573 if ( tlw )
1542 tlw->setCaption( i18n("Connected! Sending request for remote file ...") ); 1574 tlw->setCaption( i18n("Connected! Sending request for remote file ...") );
1543 mConnectProgress.hide(); 1575 mConnectProgress.hide();
1544 mConnectCount = 300;mConnectMax = 300; 1576 mConnectCount = 300;mConnectMax = 300;
1545 mConnectProgress.setCaption( i18n("Pi-Sync: Connected!") ); 1577 mConnectProgress.setCaption( i18n("Pi-Sync: Connected!") );
1578 mConnectProgress.setLabelText( i18n("Waiting for remote file...") );
1546 mTimerSocket->start( 100, true ); 1579 mTimerSocket->start( 100, true );
1547 QTextStream os( mSocket ); 1580 QTextStream os( mSocket );
1548 os.setEncoding( QTextStream::Latin1 ); 1581 os.setEncoding( QTextStream::Latin1 );
1549 1582
1550 QString curDt = " " +KGlobal::locale()->formatDateTime(QDateTime::currentDateTime().addSecs(-1),true, true,KLocale::ISODate ); 1583 QString curDt = " " +KGlobal::locale()->formatDateTime(QDateTime::currentDateTime().addSecs(-1),true, true,KLocale::ISODate );
1551 os << "GET " << mPassWord << curDt << " " << mRemoteResource << "\r\n\r\n"; 1584 os << "GET " << mPassWord << curDt << " " << mRemoteResource << "\r\n\r\n";
1552} 1585}
1553 1586
1554void KCommandSocket::readFile( QString fn ) 1587void KCommandSocket::readFile( QString fn )
1555{ 1588{
1556 if ( !mSocket ) { 1589 if ( !mSocket ) {
1557 mSocket = new QSocket( this ); 1590 mSocket = new QSocket( this );
1591 qDebug("KCS: read file - new socket");
1558 connect( mSocket, SIGNAL(readyRead()), this, SLOT(startReadFileFromSocket()) ); 1592 connect( mSocket, SIGNAL(readyRead()), this, SLOT(startReadFileFromSocket()) );
1559 connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) ); 1593 connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) );
1560 connect( mSocket, SIGNAL(connected ()), this, SLOT(sendFileRequest() )); 1594 connect( mSocket, SIGNAL(connected ()), this, SLOT(sendFileRequest() ));
1561 } 1595 }
1562 mFileString = ""; 1596 mFileString = "";
1563 mFileName = fn; 1597 mFileName = fn;
1564 mFirst = true; 1598 mFirst = true;
1565 if ( tlw ) 1599 if ( tlw )
1566 tlw->setCaption( i18n("Trying to connect to remote...") ); 1600 tlw->setCaption( i18n("Trying to connect to remote...") );
1567 mConnectCount = 30;mConnectMax = 30; 1601 mConnectCount = 30;mConnectMax = 30;
1568 mTimerSocket->start( 1000, true ); 1602 mTimerSocket->start( 1000, true );
1569 mSocket->connectToHost( mHost, mPort ); 1603 mSocket->connectToHost( mHost, mPort );
1570 qDebug("KSS: Waiting for connection"); 1604 qDebug("KCS: Waiting for connection");
1571} 1605}
1572void KCommandSocket::updateConnectDialog() 1606void KCommandSocket::updateConnectDialog()
1573{ 1607{
1574 1608
1575 if ( mConnectCount == mConnectMax ) { 1609 if ( mConnectCount == mConnectMax ) {
1576 //qDebug("MAXX %d", mConnectMax); 1610 qDebug("MAXX %d", mConnectMax);
1577 mConnectProgress.setTotalSteps ( 30 ); 1611 mConnectProgress.setTotalSteps ( 30 );
1578 mConnectProgress.show(); 1612 mConnectProgress.show();
1579 mConnectProgress.setLabelText( i18n("Trying to connect to remote...") ); 1613 mConnectProgress.setLabelText( i18n("Trying to connect to remote...") );
1580 } 1614 }
1581 //qDebug("updateConnectDialog() %d", mConnectCount); 1615 qDebug("updateConnectDialog() %d", mConnectCount);
1582 mConnectProgress.raise(); 1616 mConnectProgress.raise();
1583 mConnectProgress.setProgress( (mConnectMax - mConnectCount)%30 ); 1617 mConnectProgress.setProgress( (mConnectMax - mConnectCount)%30 );
1584 --mConnectCount; 1618 --mConnectCount;
1585 if ( mConnectCount > 0 ) 1619 if ( mConnectCount > 0 )
1586 mTimerSocket->start( 1000, true ); 1620 mTimerSocket->start( 1000, true );
1587 else 1621 else
1588 deleteSocket(); 1622 deleteSocket();
1589 1623
1590} 1624}
1591void KCommandSocket::writeFile( QString fileName ) 1625void KCommandSocket::writeFile( QString fileName )
1592{ 1626{
1593 if ( !mSocket ) { 1627 if ( !mSocket ) {
1594 mSocket = new QSocket( this ); 1628 mSocket = new QSocket( this );
1595 connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) ); 1629 connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) );
1596 connect( mSocket, SIGNAL(connected ()), this, SLOT(writeFileToSocket()) ); 1630 connect( mSocket, SIGNAL(connected ()), this, SLOT(writeFileToSocket()) );
1597 } 1631 }
1598 mFileName = fileName ; 1632 mFileName = fileName ;
1599 mConnectCount = 30;mConnectMax = 30; 1633 mConnectCount = 30;mConnectMax = 30;
1600 mTimerSocket->start( 1000, true ); 1634 mTimerSocket->start( 1000, true );
1601 mSocket->connectToHost( mHost, mPort ); 1635 mSocket->connectToHost( mHost, mPort );
1602} 1636}
1603void KCommandSocket::writeFileToSocket() 1637void KCommandSocket::writeFileToSocket()
1604{ 1638{
1605 mTimerSocket->stop(); 1639 mTimerSocket->stop();
diff --git a/libkdepim/ksyncmanager.h b/libkdepim/ksyncmanager.h
index 53c611d..604adb8 100644
--- a/libkdepim/ksyncmanager.h
+++ b/libkdepim/ksyncmanager.h
@@ -37,54 +37,56 @@ class KSyncProfile;
37class KPimPrefs; 37class KPimPrefs;
38class QWidget; 38class QWidget;
39class KSyncManager; 39class KSyncManager;
40class KSyncInterface; 40class KSyncInterface;
41class QProgressBar; 41class QProgressBar;
42 42
43 43
44class KServerSocket : public QServerSocket 44class KServerSocket : public QServerSocket
45{ 45{
46 Q_OBJECT 46 Q_OBJECT
47 47
48 public: 48 public:
49 KServerSocket ( QString password, Q_UINT16 port, int backlog = 0, QObject * parent=0, const char * name=0 ); 49 KServerSocket ( QString password, Q_UINT16 port, int backlog = 0, QObject * parent=0, const char * name=0 );
50 50
51 void newConnection ( int socket ) ; 51 void newConnection ( int socket ) ;
52 void setFileName( QString fn ) {mFileName = fn;}; 52 void setFileName( QString fn ) {mFileName = fn;};
53 signals: 53 signals:
54 void file_received( bool ); 54 void file_received( bool );
55 void request_file(); 55 void request_file();
56 void file_received( bool, const QString &); 56 void file_received( bool, const QString &);
57 void request_file(const QString &); 57 void request_file(const QString &);
58 void saveFile(); 58 void saveFile();
59 void endConnect(); 59 void endConnect();
60 private slots: 60 private slots:
61 void waitForSocketFinish();
61 void discardClient(); 62 void discardClient();
62 void deleteSocket(); 63 void deleteSocket();
63 void readClient(); 64 void readClient();
64 void displayErrorMessage(); 65 void displayErrorMessage();
65 void readBackFileFromSocket(); 66 void readBackFileFromSocket();
66 private : 67 private :
68 int mPendingConnect;
67 QString mResource; 69 QString mResource;
68 int mErrorMessage; 70 int mErrorMessage;
69 bool blockRC; 71 bool blockRC;
70 void send_file(); 72 void send_file();
71 void get_file(); 73 void get_file();
72 void end_connect(); 74 void end_connect();
73 void error_connect( QString ); 75 void error_connect( QString );
74 QDialog* mSyncActionDialog; 76 QDialog* mSyncActionDialog;
75 QSocket* mSocket; 77 QSocket* mSocket;
76 QString mPassWord; 78 QString mPassWord;
77 QString mFileName; 79 QString mFileName;
78 QTime piTime; 80 QTime piTime;
79 QString piFileString; 81 QString piFileString;
80}; 82};
81 83
82class KCommandSocket : public QObject 84class KCommandSocket : public QObject
83{ 85{
84 Q_OBJECT 86 Q_OBJECT
85 public: 87 public:
86 enum state { successR, errorR, successW, errorW, errorTO, errorPW, errorCA, errorFI, errorUN, errorED,quiet }; 88 enum state { successR, errorR, successW, errorW, errorTO, errorPW, errorCA, errorFI, errorUN, errorED,quiet };
87 KCommandSocket (QString remoteResource, QString password, Q_UINT16 port, QString host, QObject * parent=0, QWidget* cap = 0, const char * name=0 ); 89 KCommandSocket (QString remoteResource, QString password, Q_UINT16 port, QString host, QObject * parent=0, QWidget* cap = 0, const char * name=0 );
88 void readFile( QString ); 90 void readFile( QString );
89 void writeFile( QString ); 91 void writeFile( QString );
90 void sendStop(); 92 void sendStop();