summaryrefslogtreecommitdiffabout
path: root/libkdepim/ksyncmanager.cpp
Unidiff
Diffstat (limited to 'libkdepim/ksyncmanager.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--libkdepim/ksyncmanager.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/libkdepim/ksyncmanager.cpp b/libkdepim/ksyncmanager.cpp
index 554c6e5..4390a06 100644
--- a/libkdepim/ksyncmanager.cpp
+++ b/libkdepim/ksyncmanager.cpp
@@ -1,1356 +1,1358 @@
1/* 1/*
2 This file is part of KDE-Pim/Pi. 2 This file is part of KDE-Pim/Pi.
3 Copyright (c) 2004 Ulf Schenk 3 Copyright (c) 2004 Ulf Schenk
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21// $Id$ 21// $Id$
22 22
23#include "ksyncmanager.h" 23#include "ksyncmanager.h"
24 24
25#include <stdlib.h> 25#include <stdlib.h>
26 26
27#ifndef _WIN32_ 27#ifndef _WIN32_
28#include <unistd.h> 28#include <unistd.h>
29#endif 29#endif
30 30
31 31
32#include "ksyncprofile.h" 32#include "ksyncprofile.h"
33#include "ksyncprefsdialog.h" 33#include "ksyncprefsdialog.h"
34#include "kpimprefs.h" 34#include "kpimprefs.h"
35#include <kmessagebox.h> 35#include <kmessagebox.h>
36 36
37#include <qdir.h> 37#include <qdir.h>
38#include <qprogressbar.h> 38#include <qprogressbar.h>
39#include <qpopupmenu.h> 39#include <qpopupmenu.h>
40#include <qpushbutton.h> 40#include <qpushbutton.h>
41#include <qradiobutton.h> 41#include <qradiobutton.h>
42#include <qbuttongroup.h> 42#include <qbuttongroup.h>
43#include <qtimer.h> 43#include <qtimer.h>
44#include <qmessagebox.h> 44#include <qmessagebox.h>
45#include <qapplication.h> 45#include <qapplication.h>
46#include <qlineedit.h> 46#include <qlineedit.h>
47#include <qdialog.h> 47#include <qdialog.h>
48#include <qlayout.h> 48#include <qlayout.h>
49#include <qtextcodec.h> 49#include <qtextcodec.h>
50#include <qlabel.h> 50#include <qlabel.h>
51#include <qcheckbox.h> 51#include <qcheckbox.h>
52 52
53#include <klocale.h> 53#include <klocale.h>
54#include <kglobal.h> 54#include <kglobal.h>
55#include <kconfig.h> 55#include <kconfig.h>
56#include <kfiledialog.h> 56#include <kfiledialog.h>
57 57
58KSyncManager::KSyncManager(QWidget* parent, KSyncInterface* implementation, TargetApp ta, KPimPrefs* prefs, QPopupMenu* syncmenu) 58KSyncManager::KSyncManager(QWidget* parent, KSyncInterface* implementation, TargetApp ta, KPimPrefs* prefs, QPopupMenu* syncmenu)
59 : QObject(), mParent(parent), mImplementation(implementation), mTargetApp(ta), mPrefs(prefs ),mSyncMenu(syncmenu) 59 : QObject(), mParent(parent), mImplementation(implementation), mTargetApp(ta), mPrefs(prefs ),mSyncMenu(syncmenu)
60{ 60{
61 mServerSocket = 0; 61 mServerSocket = 0;
62 bar = new QProgressBar ( 1, 0 ); 62 bar = new QProgressBar ( 1, 0 );
63 bar->setCaption (""); 63 bar->setCaption ("");
64 64
65 int w = 300; 65 int w = 300;
66 if ( QApplication::desktop()->width() < 320 ) 66 if ( QApplication::desktop()->width() < 320 )
67 w = 220; 67 w = 220;
68 int h = bar->sizeHint().height() ; 68 int h = bar->sizeHint().height() ;
69 int dw = QApplication::desktop()->width(); 69 int dw = QApplication::desktop()->width();
70 int dh = QApplication::desktop()->height(); 70 int dh = QApplication::desktop()->height();
71 bar->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 71 bar->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
72 if ( mPrefs->mPassiveSyncAutoStart ) 72 if ( mPrefs->mPassiveSyncAutoStart )
73 enableQuick( false ); 73 enableQuick( false );
74 74
75} 75}
76 76
77KSyncManager::~KSyncManager() 77KSyncManager::~KSyncManager()
78{ 78{
79 delete bar; 79 delete bar;
80} 80}
81 81
82 82
83void KSyncManager::fillSyncMenu() 83void KSyncManager::fillSyncMenu()
84{ 84{
85 if ( mSyncMenu->count() ) 85 if ( mSyncMenu->count() )
86 mSyncMenu->clear(); 86 mSyncMenu->clear();
87 87
88 mSyncMenu->insertItem( i18n("Configure..."), 0 ); 88 mSyncMenu->insertItem( i18n("Configure..."), 0 );
89 mSyncMenu->insertSeparator(); 89 mSyncMenu->insertSeparator();
90 if ( mServerSocket == 0 ) { 90 if ( mServerSocket == 0 ) {
91 mSyncMenu->insertItem( i18n("Enable Pi-Sync"), 2 ); 91 mSyncMenu->insertItem( i18n("Enable Pi-Sync"), 2 );
92 } else { 92 } else {
93 mSyncMenu->insertItem( i18n("Disable Pi-Sync"), 3 ); 93 mSyncMenu->insertItem( i18n("Disable Pi-Sync"), 3 );
94 } 94 }
95 mSyncMenu->insertSeparator(); 95 mSyncMenu->insertSeparator();
96 mSyncMenu->insertItem( i18n("Multiple sync"), 1 ); 96 mSyncMenu->insertItem( i18n("Multiple sync"), 1 );
97 mSyncMenu->insertSeparator(); 97 mSyncMenu->insertSeparator();
98 98
99 KConfig config ( locateLocal( "config","ksyncprofilesrc" ) ); 99 KConfig config ( locateLocal( "config","ksyncprofilesrc" ) );
100 config.setGroup("General"); 100 config.setGroup("General");
101 QStringList prof = config.readListEntry("SyncProfileNames"); 101 QStringList prof = config.readListEntry("SyncProfileNames");
102 mLocalMachineName = config.readEntry("LocalMachineName","undefined"); 102 mLocalMachineName = config.readEntry("LocalMachineName","undefined");
103 if ( prof.count() < 2 ) { 103 if ( prof.count() < 2 ) {
104 prof.clear(); 104 prof.clear();
105 QString externalName;
105#ifdef DESKTOP_VERSION 106#ifdef DESKTOP_VERSION
106#ifdef _WIN32_ 107#ifdef _WIN32_
107 prof << i18n("OutLook(not_implemented)"); 108 externalName = "OutLook(not_implemented)";
108#else 109#else
109 prof << i18n("KDE_Desktop"); 110 externalName = "KDE_Desktop";
110#endif 111#endif
111#else 112#else
112 prof << i18n("Sharp_DTM"); 113 externalName = "Sharp_DTM";
113#endif 114#endif
115 prof << externalName;
114 prof << i18n("Local_file"); 116 prof << i18n("Local_file");
115 prof << i18n("Last_file"); 117 prof << i18n("Last_file");
116 KSyncProfile* temp = new KSyncProfile (); 118 KSyncProfile* temp = new KSyncProfile ();
117 temp->setName( prof[0] ); 119 temp->setName( prof[0] );
118 temp->writeConfig(&config); 120 temp->writeConfig(&config);
119 temp->setName( prof[1] ); 121 temp->setName( prof[1] );
120 temp->writeConfig(&config); 122 temp->writeConfig(&config);
121 temp->setName( prof[2] ); 123 temp->setName( prof[2] );
122 temp->writeConfig(&config); 124 temp->writeConfig(&config);
123 config.setGroup("General"); 125 config.setGroup("General");
124 config.writeEntry("SyncProfileNames",prof); 126 config.writeEntry("SyncProfileNames",prof);
125 config.writeEntry("ExternSyncProfiles","Sharp_DTM"); 127 config.writeEntry("ExternSyncProfiles",externalName);
126 config.sync(); 128 config.sync();
127 delete temp; 129 delete temp;
128 } 130 }
129 mExternSyncProfiles = config.readListEntry("ExternSyncProfiles"); 131 mExternSyncProfiles = config.readListEntry("ExternSyncProfiles");
130 mSyncProfileNames = prof; 132 mSyncProfileNames = prof;
131 unsigned int i; 133 unsigned int i;
132 for ( i = 0; i < prof.count(); ++i ) { 134 for ( i = 0; i < prof.count(); ++i ) {
133 mSyncMenu->insertItem( prof[i], 1000+i ); 135 mSyncMenu->insertItem( prof[i], 1000+i );
134 if ( i == 2 ) 136 if ( i == 2 )
135 mSyncMenu->insertSeparator(); 137 mSyncMenu->insertSeparator();
136 } 138 }
137 QDir app_dir; 139 QDir app_dir;
138 //US do not display SharpDTM if app is pwmpi, or no sharpfiles available 140 //US do not display SharpDTM if app is pwmpi, or no sharpfiles available
139 if ( mTargetApp == PWMPI) { 141 if ( mTargetApp == PWMPI) {
140 mSyncMenu->removeItem( 1000 ); 142 mSyncMenu->removeItem( 1000 );
141 } 143 }
142#ifndef DESKTOP_VERSION 144#ifndef DESKTOP_VERSION
143 else if (!app_dir.exists(QDir::homeDirPath()+"/Applications/dtm" ) ) { 145 else if (!app_dir.exists(QDir::homeDirPath()+"/Applications/dtm" ) ) {
144 mSyncMenu->removeItem( 1000 ); 146 mSyncMenu->removeItem( 1000 );
145 } 147 }
146#endif 148#endif
147 mSyncMenu->removeItem( 1002 ); 149 mSyncMenu->removeItem( 1002 );
148} 150}
149 151
150void KSyncManager::slotSyncMenu( int action ) 152void KSyncManager::slotSyncMenu( int action )
151{ 153{
152 qDebug("syncaction %d ", action); 154 qDebug("syncaction %d ", action);
153 if ( action == 0 ) { 155 if ( action == 0 ) {
154 156
155 // seems to be a Qt2 event handling bug 157 // seems to be a Qt2 event handling bug
156 // syncmenu.clear causes a segfault at first time 158 // syncmenu.clear causes a segfault at first time
157 // when we call it after the main event loop, it is ok 159 // when we call it after the main event loop, it is ok
158 // same behaviour when calling OM/Pi via QCOP for the first time 160 // same behaviour when calling OM/Pi via QCOP for the first time
159 QTimer::singleShot ( 1, this, SLOT ( confSync() ) ); 161 QTimer::singleShot ( 1, this, SLOT ( confSync() ) );
160 //confSync(); 162 //confSync();
161 163
162 return; 164 return;
163 } 165 }
164 if ( action == 1 ) { 166 if ( action == 1 ) {
165 multiSync( true ); 167 multiSync( true );
166 return; 168 return;
167 } 169 }
168 if ( action == 2 ) { 170 if ( action == 2 ) {
169 enableQuick(); 171 enableQuick();
170 QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) ); 172 QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) );
171 return; 173 return;
172 } 174 }
173 if ( action == 3 ) { 175 if ( action == 3 ) {
174 delete mServerSocket; 176 delete mServerSocket;
175 mServerSocket = 0; 177 mServerSocket = 0;
176 QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) ); 178 QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) );
177 return; 179 return;
178 } 180 }
179 181
180 if (blockSave()) 182 if (blockSave())
181 return; 183 return;
182 184
183 setBlockSave(true); 185 setBlockSave(true);
184 bool silent = false; 186 bool silent = false;
185 if ( action == 999 ) { 187 if ( action == 999 ) {
186 //special mode for silent syncing 188 //special mode for silent syncing
187 action = 1000; 189 action = 1000;
188 silent = true; 190 silent = true;
189 } 191 }
190 192
191 mCurrentSyncProfile = action - 1000 ; 193 mCurrentSyncProfile = action - 1000 ;
192 mCurrentSyncDevice = mSyncProfileNames[mCurrentSyncProfile] ; 194 mCurrentSyncDevice = mSyncProfileNames[mCurrentSyncProfile] ;
193 mCurrentSyncName = mLocalMachineName ; 195 mCurrentSyncName = mLocalMachineName ;
194 KConfig config ( locateLocal( "config","ksyncprofilesrc" ) ); 196 KConfig config ( locateLocal( "config","ksyncprofilesrc" ) );
195 KSyncProfile* temp = new KSyncProfile (); 197 KSyncProfile* temp = new KSyncProfile ();
196 temp->setName(mSyncProfileNames[mCurrentSyncProfile]); 198 temp->setName(mSyncProfileNames[mCurrentSyncProfile]);
197 temp->readConfig(&config); 199 temp->readConfig(&config);
198 if (silent) { 200 if (silent) {
199 mAskForPreferences = false; 201 mAskForPreferences = false;
200 mShowSyncSummary = false; 202 mShowSyncSummary = false;
201 mWriteBackFile = true; 203 mWriteBackFile = true;
202 mSyncAlgoPrefs = 2;// take newest 204 mSyncAlgoPrefs = 2;// take newest
203 } 205 }
204 else { 206 else {
205 mAskForPreferences = temp->getAskForPreferences(); 207 mAskForPreferences = temp->getAskForPreferences();
206 mShowSyncSummary = temp->getShowSummaryAfterSync(); 208 mShowSyncSummary = temp->getShowSummaryAfterSync();
207 mWriteBackFile = temp->getWriteBackFile(); 209 mWriteBackFile = temp->getWriteBackFile();
208 mSyncAlgoPrefs = temp->getSyncPrefs(); 210 mSyncAlgoPrefs = temp->getSyncPrefs();
209 } 211 }
210 mWriteBackExistingOnly = temp->getWriteBackExisting(); 212 mWriteBackExistingOnly = temp->getWriteBackExisting();
211 mIsKapiFile = temp->getIsKapiFile(); 213 mIsKapiFile = temp->getIsKapiFile();
212 mWriteBackInFuture = 0; 214 mWriteBackInFuture = 0;
213 if ( temp->getWriteBackFuture() ) 215 if ( temp->getWriteBackFuture() )
214 mWriteBackInFuture = temp->getWriteBackFutureWeeks( ); 216 mWriteBackInFuture = temp->getWriteBackFutureWeeks( );
215 217
216 if ( action == 1000 ) { 218 if ( action == 1000 ) {
217#ifdef DESKTOP_VERSION 219#ifdef DESKTOP_VERSION
218 syncKDE(); 220 syncKDE();
219#else 221#else
220 syncSharp(); 222 syncSharp();
221#endif 223#endif
222 224
223 } else if ( action == 1001 ) { 225 } else if ( action == 1001 ) {
224 syncLocalFile(); 226 syncLocalFile();
225 227
226 } else if ( action == 1002 ) { 228 } else if ( action == 1002 ) {
227 mWriteBackFile = false; 229 mWriteBackFile = false;
228 mAskForPreferences = false; 230 mAskForPreferences = false;
229 mShowSyncSummary = false; 231 mShowSyncSummary = false;
230 mSyncAlgoPrefs = 3; 232 mSyncAlgoPrefs = 3;
231 quickSyncLocalFile(); 233 quickSyncLocalFile();
232 234
233 } else if ( action >= 1003 ) { 235 } else if ( action >= 1003 ) {
234 if ( temp->getIsLocalFileSync() ) { 236 if ( temp->getIsLocalFileSync() ) {
235 switch(mTargetApp) 237 switch(mTargetApp)
236 { 238 {
237 case (KAPI): 239 case (KAPI):
238 if ( syncWithFile( temp->getRemoteFileNameAB( ), false ) ) 240 if ( syncWithFile( temp->getRemoteFileNameAB( ), false ) )
239 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileNameAB(); 241 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileNameAB();
240 break; 242 break;
241 case (KOPI): 243 case (KOPI):
242 if ( syncWithFile( temp->getRemoteFileName( ), false ) ) 244 if ( syncWithFile( temp->getRemoteFileName( ), false ) )
243 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileName(); 245 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileName();
244 break; 246 break;
245 case (PWMPI): 247 case (PWMPI):
246 if ( syncWithFile( temp->getRemoteFileNamePWM( ), false ) ) 248 if ( syncWithFile( temp->getRemoteFileNamePWM( ), false ) )
247 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileNamePWM(); 249 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileNamePWM();
248 break; 250 break;
249 default: 251 default:
250 qDebug("KSyncManager::slotSyncMenu: invalid apptype selected"); 252 qDebug("KSyncManager::slotSyncMenu: invalid apptype selected");
251 break; 253 break;
252 254
253 } 255 }
254 } else { 256 } else {
255 if ( temp->getIsPhoneSync() ) { 257 if ( temp->getIsPhoneSync() ) {
256 mPhoneDevice = temp->getPhoneDevice( ) ; 258 mPhoneDevice = temp->getPhoneDevice( ) ;
257 mPhoneConnection = temp->getPhoneConnection( ); 259 mPhoneConnection = temp->getPhoneConnection( );
258 mPhoneModel = temp->getPhoneModel( ); 260 mPhoneModel = temp->getPhoneModel( );
259 syncPhone(); 261 syncPhone();
260 } else if ( temp->getIsPiSync() ) { 262 } else if ( temp->getIsPiSync() ) {
261 if ( mTargetApp == KAPI ) { 263 if ( mTargetApp == KAPI ) {
262 mPassWordPiSync = temp->getRemotePwAB(); 264 mPassWordPiSync = temp->getRemotePwAB();
263 mActiveSyncPort = temp->getRemotePortAB(); 265 mActiveSyncPort = temp->getRemotePortAB();
264 mActiveSyncIP = temp->getRemoteIPAB(); 266 mActiveSyncIP = temp->getRemoteIPAB();
265 } else if ( mTargetApp == KOPI ) { 267 } else if ( mTargetApp == KOPI ) {
266 mPassWordPiSync = temp->getRemotePw(); 268 mPassWordPiSync = temp->getRemotePw();
267 mActiveSyncPort = temp->getRemotePort(); 269 mActiveSyncPort = temp->getRemotePort();
268 mActiveSyncIP = temp->getRemoteIP(); 270 mActiveSyncIP = temp->getRemoteIP();
269 } else { 271 } else {
270 mPassWordPiSync = temp->getRemotePwPWM(); 272 mPassWordPiSync = temp->getRemotePwPWM();
271 mActiveSyncPort = temp->getRemotePortPWM(); 273 mActiveSyncPort = temp->getRemotePortPWM();
272 mActiveSyncIP = temp->getRemoteIPPWM(); 274 mActiveSyncIP = temp->getRemoteIPPWM();
273 } 275 }
274 syncPi(); 276 syncPi();
275 while ( !mPisyncFinished ) { 277 while ( !mPisyncFinished ) {
276 //qDebug("waiting "); 278 //qDebug("waiting ");
277 qApp->processEvents(); 279 qApp->processEvents();
278 } 280 }
279 } else 281 } else
280 syncRemote( temp ); 282 syncRemote( temp );
281 283
282 } 284 }
283 } 285 }
284 delete temp; 286 delete temp;
285 setBlockSave(false); 287 setBlockSave(false);
286} 288}
287 289
288void KSyncManager::enableQuick( bool ask ) 290void KSyncManager::enableQuick( bool ask )
289{ 291{
290 bool autoStart; 292 bool autoStart;
291 bool changed = false; 293 bool changed = false;
292 if ( ask ) { 294 if ( ask ) {
293 QDialog dia ( 0, "input-dialog", true ); 295 QDialog dia ( 0, "input-dialog", true );
294 QLineEdit lab ( &dia ); 296 QLineEdit lab ( &dia );
295 QVBoxLayout lay( &dia ); 297 QVBoxLayout lay( &dia );
296 lab.setText( mPrefs->mPassiveSyncPort ); 298 lab.setText( mPrefs->mPassiveSyncPort );
297 lay.setMargin(7); 299 lay.setMargin(7);
298 lay.setSpacing(7); 300 lay.setSpacing(7);
299 int po = 9197+mTargetApp; 301 int po = 9197+mTargetApp;
300 QLabel label ( i18n("Port number (Default: %1)").arg(po), &dia ); 302 QLabel label ( i18n("Port number (Default: %1)").arg(po), &dia );
301 lay.addWidget( &label); 303 lay.addWidget( &label);
302 lay.addWidget( &lab); 304 lay.addWidget( &lab);
303 305
304 QLineEdit lepw ( &dia ); 306 QLineEdit lepw ( &dia );
305 lepw.setText( mPrefs->mPassiveSyncPw ); 307 lepw.setText( mPrefs->mPassiveSyncPw );
306 QLabel label2 ( i18n("Password to enable\naccess from remote:"), &dia ); 308 QLabel label2 ( i18n("Password to enable\naccess from remote:"), &dia );
307 lay.addWidget( &label2); 309 lay.addWidget( &label2);
308 lay.addWidget( &lepw); 310 lay.addWidget( &lepw);
309 QCheckBox autostart(i18n("Automatically start\nat application startup"), &dia ); 311 QCheckBox autostart(i18n("Automatically start\nat application startup"), &dia );
310 lay.addWidget( &autostart); 312 lay.addWidget( &autostart);
311 autostart.setChecked( mPrefs->mPassiveSyncAutoStart ); 313 autostart.setChecked( mPrefs->mPassiveSyncAutoStart );
312#ifdef DESKTOP_VERSION 314#ifdef DESKTOP_VERSION
313#ifdef _WIN32_ 315#ifdef _WIN32_
314 QCheckBox syncdesktop( i18n("Automatically sync with Outlook\nwhen receiving sync request"),&dia ); 316 QCheckBox syncdesktop( i18n("Automatically sync with Outlook\nwhen receiving sync request"),&dia );
315#else 317#else
316 QCheckBox syncdesktop( i18n("Automatically sync with KDE-Desktop\nwhen receiving sync request"),&dia ); 318 QCheckBox syncdesktop( i18n("Automatically sync with KDE-Desktop\nwhen receiving sync request"),&dia );
317#endif 319#endif
318 lay.addWidget( &syncdesktop); 320 lay.addWidget( &syncdesktop);
319#else 321#else
320 mPrefs->mPassiveSyncWithDesktop = false; 322 mPrefs->mPassiveSyncWithDesktop = false;
321 QCheckBox syncdesktop( i18n("Automatically sync\nwith KDE-Desktop"),&dia ); 323 QCheckBox syncdesktop( i18n("Automatically sync\nwith KDE-Desktop"),&dia );
322 syncdesktop.hide(); 324 syncdesktop.hide();
323#endif 325#endif
324 syncdesktop.setChecked( mPrefs->mPassiveSyncWithDesktop ); 326 syncdesktop.setChecked( mPrefs->mPassiveSyncWithDesktop );
325 327
326 dia.setFixedSize( 230,120 ); 328 dia.setFixedSize( 230,120 );
327 dia.setCaption( i18n("Enter port for Pi-Sync") ); 329 dia.setCaption( i18n("Enter port for Pi-Sync") );
328 QPushButton pb ( "OK", &dia); 330 QPushButton pb ( "OK", &dia);
329 lay.addWidget( &pb ); 331 lay.addWidget( &pb );
330 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) ); 332 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) );
331 dia.show(); 333 dia.show();
332 if ( ! dia.exec() ) 334 if ( ! dia.exec() )
333 return; 335 return;
334 dia.hide(); 336 dia.hide();
335 qApp->processEvents(); 337 qApp->processEvents();
336 if ( mPrefs->mPassiveSyncPw != lepw.text() ) { 338 if ( mPrefs->mPassiveSyncPw != lepw.text() ) {
337 changed = true; 339 changed = true;
338 mPrefs->mPassiveSyncPw = lepw.text(); 340 mPrefs->mPassiveSyncPw = lepw.text();
339 } 341 }
340 if ( mPrefs->mPassiveSyncPort != lab.text() ) { 342 if ( mPrefs->mPassiveSyncPort != lab.text() ) {
341 mPrefs->mPassiveSyncPort = lab.text(); 343 mPrefs->mPassiveSyncPort = lab.text();
342 changed = true; 344 changed = true;
343 } 345 }
344 autoStart = autostart.isChecked(); 346 autoStart = autostart.isChecked();
345 if (mPrefs->mPassiveSyncWithDesktop != syncdesktop.isChecked() ) { 347 if (mPrefs->mPassiveSyncWithDesktop != syncdesktop.isChecked() ) {
346 changed = true; 348 changed = true;
347 mPrefs->mPassiveSyncWithDesktop = syncdesktop.isChecked(); 349 mPrefs->mPassiveSyncWithDesktop = syncdesktop.isChecked();
348 } 350 }
349 } 351 }
350 else 352 else
351 autoStart = mPrefs->mPassiveSyncAutoStart; 353 autoStart = mPrefs->mPassiveSyncAutoStart;
352 if ( autoStart != mPrefs->mPassiveSyncAutoStart ) 354 if ( autoStart != mPrefs->mPassiveSyncAutoStart )
353 changed = true; 355 changed = true;
354 bool ok; 356 bool ok;
355 mPrefs->mPassiveSyncAutoStart = false; 357 mPrefs->mPassiveSyncAutoStart = false;
356 Q_UINT16 port = mPrefs->mPassiveSyncPort.toUInt(&ok); 358 Q_UINT16 port = mPrefs->mPassiveSyncPort.toUInt(&ok);
357 if ( ! ok ) { 359 if ( ! ok ) {
358 KMessageBox::information( 0, i18n("No valid port")); 360 KMessageBox::information( 0, i18n("No valid port"));
359 return; 361 return;
360 } 362 }
361 //qDebug("port %d ", port); 363 //qDebug("port %d ", port);
362 mServerSocket = new KServerSocket ( mPrefs->mPassiveSyncPw, port ,1 ); 364 mServerSocket = new KServerSocket ( mPrefs->mPassiveSyncPw, port ,1 );
363 mServerSocket->setFileName( defaultFileName() ); 365 mServerSocket->setFileName( defaultFileName() );
364 //qDebug("connected "); 366 //qDebug("connected ");
365 if ( !mServerSocket->ok() ) { 367 if ( !mServerSocket->ok() ) {
366 KMessageBox::information( 0, i18n("Failed to bind or\nlisten to the port!")); 368 KMessageBox::information( 0, i18n("Failed to bind or\nlisten to the port!"));
367 delete mServerSocket; 369 delete mServerSocket;
368 mServerSocket = 0; 370 mServerSocket = 0;
369 return; 371 return;
370 } 372 }
371 mPrefs->mPassiveSyncAutoStart = autoStart; 373 mPrefs->mPassiveSyncAutoStart = autoStart;
372 if ( changed ) { 374 if ( changed ) {
373 mPrefs->writeConfig(); 375 mPrefs->writeConfig();
374 } 376 }
375 connect( mServerSocket, SIGNAL ( request_file() ),this, SIGNAL ( request_file() ) ); 377 connect( mServerSocket, SIGNAL ( request_file() ),this, SIGNAL ( request_file() ) );
376 connect( mServerSocket, SIGNAL ( file_received( bool ) ), this, SIGNAL ( getFile( bool ) ) ); 378 connect( mServerSocket, SIGNAL ( file_received( bool ) ), this, SIGNAL ( getFile( bool ) ) );
377} 379}
378 380
379void KSyncManager::syncLocalFile() 381void KSyncManager::syncLocalFile()
380{ 382{
381 383
382 QString fn =mPrefs->mLastSyncedLocalFile; 384 QString fn =mPrefs->mLastSyncedLocalFile;
383 QString ext; 385 QString ext;
384 386
385 switch(mTargetApp) 387 switch(mTargetApp)
386 { 388 {
387 case (KAPI): 389 case (KAPI):
388 ext = "(*.vcf)"; 390 ext = "(*.vcf)";
389 break; 391 break;
390 case (KOPI): 392 case (KOPI):
391 ext = "(*.ics/*.vcs)"; 393 ext = "(*.ics/*.vcs)";
392 break; 394 break;
393 case (PWMPI): 395 case (PWMPI):
394 ext = "(*.pwm)"; 396 ext = "(*.pwm)";
395 break; 397 break;
396 default: 398 default:
397 qDebug("KSyncManager::syncLocalFile: invalid apptype selected"); 399 qDebug("KSyncManager::syncLocalFile: invalid apptype selected");
398 break; 400 break;
399 401
400 } 402 }
401 403
402 fn =KFileDialog:: getOpenFileName( fn, i18n("Sync filename"+ext), mParent ); 404 fn =KFileDialog:: getOpenFileName( fn, i18n("Sync filename"+ext), mParent );
403 if ( fn == "" ) 405 if ( fn == "" )
404 return; 406 return;
405 if ( syncWithFile( fn, false ) ) { 407 if ( syncWithFile( fn, false ) ) {
406 qDebug("syncLocalFile() successful "); 408 qDebug("syncLocalFile() successful ");
407 } 409 }
408 410
409} 411}
410 412
411bool KSyncManager::syncWithFile( QString fn , bool quick ) 413bool KSyncManager::syncWithFile( QString fn , bool quick )
412{ 414{
413 bool ret = false; 415 bool ret = false;
414 QFileInfo info; 416 QFileInfo info;
415 info.setFile( fn ); 417 info.setFile( fn );
416 QString mess; 418 QString mess;
417 bool loadbup = true; 419 bool loadbup = true;
418 if ( !info. exists() ) { 420 if ( !info. exists() ) {
419 mess = i18n( "Sync file \n...%1\ndoes not exist!\nNothing synced!\n").arg(fn.right( 30) ); 421 mess = i18n( "Sync file \n...%1\ndoes not exist!\nNothing synced!\n").arg(fn.right( 30) );
420 int result = QMessageBox::warning( mParent, i18n("Warning!"), 422 int result = QMessageBox::warning( mParent, i18n("Warning!"),
421 mess ); 423 mess );
422 return ret; 424 return ret;
423 } 425 }
424 int result = 0; 426 int result = 0;
425 if ( !quick ) { 427 if ( !quick ) {
426 mess = i18n("Sync with file \n...%1\nfrom:\n%2\n").arg(fn.right( 25)).arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false )); 428 mess = i18n("Sync with file \n...%1\nfrom:\n%2\n").arg(fn.right( 25)).arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false ));
427 result = QMessageBox::warning( mParent, i18n("Warning!"), 429 result = QMessageBox::warning( mParent, i18n("Warning!"),
428 mess, 430 mess,
429 i18n("Sync"), i18n("Cancel"), 0, 431 i18n("Sync"), i18n("Cancel"), 0,
430 0, 1 ); 432 0, 1 );
431 if ( result ) 433 if ( result )
432 return false; 434 return false;
433 } 435 }
434 if ( mAskForPreferences ) 436 if ( mAskForPreferences )
435 if ( !edit_sync_options()) { 437 if ( !edit_sync_options()) {
436 mParent->topLevelWidget()->setCaption( i18n("Syncing aborted. Nothing synced.") ); 438 mParent->topLevelWidget()->setCaption( i18n("Syncing aborted. Nothing synced.") );
437 return false; 439 return false;
438 } 440 }
439 if ( result == 0 ) { 441 if ( result == 0 ) {
440 //qDebug("Now sycing ... "); 442 //qDebug("Now sycing ... ");
441 if ( ret = mImplementation->sync( this, fn, mSyncAlgoPrefs ) ) 443 if ( ret = mImplementation->sync( this, fn, mSyncAlgoPrefs ) )
442 mParent->topLevelWidget()->setCaption( i18n("Synchronization successful") ); 444 mParent->topLevelWidget()->setCaption( i18n("Synchronization successful") );
443 else 445 else
444 mParent->topLevelWidget()->setCaption( i18n("Sync cancelled or failed. Nothing synced.") ); 446 mParent->topLevelWidget()->setCaption( i18n("Sync cancelled or failed. Nothing synced.") );
445 if ( ! quick ) 447 if ( ! quick )
446 mPrefs->mLastSyncedLocalFile = fn; 448 mPrefs->mLastSyncedLocalFile = fn;
447 } 449 }
448 return ret; 450 return ret;
449} 451}
450 452
451void KSyncManager::quickSyncLocalFile() 453void KSyncManager::quickSyncLocalFile()
452{ 454{
453 455
454 if ( syncWithFile( mPrefs->mLastSyncedLocalFile, true ) ) { 456 if ( syncWithFile( mPrefs->mLastSyncedLocalFile, true ) ) {
455 qDebug("quick syncLocalFile() successful "); 457 qDebug("quick syncLocalFile() successful ");
456 458
457 } 459 }
458} 460}
459 461
460void KSyncManager::multiSync( bool askforPrefs ) 462void KSyncManager::multiSync( bool askforPrefs )
461{ 463{
462 if (blockSave()) 464 if (blockSave())
463 return; 465 return;
464 setBlockSave(true); 466 setBlockSave(true);
465 QString question = i18n("Do you really want\nto multiple sync\nwith all checked profiles?\nSyncing takes some\ntime - all profiles\nare synced twice!"); 467 QString question = i18n("Do you really want\nto multiple sync\nwith all checked profiles?\nSyncing takes some\ntime - all profiles\nare synced twice!");
466 if ( QMessageBox::information( mParent, i18n("KDE-Pim Sync"), 468 if ( QMessageBox::information( mParent, i18n("KDE-Pim Sync"),
467 question, 469 question,
468 i18n("Yes"), i18n("No"), 470 i18n("Yes"), i18n("No"),
469 0, 0 ) != 0 ) { 471 0, 0 ) != 0 ) {
470 setBlockSave(false); 472 setBlockSave(false);
471 mParent->topLevelWidget()->setCaption(i18n("Aborted! Nothing synced!")); 473 mParent->topLevelWidget()->setCaption(i18n("Aborted! Nothing synced!"));
472 return; 474 return;
473 } 475 }
474 mCurrentSyncDevice = i18n("Multiple profiles") ; 476 mCurrentSyncDevice = i18n("Multiple profiles") ;
475 mSyncAlgoPrefs = mPrefs->mRingSyncAlgoPrefs; 477 mSyncAlgoPrefs = mPrefs->mRingSyncAlgoPrefs;
476 if ( askforPrefs ) { 478 if ( askforPrefs ) {
477 if ( !edit_sync_options()) { 479 if ( !edit_sync_options()) {
478 mParent->topLevelWidget()->setCaption( i18n("Syncing aborted. Nothing synced.") ); 480 mParent->topLevelWidget()->setCaption( i18n("Syncing aborted. Nothing synced.") );
479 return; 481 return;
480 } 482 }
481 mPrefs->mRingSyncAlgoPrefs = mSyncAlgoPrefs; 483 mPrefs->mRingSyncAlgoPrefs = mSyncAlgoPrefs;
482 } 484 }
483 mParent->topLevelWidget()->setCaption(i18n("Multiple sync started.") ); 485 mParent->topLevelWidget()->setCaption(i18n("Multiple sync started.") );
484 qApp->processEvents(); 486 qApp->processEvents();
485 int num = ringSync() ; 487 int num = ringSync() ;
486 if ( num > 1 ) 488 if ( num > 1 )
487 ringSync(); 489 ringSync();
488 setBlockSave(false); 490 setBlockSave(false);
489 if ( num ) 491 if ( num )
490 emit save(); 492 emit save();
491 if ( num ) 493 if ( num )
492 mParent->topLevelWidget()->setCaption(i18n("%1 profiles synced. Multiple sync complete!").arg(num) ); 494 mParent->topLevelWidget()->setCaption(i18n("%1 profiles synced. Multiple sync complete!").arg(num) );
493 else 495 else
494 mParent->topLevelWidget()->setCaption(i18n("Nothing synced! No profiles defined for multisync!")); 496 mParent->topLevelWidget()->setCaption(i18n("Nothing synced! No profiles defined for multisync!"));
495 return; 497 return;
496} 498}
497 499
498int KSyncManager::ringSync() 500int KSyncManager::ringSync()
499{ 501{
500 int syncedProfiles = 0; 502 int syncedProfiles = 0;
501 unsigned int i; 503 unsigned int i;
502 QTime timer; 504 QTime timer;
503 KConfig config ( locateLocal( "config","ksyncprofilesrc" ) ); 505 KConfig config ( locateLocal( "config","ksyncprofilesrc" ) );
504 QStringList syncProfileNames = mSyncProfileNames; 506 QStringList syncProfileNames = mSyncProfileNames;
505 KSyncProfile* temp = new KSyncProfile (); 507 KSyncProfile* temp = new KSyncProfile ();
506 mAskForPreferences = false; 508 mAskForPreferences = false;
507 for ( i = 0; i < syncProfileNames.count(); ++i ) { 509 for ( i = 0; i < syncProfileNames.count(); ++i ) {
508 mCurrentSyncProfile = i; 510 mCurrentSyncProfile = i;
509 temp->setName(syncProfileNames[mCurrentSyncProfile]); 511 temp->setName(syncProfileNames[mCurrentSyncProfile]);
510 temp->readConfig(&config); 512 temp->readConfig(&config);
511 513
512 bool includeInRingSync; 514 bool includeInRingSync;
513 switch(mTargetApp) 515 switch(mTargetApp)
514 { 516 {
515 case (KAPI): 517 case (KAPI):
516 includeInRingSync = temp->getIncludeInRingSyncAB(); 518 includeInRingSync = temp->getIncludeInRingSyncAB();
517 break; 519 break;
518 case (KOPI): 520 case (KOPI):
519 includeInRingSync = temp->getIncludeInRingSync(); 521 includeInRingSync = temp->getIncludeInRingSync();
520 break; 522 break;
521 case (PWMPI): 523 case (PWMPI):
522 includeInRingSync = temp->getIncludeInRingSyncPWM(); 524 includeInRingSync = temp->getIncludeInRingSyncPWM();
523 break; 525 break;
524 default: 526 default:
525 qDebug("KSyncManager::ringSync: invalid apptype selected"); 527 qDebug("KSyncManager::ringSync: invalid apptype selected");
526 break; 528 break;
527 529
528 } 530 }
529 531
530 532
531 if ( includeInRingSync && ( i < 1 || i > 2 )) { 533 if ( includeInRingSync && ( i < 1 || i > 2 )) {
532 mParent->topLevelWidget()->setCaption(i18n("Profile ")+syncProfileNames[mCurrentSyncProfile]+ i18n(" is synced ... ")); 534 mParent->topLevelWidget()->setCaption(i18n("Profile ")+syncProfileNames[mCurrentSyncProfile]+ i18n(" is synced ... "));
533 ++syncedProfiles; 535 ++syncedProfiles;
534 // mAskForPreferences = temp->getAskForPreferences(); 536 // mAskForPreferences = temp->getAskForPreferences();
535 mWriteBackFile = temp->getWriteBackFile(); 537 mWriteBackFile = temp->getWriteBackFile();
536 mWriteBackExistingOnly = temp->getWriteBackExisting(); 538 mWriteBackExistingOnly = temp->getWriteBackExisting();
537 mWriteBackInFuture = 0; 539 mWriteBackInFuture = 0;
538 if ( temp->getWriteBackFuture() ) 540 if ( temp->getWriteBackFuture() )
539 mWriteBackInFuture = temp->getWriteBackFutureWeeks( ); 541 mWriteBackInFuture = temp->getWriteBackFutureWeeks( );
540 mShowSyncSummary = false; 542 mShowSyncSummary = false;
541 mCurrentSyncDevice = syncProfileNames[i] ; 543 mCurrentSyncDevice = syncProfileNames[i] ;
542 mCurrentSyncName = mLocalMachineName; 544 mCurrentSyncName = mLocalMachineName;
543 if ( i == 0 ) { 545 if ( i == 0 ) {
544#ifdef DESKTOP_VERSION 546#ifdef DESKTOP_VERSION
545 syncKDE(); 547 syncKDE();
546#else 548#else
547 syncSharp(); 549 syncSharp();
548#endif 550#endif
549 } else { 551 } else {
550 if ( temp->getIsLocalFileSync() ) { 552 if ( temp->getIsLocalFileSync() ) {
551 switch(mTargetApp) 553 switch(mTargetApp)
552 { 554 {
553 case (KAPI): 555 case (KAPI):
554 if ( syncWithFile( temp->getRemoteFileNameAB( ), false ) ) 556 if ( syncWithFile( temp->getRemoteFileNameAB( ), false ) )
555 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileNameAB(); 557 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileNameAB();
556 break; 558 break;
557 case (KOPI): 559 case (KOPI):
558 if ( syncWithFile( temp->getRemoteFileName( ), false ) ) 560 if ( syncWithFile( temp->getRemoteFileName( ), false ) )
559 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileName(); 561 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileName();
560 break; 562 break;
561 case (PWMPI): 563 case (PWMPI):
562 if ( syncWithFile( temp->getRemoteFileNamePWM( ), false ) ) 564 if ( syncWithFile( temp->getRemoteFileNamePWM( ), false ) )
563 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileNamePWM(); 565 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileNamePWM();
564 break; 566 break;
565 default: 567 default:
566 qDebug("KSyncManager::slotSyncMenu: invalid apptype selected"); 568 qDebug("KSyncManager::slotSyncMenu: invalid apptype selected");
567 break; 569 break;
568 } 570 }
569 } else { 571 } else {
570 if ( temp->getIsPhoneSync() ) { 572 if ( temp->getIsPhoneSync() ) {
571 mPhoneDevice = temp->getPhoneDevice( ) ; 573 mPhoneDevice = temp->getPhoneDevice( ) ;
572 mPhoneConnection = temp->getPhoneConnection( ); 574 mPhoneConnection = temp->getPhoneConnection( );
573 mPhoneModel = temp->getPhoneModel( ); 575 mPhoneModel = temp->getPhoneModel( );
574 syncPhone(); 576 syncPhone();
575 } else if ( temp->getIsPiSync() ) { 577 } else if ( temp->getIsPiSync() ) {
576 if ( mTargetApp == KAPI ) { 578 if ( mTargetApp == KAPI ) {
577 mPassWordPiSync = temp->getRemotePwAB(); 579 mPassWordPiSync = temp->getRemotePwAB();
578 mActiveSyncPort = temp->getRemotePortAB(); 580 mActiveSyncPort = temp->getRemotePortAB();
579 mActiveSyncIP = temp->getRemoteIPAB(); 581 mActiveSyncIP = temp->getRemoteIPAB();
580 } else if ( mTargetApp == KOPI ) { 582 } else if ( mTargetApp == KOPI ) {
581 mPassWordPiSync = temp->getRemotePw(); 583 mPassWordPiSync = temp->getRemotePw();
582 mActiveSyncPort = temp->getRemotePort(); 584 mActiveSyncPort = temp->getRemotePort();
583 mActiveSyncIP = temp->getRemoteIP(); 585 mActiveSyncIP = temp->getRemoteIP();
584 } else { 586 } else {
585 mPassWordPiSync = temp->getRemotePwPWM(); 587 mPassWordPiSync = temp->getRemotePwPWM();
586 mActiveSyncPort = temp->getRemotePortPWM(); 588 mActiveSyncPort = temp->getRemotePortPWM();
587 mActiveSyncIP = temp->getRemoteIPPWM(); 589 mActiveSyncIP = temp->getRemoteIPPWM();
588 } 590 }
589 syncPi(); 591 syncPi();
590 while ( !mPisyncFinished ) { 592 while ( !mPisyncFinished ) {
591 //qDebug("waiting "); 593 //qDebug("waiting ");
592 qApp->processEvents(); 594 qApp->processEvents();
593 } 595 }
594 timer.start(); 596 timer.start();
595 while ( timer.elapsed () < 2000 ) { 597 while ( timer.elapsed () < 2000 ) {
596 qApp->processEvents(); 598 qApp->processEvents();
597 } 599 }
598 } else 600 } else
599 syncRemote( temp, false ); 601 syncRemote( temp, false );
600 602
601 } 603 }
602 } 604 }
603 timer.start(); 605 timer.start();
604 mParent->topLevelWidget()->setCaption(i18n("Multiple sync in progress ... please wait!") ); 606 mParent->topLevelWidget()->setCaption(i18n("Multiple sync in progress ... please wait!") );
605 while ( timer.elapsed () < 2000 ) { 607 while ( timer.elapsed () < 2000 ) {
606 qApp->processEvents(); 608 qApp->processEvents();
607#ifndef _WIN32_ 609#ifndef _WIN32_
608 sleep (1); 610 sleep (1);
609#endif 611#endif
610 } 612 }
611 613
612 } 614 }
613 615
614 } 616 }
615 delete temp; 617 delete temp;
616 return syncedProfiles; 618 return syncedProfiles;
617} 619}
618 620
619void KSyncManager::syncRemote( KSyncProfile* prof, bool ask) 621void KSyncManager::syncRemote( KSyncProfile* prof, bool ask)
620{ 622{
621 QString question; 623 QString question;
622 if ( ask ) { 624 if ( ask ) {
623 question = i18n("Do you really want\nto remote sync\nwith profile \n")+ prof->getName()+" ?\n"; 625 question = i18n("Do you really want\nto remote sync\nwith profile \n")+ prof->getName()+" ?\n";
624 if ( QMessageBox::information( mParent, i18n("Sync"), 626 if ( QMessageBox::information( mParent, i18n("Sync"),
625 question, 627 question,
626 i18n("Yes"), i18n("No"), 628 i18n("Yes"), i18n("No"),
627 0, 0 ) != 0 ) 629 0, 0 ) != 0 )
628 return; 630 return;
629 } 631 }
630 632
631 QString preCommand; 633 QString preCommand;
632 QString localTempFile; 634 QString localTempFile;
633 QString postCommand; 635 QString postCommand;
634 636
635 switch(mTargetApp) 637 switch(mTargetApp)
636 { 638 {
637 case (KAPI): 639 case (KAPI):
638 preCommand = prof->getPreSyncCommandAB(); 640 preCommand = prof->getPreSyncCommandAB();
639 postCommand = prof->getPostSyncCommandAB(); 641 postCommand = prof->getPostSyncCommandAB();
640 localTempFile = prof->getLocalTempFileAB(); 642 localTempFile = prof->getLocalTempFileAB();
641 break; 643 break;
642 case (KOPI): 644 case (KOPI):
643 preCommand = prof->getPreSyncCommand(); 645 preCommand = prof->getPreSyncCommand();
644 postCommand = prof->getPostSyncCommand(); 646 postCommand = prof->getPostSyncCommand();
645 localTempFile = prof->getLocalTempFile(); 647 localTempFile = prof->getLocalTempFile();
646 break; 648 break;
647 case (PWMPI): 649 case (PWMPI):
648 preCommand = prof->getPreSyncCommandPWM(); 650 preCommand = prof->getPreSyncCommandPWM();
649 postCommand = prof->getPostSyncCommandPWM(); 651 postCommand = prof->getPostSyncCommandPWM();
650 localTempFile = prof->getLocalTempFilePWM(); 652 localTempFile = prof->getLocalTempFilePWM();
651 break; 653 break;
652 default: 654 default:
653 qDebug("KSyncManager::syncRemote: invalid apptype selected"); 655 qDebug("KSyncManager::syncRemote: invalid apptype selected");
654 break; 656 break;
655 } 657 }
656 658
657 659
658 int fi; 660 int fi;
659 if ( (fi = preCommand.find("$PWD$")) > 0 ) { 661 if ( (fi = preCommand.find("$PWD$")) > 0 ) {
660 QString pwd = getPassword(); 662 QString pwd = getPassword();
661 preCommand = preCommand.left( fi )+ pwd + preCommand.mid( fi+5 ); 663 preCommand = preCommand.left( fi )+ pwd + preCommand.mid( fi+5 );
662 664
663 } 665 }
664 int maxlen = 30; 666 int maxlen = 30;
665 if ( QApplication::desktop()->width() > 320 ) 667 if ( QApplication::desktop()->width() > 320 )
666 maxlen += 25; 668 maxlen += 25;
667 mParent->topLevelWidget()->setCaption ( i18n( "Copy remote file to local machine..." ) ); 669 mParent->topLevelWidget()->setCaption ( i18n( "Copy remote file to local machine..." ) );
668 int fileSize = 0; 670 int fileSize = 0;
669 int result = system ( preCommand ); 671 int result = system ( preCommand );
670 // 0 : okay 672 // 0 : okay
671 // 256: no such file or dir 673 // 256: no such file or dir
672 // 674 //
673 qDebug("Sync: Remote copy result(0 = okay): %d ",result ); 675 qDebug("Sync: Remote copy result(0 = okay): %d ",result );
674 if ( result != 0 ) { 676 if ( result != 0 ) {
675 unsigned int len = maxlen; 677 unsigned int len = maxlen;
676 while ( len < preCommand.length() ) { 678 while ( len < preCommand.length() ) {
677 preCommand.insert( len , "\n" ); 679 preCommand.insert( len , "\n" );
678 len += maxlen +2; 680 len += maxlen +2;
679 } 681 }
680 question = i18n("Sorry, the copy command failed!\nCommand was:\n%1\n \nTry command on console to get more\ndetailed info about the reason.\n").arg (preCommand) ; 682 question = i18n("Sorry, the copy command failed!\nCommand was:\n%1\n \nTry command on console to get more\ndetailed info about the reason.\n").arg (preCommand) ;
681 QMessageBox::information( mParent, i18n("Sync - ERROR"), 683 QMessageBox::information( mParent, i18n("Sync - ERROR"),
682 question, 684 question,
683 i18n("Okay!")) ; 685 i18n("Okay!")) ;
684 mParent->topLevelWidget()->setCaption ("KDE-Pim"); 686 mParent->topLevelWidget()->setCaption ("KDE-Pim");
685 return; 687 return;
686 } 688 }
687 mParent->topLevelWidget()->setCaption ( i18n( "Copying succeed." ) ); 689 mParent->topLevelWidget()->setCaption ( i18n( "Copying succeed." ) );
688 //qDebug(" file **%s** ",prof->getLocalTempFile().latin1() ); 690 //qDebug(" file **%s** ",prof->getLocalTempFile().latin1() );
689 691
690 if ( syncWithFile( localTempFile, true ) ) { 692 if ( syncWithFile( localTempFile, true ) ) {
691 693
692 if ( mWriteBackFile ) { 694 if ( mWriteBackFile ) {
693 int fi; 695 int fi;
694 if ( (fi = postCommand.find("$PWD$")) > 0 ) { 696 if ( (fi = postCommand.find("$PWD$")) > 0 ) {
695 QString pwd = getPassword(); 697 QString pwd = getPassword();
696 postCommand = postCommand.left( fi )+ pwd + postCommand.mid( fi+5 ); 698 postCommand = postCommand.left( fi )+ pwd + postCommand.mid( fi+5 );
697 699
698 } 700 }
699 mParent->topLevelWidget()->setCaption ( i18n( "Writing back file ..." ) ); 701 mParent->topLevelWidget()->setCaption ( i18n( "Writing back file ..." ) );
700 result = system ( postCommand ); 702 result = system ( postCommand );
701 qDebug("Sync:Writing back file result: %d ", result); 703 qDebug("Sync:Writing back file result: %d ", result);
702 if ( result != 0 ) { 704 if ( result != 0 ) {
703 mParent->topLevelWidget()->setCaption ( i18n( "Writing back file result: " )+QString::number( result ) ); 705 mParent->topLevelWidget()->setCaption ( i18n( "Writing back file result: " )+QString::number( result ) );
704 return; 706 return;
705 } else { 707 } else {
706 mParent->topLevelWidget()->setCaption ( i18n( "Syncronization sucessfully completed" ) ); 708 mParent->topLevelWidget()->setCaption ( i18n( "Syncronization sucessfully completed" ) );
707 } 709 }
708 } 710 }
709 } 711 }
710 return; 712 return;
711} 713}
712bool KSyncManager::edit_pisync_options() 714bool KSyncManager::edit_pisync_options()
713{ 715{
714 QDialog dia( mParent, "dia", true ); 716 QDialog dia( mParent, "dia", true );
715 dia.setCaption( i18n("Pi-Sync options for device: " ) +mCurrentSyncDevice ); 717 dia.setCaption( i18n("Pi-Sync options for device: " ) +mCurrentSyncDevice );
716 QVBoxLayout lay ( &dia ); 718 QVBoxLayout lay ( &dia );
717 lay.setSpacing( 5 ); 719 lay.setSpacing( 5 );
718 lay.setMargin( 3 ); 720 lay.setMargin( 3 );
719 QLabel lab1 ( i18n("Password for remote access:"), &dia); 721 QLabel lab1 ( i18n("Password for remote access:"), &dia);
720 lay.addWidget( &lab1 ); 722 lay.addWidget( &lab1 );
721 QLineEdit le1 (&dia ); 723 QLineEdit le1 (&dia );
722 lay.addWidget( &le1 ); 724 lay.addWidget( &le1 );
723 QLabel lab2 ( i18n("Remote IP address:"), &dia); 725 QLabel lab2 ( i18n("Remote IP address:"), &dia);
724 lay.addWidget( &lab2 ); 726 lay.addWidget( &lab2 );
725 QLineEdit le2 (&dia ); 727 QLineEdit le2 (&dia );
726 lay.addWidget( &le2 ); 728 lay.addWidget( &le2 );
727 QLabel lab3 ( i18n("Remote port number:"), &dia); 729 QLabel lab3 ( i18n("Remote port number:"), &dia);
728 lay.addWidget( &lab3 ); 730 lay.addWidget( &lab3 );
729 QLineEdit le3 (&dia ); 731 QLineEdit le3 (&dia );
730 lay.addWidget( &le3 ); 732 lay.addWidget( &le3 );
731 QPushButton pb ( "OK", &dia); 733 QPushButton pb ( "OK", &dia);
732 lay.addWidget( &pb ); 734 lay.addWidget( &pb );
733 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) ); 735 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) );
734 le1.setText( mPassWordPiSync ); 736 le1.setText( mPassWordPiSync );
735 le2.setText( mActiveSyncIP ); 737 le2.setText( mActiveSyncIP );
736 le3.setText( mActiveSyncPort ); 738 le3.setText( mActiveSyncPort );
737 if ( dia.exec() ) { 739 if ( dia.exec() ) {
738 mPassWordPiSync = le1.text(); 740 mPassWordPiSync = le1.text();
739 mActiveSyncPort = le3.text(); 741 mActiveSyncPort = le3.text();
740 mActiveSyncIP = le2.text(); 742 mActiveSyncIP = le2.text();
741 return true; 743 return true;
742 } 744 }
743 return false; 745 return false;
744} 746}
745bool KSyncManager::edit_sync_options() 747bool KSyncManager::edit_sync_options()
746{ 748{
747 749
748 QDialog dia( mParent, "dia", true ); 750 QDialog dia( mParent, "dia", true );
749 dia.setCaption( i18n("Device: " ) +mCurrentSyncDevice ); 751 dia.setCaption( i18n("Device: " ) +mCurrentSyncDevice );
750 QButtonGroup gr ( 1, Qt::Horizontal, i18n("Sync preferences"), &dia); 752 QButtonGroup gr ( 1, Qt::Horizontal, i18n("Sync preferences"), &dia);
751 QVBoxLayout lay ( &dia ); 753 QVBoxLayout lay ( &dia );
752 lay.setSpacing( 2 ); 754 lay.setSpacing( 2 );
753 lay.setMargin( 3 ); 755 lay.setMargin( 3 );
754 lay.addWidget(&gr); 756 lay.addWidget(&gr);
755 QRadioButton loc ( i18n("Take local entry on conflict"), &gr ); 757 QRadioButton loc ( i18n("Take local entry on conflict"), &gr );
756 QRadioButton rem ( i18n("Take remote entry on conflict"), &gr ); 758 QRadioButton rem ( i18n("Take remote entry on conflict"), &gr );
757 QRadioButton newest( i18n("Take newest entry on conflict"), &gr ); 759 QRadioButton newest( i18n("Take newest entry on conflict"), &gr );
758 QRadioButton ask( i18n("Ask for every entry on conflict"), &gr ); 760 QRadioButton ask( i18n("Ask for every entry on conflict"), &gr );
759 QRadioButton f_loc( i18n("Force: Take local entry always"), &gr ); 761 QRadioButton f_loc( i18n("Force: Take local entry always"), &gr );
760 QRadioButton f_rem( i18n("Force: Take remote entry always"), &gr ); 762 QRadioButton f_rem( i18n("Force: Take remote entry always"), &gr );
761 //QRadioButton both( i18n("Take both on conflict"), &gr ); 763 //QRadioButton both( i18n("Take both on conflict"), &gr );
762 QPushButton pb ( "OK", &dia); 764 QPushButton pb ( "OK", &dia);
763 lay.addWidget( &pb ); 765 lay.addWidget( &pb );
764 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) ); 766 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) );
765 switch ( mSyncAlgoPrefs ) { 767 switch ( mSyncAlgoPrefs ) {
766 case 0: 768 case 0:
767 loc.setChecked( true); 769 loc.setChecked( true);
768 break; 770 break;
769 case 1: 771 case 1:
770 rem.setChecked( true ); 772 rem.setChecked( true );
771 break; 773 break;
772 case 2: 774 case 2:
773 newest.setChecked( true); 775 newest.setChecked( true);
774 break; 776 break;
775 case 3: 777 case 3:
776 ask.setChecked( true); 778 ask.setChecked( true);
777 break; 779 break;
778 case 4: 780 case 4:
779 f_loc.setChecked( true); 781 f_loc.setChecked( true);
780 break; 782 break;
781 case 5: 783 case 5:
782 f_rem.setChecked( true); 784 f_rem.setChecked( true);
783 break; 785 break;
784 case 6: 786 case 6:
785 // both.setChecked( true); 787 // both.setChecked( true);
786 break; 788 break;
787 default: 789 default:
788 break; 790 break;
789 } 791 }
790 if ( dia.exec() ) { 792 if ( dia.exec() ) {
791 mSyncAlgoPrefs = rem.isChecked()*1+newest.isChecked()*2+ ask.isChecked()*3+ f_loc.isChecked()*4+ f_rem.isChecked()*5;//+ both.isChecked()*6 ; 793 mSyncAlgoPrefs = rem.isChecked()*1+newest.isChecked()*2+ ask.isChecked()*3+ f_loc.isChecked()*4+ f_rem.isChecked()*5;//+ both.isChecked()*6 ;
792 return true; 794 return true;
793 } 795 }
794 return false; 796 return false;
795} 797}
796 798
797QString KSyncManager::getPassword( ) 799QString KSyncManager::getPassword( )
798{ 800{
799 QString retfile = ""; 801 QString retfile = "";
800 QDialog dia ( mParent, "input-dialog", true ); 802 QDialog dia ( mParent, "input-dialog", true );
801 QLineEdit lab ( &dia ); 803 QLineEdit lab ( &dia );
802 lab.setEchoMode( QLineEdit::Password ); 804 lab.setEchoMode( QLineEdit::Password );
803 QVBoxLayout lay( &dia ); 805 QVBoxLayout lay( &dia );
804 lay.setMargin(7); 806 lay.setMargin(7);
805 lay.setSpacing(7); 807 lay.setSpacing(7);
806 lay.addWidget( &lab); 808 lay.addWidget( &lab);
807 dia.setFixedSize( 230,50 ); 809 dia.setFixedSize( 230,50 );
808 dia.setCaption( i18n("Enter password") ); 810 dia.setCaption( i18n("Enter password") );
809 QPushButton pb ( "OK", &dia); 811 QPushButton pb ( "OK", &dia);
810 lay.addWidget( &pb ); 812 lay.addWidget( &pb );
811 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) ); 813 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) );
812 dia.show(); 814 dia.show();
813 int res = dia.exec(); 815 int res = dia.exec();
814 if ( res ) 816 if ( res )
815 retfile = lab.text(); 817 retfile = lab.text();
816 dia.hide(); 818 dia.hide();
817 qApp->processEvents(); 819 qApp->processEvents();
818 return retfile; 820 return retfile;
819 821
820} 822}
821 823
822 824
823void KSyncManager::confSync() 825void KSyncManager::confSync()
824{ 826{
825 static KSyncPrefsDialog* sp = 0; 827 static KSyncPrefsDialog* sp = 0;
826 if ( ! sp ) { 828 if ( ! sp ) {
827 sp = new KSyncPrefsDialog( mParent, "syncprefs", true ); 829 sp = new KSyncPrefsDialog( mParent, "syncprefs", true );
828 } 830 }
829 sp->usrReadConfig(); 831 sp->usrReadConfig();
830#ifndef DESKTOP_VERSION 832#ifndef DESKTOP_VERSION
831 sp->showMaximized(); 833 sp->showMaximized();
832#else 834#else
833 sp->show(); 835 sp->show();
834#endif 836#endif
835 sp->exec(); 837 sp->exec();
836 mSyncProfileNames = sp->getSyncProfileNames(); 838 mSyncProfileNames = sp->getSyncProfileNames();
837 mLocalMachineName = sp->getLocalMachineName (); 839 mLocalMachineName = sp->getLocalMachineName ();
838 QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) ); 840 QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) );
839} 841}
840void KSyncManager::syncKDE() 842void KSyncManager::syncKDE()
841{ 843{
842 emit save(); 844 emit save();
843 switch(mTargetApp) 845 switch(mTargetApp)
844 { 846 {
845 case (KAPI): 847 case (KAPI):
846 848
847 break; 849 break;
848 case (KOPI): 850 case (KOPI):
849 { 851 {
850#ifdef DESKTOP_VERSION 852#ifdef DESKTOP_VERSION
851 QString command = qApp->applicationDirPath () + "/kdecaldump"; 853 QString command = qApp->applicationDirPath () + "/kdecaldump";
852#else 854#else
853 QString command = "kdecaldump"; 855 QString command = "kdecaldump";
854#endif 856#endif
855 if ( ! QFile::exists ( command ) ) 857 if ( ! QFile::exists ( command ) )
856 command = "kdecaldump"; 858 command = "kdecaldump";
857 QString fileName = QDir::homeDirPath ()+"/.kdecalendardump.ics"; 859 QString fileName = QDir::homeDirPath ()+"/.kdecalendardump.ics";
858 system ( command.latin1()); 860 system ( command.latin1());
859 if ( syncWithFile( fileName,true ) ) { 861 if ( syncWithFile( fileName,true ) ) {
860 if ( mWriteBackFile ) { 862 if ( mWriteBackFile ) {
861 command += " --read"; 863 command += " --read";
862 system ( command.latin1()); 864 system ( command.latin1());
863 } 865 }
864 } 866 }
865 867
866 } 868 }
867 break; 869 break;
868 case (PWMPI): 870 case (PWMPI):
869 871
870 break; 872 break;
871 default: 873 default:
872 qDebug("KSyncManager::slotSyncMenu: invalid apptype selected"); 874 qDebug("KSyncManager::slotSyncMenu: invalid apptype selected");
873 break; 875 break;
874 876
875 } 877 }
876} 878}
877 879
878void KSyncManager::syncSharp() 880void KSyncManager::syncSharp()
879{ 881{
880 882
881 if ( ! syncExternalApplication("sharp") ) 883 if ( ! syncExternalApplication("sharp") )
882 qDebug("ERROR sync sharp "); 884 qDebug("ERROR sync sharp ");
883} 885}
884 886
885bool KSyncManager::syncExternalApplication(QString resource) 887bool KSyncManager::syncExternalApplication(QString resource)
886{ 888{
887 889
888 emit save(); 890 emit save();
889 891
890 if ( mAskForPreferences ) 892 if ( mAskForPreferences )
891 if ( !edit_sync_options()) { 893 if ( !edit_sync_options()) {
892 mParent->topLevelWidget()->setCaption( i18n("Syncing aborted. Nothing synced.") ); 894 mParent->topLevelWidget()->setCaption( i18n("Syncing aborted. Nothing synced.") );
893 return false; 895 return false;
894 } 896 }
895 897
896 qDebug("Sync extern %s", resource.latin1()); 898 qDebug("Sync extern %s", resource.latin1());
897 899
898 bool syncOK = mImplementation->syncExternal(this, resource); 900 bool syncOK = mImplementation->syncExternal(this, resource);
899 901
900 return syncOK; 902 return syncOK;
901 903
902} 904}
903 905
904void KSyncManager::syncPhone() 906void KSyncManager::syncPhone()
905{ 907{
906 908
907 syncExternalApplication("phone"); 909 syncExternalApplication("phone");
908 910
909} 911}
910 912
911void KSyncManager::showProgressBar(int percentage, QString caption, int total) 913void KSyncManager::showProgressBar(int percentage, QString caption, int total)
912{ 914{
913 if (!bar->isVisible()) 915 if (!bar->isVisible())
914 { 916 {
915 bar->setCaption (caption); 917 bar->setCaption (caption);
916 bar->setTotalSteps ( total ) ; 918 bar->setTotalSteps ( total ) ;
917 919
918 bar->show(); 920 bar->show();
919 } 921 }
920 922
921 bar->setProgress( percentage ); 923 bar->setProgress( percentage );
922} 924}
923 925
924void KSyncManager::hideProgressBar() 926void KSyncManager::hideProgressBar()
925{ 927{
926 bar->hide(); 928 bar->hide();
927} 929}
928 930
929bool KSyncManager::isProgressBarCanceled() 931bool KSyncManager::isProgressBarCanceled()
930{ 932{
931 return !bar->isVisible(); 933 return !bar->isVisible();
932} 934}
933 935
934QString KSyncManager::syncFileName() 936QString KSyncManager::syncFileName()
935{ 937{
936 938
937 QString fn = "tempfile"; 939 QString fn = "tempfile";
938 switch(mTargetApp) 940 switch(mTargetApp)
939 { 941 {
940 case (KAPI): 942 case (KAPI):
941 fn = "tempsyncab.vcf"; 943 fn = "tempsyncab.vcf";
942 break; 944 break;
943 case (KOPI): 945 case (KOPI):
944 fn = "tempsynccal.ics"; 946 fn = "tempsynccal.ics";
945 break; 947 break;
946 case (PWMPI): 948 case (PWMPI):
947 fn = "tempsyncpw.pwm"; 949 fn = "tempsyncpw.pwm";
948 break; 950 break;
949 default: 951 default:
950 break; 952 break;
951 } 953 }
952#ifdef _WIN32_ 954#ifdef _WIN32_
953 return locateLocal( "tmp", fn ); 955 return locateLocal( "tmp", fn );
954#else 956#else
955 return (QString( "/tmp/" )+ fn ); 957 return (QString( "/tmp/" )+ fn );
956#endif 958#endif
957} 959}
958 960
959void KSyncManager::syncPi() 961void KSyncManager::syncPi()
960{ 962{
961 mPisyncFinished = false; 963 mPisyncFinished = false;
962 qApp->processEvents(); 964 qApp->processEvents();
963 if ( mAskForPreferences ) 965 if ( mAskForPreferences )
964 if ( !edit_pisync_options()) { 966 if ( !edit_pisync_options()) {
965 mParent->topLevelWidget()->setCaption( i18n("Syncing aborted. Nothing synced.") ); 967 mParent->topLevelWidget()->setCaption( i18n("Syncing aborted. Nothing synced.") );
966 return; 968 return;
967 } 969 }
968 bool ok; 970 bool ok;
969 Q_UINT16 port = mActiveSyncPort.toUInt(&ok); 971 Q_UINT16 port = mActiveSyncPort.toUInt(&ok);
970 if ( ! ok ) { 972 if ( ! ok ) {
971 mParent->topLevelWidget()->setCaption( i18n("Sorry, no valid port.Syncing cancelled.") ); 973 mParent->topLevelWidget()->setCaption( i18n("Sorry, no valid port.Syncing cancelled.") );
972 return; 974 return;
973 } 975 }
974 KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, port, mActiveSyncIP, this ); 976 KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, port, mActiveSyncIP, this );
975 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int )), this, SLOT(deleteCommandSocket(KCommandSocket*, int)) ); 977 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int )), this, SLOT(deleteCommandSocket(KCommandSocket*, int)) );
976 mParent->topLevelWidget()->setCaption( i18n("Sending request for remote file ...") ); 978 mParent->topLevelWidget()->setCaption( i18n("Sending request for remote file ...") );
977 commandSocket->readFile( syncFileName() ); 979 commandSocket->readFile( syncFileName() );
978} 980}
979 981
980void KSyncManager::deleteCommandSocket(KCommandSocket*s, int state) 982void KSyncManager::deleteCommandSocket(KCommandSocket*s, int state)
981{ 983{
982 //enum { success, errorW, errorR, quiet }; 984 //enum { success, errorW, errorR, quiet };
983 if ( state == KCommandSocket::errorR ||state == KCommandSocket::errorTO ) { 985 if ( state == KCommandSocket::errorR ||state == KCommandSocket::errorTO ) {
984 mParent->topLevelWidget()->setCaption( i18n("ERROR: Receiving remote file failed.") ); 986 mParent->topLevelWidget()->setCaption( i18n("ERROR: Receiving remote file failed.") );
985 delete s; 987 delete s;
986 if ( state == KCommandSocket::errorR ) { 988 if ( state == KCommandSocket::errorR ) {
987 KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, mActiveSyncPort.toUInt(), mActiveSyncIP, this ); 989 KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, mActiveSyncPort.toUInt(), mActiveSyncIP, this );
988 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int)), this, SLOT(deleteCommandSocket(KCommandSocket*, int )) ); 990 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int)), this, SLOT(deleteCommandSocket(KCommandSocket*, int )) );
989 commandSocket->sendStop(); 991 commandSocket->sendStop();
990 } 992 }
991 mPisyncFinished = true; 993 mPisyncFinished = true;
992 return; 994 return;
993 995
994 } else if ( state == KCommandSocket::errorW ) { 996 } else if ( state == KCommandSocket::errorW ) {
995 mParent->topLevelWidget()->setCaption( i18n("ERROR:Writing back file failed.") ); 997 mParent->topLevelWidget()->setCaption( i18n("ERROR:Writing back file failed.") );
996 mPisyncFinished = true; 998 mPisyncFinished = true;
997 999
998 } else if ( state == KCommandSocket::successR ) { 1000 } else if ( state == KCommandSocket::successR ) {
999 QTimer::singleShot( 1, this , SLOT ( readFileFromSocket())); 1001 QTimer::singleShot( 1, this , SLOT ( readFileFromSocket()));
1000 1002
1001 } else if ( state == KCommandSocket::successW ) { 1003 } else if ( state == KCommandSocket::successW ) {
1002 mParent->topLevelWidget()->setCaption( i18n("Pi-Sync succesful!") ); 1004 mParent->topLevelWidget()->setCaption( i18n("Pi-Sync succesful!") );
1003 mPisyncFinished = true; 1005 mPisyncFinished = true;
1004 } 1006 }
1005 1007
1006 delete s; 1008 delete s;
1007} 1009}
1008 1010
1009void KSyncManager::readFileFromSocket() 1011void KSyncManager::readFileFromSocket()
1010{ 1012{
1011 QString fileName = syncFileName(); 1013 QString fileName = syncFileName();
1012 mParent->topLevelWidget()->setCaption( i18n("Remote file saved to temp file.") ); 1014 mParent->topLevelWidget()->setCaption( i18n("Remote file saved to temp file.") );
1013 if ( ! syncWithFile( fileName , true ) ) { 1015 if ( ! syncWithFile( fileName , true ) ) {
1014 mParent->topLevelWidget()->setCaption( i18n("Syncing failed.") ); 1016 mParent->topLevelWidget()->setCaption( i18n("Syncing failed.") );
1015 mPisyncFinished = true; 1017 mPisyncFinished = true;
1016 return; 1018 return;
1017 } 1019 }
1018 KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, mActiveSyncPort.toUInt(), mActiveSyncIP, this ); 1020 KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, mActiveSyncPort.toUInt(), mActiveSyncIP, this );
1019 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int)), this, SLOT(deleteCommandSocket(KCommandSocket*, int )) ); 1021 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int)), this, SLOT(deleteCommandSocket(KCommandSocket*, int )) );
1020 if ( mWriteBackFile ) 1022 if ( mWriteBackFile )
1021 commandSocket->writeFile( fileName ); 1023 commandSocket->writeFile( fileName );
1022 else { 1024 else {
1023 commandSocket->sendStop(); 1025 commandSocket->sendStop();
1024 mParent->topLevelWidget()->setCaption( i18n("Pi-Sync succesful!") ); 1026 mParent->topLevelWidget()->setCaption( i18n("Pi-Sync succesful!") );
1025 mPisyncFinished = true; 1027 mPisyncFinished = true;
1026 } 1028 }
1027} 1029}
1028 1030
1029KServerSocket:: KServerSocket ( QString pw, Q_UINT16 port, int backlog, QObject * parent, const char * name ) : QServerSocket( port, backlog, parent, name ) 1031KServerSocket:: KServerSocket ( QString pw, Q_UINT16 port, int backlog, QObject * parent, const char * name ) : QServerSocket( port, backlog, parent, name )
1030{ 1032{
1031 mPassWord = pw; 1033 mPassWord = pw;
1032 mSocket = 0; 1034 mSocket = 0;
1033 mSyncActionDialog = 0; 1035 mSyncActionDialog = 0;
1034 blockRC = false; 1036 blockRC = false;
1035}; 1037};
1036 1038
1037void KServerSocket::newConnection ( int socket ) 1039void KServerSocket::newConnection ( int socket )
1038{ 1040{
1039 // qDebug("KServerSocket:New connection %d ", socket); 1041 // qDebug("KServerSocket:New connection %d ", socket);
1040 if ( mSocket ) { 1042 if ( mSocket ) {
1041 qDebug("KServerSocket::newConnection Socket deleted! "); 1043 qDebug("KServerSocket::newConnection Socket deleted! ");
1042 delete mSocket; 1044 delete mSocket;
1043 mSocket = 0; 1045 mSocket = 0;
1044 } 1046 }
1045 mSocket = new QSocket( this ); 1047 mSocket = new QSocket( this );
1046 connect( mSocket , SIGNAL(readyRead()), this, SLOT(readClient()) ); 1048 connect( mSocket , SIGNAL(readyRead()), this, SLOT(readClient()) );
1047 connect( mSocket , SIGNAL(delayedCloseFinished()), this, SLOT(discardClient()) ); 1049 connect( mSocket , SIGNAL(delayedCloseFinished()), this, SLOT(discardClient()) );
1048 mSocket->setSocket( socket ); 1050 mSocket->setSocket( socket );
1049} 1051}
1050 1052
1051void KServerSocket::discardClient() 1053void KServerSocket::discardClient()
1052{ 1054{
1053 //qDebug(" KServerSocket::discardClient()"); 1055 //qDebug(" KServerSocket::discardClient()");
1054 if ( mSocket ) { 1056 if ( mSocket ) {
1055 delete mSocket; 1057 delete mSocket;
1056 mSocket = 0; 1058 mSocket = 0;
1057 } 1059 }
1058 //emit endConnect(); 1060 //emit endConnect();
1059} 1061}
1060void KServerSocket::readClient() 1062void KServerSocket::readClient()
1061{ 1063{
1062 if ( blockRC ) 1064 if ( blockRC )
1063 return; 1065 return;
1064 if ( mSocket == 0 ) { 1066 if ( mSocket == 0 ) {
1065 qDebug("ERROR::KServerSocket::readClient(): mSocket == 0 "); 1067 qDebug("ERROR::KServerSocket::readClient(): mSocket == 0 ");
1066 return; 1068 return;
1067 } 1069 }
1068 //qDebug("KServerSocket::readClient()"); 1070 //qDebug("KServerSocket::readClient()");
1069 if ( mSocket->canReadLine() ) { 1071 if ( mSocket->canReadLine() ) {
1070 QString line = mSocket->readLine(); 1072 QString line = mSocket->readLine();
1071 //qDebug("KServerSocket readline: %s ", line.latin1()); 1073 //qDebug("KServerSocket readline: %s ", line.latin1());
1072 QStringList tokens = QStringList::split( QRegExp("[ \r\n][ \r\n]*"), line ); 1074 QStringList tokens = QStringList::split( QRegExp("[ \r\n][ \r\n]*"), line );
1073 if ( tokens[0] == "GET" ) { 1075 if ( tokens[0] == "GET" ) {
1074 if ( tokens[1] == mPassWord ) 1076 if ( tokens[1] == mPassWord )
1075 //emit sendFile( mSocket ); 1077 //emit sendFile( mSocket );
1076 send_file(); 1078 send_file();
1077 else { 1079 else {
1078 KMessageBox::error( 0, i18n("Got send file request\nwith invalid password")); 1080 KMessageBox::error( 0, i18n("Got send file request\nwith invalid password"));
1079 //qDebug("password %s, invalid password %s ",mPassWord.latin1(), tokens[1].latin1() ); 1081 //qDebug("password %s, invalid password %s ",mPassWord.latin1(), tokens[1].latin1() );
1080 } 1082 }
1081 } 1083 }
1082 if ( tokens[0] == "PUT" ) { 1084 if ( tokens[0] == "PUT" ) {
1083 if ( tokens[1] == mPassWord ) { 1085 if ( tokens[1] == mPassWord ) {
1084 //emit getFile( mSocket ); 1086 //emit getFile( mSocket );
1085 blockRC = true; 1087 blockRC = true;
1086 get_file(); 1088 get_file();
1087 } 1089 }
1088 else { 1090 else {
1089 KMessageBox::error( 0, i18n("Got receive file request\nwith invalid password")); 1091 KMessageBox::error( 0, i18n("Got receive file request\nwith invalid password"));
1090 //qDebug("password %s, invalid password %s ",mPassWord.latin1(), tokens[1].latin1() ); 1092 //qDebug("password %s, invalid password %s ",mPassWord.latin1(), tokens[1].latin1() );
1091 } 1093 }
1092 } 1094 }
1093 if ( tokens[0] == "STOP" ) { 1095 if ( tokens[0] == "STOP" ) {
1094 //emit endConnect(); 1096 //emit endConnect();
1095 end_connect(); 1097 end_connect();
1096 } 1098 }
1097 } 1099 }
1098} 1100}
1099void KServerSocket::end_connect() 1101void KServerSocket::end_connect()
1100{ 1102{
1101 delete mSyncActionDialog; 1103 delete mSyncActionDialog;
1102 mSyncActionDialog = 0; 1104 mSyncActionDialog = 0;
1103} 1105}
1104void KServerSocket::send_file() 1106void KServerSocket::send_file()
1105{ 1107{
1106 //qDebug("MainWindow::sendFile(QSocket* s) "); 1108 //qDebug("MainWindow::sendFile(QSocket* s) ");
1107 if ( mSyncActionDialog ) 1109 if ( mSyncActionDialog )
1108 delete mSyncActionDialog; 1110 delete mSyncActionDialog;
1109 mSyncActionDialog = new QDialog ( 0, "input-dialog", true ); 1111 mSyncActionDialog = new QDialog ( 0, "input-dialog", true );
1110 mSyncActionDialog->setCaption(i18n("Received sync request")); 1112 mSyncActionDialog->setCaption(i18n("Received sync request"));
1111 QLabel* label = new QLabel( i18n("Synchronizing from remote ...\n\nDo not use this application!\n\nIf syncing fails\nyou can close this dialog."), mSyncActionDialog ); 1113 QLabel* label = new QLabel( i18n("Synchronizing from remote ...\n\nDo not use this application!\n\nIf syncing fails\nyou can close this dialog."), mSyncActionDialog );
1112 QVBoxLayout* lay = new QVBoxLayout( mSyncActionDialog ); 1114 QVBoxLayout* lay = new QVBoxLayout( mSyncActionDialog );
1113 lay->addWidget( label); 1115 lay->addWidget( label);
1114 lay->setMargin(7); 1116 lay->setMargin(7);
1115 lay->setSpacing(7); 1117 lay->setSpacing(7);
1116 mSyncActionDialog->setFixedSize( 230, 120); 1118 mSyncActionDialog->setFixedSize( 230, 120);
1117 mSyncActionDialog->show(); 1119 mSyncActionDialog->show();
1118 mSyncActionDialog->raise(); 1120 mSyncActionDialog->raise();
1119 emit request_file(); 1121 emit request_file();
1120 qApp->processEvents(); 1122 qApp->processEvents();
1121 QString fileName = mFileName; 1123 QString fileName = mFileName;
1122 QFile file( fileName ); 1124 QFile file( fileName );
1123 if (!file.open( IO_ReadOnly ) ) { 1125 if (!file.open( IO_ReadOnly ) ) {
1124 delete mSyncActionDialog; 1126 delete mSyncActionDialog;
1125 mSyncActionDialog = 0; 1127 mSyncActionDialog = 0;
1126 qDebug("KSS::error open file "); 1128 qDebug("KSS::error open file ");
1127 mSocket->close(); 1129 mSocket->close();
1128 if ( mSocket->state() == QSocket::Idle ) 1130 if ( mSocket->state() == QSocket::Idle )
1129 QTimer::singleShot( 10, this , SLOT ( discardClient())); 1131 QTimer::singleShot( 10, this , SLOT ( discardClient()));
1130 return ; 1132 return ;
1131 1133
1132 } 1134 }
1133 mSyncActionDialog->setCaption( i18n("Sending file...") ); 1135 mSyncActionDialog->setCaption( i18n("Sending file...") );
1134 QTextStream ts( &file ); 1136 QTextStream ts( &file );
1135 ts.setEncoding( QTextStream::Latin1 ); 1137 ts.setEncoding( QTextStream::Latin1 );
1136 1138
1137 QTextStream os( mSocket ); 1139 QTextStream os( mSocket );
1138 os.setEncoding( QTextStream::Latin1 ); 1140 os.setEncoding( QTextStream::Latin1 );
1139 while ( ! ts.atEnd() ) { 1141 while ( ! ts.atEnd() ) {
1140 os << ts.readLine() << "\r\n"; 1142 os << ts.readLine() << "\r\n";
1141 } 1143 }
1142 //os << ts.read(); 1144 //os << ts.read();
1143 file.close(); 1145 file.close();
1144 mSyncActionDialog->setCaption( i18n("Waiting for synced file...") ); 1146 mSyncActionDialog->setCaption( i18n("Waiting for synced file...") );
1145 mSocket->close(); 1147 mSocket->close();
1146 if ( mSocket->state() == QSocket::Idle ) 1148 if ( mSocket->state() == QSocket::Idle )
1147 QTimer::singleShot( 10, this , SLOT ( discardClient())); 1149 QTimer::singleShot( 10, this , SLOT ( discardClient()));
1148} 1150}
1149void KServerSocket::get_file() 1151void KServerSocket::get_file()
1150{ 1152{
1151 mSyncActionDialog->setCaption( i18n("Receiving synced file...") ); 1153 mSyncActionDialog->setCaption( i18n("Receiving synced file...") );
1152 1154
1153 piTime.start(); 1155 piTime.start();
1154 piFileString = ""; 1156 piFileString = "";
1155 QTimer::singleShot( 1, this , SLOT (readBackFileFromSocket( ) )); 1157 QTimer::singleShot( 1, this , SLOT (readBackFileFromSocket( ) ));
1156} 1158}
1157 1159
1158 1160
1159void KServerSocket::readBackFileFromSocket() 1161void KServerSocket::readBackFileFromSocket()
1160{ 1162{
1161 //qDebug("readBackFileFromSocket() %d ", piTime.elapsed ()); 1163 //qDebug("readBackFileFromSocket() %d ", piTime.elapsed ());
1162 while ( mSocket->canReadLine () ) { 1164 while ( mSocket->canReadLine () ) {
1163 piTime.restart(); 1165 piTime.restart();
1164 QString line = mSocket->readLine (); 1166 QString line = mSocket->readLine ();
1165 piFileString += line; 1167 piFileString += line;
1166 //qDebug("readline: %s ", line.latin1()); 1168 //qDebug("readline: %s ", line.latin1());
1167 mSyncActionDialog->setCaption( i18n("Received %1 bytes").arg( piFileString.length() ) ); 1169 mSyncActionDialog->setCaption( i18n("Received %1 bytes").arg( piFileString.length() ) );
1168 1170
1169 } 1171 }
1170 if ( piTime.elapsed () < 3000 ) { 1172 if ( piTime.elapsed () < 3000 ) {
1171 // wait for more 1173 // wait for more
1172 //qDebug("waitformore "); 1174 //qDebug("waitformore ");
1173 QTimer::singleShot( 100, this , SLOT (readBackFileFromSocket( ) )); 1175 QTimer::singleShot( 100, this , SLOT (readBackFileFromSocket( ) ));
1174 return; 1176 return;
1175 } 1177 }
1176 QString fileName = mFileName; 1178 QString fileName = mFileName;
1177 QFile file ( fileName ); 1179 QFile file ( fileName );
1178 if (!file.open( IO_WriteOnly ) ) { 1180 if (!file.open( IO_WriteOnly ) ) {
1179 delete mSyncActionDialog; 1181 delete mSyncActionDialog;
1180 mSyncActionDialog = 0; 1182 mSyncActionDialog = 0;
1181 qDebug("KSS:Error open read back file "); 1183 qDebug("KSS:Error open read back file ");
1182 piFileString = ""; 1184 piFileString = "";
1183 emit file_received( false ); 1185 emit file_received( false );
1184 blockRC = false; 1186 blockRC = false;
1185 return ; 1187 return ;
1186 1188
1187 } 1189 }
1188 1190
1189 // mView->setLoadedFileVersion(QDateTime::currentDateTime().addSecs( -1)); 1191 // mView->setLoadedFileVersion(QDateTime::currentDateTime().addSecs( -1));
1190 QTextStream ts ( &file ); 1192 QTextStream ts ( &file );
1191 ts.setEncoding( QTextStream::Latin1 ); 1193 ts.setEncoding( QTextStream::Latin1 );
1192 mSyncActionDialog->setCaption( i18n("Writing file to disk...") ); 1194 mSyncActionDialog->setCaption( i18n("Writing file to disk...") );
1193 ts << piFileString; 1195 ts << piFileString;
1194 mSocket->close(); 1196 mSocket->close();
1195 if ( mSocket->state() == QSocket::Idle ) 1197 if ( mSocket->state() == QSocket::Idle )
1196 QTimer::singleShot( 10, this , SLOT ( discardClient())); 1198 QTimer::singleShot( 10, this , SLOT ( discardClient()));
1197 file.close(); 1199 file.close();
1198 piFileString = ""; 1200 piFileString = "";
1199 emit file_received( true ); 1201 emit file_received( true );
1200 delete mSyncActionDialog; 1202 delete mSyncActionDialog;
1201 mSyncActionDialog = 0; 1203 mSyncActionDialog = 0;
1202 blockRC = false; 1204 blockRC = false;
1203 1205
1204} 1206}
1205 1207
1206KCommandSocket::KCommandSocket ( QString password, Q_UINT16 port, QString host, QObject * parent, const char * name ): QObject( parent, name ) 1208KCommandSocket::KCommandSocket ( QString password, Q_UINT16 port, QString host, QObject * parent, const char * name ): QObject( parent, name )
1207{ 1209{
1208 mPassWord = password; 1210 mPassWord = password;
1209 mSocket = 0; 1211 mSocket = 0;
1210 mPort = port; 1212 mPort = port;
1211 mHost = host; 1213 mHost = host;
1212 1214
1213 mRetVal = quiet; 1215 mRetVal = quiet;
1214 mTimerSocket = new QTimer ( this ); 1216 mTimerSocket = new QTimer ( this );
1215 connect( mTimerSocket, SIGNAL ( timeout () ), this, SLOT ( deleteSocket() ) ); 1217 connect( mTimerSocket, SIGNAL ( timeout () ), this, SLOT ( deleteSocket() ) );
1216} 1218}
1217void KCommandSocket::readFile( QString fn ) 1219void KCommandSocket::readFile( QString fn )
1218{ 1220{
1219 if ( !mSocket ) { 1221 if ( !mSocket ) {
1220 mSocket = new QSocket( this ); 1222 mSocket = new QSocket( this );
1221 connect( mSocket, SIGNAL(readyRead()), this, SLOT(startReadFileFromSocket()) ); 1223 connect( mSocket, SIGNAL(readyRead()), this, SLOT(startReadFileFromSocket()) );
1222 connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) ); 1224 connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) );
1223 } 1225 }
1224 mFileString = ""; 1226 mFileString = "";
1225 mFileName = fn; 1227 mFileName = fn;
1226 mFirst = true; 1228 mFirst = true;
1227 mSocket->connectToHost( mHost, mPort ); 1229 mSocket->connectToHost( mHost, mPort );
1228 QTextStream os( mSocket ); 1230 QTextStream os( mSocket );
1229 os.setEncoding( QTextStream::Latin1 ); 1231 os.setEncoding( QTextStream::Latin1 );
1230 os << "GET " << mPassWord << "\r\n"; 1232 os << "GET " << mPassWord << "\r\n";
1231 mTimerSocket->start( 20000 ); 1233 mTimerSocket->start( 20000 );
1232} 1234}
1233 1235
1234void KCommandSocket::writeFile( QString fileName ) 1236void KCommandSocket::writeFile( QString fileName )
1235{ 1237{
1236 if ( !mSocket ) { 1238 if ( !mSocket ) {
1237 mSocket = new QSocket( this ); 1239 mSocket = new QSocket( this );
1238 connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) ); 1240 connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) );
1239 connect( mSocket, SIGNAL(connected ()), this, SLOT(writeFileToSocket()) ); 1241 connect( mSocket, SIGNAL(connected ()), this, SLOT(writeFileToSocket()) );
1240 } 1242 }
1241 mFileName = fileName ; 1243 mFileName = fileName ;
1242 mSocket->connectToHost( mHost, mPort ); 1244 mSocket->connectToHost( mHost, mPort );
1243} 1245}
1244void KCommandSocket::writeFileToSocket() 1246void KCommandSocket::writeFileToSocket()
1245{ 1247{
1246 QFile file2( mFileName ); 1248 QFile file2( mFileName );
1247 if (!file2.open( IO_ReadOnly ) ) { 1249 if (!file2.open( IO_ReadOnly ) ) {
1248 mRetVal= errorW; 1250 mRetVal= errorW;
1249 mSocket->close(); 1251 mSocket->close();
1250 if ( mSocket->state() == QSocket::Idle ) 1252 if ( mSocket->state() == QSocket::Idle )
1251 QTimer::singleShot( 10, this , SLOT ( deleteSocket())); 1253 QTimer::singleShot( 10, this , SLOT ( deleteSocket()));
1252 return ; 1254 return ;
1253 } 1255 }
1254 QTextStream ts2( &file2 ); 1256 QTextStream ts2( &file2 );
1255 ts2.setEncoding( QTextStream::Latin1 ); 1257 ts2.setEncoding( QTextStream::Latin1 );
1256 QTextStream os2( mSocket ); 1258 QTextStream os2( mSocket );
1257 os2.setEncoding( QTextStream::Latin1 ); 1259 os2.setEncoding( QTextStream::Latin1 );
1258 os2 << "PUT " << mPassWord << "\r\n";; 1260 os2 << "PUT " << mPassWord << "\r\n";;
1259 while ( ! ts2.atEnd() ) { 1261 while ( ! ts2.atEnd() ) {
1260 os2 << ts2.readLine() << "\r\n"; 1262 os2 << ts2.readLine() << "\r\n";
1261 } 1263 }
1262 mRetVal= successW; 1264 mRetVal= successW;
1263 file2.close(); 1265 file2.close();
1264 mSocket->close(); 1266 mSocket->close();
1265 if ( mSocket->state() == QSocket::Idle ) 1267 if ( mSocket->state() == QSocket::Idle )
1266 QTimer::singleShot( 10, this , SLOT ( deleteSocket())); 1268 QTimer::singleShot( 10, this , SLOT ( deleteSocket()));
1267} 1269}
1268void KCommandSocket::sendStop() 1270void KCommandSocket::sendStop()
1269{ 1271{
1270 if ( !mSocket ) { 1272 if ( !mSocket ) {
1271 mSocket = new QSocket( this ); 1273 mSocket = new QSocket( this );
1272 connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) ); 1274 connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) );
1273 } 1275 }
1274 mSocket->connectToHost( mHost, mPort ); 1276 mSocket->connectToHost( mHost, mPort );
1275 QTextStream os2( mSocket ); 1277 QTextStream os2( mSocket );
1276 os2.setEncoding( QTextStream::Latin1 ); 1278 os2.setEncoding( QTextStream::Latin1 );
1277 os2 << "STOP\r\n"; 1279 os2 << "STOP\r\n";
1278 mSocket->close(); 1280 mSocket->close();
1279 if ( mSocket->state() == QSocket::Idle ) 1281 if ( mSocket->state() == QSocket::Idle )
1280 QTimer::singleShot( 10, this , SLOT ( deleteSocket())); 1282 QTimer::singleShot( 10, this , SLOT ( deleteSocket()));
1281} 1283}
1282 1284
1283void KCommandSocket::startReadFileFromSocket() 1285void KCommandSocket::startReadFileFromSocket()
1284{ 1286{
1285 if ( ! mFirst ) 1287 if ( ! mFirst )
1286 return; 1288 return;
1287 mFirst = false; 1289 mFirst = false;
1288 mTimerSocket->stop(); 1290 mTimerSocket->stop();
1289 mFileString = ""; 1291 mFileString = "";
1290 mTime.start(); 1292 mTime.start();
1291 QTimer::singleShot( 1, this , SLOT (readFileFromSocket( ) )); 1293 QTimer::singleShot( 1, this , SLOT (readFileFromSocket( ) ));
1292 1294
1293} 1295}
1294void KCommandSocket::readFileFromSocket() 1296void KCommandSocket::readFileFromSocket()
1295{ 1297{
1296 //qDebug("readBackFileFromSocket() %d ", mTime.elapsed ()); 1298 //qDebug("readBackFileFromSocket() %d ", mTime.elapsed ());
1297 while ( mSocket->canReadLine () ) { 1299 while ( mSocket->canReadLine () ) {
1298 mTime.restart(); 1300 mTime.restart();
1299 QString line = mSocket->readLine (); 1301 QString line = mSocket->readLine ();
1300 mFileString += line; 1302 mFileString += line;
1301 //qDebug("readline: %s ", line.latin1()); 1303 //qDebug("readline: %s ", line.latin1());
1302 } 1304 }
1303 if ( mTime.elapsed () < 3000 ) { 1305 if ( mTime.elapsed () < 3000 ) {
1304 // wait for more 1306 // wait for more
1305 //qDebug("waitformore "); 1307 //qDebug("waitformore ");
1306 QTimer::singleShot( 100, this , SLOT (readFileFromSocket( ) )); 1308 QTimer::singleShot( 100, this , SLOT (readFileFromSocket( ) ));
1307 return; 1309 return;
1308 } 1310 }
1309 QString fileName = mFileName; 1311 QString fileName = mFileName;
1310 QFile file ( fileName ); 1312 QFile file ( fileName );
1311 if (!file.open( IO_WriteOnly ) ) { 1313 if (!file.open( IO_WriteOnly ) ) {
1312 mFileString = ""; 1314 mFileString = "";
1313 mRetVal = errorR; 1315 mRetVal = errorR;
1314 qDebug("KSS:Error open temp sync file for writing: %s",fileName.latin1() ); 1316 qDebug("KSS:Error open temp sync file for writing: %s",fileName.latin1() );
1315 deleteSocket(); 1317 deleteSocket();
1316 return ; 1318 return ;
1317 1319
1318 } 1320 }
1319 // mView->setLoadedFileVersion(QDateTime::currentDateTime().addSecs( -1)); 1321 // mView->setLoadedFileVersion(QDateTime::currentDateTime().addSecs( -1));
1320 QTextStream ts ( &file ); 1322 QTextStream ts ( &file );
1321 ts.setEncoding( QTextStream::Latin1 ); 1323 ts.setEncoding( QTextStream::Latin1 );
1322 ts << mFileString; 1324 ts << mFileString;
1323 file.close(); 1325 file.close();
1324 mFileString = ""; 1326 mFileString = "";
1325 mRetVal = successR; 1327 mRetVal = successR;
1326 mSocket->close(); 1328 mSocket->close();
1327 // if state is not idle, deleteSocket(); is called via 1329 // if state is not idle, deleteSocket(); is called via
1328 // connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) ); 1330 // connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) );
1329 if ( mSocket->state() == QSocket::Idle ) 1331 if ( mSocket->state() == QSocket::Idle )
1330 deleteSocket(); 1332 deleteSocket();
1331} 1333}
1332 1334
1333void KCommandSocket::deleteSocket() 1335void KCommandSocket::deleteSocket()
1334{ 1336{
1335 //qDebug("KCommandSocket::deleteSocket() "); 1337 //qDebug("KCommandSocket::deleteSocket() ");
1336 if ( mTimerSocket->isActive () ) { 1338 if ( mTimerSocket->isActive () ) {
1337 mTimerSocket->stop(); 1339 mTimerSocket->stop();
1338 mRetVal = errorTO; 1340 mRetVal = errorTO;
1339 qDebug("Connection to remote host timed out"); 1341 qDebug("Connection to remote host timed out");
1340 if ( mSocket ) { 1342 if ( mSocket ) {
1341 mSocket->close(); 1343 mSocket->close();
1342 //if ( mSocket->state() == QSocket::Idle ) 1344 //if ( mSocket->state() == QSocket::Idle )
1343 // deleteSocket(); 1345 // deleteSocket();
1344 delete mSocket; 1346 delete mSocket;
1345 mSocket = 0; 1347 mSocket = 0;
1346 } 1348 }
1347 KMessageBox::error( 0, i18n("Connection to remote\nhost timed out!\nDid you forgot to enable\nsyncing on remote host? ")); 1349 KMessageBox::error( 0, i18n("Connection to remote\nhost timed out!\nDid you forgot to enable\nsyncing on remote host? "));
1348 emit commandFinished( this, mRetVal ); 1350 emit commandFinished( this, mRetVal );
1349 return; 1351 return;
1350 } 1352 }
1351 //qDebug("KCommandSocket::deleteSocket() %d", mRetVal ); 1353 //qDebug("KCommandSocket::deleteSocket() %d", mRetVal );
1352 if ( mSocket) 1354 if ( mSocket)
1353 delete mSocket; 1355 delete mSocket;
1354 mSocket = 0; 1356 mSocket = 0;
1355 emit commandFinished( this, mRetVal ); 1357 emit commandFinished( this, mRetVal );
1356} 1358}