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