summaryrefslogtreecommitdiffabout
path: root/libkdepim
authorzautrix <zautrix>2004-10-08 10:31:33 (UTC)
committer zautrix <zautrix>2004-10-08 10:31:33 (UTC)
commit98987418d89d1334c0c2961ca4d6bc295d6fb021 (patch) (unidiff)
tree2562272904bcd82eab7e6d185f3f7f0abfac48c3 /libkdepim
parent309df8e8df3a17602f948025b7951b21ec5c3fed (diff)
downloadkdepimpi-98987418d89d1334c0c2961ca4d6bc295d6fb021.zip
kdepimpi-98987418d89d1334c0c2961ca4d6bc295d6fb021.tar.gz
kdepimpi-98987418d89d1334c0c2961ca4d6bc295d6fb021.tar.bz2
Sync fixes
Diffstat (limited to 'libkdepim') (more/less context) (ignore whitespace changes)
-rw-r--r--libkdepim/ksyncmanager.cpp58
-rw-r--r--libkdepim/ksyncmanager.h1
2 files changed, 47 insertions, 12 deletions
diff --git a/libkdepim/ksyncmanager.cpp b/libkdepim/ksyncmanager.cpp
index b3e266a..0faa24d 100644
--- a/libkdepim/ksyncmanager.cpp
+++ b/libkdepim/ksyncmanager.cpp
@@ -588,53 +588,83 @@ void KSyncManager::syncRemote( KSyncProfile* prof, bool ask)
588 //qDebug(" file **%s** ",prof->getLocalTempFile().latin1() ); 588 //qDebug(" file **%s** ",prof->getLocalTempFile().latin1() );
589 589
590 if ( syncWithFile( localTempFile, true ) ) { 590 if ( syncWithFile( localTempFile, true ) ) {
591 591
592 if ( mWriteBackFile ) { 592 if ( mWriteBackFile ) {
593 int fi; 593 int fi;
594 if ( (fi = postCommand.find("$PWD$")) > 0 ) { 594 if ( (fi = postCommand.find("$PWD$")) > 0 ) {
595 QString pwd = getPassword(); 595 QString pwd = getPassword();
596 postCommand = postCommand.left( fi )+ pwd + postCommand.mid( fi+5 ); 596 postCommand = postCommand.left( fi )+ pwd + postCommand.mid( fi+5 );
597 597
598 } 598 }
599 mParent->topLevelWidget()->setCaption ( i18n( "Writing back file ..." ) ); 599 mParent->topLevelWidget()->setCaption ( i18n( "Writing back file ..." ) );
600 result = system ( postCommand ); 600 result = system ( postCommand );
601 qDebug("Writing back file result: %d ", result); 601 qDebug("Writing back file result: %d ", result);
602 if ( result != 0 ) { 602 if ( result != 0 ) {
603 mParent->topLevelWidget()->setCaption ( i18n( "Writing back file result: " )+QString::number( result ) ); 603 mParent->topLevelWidget()->setCaption ( i18n( "Writing back file result: " )+QString::number( result ) );
604 return; 604 return;
605 } else { 605 } else {
606 mParent->topLevelWidget()->setCaption ( i18n( "Syncronization sucessfully completed" ) ); 606 mParent->topLevelWidget()->setCaption ( i18n( "Syncronization sucessfully completed" ) );
607 } 607 }
608 } 608 }
609 } 609 }
610 return; 610 return;
611} 611}
612 612void KSyncManager::edit_pisync_options()
613{
614 QDialog dia( mParent, "dia", true );
615 dia.setCaption( i18n("Pi-Sync options for device: " ) +mCurrentSyncDevice );
616 QVBoxLayout lay ( &dia );
617 lay.setSpacing( 5 );
618 lay.setMargin( 3 );
619 QLabel lab1 ( i18n("Password for remote access:"), &dia);
620 lay.addWidget( &lab1 );
621 QLineEdit le1 (&dia );
622 lay.addWidget( &le1 );
623 QLabel lab2 ( i18n("Remote IP address:"), &dia);
624 lay.addWidget( &lab2 );
625 QLineEdit le2 (&dia );
626 lay.addWidget( &le2 );
627 QLabel lab3 ( i18n("Remote port number:"), &dia);
628 lay.addWidget( &lab3 );
629 QLineEdit le3 (&dia );
630 lay.addWidget( &le3 );
631 QPushButton pb ( "OK", &dia);
632 lay.addWidget( &pb );
633 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) );
634 le1.setText( mPassWordPiSync );
635 le2.setText( mActiveSyncIP );
636 le3.setText( mActiveSyncPort );
637 if ( dia.exec() ) {
638 mPassWordPiSync = le1.text();
639 mActiveSyncPort = le3.text();
640 mActiveSyncIP = le2.text();
641 }
642
643}
613void KSyncManager::edit_sync_options() 644void KSyncManager::edit_sync_options()
614{ 645{
615 //mDialogManager->showSyncOptions(); 646
616 //mSyncAlgoPrefs
617 QDialog dia( mParent, "dia", true ); 647 QDialog dia( mParent, "dia", true );
618 dia.setCaption( i18n("Device: " ) +mCurrentSyncDevice ); 648 dia.setCaption( i18n("Device: " ) +mCurrentSyncDevice );
619 QButtonGroup gr ( 1, Qt::Horizontal, i18n("Sync preferences"), &dia); 649 QButtonGroup gr ( 1, Qt::Horizontal, i18n("Sync preferences"), &dia);
620 QVBoxLayout lay ( &dia ); 650 QVBoxLayout lay ( &dia );
621 lay.setSpacing( 2 ); 651 lay.setSpacing( 2 );
622 lay.setMargin( 3 ); 652 lay.setMargin( 3 );
623 lay.addWidget(&gr); 653 lay.addWidget(&gr);
624 QRadioButton loc ( i18n("Take local entry on conflict"), &gr ); 654 QRadioButton loc ( i18n("Take local entry on conflict"), &gr );
625 QRadioButton rem ( i18n("Take remote entry on conflict"), &gr ); 655 QRadioButton rem ( i18n("Take remote entry on conflict"), &gr );
626 QRadioButton newest( i18n("Take newest entry on conflict"), &gr ); 656 QRadioButton newest( i18n("Take newest entry on conflict"), &gr );
627 QRadioButton ask( i18n("Ask for every entry on conflict"), &gr ); 657 QRadioButton ask( i18n("Ask for every entry on conflict"), &gr );
628 QRadioButton f_loc( i18n("Force: Take local entry always"), &gr ); 658 QRadioButton f_loc( i18n("Force: Take local entry always"), &gr );
629 QRadioButton f_rem( i18n("Force: Take remote entry always"), &gr ); 659 QRadioButton f_rem( i18n("Force: Take remote entry always"), &gr );
630 //QRadioButton both( i18n("Take both on conflict"), &gr ); 660 //QRadioButton both( i18n("Take both on conflict"), &gr );
631 QPushButton pb ( "OK", &dia); 661 QPushButton pb ( "OK", &dia);
632 lay.addWidget( &pb ); 662 lay.addWidget( &pb );
633 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) ); 663 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) );
634 switch ( mSyncAlgoPrefs ) { 664 switch ( mSyncAlgoPrefs ) {
635 case 0: 665 case 0:
636 loc.setChecked( true); 666 loc.setChecked( true);
637 break; 667 break;
638 case 1: 668 case 1:
639 rem.setChecked( true ); 669 rem.setChecked( true );
640 break; 670 break;
@@ -764,52 +794,53 @@ QString KSyncManager::syncFileName()
764{ 794{
765 795
766 QString fn = "tempfile"; 796 QString fn = "tempfile";
767 switch(mTargetApp) 797 switch(mTargetApp)
768 { 798 {
769 case (KAPI): 799 case (KAPI):
770 fn = "tempsyncab.vcf"; 800 fn = "tempsyncab.vcf";
771 break; 801 break;
772 case (KOPI): 802 case (KOPI):
773 fn = "tempsynccal.ics"; 803 fn = "tempsynccal.ics";
774 break; 804 break;
775 case (PWMPI): 805 case (PWMPI):
776 fn = "tempsyncpw.pwm"; 806 fn = "tempsyncpw.pwm";
777 break; 807 break;
778 default: 808 default:
779 break; 809 break;
780 } 810 }
781#ifdef _WIN32_ 811#ifdef _WIN32_
782 return locateLocal( "tmp", fn ); 812 return locateLocal( "tmp", fn );
783#else 813#else
784 return (QString( "/tmp/" )+ fn ); 814 return (QString( "/tmp/" )+ fn );
785#endif 815#endif
786} 816}
787 817
788
789void KSyncManager::syncPi() 818void KSyncManager::syncPi()
790{ 819{
791 qApp->processEvents(); 820 qApp->processEvents();
821 if ( mAskForPreferences )
822 edit_pisync_options();
792 bool ok; 823 bool ok;
793 Q_UINT16 port = mActiveSyncPort.toUInt(&ok); 824 Q_UINT16 port = mActiveSyncPort.toUInt(&ok);
794 if ( ! ok ) { 825 if ( ! ok ) {
795 mParent->topLevelWidget()->setCaption( i18n("Sorry, no valid port.Syncing cancelled.") ); 826 mParent->topLevelWidget()->setCaption( i18n("Sorry, no valid port.Syncing cancelled.") );
796 return; 827 return;
797 } 828 }
798 KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, port, mActiveSyncIP, this ); 829 KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, port, mActiveSyncIP, this );
799 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int )), this, SLOT(deleteCommandSocket(KCommandSocket*, int)) ); 830 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int )), this, SLOT(deleteCommandSocket(KCommandSocket*, int)) );
800 mParent->topLevelWidget()->setCaption( i18n("Sending request for remote file ...") ); 831 mParent->topLevelWidget()->setCaption( i18n("Sending request for remote file ...") );
801 commandSocket->readFile( syncFileName() ); 832 commandSocket->readFile( syncFileName() );
802} 833}
803 834
804void KSyncManager::deleteCommandSocket(KCommandSocket*s, int state) 835void KSyncManager::deleteCommandSocket(KCommandSocket*s, int state)
805{ 836{
806 qDebug("MainWindow::deleteCommandSocket %d", state); 837 qDebug("MainWindow::deleteCommandSocket %d", state);
807 838
808 //enum { success, errorW, errorR, quiet }; 839 //enum { success, errorW, errorR, quiet };
809 if ( state == KCommandSocket::errorR ||state == KCommandSocket::errorTO ) { 840 if ( state == KCommandSocket::errorR ||state == KCommandSocket::errorTO ) {
810 mParent->topLevelWidget()->setCaption( i18n("ERROR: Receiving remote file failed.") ); 841 mParent->topLevelWidget()->setCaption( i18n("ERROR: Receiving remote file failed.") );
811 delete s; 842 delete s;
812 if ( state == KCommandSocket::errorR ) { 843 if ( state == KCommandSocket::errorR ) {
813 KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, mActiveSyncPort.toUInt(), mActiveSyncIP, this ); 844 KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, mActiveSyncPort.toUInt(), mActiveSyncIP, this );
814 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int)), this, SLOT(deleteCommandSocket(KCommandSocket*, int )) ); 845 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int)), this, SLOT(deleteCommandSocket(KCommandSocket*, int )) );
815 commandSocket->sendStop(); 846 commandSocket->sendStop();
@@ -876,60 +907,60 @@ void KServerSocket::discardClient()
876 if ( mSocket ) { 907 if ( mSocket ) {
877 delete mSocket; 908 delete mSocket;
878 mSocket = 0; 909 mSocket = 0;
879 } 910 }
880 //emit endConnect(); 911 //emit endConnect();
881} 912}
882void KServerSocket::readClient() 913void KServerSocket::readClient()
883{ 914{
884 if ( blockRC ) 915 if ( blockRC )
885 return; 916 return;
886 if ( mSocket == 0 ) { 917 if ( mSocket == 0 ) {
887 qDebug("ERROR::KServerSocket::readClient(): mSocket == 0 "); 918 qDebug("ERROR::KServerSocket::readClient(): mSocket == 0 ");
888 return; 919 return;
889 } 920 }
890 qDebug("KServerSocket readClient()"); 921 qDebug("KServerSocket readClient()");
891 if ( mSocket->canReadLine() ) { 922 if ( mSocket->canReadLine() ) {
892 QString line = mSocket->readLine(); 923 QString line = mSocket->readLine();
893 qDebug("KServerSocket readline: %s ", line.latin1()); 924 qDebug("KServerSocket readline: %s ", line.latin1());
894 QStringList tokens = QStringList::split( QRegExp("[ \r\n][ \r\n]*"), line ); 925 QStringList tokens = QStringList::split( QRegExp("[ \r\n][ \r\n]*"), line );
895 if ( tokens[0] == "GET" ) { 926 if ( tokens[0] == "GET" ) {
896 if ( tokens[1] == mPassWord ) 927 if ( tokens[1] == mPassWord )
897 //emit sendFile( mSocket ); 928 //emit sendFile( mSocket );
898 send_file(); 929 send_file();
899 else { 930 else {
900 KMessageBox::information( 0, i18n("ERROR:\nGot send file request\nwith invalid password")); 931 KMessageBox::error( 0, i18n("Got send file request\nwith invalid password"));
901 qDebug("password %s, invalid password %s ",mPassWord.latin1(), tokens[1].latin1() ); 932 qDebug("password %s, invalid password %s ",mPassWord.latin1(), tokens[1].latin1() );
902 } 933 }
903 } 934 }
904 if ( tokens[0] == "PUT" ) { 935 if ( tokens[0] == "PUT" ) {
905 if ( tokens[1] == mPassWord ) { 936 if ( tokens[1] == mPassWord ) {
906 //emit getFile( mSocket ); 937 //emit getFile( mSocket );
907 blockRC = true; 938 blockRC = true;
908 get_file(); 939 get_file();
909 } 940 }
910 else { 941 else {
911 KMessageBox::information( 0, i18n("ERROR:\nGot receive file request\nwith invalid password")); 942 KMessageBox::error( 0, i18n("Got receive file request\nwith invalid password"));
912 qDebug("password %s, invalid password %s ",mPassWord.latin1(), tokens[1].latin1() ); 943 qDebug("password %s, invalid password %s ",mPassWord.latin1(), tokens[1].latin1() );
913 } 944 }
914 } 945 }
915 if ( tokens[0] == "STOP" ) { 946 if ( tokens[0] == "STOP" ) {
916 //emit endConnect(); 947 //emit endConnect();
917 end_connect(); 948 end_connect();
918 } 949 }
919 } 950 }
920} 951}
921void KServerSocket::end_connect() 952void KServerSocket::end_connect()
922{ 953{
923 delete mSyncActionDialog; 954 delete mSyncActionDialog;
924 mSyncActionDialog = 0; 955 mSyncActionDialog = 0;
925} 956}
926void KServerSocket::send_file() 957void KServerSocket::send_file()
927{ 958{
928 //qDebug("MainWindow::sendFile(QSocket* s) "); 959 //qDebug("MainWindow::sendFile(QSocket* s) ");
929 if ( mSyncActionDialog ) 960 if ( mSyncActionDialog )
930 delete mSyncActionDialog; 961 delete mSyncActionDialog;
931 mSyncActionDialog = new QDialog ( 0, "input-dialog", true ); 962 mSyncActionDialog = new QDialog ( 0, "input-dialog", true );
932 mSyncActionDialog->setCaption(i18n("Received sync request")); 963 mSyncActionDialog->setCaption(i18n("Received sync request"));
933 QLabel* label = new QLabel( i18n("Synchronizing from remote ...\n\nDo not use this application!\n\nIf syncing fails\nyou can close this dialog."), mSyncActionDialog ); 964 QLabel* label = new QLabel( i18n("Synchronizing from remote ...\n\nDo not use this application!\n\nIf syncing fails\nyou can close this dialog."), mSyncActionDialog );
934 QVBoxLayout* lay = new QVBoxLayout( mSyncActionDialog ); 965 QVBoxLayout* lay = new QVBoxLayout( mSyncActionDialog );
935 lay->addWidget( label); 966 lay->addWidget( label);
@@ -1134,43 +1165,46 @@ void KCommandSocket::readFileFromSocket()
1134 if (!file.open( IO_WriteOnly ) ) { 1165 if (!file.open( IO_WriteOnly ) ) {
1135 mFileString = ""; 1166 mFileString = "";
1136 mRetVal = errorR; 1167 mRetVal = errorR;
1137 qDebug("Error open temp calender file for writing: %s",fileName.latin1() ); 1168 qDebug("Error open temp calender file for writing: %s",fileName.latin1() );
1138 deleteSocket(); 1169 deleteSocket();
1139 return ; 1170 return ;
1140 1171
1141 } 1172 }
1142 // mView->setLoadedFileVersion(QDateTime::currentDateTime().addSecs( -1)); 1173 // mView->setLoadedFileVersion(QDateTime::currentDateTime().addSecs( -1));
1143 QTextStream ts ( &file ); 1174 QTextStream ts ( &file );
1144 ts.setEncoding( QTextStream::Latin1 ); 1175 ts.setEncoding( QTextStream::Latin1 );
1145 ts << mFileString; 1176 ts << mFileString;
1146 file.close(); 1177 file.close();
1147 mFileString = ""; 1178 mFileString = "";
1148 mRetVal = successR; 1179 mRetVal = successR;
1149 mSocket->close(); 1180 mSocket->close();
1150 // if state is not idle, deleteSocket(); is called via 1181 // if state is not idle, deleteSocket(); is called via
1151 // connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) ); 1182 // connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) );
1152 if ( mSocket->state() == QSocket::Idle ) 1183 if ( mSocket->state() == QSocket::Idle )
1153 deleteSocket(); 1184 deleteSocket();
1154} 1185}
1155 1186
1156void KCommandSocket::deleteSocket() 1187void KCommandSocket::deleteSocket()
1157{ 1188{
1189 //qDebug("KCommandSocket::deleteSocket() ");
1158 if ( mTimerSocket->isActive () ) { 1190 if ( mTimerSocket->isActive () ) {
1159 mTimerSocket->stop(); 1191 mTimerSocket->stop();
1160 mRetVal = errorTO; 1192 mRetVal = errorTO;
1193 qDebug("Connection to remote host timed out");
1161 if ( mSocket ) { 1194 if ( mSocket ) {
1162 mSocket->close(); 1195 mSocket->close();
1163 if ( mSocket->state() == QSocket::Idle ) 1196 //if ( mSocket->state() == QSocket::Idle )
1164 deleteSocket(); 1197 // deleteSocket();
1165 return; 1198 delete mSocket;
1199 mSocket = 0;
1166 } 1200 }
1201 KMessageBox::error( 0, i18n("Connection to remote\nhost timed out!\nDid you forgot to enable\nsyncing on remote host? "));
1202 emit commandFinished( this, mRetVal );
1203 return;
1167 } 1204 }
1168 //qDebug("KCommandSocket::deleteSocket() %d", mRetVal ); 1205 //qDebug("KCommandSocket::deleteSocket() %d", mRetVal );
1169 if ( mSocket) 1206 if ( mSocket)
1170 delete mSocket; 1207 delete mSocket;
1171 mSocket = 0; 1208 mSocket = 0;
1172 if ( mRetVal == errorTO)
1173 KMessageBox::information( 0, i18n("ERROR:\nConnection to remote\nhost timed out!\nDid you forgot to enable\nsyncing on remote host? "));
1174
1175 emit commandFinished( this, mRetVal ); 1209 emit commandFinished( this, mRetVal );
1176} 1210}
diff --git a/libkdepim/ksyncmanager.h b/libkdepim/ksyncmanager.h
index 1f7c7e7..5b05383 100644
--- a/libkdepim/ksyncmanager.h
+++ b/libkdepim/ksyncmanager.h
@@ -152,48 +152,49 @@ class KSyncManager : public QObject
152 152
153 public slots: 153 public slots:
154 void slotSyncMenu( int ); 154 void slotSyncMenu( int );
155 void deleteCommandSocket(KCommandSocket*s, int state); 155 void deleteCommandSocket(KCommandSocket*s, int state);
156 void readFileFromSocket(); 156 void readFileFromSocket();
157 void fillSyncMenu(); 157 void fillSyncMenu();
158 158
159 private: 159 private:
160 void syncPi(); 160 void syncPi();
161 KServerSocket * mServerSocket; 161 KServerSocket * mServerSocket;
162 void enableQuick(); 162 void enableQuick();
163 KPimPrefs* mPrefs; 163 KPimPrefs* mPrefs;
164 QString mDefFileName; 164 QString mDefFileName;
165 QString mCurrentSyncDevice; 165 QString mCurrentSyncDevice;
166 QString mCurrentSyncName; 166 QString mCurrentSyncName;
167 void quickSyncLocalFile(); 167 void quickSyncLocalFile();
168 bool syncWithFile( QString fn , bool quick ); 168 bool syncWithFile( QString fn , bool quick );
169 void syncLocalFile(); 169 void syncLocalFile();
170 void syncPhone(); 170 void syncPhone();
171 void syncSharp(); 171 void syncSharp();
172 bool syncExternalApplication(QString); 172 bool syncExternalApplication(QString);
173 int mCurrentSyncProfile ; 173 int mCurrentSyncProfile ;
174 void syncRemote( KSyncProfile* prof, bool ask = true); 174 void syncRemote( KSyncProfile* prof, bool ask = true);
175 void edit_sync_options(); 175 void edit_sync_options();
176 void edit_pisync_options();
176 int ringSync(); 177 int ringSync();
177 QString getPassword( ); 178 QString getPassword( );
178 179
179 private slots: 180 private slots:
180 void confSync(); 181 void confSync();
181 private: 182 private:
182 bool mBlockSaveFlag; 183 bool mBlockSaveFlag;
183 QWidget* mParent; 184 QWidget* mParent;
184 KSyncInterface* mImplementation; 185 KSyncInterface* mImplementation;
185 TargetApp mTargetApp; 186 TargetApp mTargetApp;
186 QPopupMenu* mSyncMenu; 187 QPopupMenu* mSyncMenu;
187 QProgressBar* bar; 188 QProgressBar* bar;
188 189
189}; 190};
190 191
191 192
192class KSyncInterface 193class KSyncInterface
193{ 194{
194 public : 195 public :
195 virtual bool sync(KSyncManager* manager, QString filename, int mode) = 0; 196 virtual bool sync(KSyncManager* manager, QString filename, int mode) = 0;
196 virtual bool syncExternal(KSyncManager* manager, QString resource) 197 virtual bool syncExternal(KSyncManager* manager, QString resource)
197 { 198 {
198 // empty implementation, because some syncable applications do not 199 // empty implementation, because some syncable applications do not
199 // have an external(sharpdtm) syncmode, like pwmanager. 200 // have an external(sharpdtm) syncmode, like pwmanager.