summaryrefslogtreecommitdiffabout
path: root/libkdepim
Unidiff
Diffstat (limited to 'libkdepim') (more/less context) (ignore whitespace changes)
-rw-r--r--libkdepim/kpimprefs.h18
-rw-r--r--libkdepim/ksyncmanager.cpp100
-rw-r--r--libkdepim/ksyncmanager.h20
3 files changed, 69 insertions, 69 deletions
diff --git a/libkdepim/kpimprefs.h b/libkdepim/kpimprefs.h
index 01c57a3..6f92919 100644
--- a/libkdepim/kpimprefs.h
+++ b/libkdepim/kpimprefs.h
@@ -1,85 +1,69 @@
1/* 1/*
2 This file is part of libkdepim. 2 This file is part of libkdepim.
3 Copyright (c) 2002 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2002 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program 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 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23 23
24/* 24/*
25Enhanced Version of the file for platform independent KDE tools. 25Enhanced Version of the file for platform independent KDE tools.
26Copyright (c) 2004 Ulf Schenk 26Copyright (c) 2004 Ulf Schenk
27 27
28$Id$ 28$Id$
29*/ 29*/
30 30
31#ifndef KPIMPREFS_H 31#ifndef KPIMPREFS_H
32#define KPIMPREFS_H 32#define KPIMPREFS_H
33 33
34#include <qstringlist.h> 34#include <qstringlist.h>
35 35
36#include "kprefs.h" 36#include "kprefs.h"
37 37
38class KPimPrefs : public KPrefs 38class KPimPrefs : public KPrefs
39{ 39{
40 public: 40 public:
41 41
42 KPimPrefs( const QString &name = QString::null ); 42 KPimPrefs( const QString &name = QString::null );
43 43
44 virtual ~KPimPrefs(); 44 virtual ~KPimPrefs();
45 45
46 /** Set preferences to default values */ 46 /** Set preferences to default values */
47 void usrSetDefaults(); 47 void usrSetDefaults();
48 48
49 /** Read preferences from config file */ 49 /** Read preferences from config file */
50 void usrReadConfig(); 50 void usrReadConfig();
51 51
52 /** Write preferences to config file */ 52 /** Write preferences to config file */
53 void usrWriteConfig(); 53 void usrWriteConfig();
54 54
55 55
56 public: 56 public:
57 QStringList mCustomCategories; 57 QStringList mCustomCategories;
58 58
59 // sync stuff 59
60 QString mLocalMachineName;
61 QStringList mExternSyncProfiles;
62 QStringList mSyncProfileNames;
63 bool mAskForPreferences;
64 bool mShowSyncSummary;
65 bool mShowSyncEvents;
66 bool mShowTodoInAgenda;
67 bool mWriteBackExistingOnly;
68 int mSyncAlgoPrefs;
69 int mRingSyncAlgoPrefs;
70 bool mWriteBackFile;
71 int mWriteBackInFuture;
72 QString mPhoneDevice;
73 QString mPhoneConnection;
74 QString mPhoneModel;
75 QString mLastSyncedLocalFile; // save!
76 60
77 61
78 protected: 62 protected:
79 virtual void setCategoryDefaults(); 63 virtual void setCategoryDefaults();
80 64
81 65
82 66
83}; 67};
84 68
85#endif 69#endif
diff --git a/libkdepim/ksyncmanager.cpp b/libkdepim/ksyncmanager.cpp
index 07e6761..c0cc840 100644
--- a/libkdepim/ksyncmanager.cpp
+++ b/libkdepim/ksyncmanager.cpp
@@ -1,665 +1,663 @@
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 35
36#include <qdir.h> 36#include <qdir.h>
37#include <qprogressbar.h> 37#include <qprogressbar.h>
38#include <qpopupmenu.h> 38#include <qpopupmenu.h>
39#include <qpushbutton.h> 39#include <qpushbutton.h>
40#include <qradiobutton.h> 40#include <qradiobutton.h>
41#include <qbuttongroup.h> 41#include <qbuttongroup.h>
42#include <qtimer.h> 42#include <qtimer.h>
43#include <qmessagebox.h> 43#include <qmessagebox.h>
44#include <qapplication.h> 44#include <qapplication.h>
45#include <qlineedit.h> 45#include <qlineedit.h>
46#include <qdialog.h> 46#include <qdialog.h>
47#include <qlayout.h> 47#include <qlayout.h>
48 48
49#include <klocale.h> 49#include <klocale.h>
50#include <kglobal.h> 50#include <kglobal.h>
51#include <kconfig.h> 51#include <kconfig.h>
52#include <kfiledialog.h> 52#include <kfiledialog.h>
53 53
54KSyncManager::KSyncManager(QWidget* parent, KSyncInterface* implementation, TargetApp ta, KPimPrefs* prefs, QPopupMenu* syncmenu) 54KSyncManager::KSyncManager(QWidget* parent, KSyncInterface* implementation, TargetApp ta, KPimPrefs* prefs, QPopupMenu* syncmenu)
55 : QObject(), mParent(parent), mImplementation(implementation), mTargetApp(ta), mPrefs(prefs), mSyncMenu(syncmenu) 55 : QObject(), mParent(parent), mImplementation(implementation), mTargetApp(ta), mSyncMenu(syncmenu)
56{ 56{
57 bar = new QProgressBar ( 1, 0 ); 57 bar = new QProgressBar ( 1, 0 );
58 bar->setCaption (""); 58 bar->setCaption ("");
59 59
60 int w = 300; 60 int w = 300;
61 if ( QApplication::desktop()->width() < 320 ) 61 if ( QApplication::desktop()->width() < 320 )
62 w = 220; 62 w = 220;
63 int h = bar->sizeHint().height() ; 63 int h = bar->sizeHint().height() ;
64 int dw = QApplication::desktop()->width(); 64 int dw = QApplication::desktop()->width();
65 int dh = QApplication::desktop()->height(); 65 int dh = QApplication::desktop()->height();
66 bar->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 66 bar->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
67 67
68} 68}
69 69
70KSyncManager::~KSyncManager() 70KSyncManager::~KSyncManager()
71{ 71{
72 delete bar; 72 delete bar;
73} 73}
74 74
75 75
76void KSyncManager::fillSyncMenu() 76void KSyncManager::fillSyncMenu()
77{ 77{
78 if ( mSyncMenu->count() ) 78 if ( mSyncMenu->count() )
79 mSyncMenu->clear(); 79 mSyncMenu->clear();
80 80
81 mSyncMenu->insertItem( i18n("Configure..."), 0 ); 81 mSyncMenu->insertItem( i18n("Configure..."), 0 );
82 mSyncMenu->insertSeparator(); 82 mSyncMenu->insertSeparator();
83 mSyncMenu->insertItem( i18n("Multiple sync"), 1 ); 83 mSyncMenu->insertItem( i18n("Multiple sync"), 1 );
84 mSyncMenu->insertSeparator(); 84 mSyncMenu->insertSeparator();
85 85
86 KConfig config ( locateLocal( "config","ksyncprofilesrc" ) ); 86 KConfig config ( locateLocal( "config","ksyncprofilesrc" ) );
87 config.setGroup("General"); 87 config.setGroup("General");
88 QStringList prof = config.readListEntry("SyncProfileNames"); 88 QStringList prof = config.readListEntry("SyncProfileNames");
89 mPrefs->mLocalMachineName = config.readEntry("LocalMachineName","undefined"); 89 mLocalMachineName = config.readEntry("LocalMachineName","undefined");
90 if ( prof.count() < 3 ) { 90 if ( prof.count() < 3 ) {
91 prof.clear(); 91 prof.clear();
92 prof << i18n("Sharp_DTM"); 92 prof << i18n("Sharp_DTM");
93 prof << i18n("Local_file"); 93 prof << i18n("Local_file");
94 prof << i18n("Last_file"); 94 prof << i18n("Last_file");
95 KSyncProfile* temp = new KSyncProfile (); 95 KSyncProfile* temp = new KSyncProfile ();
96 temp->setName( prof[0] ); 96 temp->setName( prof[0] );
97 temp->writeConfig(&config); 97 temp->writeConfig(&config);
98 temp->setName( prof[1] ); 98 temp->setName( prof[1] );
99 temp->writeConfig(&config); 99 temp->writeConfig(&config);
100 temp->setName( prof[2] ); 100 temp->setName( prof[2] );
101 temp->writeConfig(&config); 101 temp->writeConfig(&config);
102 config.setGroup("General"); 102 config.setGroup("General");
103 config.writeEntry("SyncProfileNames",prof); 103 config.writeEntry("SyncProfileNames",prof);
104 config.writeEntry("ExternSyncProfiles","Sharp_DTM"); 104 config.writeEntry("ExternSyncProfiles","Sharp_DTM");
105 config.sync(); 105 config.sync();
106 delete temp; 106 delete temp;
107 } 107 }
108 mPrefs->mExternSyncProfiles = config.readListEntry("ExternSyncProfiles"); 108 mExternSyncProfiles = config.readListEntry("ExternSyncProfiles");
109 mPrefs->mSyncProfileNames = prof; 109 mSyncProfileNames = prof;
110 unsigned int i; 110 unsigned int i;
111 for ( i = 0; i < prof.count(); ++i ) { 111 for ( i = 0; i < prof.count(); ++i ) {
112 mSyncMenu->insertItem( prof[i], 1000+i ); 112 mSyncMenu->insertItem( prof[i], 1000+i );
113 if ( i == 2 ) 113 if ( i == 2 )
114 mSyncMenu->insertSeparator(); 114 mSyncMenu->insertSeparator();
115 } 115 }
116 QDir app_dir; 116 QDir app_dir;
117 //US do not display SharpDTM if app is pwmpi, or no sharpfiles available 117 //US do not display SharpDTM if app is pwmpi, or no sharpfiles available
118 if ( mTargetApp == PWMPI) { 118 if ( mTargetApp == PWMPI) {
119 mSyncMenu->removeItem( 1000 ); 119 mSyncMenu->removeItem( 1000 );
120 } 120 }
121 else if (!app_dir.exists(QDir::homeDirPath()+"/Applications/dtm" ) ) { 121 else if (!app_dir.exists(QDir::homeDirPath()+"/Applications/dtm" ) ) {
122 mSyncMenu->setItemEnabled( 1000, false ); 122 mSyncMenu->setItemEnabled( 1000, false );
123 } 123 }
124 //probaly useless
125 //mView->setupExternSyncProfiles();
126} 124}
127 125
128void KSyncManager::slotSyncMenu( int action ) 126void KSyncManager::slotSyncMenu( int action )
129{ 127{
130 //qDebug("syncaction %d ", action); 128 //qDebug("syncaction %d ", action);
131 if ( action == 0 ) { 129 if ( action == 0 ) {
132 130
133 // seems to be a Qt2 event handling bug 131 // seems to be a Qt2 event handling bug
134 // syncmenu.clear causes a segfault at first time 132 // syncmenu.clear causes a segfault at first time
135 // when we call it after the main event loop, it is ok 133 // when we call it after the main event loop, it is ok
136 // same behaviour when calling OM/Pi via QCOP for the first time 134 // same behaviour when calling OM/Pi via QCOP for the first time
137 QTimer::singleShot ( 1, this, SLOT ( confSync() ) ); 135 QTimer::singleShot ( 1, this, SLOT ( confSync() ) );
138 //confSync(); 136 //confSync();
139 137
140 return; 138 return;
141 } 139 }
142 if ( action == 1 ) { 140 if ( action == 1 ) {
143 multiSync( true ); 141 multiSync( true );
144 return; 142 return;
145 } 143 }
146 144
147 if (blockSave()) 145 if (blockSave())
148 return; 146 return;
149 147
150 setBlockSave(true); 148 setBlockSave(true);
151 149
152 mCurrentSyncProfile = action - 1000 ; 150 mCurrentSyncProfile = action - 1000 ;
153 mCurrentSyncDevice = mPrefs->mSyncProfileNames[mCurrentSyncProfile] ; 151 mCurrentSyncDevice = mSyncProfileNames[mCurrentSyncProfile] ;
154 mCurrentSyncName = mPrefs->mLocalMachineName ; 152 mCurrentSyncName = mLocalMachineName ;
155 KConfig config ( locateLocal( "config","ksyncprofilesrc" ) ); 153 KConfig config ( locateLocal( "config","ksyncprofilesrc" ) );
156 KSyncProfile* temp = new KSyncProfile (); 154 KSyncProfile* temp = new KSyncProfile ();
157 temp->setName(mPrefs->mSyncProfileNames[mCurrentSyncProfile]); 155 temp->setName(mSyncProfileNames[mCurrentSyncProfile]);
158 temp->readConfig(&config); 156 temp->readConfig(&config);
159 mPrefs->mAskForPreferences = temp->getAskForPreferences(); 157 mAskForPreferences = temp->getAskForPreferences();
160 mPrefs->mSyncAlgoPrefs = temp->getSyncPrefs(); 158 mSyncAlgoPrefs = temp->getSyncPrefs();
161 mPrefs->mWriteBackFile = temp->getWriteBackFile(); 159 mWriteBackFile = temp->getWriteBackFile();
162 mPrefs->mWriteBackExistingOnly = temp->getWriteBackExisting(); 160 mWriteBackExistingOnly = temp->getWriteBackExisting();
163 mPrefs->mWriteBackInFuture = 0; 161 mWriteBackInFuture = 0;
164 if ( temp->getWriteBackFuture() ) 162 if ( temp->getWriteBackFuture() )
165 mPrefs->mWriteBackInFuture = temp->getWriteBackFutureWeeks( ); 163 mWriteBackInFuture = temp->getWriteBackFutureWeeks( );
166 mPrefs->mShowSyncSummary = temp->getShowSummaryAfterSync(); 164 mShowSyncSummary = temp->getShowSummaryAfterSync();
167 if ( action == 1000 ) { 165 if ( action == 1000 ) {
168 syncSharp(); 166 syncSharp();
169 167
170 } else if ( action == 1001 ) { 168 } else if ( action == 1001 ) {
171 syncLocalFile(); 169 syncLocalFile();
172 170
173 } else if ( action == 1002 ) { 171 } else if ( action == 1002 ) {
174 quickSyncLocalFile(); 172 quickSyncLocalFile();
175 173
176 } else if ( action >= 1003 ) { 174 } else if ( action >= 1003 ) {
177 if ( temp->getIsLocalFileSync() ) { 175 if ( temp->getIsLocalFileSync() ) {
178 switch(mTargetApp) 176 switch(mTargetApp)
179 { 177 {
180 case (KAPI): 178 case (KAPI):
181 if ( syncWithFile( temp->getRemoteFileNameAB( ), false ) ) 179 if ( syncWithFile( temp->getRemoteFileNameAB( ), false ) )
182 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileNameAB(); 180 mLastSyncedLocalFile = temp->getRemoteFileNameAB();
183 break; 181 break;
184 case (KOPI): 182 case (KOPI):
185 if ( syncWithFile( temp->getRemoteFileName( ), false ) ) 183 if ( syncWithFile( temp->getRemoteFileName( ), false ) )
186 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileName(); 184 mLastSyncedLocalFile = temp->getRemoteFileName();
187 break; 185 break;
188 case (PWMPI): 186 case (PWMPI):
189 if ( syncWithFile( temp->getRemoteFileNamePWM( ), false ) ) 187 if ( syncWithFile( temp->getRemoteFileNamePWM( ), false ) )
190 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileNamePWM(); 188 mLastSyncedLocalFile = temp->getRemoteFileNamePWM();
191 break; 189 break;
192 default: 190 default:
193 qDebug("KSyncManager::slotSyncMenu: invalid apptype selected"); 191 qDebug("KSyncManager::slotSyncMenu: invalid apptype selected");
194 break; 192 break;
195 193
196 } 194 }
197 } else { 195 } else {
198 if ( temp->getIsPhoneSync() ) { 196 if ( temp->getIsPhoneSync() ) {
199 mPrefs->mPhoneDevice = temp->getPhoneDevice( ) ; 197 mPhoneDevice = temp->getPhoneDevice( ) ;
200 mPrefs->mPhoneConnection = temp->getPhoneConnection( ); 198 mPhoneConnection = temp->getPhoneConnection( );
201 mPrefs->mPhoneModel = temp->getPhoneModel( ); 199 mPhoneModel = temp->getPhoneModel( );
202 syncPhone(); 200 syncPhone();
203 } else 201 } else
204 syncRemote( temp ); 202 syncRemote( temp );
205 203
206 } 204 }
207 } 205 }
208 delete temp; 206 delete temp;
209 setBlockSave(false); 207 setBlockSave(false);
210} 208}
211 209
212void KSyncManager::syncLocalFile() 210void KSyncManager::syncLocalFile()
213{ 211{
214 212
215 QString fn =mPrefs->mLastSyncedLocalFile; 213 QString fn =mLastSyncedLocalFile;
216 QString ext; 214 QString ext;
217 215
218 switch(mTargetApp) 216 switch(mTargetApp)
219 { 217 {
220 case (KAPI): 218 case (KAPI):
221 ext = "(*.vcf)"; 219 ext = "(*.vcf)";
222 break; 220 break;
223 case (KOPI): 221 case (KOPI):
224 ext = "(*.ics/*.vcs)"; 222 ext = "(*.ics/*.vcs)";
225 break; 223 break;
226 case (PWMPI): 224 case (PWMPI):
227 ext = "(*.pwm)"; 225 ext = "(*.pwm)";
228 break; 226 break;
229 default: 227 default:
230 qDebug("KSyncManager::syncLocalFile: invalid apptype selected"); 228 qDebug("KSyncManager::syncLocalFile: invalid apptype selected");
231 break; 229 break;
232 230
233 } 231 }
234 232
235 fn =KFileDialog:: getOpenFileName( fn, i18n("Sync filename"+ext), mParent ); 233 fn =KFileDialog:: getOpenFileName( fn, i18n("Sync filename"+ext), mParent );
236 if ( fn == "" ) 234 if ( fn == "" )
237 return; 235 return;
238 if ( syncWithFile( fn, false ) ) { 236 if ( syncWithFile( fn, false ) ) {
239 qDebug("syncLocalFile() successful "); 237 qDebug("syncLocalFile() successful ");
240 } 238 }
241 239
242} 240}
243bool KSyncManager::syncWithFile( QString fn , bool quick ) 241bool KSyncManager::syncWithFile( QString fn , bool quick )
244{ 242{
245 bool ret = false; 243 bool ret = false;
246 QFileInfo info; 244 QFileInfo info;
247 info.setFile( fn ); 245 info.setFile( fn );
248 QString mess; 246 QString mess;
249 bool loadbup = true; 247 bool loadbup = true;
250 if ( !info. exists() ) { 248 if ( !info. exists() ) {
251 mess = i18n( "Sync file \n...%1\ndoes not exist!\nNothing synced!\n").arg(fn.right( 30) ); 249 mess = i18n( "Sync file \n...%1\ndoes not exist!\nNothing synced!\n").arg(fn.right( 30) );
252 int result = QMessageBox::warning( mParent, i18n("Warning!"), 250 int result = QMessageBox::warning( mParent, i18n("Warning!"),
253 mess ); 251 mess );
254 return ret; 252 return ret;
255 } 253 }
256 int result = 0; 254 int result = 0;
257 if ( !quick ) { 255 if ( !quick ) {
258 mess = i18n("Sync with file \n...%1\nfrom:\n%2\n").arg(fn.right( 25)).arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false )); 256 mess = i18n("Sync with file \n...%1\nfrom:\n%2\n").arg(fn.right( 25)).arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false ));
259 result = QMessageBox::warning( mParent, i18n("Warning!"), 257 result = QMessageBox::warning( mParent, i18n("Warning!"),
260 mess, 258 mess,
261 i18n("Sync"), i18n("Cancel"), 0, 259 i18n("Sync"), i18n("Cancel"), 0,
262 0, 1 ); 260 0, 1 );
263 if ( result ) 261 if ( result )
264 return false; 262 return false;
265 } 263 }
266 if ( mPrefs->mAskForPreferences ) 264 if ( mAskForPreferences )
267 edit_sync_options(); 265 edit_sync_options();
268 if ( result == 0 ) { 266 if ( result == 0 ) {
269 //qDebug("Now sycing ... "); 267 //qDebug("Now sycing ... ");
270 if ( ret = mImplementation->sync( this, fn, mPrefs->mSyncAlgoPrefs ) ) 268 if ( ret = mImplementation->sync( this, fn, mSyncAlgoPrefs ) )
271 mParent->setCaption( i18n("Synchronization successful") ); 269 mParent->setCaption( i18n("Synchronization successful") );
272 else 270 else
273 mParent->setCaption( i18n("Sync cancelled or failed. Nothing synced.") ); 271 mParent->setCaption( i18n("Sync cancelled or failed. Nothing synced.") );
274 if ( ! quick ) 272 if ( ! quick )
275 mPrefs->mLastSyncedLocalFile = fn; 273 mLastSyncedLocalFile = fn;
276 mImplementation->sync_setModified(); 274 mImplementation->sync_setModified();
277 } 275 }
278 return ret; 276 return ret;
279} 277}
280void KSyncManager::quickSyncLocalFile() 278void KSyncManager::quickSyncLocalFile()
281{ 279{
282 280
283 if ( syncWithFile( mPrefs->mLastSyncedLocalFile, false ) ) { 281 if ( syncWithFile( mLastSyncedLocalFile, false ) ) {
284 qDebug("quick syncLocalFile() successful "); 282 qDebug("quick syncLocalFile() successful ");
285 283
286 } 284 }
287} 285}
288void KSyncManager::multiSync( bool askforPrefs ) 286void KSyncManager::multiSync( bool askforPrefs )
289{ 287{
290 if (blockSave()) 288 if (blockSave())
291 return; 289 return;
292 setBlockSave(true); 290 setBlockSave(true);
293 QString question = i18n("Do you really want\nto multiple sync\nwith all checked profiles?\nSyncing takes some\ntime - all profiles\nare synced twice!"); 291 QString question = i18n("Do you really want\nto multiple sync\nwith all checked profiles?\nSyncing takes some\ntime - all profiles\nare synced twice!");
294 if ( QMessageBox::information( mParent, i18n("Sync"), 292 if ( QMessageBox::information( mParent, i18n("Sync"),
295 question, 293 question,
296 i18n("Yes"), i18n("No"), 294 i18n("Yes"), i18n("No"),
297 0, 0 ) != 0 ) { 295 0, 0 ) != 0 ) {
298 setBlockSave(false); 296 setBlockSave(false);
299 mParent->setCaption(i18n("Aborted! Nothing synced!")); 297 mParent->setCaption(i18n("Aborted! Nothing synced!"));
300 return; 298 return;
301 } 299 }
302 mCurrentSyncDevice = i18n("Multiple profiles") ; 300 mCurrentSyncDevice = i18n("Multiple profiles") ;
303 mPrefs->mSyncAlgoPrefs = mPrefs->mRingSyncAlgoPrefs; 301 mSyncAlgoPrefs = mRingSyncAlgoPrefs;
304 if ( askforPrefs ) { 302 if ( askforPrefs ) {
305 edit_sync_options(); 303 edit_sync_options();
306 mPrefs->mRingSyncAlgoPrefs = mPrefs->mSyncAlgoPrefs; 304 mRingSyncAlgoPrefs = mSyncAlgoPrefs;
307 } 305 }
308 mParent->setCaption(i18n("Multiple sync started.") ); 306 mParent->setCaption(i18n("Multiple sync started.") );
309 qApp->processEvents(); 307 qApp->processEvents();
310 int num = ringSync() ; 308 int num = ringSync() ;
311 if ( num > 1 ) 309 if ( num > 1 )
312 ringSync(); 310 ringSync();
313 setBlockSave(false); 311 setBlockSave(false);
314 if ( num ) 312 if ( num )
315 mImplementation->sync_save(); 313 mImplementation->sync_save();
316 if ( num ) 314 if ( num )
317 mParent->setCaption(i18n("%1 profiles synced. Multiple sync completed!").arg(num) ); 315 mParent->setCaption(i18n("%1 profiles synced. Multiple sync completed!").arg(num) );
318 else 316 else
319 mParent->setCaption(i18n("Nothing synced! No profiles defined for multisync!")); 317 mParent->setCaption(i18n("Nothing synced! No profiles defined for multisync!"));
320 return; 318 return;
321} 319}
322int KSyncManager::ringSync() 320int KSyncManager::ringSync()
323{ 321{
324 int syncedProfiles = 0; 322 int syncedProfiles = 0;
325 unsigned int i; 323 unsigned int i;
326 QTime timer; 324 QTime timer;
327 KConfig config ( locateLocal( "config","ksyncprofilesrc" ) ); 325 KConfig config ( locateLocal( "config","ksyncprofilesrc" ) );
328 QStringList syncProfileNames = mPrefs->mSyncProfileNames; 326 QStringList syncProfileNames = mSyncProfileNames;
329 KSyncProfile* temp = new KSyncProfile (); 327 KSyncProfile* temp = new KSyncProfile ();
330 mPrefs->mAskForPreferences = false; 328 mAskForPreferences = false;
331 for ( i = 0; i < syncProfileNames.count(); ++i ) { 329 for ( i = 0; i < syncProfileNames.count(); ++i ) {
332 mCurrentSyncProfile = i; 330 mCurrentSyncProfile = i;
333 temp->setName(syncProfileNames[mCurrentSyncProfile]); 331 temp->setName(syncProfileNames[mCurrentSyncProfile]);
334 temp->readConfig(&config); 332 temp->readConfig(&config);
335 333
336 QString includeInRingSync; 334 QString includeInRingSync;
337 switch(mTargetApp) 335 switch(mTargetApp)
338 { 336 {
339 case (KAPI): 337 case (KAPI):
340 includeInRingSync = temp->getIncludeInRingSyncAB(); 338 includeInRingSync = temp->getIncludeInRingSyncAB();
341 break; 339 break;
342 case (KOPI): 340 case (KOPI):
343 includeInRingSync = temp->getIncludeInRingSync(); 341 includeInRingSync = temp->getIncludeInRingSync();
344 break; 342 break;
345 case (PWMPI): 343 case (PWMPI):
346 includeInRingSync = temp->getIncludeInRingSyncPWM(); 344 includeInRingSync = temp->getIncludeInRingSyncPWM();
347 break; 345 break;
348 default: 346 default:
349 qDebug("KSyncManager::ringSync: invalid apptype selected"); 347 qDebug("KSyncManager::ringSync: invalid apptype selected");
350 break; 348 break;
351 349
352 } 350 }
353 351
354 352
355 if ( includeInRingSync && ( i < 1 || i > 2 )) { 353 if ( includeInRingSync && ( i < 1 || i > 2 )) {
356 mParent->setCaption(i18n("Profile ")+syncProfileNames[mCurrentSyncProfile]+ i18n(" is synced ... ")); 354 mParent->setCaption(i18n("Profile ")+syncProfileNames[mCurrentSyncProfile]+ i18n(" is synced ... "));
357 ++syncedProfiles; 355 ++syncedProfiles;
358 // mPrefs->mAskForPreferences = temp->getAskForPreferences(); 356 // mAskForPreferences = temp->getAskForPreferences();
359 mPrefs->mWriteBackFile = temp->getWriteBackFile(); 357 mWriteBackFile = temp->getWriteBackFile();
360 mPrefs->mWriteBackExistingOnly = temp->getWriteBackExisting(); 358 mWriteBackExistingOnly = temp->getWriteBackExisting();
361 mPrefs->mWriteBackInFuture = 0; 359 mWriteBackInFuture = 0;
362 if ( temp->getWriteBackFuture() ) 360 if ( temp->getWriteBackFuture() )
363 mPrefs->mWriteBackInFuture = temp->getWriteBackFutureWeeks( ); 361 mWriteBackInFuture = temp->getWriteBackFutureWeeks( );
364 mPrefs->mShowSyncSummary = false; 362 mShowSyncSummary = false;
365 mCurrentSyncDevice = syncProfileNames[i] ; 363 mCurrentSyncDevice = syncProfileNames[i] ;
366 mCurrentSyncName = mPrefs->mLocalMachineName; 364 mCurrentSyncName = mLocalMachineName;
367 if ( i == 0 ) { 365 if ( i == 0 ) {
368 syncSharp(); 366 syncSharp();
369 } else { 367 } else {
370 if ( temp->getIsLocalFileSync() ) { 368 if ( temp->getIsLocalFileSync() ) {
371 switch(mTargetApp) 369 switch(mTargetApp)
372 { 370 {
373 case (KAPI): 371 case (KAPI):
374 if ( syncWithFile( temp->getRemoteFileNameAB( ), false ) ) 372 if ( syncWithFile( temp->getRemoteFileNameAB( ), false ) )
375 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileNameAB(); 373 mLastSyncedLocalFile = temp->getRemoteFileNameAB();
376 break; 374 break;
377 case (KOPI): 375 case (KOPI):
378 if ( syncWithFile( temp->getRemoteFileName( ), false ) ) 376 if ( syncWithFile( temp->getRemoteFileName( ), false ) )
379 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileName(); 377 mLastSyncedLocalFile = temp->getRemoteFileName();
380 break; 378 break;
381 case (PWMPI): 379 case (PWMPI):
382 if ( syncWithFile( temp->getRemoteFileNamePWM( ), false ) ) 380 if ( syncWithFile( temp->getRemoteFileNamePWM( ), false ) )
383 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileNamePWM(); 381 mLastSyncedLocalFile = temp->getRemoteFileNamePWM();
384 break; 382 break;
385 default: 383 default:
386 qDebug("KSyncManager::slotSyncMenu: invalid apptype selected"); 384 qDebug("KSyncManager::slotSyncMenu: invalid apptype selected");
387 break; 385 break;
388 } 386 }
389 } else { 387 } else {
390 if ( temp->getIsPhoneSync() ) { 388 if ( temp->getIsPhoneSync() ) {
391 mPrefs->mPhoneDevice = temp->getPhoneDevice( ) ; 389 mPhoneDevice = temp->getPhoneDevice( ) ;
392 mPrefs->mPhoneConnection = temp->getPhoneConnection( ); 390 mPhoneConnection = temp->getPhoneConnection( );
393 mPrefs->mPhoneModel = temp->getPhoneModel( ); 391 mPhoneModel = temp->getPhoneModel( );
394 syncPhone(); 392 syncPhone();
395 } else 393 } else
396 syncRemote( temp, false ); 394 syncRemote( temp, false );
397 395
398 } 396 }
399 } 397 }
400 timer.start(); 398 timer.start();
401 mParent->setCaption(i18n("Multiple sync in progress ... please wait!") ); 399 mParent->setCaption(i18n("Multiple sync in progress ... please wait!") );
402 while ( timer.elapsed () < 2000 ) { 400 while ( timer.elapsed () < 2000 ) {
403 qApp->processEvents(); 401 qApp->processEvents();
404#ifndef _WIN32_ 402#ifndef _WIN32_
405 sleep (1); 403 sleep (1);
406#endif 404#endif
407 } 405 }
408 406
409 } 407 }
410 408
411 } 409 }
412 delete temp; 410 delete temp;
413 return syncedProfiles; 411 return syncedProfiles;
414} 412}
415 413
416void KSyncManager::syncRemote( KSyncProfile* prof, bool ask) 414void KSyncManager::syncRemote( KSyncProfile* prof, bool ask)
417{ 415{
418 QString question; 416 QString question;
419 if ( ask ) { 417 if ( ask ) {
420 question = i18n("Do you really want\nto remote sync\nwith profile \n")+ prof->getName()+" ?\n"; 418 question = i18n("Do you really want\nto remote sync\nwith profile \n")+ prof->getName()+" ?\n";
421 if ( QMessageBox::information( mParent, i18n("Sync"), 419 if ( QMessageBox::information( mParent, i18n("Sync"),
422 question, 420 question,
423 i18n("Yes"), i18n("No"), 421 i18n("Yes"), i18n("No"),
424 0, 0 ) != 0 ) 422 0, 0 ) != 0 )
425 return; 423 return;
426 } 424 }
427 425
428 QString preCommand; 426 QString preCommand;
429 QString localTempFile; 427 QString localTempFile;
430 QString postCommand; 428 QString postCommand;
431 429
432 switch(mTargetApp) 430 switch(mTargetApp)
433 { 431 {
434 case (KAPI): 432 case (KAPI):
435 preCommand = prof->getPreSyncCommandAB(); 433 preCommand = prof->getPreSyncCommandAB();
436 postCommand = prof->getPostSyncCommandAB(); 434 postCommand = prof->getPostSyncCommandAB();
437 localTempFile = prof->getLocalTempFileAB(); 435 localTempFile = prof->getLocalTempFileAB();
438 break; 436 break;
439 case (KOPI): 437 case (KOPI):
440 preCommand = prof->getPreSyncCommand(); 438 preCommand = prof->getPreSyncCommand();
441 postCommand = prof->getPostSyncCommand(); 439 postCommand = prof->getPostSyncCommand();
442 localTempFile = prof->getLocalTempFile(); 440 localTempFile = prof->getLocalTempFile();
443 break; 441 break;
444 case (PWMPI): 442 case (PWMPI):
445 preCommand = prof->getPreSyncCommandPWM(); 443 preCommand = prof->getPreSyncCommandPWM();
446 postCommand = prof->getPostSyncCommandPWM(); 444 postCommand = prof->getPostSyncCommandPWM();
447 localTempFile = prof->getLocalTempFilePWM(); 445 localTempFile = prof->getLocalTempFilePWM();
448 break; 446 break;
449 default: 447 default:
450 qDebug("KSyncManager::syncRemote: invalid apptype selected"); 448 qDebug("KSyncManager::syncRemote: invalid apptype selected");
451 break; 449 break;
452 } 450 }
453 451
454 452
455 int fi; 453 int fi;
456 if ( (fi = preCommand.find("$PWD$")) > 0 ) { 454 if ( (fi = preCommand.find("$PWD$")) > 0 ) {
457 QString pwd = getPassword(); 455 QString pwd = getPassword();
458 preCommand = preCommand.left( fi )+ pwd + preCommand.mid( fi+5 ); 456 preCommand = preCommand.left( fi )+ pwd + preCommand.mid( fi+5 );
459 457
460 } 458 }
461 int maxlen = 30; 459 int maxlen = 30;
462 if ( QApplication::desktop()->width() > 320 ) 460 if ( QApplication::desktop()->width() > 320 )
463 maxlen += 25; 461 maxlen += 25;
464 mParent->setCaption ( i18n( "Copy remote file to local machine..." ) ); 462 mParent->setCaption ( i18n( "Copy remote file to local machine..." ) );
465 int fileSize = 0; 463 int fileSize = 0;
466 int result = system ( preCommand ); 464 int result = system ( preCommand );
467 // 0 : okay 465 // 0 : okay
468 // 256: no such file or dir 466 // 256: no such file or dir
469 // 467 //
470 qDebug("KO: Remote copy result(0 = okay): %d ",result ); 468 qDebug("KO: Remote copy result(0 = okay): %d ",result );
471 if ( result != 0 ) { 469 if ( result != 0 ) {
472 unsigned int len = maxlen; 470 unsigned int len = maxlen;
473 while ( len < preCommand.length() ) { 471 while ( len < preCommand.length() ) {
474 preCommand.insert( len , "\n" ); 472 preCommand.insert( len , "\n" );
475 len += maxlen +2; 473 len += maxlen +2;
476 } 474 }
477 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) ; 475 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) ;
478 QMessageBox::information( mParent, i18n("Sync - ERROR"), 476 QMessageBox::information( mParent, i18n("Sync - ERROR"),
479 question, 477 question,
480 i18n("Okay!")) ; 478 i18n("Okay!")) ;
481 mParent->setCaption (""); 479 mParent->setCaption ("");
482 return; 480 return;
483 } 481 }
484 mParent->setCaption ( i18n( "Copying succeed." ) ); 482 mParent->setCaption ( i18n( "Copying succeed." ) );
485 //qDebug(" file **%s** ",prof->getLocalTempFile().latin1() ); 483 //qDebug(" file **%s** ",prof->getLocalTempFile().latin1() );
486 484
487 485
488 486
489 if ( syncWithFile( localTempFile, true ) ) { 487 if ( syncWithFile( localTempFile, true ) ) {
490// Event* e = mView->getLastSyncEvent(); 488// Event* e = mView->getLastSyncEvent();
491// e->setReadOnly( false ); 489// e->setReadOnly( false );
492// e->setLocation( KOPrefs::instance()->mSyncProfileNames[mCurrentSyncProfile]); 490// e->setLocation( KOPrefs::instance()->mSyncProfileNames[mCurrentSyncProfile]);
493// e->setReadOnly( true ); 491// e->setReadOnly( true );
494 if ( mPrefs->mWriteBackFile ) { 492 if ( mWriteBackFile ) {
495 int fi; 493 int fi;
496 if ( (fi = postCommand.find("$PWD$")) > 0 ) { 494 if ( (fi = postCommand.find("$PWD$")) > 0 ) {
497 QString pwd = getPassword(); 495 QString pwd = getPassword();
498 postCommand = postCommand.left( fi )+ pwd + postCommand.mid( fi+5 ); 496 postCommand = postCommand.left( fi )+ pwd + postCommand.mid( fi+5 );
499 497
500 } 498 }
501 mParent->setCaption ( i18n( "Writing back file ..." ) ); 499 mParent->setCaption ( i18n( "Writing back file ..." ) );
502 result = system ( postCommand ); 500 result = system ( postCommand );
503 qDebug("Writing back file result: %d ", result); 501 qDebug("Writing back file result: %d ", result);
504 if ( result != 0 ) { 502 if ( result != 0 ) {
505 mParent->setCaption ( i18n( "Writing back file result: " )+QString::number( result ) ); 503 mParent->setCaption ( i18n( "Writing back file result: " )+QString::number( result ) );
506 return; 504 return;
507 } else { 505 } else {
508 mParent->setCaption ( i18n( "Syncronization sucessfully completed" ) ); 506 mParent->setCaption ( i18n( "Syncronization sucessfully completed" ) );
509 } 507 }
510 } 508 }
511 } 509 }
512 return; 510 return;
513} 511}
514 512
515void KSyncManager::edit_sync_options() 513void KSyncManager::edit_sync_options()
516{ 514{
517 //mDialogManager->showSyncOptions(); 515 //mDialogManager->showSyncOptions();
518 //mPrefs->mSyncAlgoPrefs 516 //mSyncAlgoPrefs
519 QDialog dia( mParent, "dia", true ); 517 QDialog dia( mParent, "dia", true );
520 dia.setCaption( i18n("Device: " ) +mCurrentSyncDevice ); 518 dia.setCaption( i18n("Device: " ) +mCurrentSyncDevice );
521 QButtonGroup gr ( 1, Qt::Horizontal, i18n("Sync preferences"), &dia); 519 QButtonGroup gr ( 1, Qt::Horizontal, i18n("Sync preferences"), &dia);
522 QVBoxLayout lay ( &dia ); 520 QVBoxLayout lay ( &dia );
523 lay.setSpacing( 2 ); 521 lay.setSpacing( 2 );
524 lay.setMargin( 3 ); 522 lay.setMargin( 3 );
525 lay.addWidget(&gr); 523 lay.addWidget(&gr);
526 QRadioButton loc ( i18n("Take local entry on conflict"), &gr ); 524 QRadioButton loc ( i18n("Take local entry on conflict"), &gr );
527 QRadioButton rem ( i18n("Take remote entry on conflict"), &gr ); 525 QRadioButton rem ( i18n("Take remote entry on conflict"), &gr );
528 QRadioButton newest( i18n("Take newest entry on conflict"), &gr ); 526 QRadioButton newest( i18n("Take newest entry on conflict"), &gr );
529 QRadioButton ask( i18n("Ask for every entry on conflict"), &gr ); 527 QRadioButton ask( i18n("Ask for every entry on conflict"), &gr );
530 QRadioButton f_loc( i18n("Force: Take local entry always"), &gr ); 528 QRadioButton f_loc( i18n("Force: Take local entry always"), &gr );
531 QRadioButton f_rem( i18n("Force: Take remote entry always"), &gr ); 529 QRadioButton f_rem( i18n("Force: Take remote entry always"), &gr );
532 //QRadioButton both( i18n("Take both on conflict"), &gr ); 530 //QRadioButton both( i18n("Take both on conflict"), &gr );
533 QPushButton pb ( "OK", &dia); 531 QPushButton pb ( "OK", &dia);
534 lay.addWidget( &pb ); 532 lay.addWidget( &pb );
535 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) ); 533 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) );
536 switch ( mPrefs->mSyncAlgoPrefs ) { 534 switch ( mSyncAlgoPrefs ) {
537 case 0: 535 case 0:
538 loc.setChecked( true); 536 loc.setChecked( true);
539 break; 537 break;
540 case 1: 538 case 1:
541 rem.setChecked( true ); 539 rem.setChecked( true );
542 break; 540 break;
543 case 2: 541 case 2:
544 newest.setChecked( true); 542 newest.setChecked( true);
545 break; 543 break;
546 case 3: 544 case 3:
547 ask.setChecked( true); 545 ask.setChecked( true);
548 break; 546 break;
549 case 4: 547 case 4:
550 f_loc.setChecked( true); 548 f_loc.setChecked( true);
551 break; 549 break;
552 case 5: 550 case 5:
553 f_rem.setChecked( true); 551 f_rem.setChecked( true);
554 break; 552 break;
555 case 6: 553 case 6:
556 // both.setChecked( true); 554 // both.setChecked( true);
557 break; 555 break;
558 default: 556 default:
559 break; 557 break;
560 } 558 }
561 if ( dia.exec() ) { 559 if ( dia.exec() ) {
562 mPrefs->mSyncAlgoPrefs = rem.isChecked()*1+newest.isChecked()*2+ ask.isChecked()*3+ f_loc.isChecked()*4+ f_rem.isChecked()*5;//+ both.isChecked()*6 ; 560 mSyncAlgoPrefs = rem.isChecked()*1+newest.isChecked()*2+ ask.isChecked()*3+ f_loc.isChecked()*4+ f_rem.isChecked()*5;//+ both.isChecked()*6 ;
563 } 561 }
564 562
565 563
566} 564}
567QString KSyncManager::getPassword( ) 565QString KSyncManager::getPassword( )
568{ 566{
569 QString retfile = ""; 567 QString retfile = "";
570 QDialog dia ( mParent, "input-dialog", true ); 568 QDialog dia ( mParent, "input-dialog", true );
571 QLineEdit lab ( &dia ); 569 QLineEdit lab ( &dia );
572 lab.setEchoMode( QLineEdit::Password ); 570 lab.setEchoMode( QLineEdit::Password );
573 QVBoxLayout lay( &dia ); 571 QVBoxLayout lay( &dia );
574 lay.setMargin(7); 572 lay.setMargin(7);
575 lay.setSpacing(7); 573 lay.setSpacing(7);
576 lay.addWidget( &lab); 574 lay.addWidget( &lab);
577 dia.setFixedSize( 230,50 ); 575 dia.setFixedSize( 230,50 );
578 dia.setCaption( i18n("Enter password") ); 576 dia.setCaption( i18n("Enter password") );
579 QPushButton pb ( "OK", &dia); 577 QPushButton pb ( "OK", &dia);
580 lay.addWidget( &pb ); 578 lay.addWidget( &pb );
581 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) ); 579 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) );
582 dia.show(); 580 dia.show();
583 int res = dia.exec(); 581 int res = dia.exec();
584 if ( res ) 582 if ( res )
585 retfile = lab.text(); 583 retfile = lab.text();
586 dia.hide(); 584 dia.hide();
587 qApp->processEvents(); 585 qApp->processEvents();
588 return retfile; 586 return retfile;
589 587
590} 588}
591 589
592 590
593void KSyncManager::confSync() 591void KSyncManager::confSync()
594{ 592{
595 static KSyncPrefsDialog* sp = 0; 593 static KSyncPrefsDialog* sp = 0;
596 if ( ! sp ) { 594 if ( ! sp ) {
597 sp = new KSyncPrefsDialog( mParent, "syncprefs", true ); 595 sp = new KSyncPrefsDialog( mParent, "syncprefs", true );
598 } 596 }
599 sp->usrReadConfig(); 597 sp->usrReadConfig();
600#ifndef DESKTOP_VERSION 598#ifndef DESKTOP_VERSION
601 sp->showMaximized(); 599 sp->showMaximized();
602#else 600#else
603 sp->show(); 601 sp->show();
604#endif 602#endif
605 sp->exec(); 603 sp->exec();
606 mPrefs->mSyncProfileNames = sp->getSyncProfileNames(); 604 mSyncProfileNames = sp->getSyncProfileNames();
607 mPrefs->mLocalMachineName = sp->getLocalMachineName (); 605 mLocalMachineName = sp->getLocalMachineName ();
608 fillSyncMenu(); 606 fillSyncMenu();
609} 607}
610 608
611void KSyncManager::syncSharp() 609void KSyncManager::syncSharp()
612{ 610{
613 if ( ! syncExternalApplication("sharp") ) 611 if ( ! syncExternalApplication("sharp") )
614 qDebug("ERROR sync sharp ");; 612 qDebug("ERROR sync sharp ");;
615} 613}
616 614
617bool KSyncManager::syncExternalApplication(QString resource) 615bool KSyncManager::syncExternalApplication(QString resource)
618{ 616{
619 if ( mImplementation->sync_isModified() ) 617 if ( mImplementation->sync_isModified() )
620 mImplementation->sync_save(); 618 mImplementation->sync_save();
621 619
622 if ( mPrefs->mAskForPreferences ) 620 if ( mAskForPreferences )
623 edit_sync_options(); 621 edit_sync_options();
624 622
625 qDebug("sync %s", resource.latin1()); 623 qDebug("sync %s", resource.latin1());
626 624
627 bool syncOK = mImplementation->syncExternal(this, resource); 625 bool syncOK = mImplementation->syncExternal(this, resource);
628 626
629 return syncOK; 627 return syncOK;
630 628
631} 629}
632 630
633void KSyncManager::syncPhone() 631void KSyncManager::syncPhone()
634{ 632{
635 if ( mImplementation->sync_isModified() ) 633 if ( mImplementation->sync_isModified() )
636 mImplementation->sync_save(); 634 mImplementation->sync_save();
637 635
638 qDebug("pending syncPhone(); "); 636 qDebug("pending syncPhone(); ");
639 //mView->syncPhone(); 637 //mView->syncPhone();
640 mImplementation->sync_setModified(); 638 mImplementation->sync_setModified();
641 639
642} 640}
643 641
644void KSyncManager::showProgressBar(int percentage, QString caption, int total) 642void KSyncManager::showProgressBar(int percentage, QString caption, int total)
645{ 643{
646 if (!bar->isVisible()) 644 if (!bar->isVisible())
647 { 645 {
648 bar->setCaption (caption); 646 bar->setCaption (caption);
649 bar->setTotalSteps ( total ) ; 647 bar->setTotalSteps ( total ) ;
650 648
651 bar->show(); 649 bar->show();
652 } 650 }
653 651
654 bar->setProgress( percentage ); 652 bar->setProgress( percentage );
655} 653}
656 654
657void KSyncManager::hideProgressBar() 655void KSyncManager::hideProgressBar()
658{ 656{
659 bar->hide(); 657 bar->hide();
660} 658}
661 659
662bool KSyncManager::isProgressBarCanceled() 660bool KSyncManager::isProgressBarCanceled()
663{ 661{
664 return !bar->isVisible(); 662 return !bar->isVisible();
665} 663}
diff --git a/libkdepim/ksyncmanager.h b/libkdepim/ksyncmanager.h
index 9761107..6b10016 100644
--- a/libkdepim/ksyncmanager.h
+++ b/libkdepim/ksyncmanager.h
@@ -1,129 +1,147 @@
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$Id$ 20$Id$
21*/ 21*/
22#ifndef _KSYNCMANAGER_H 22#ifndef _KSYNCMANAGER_H
23#define _KSYNCMANAGER_H 23#define _KSYNCMANAGER_H
24 24
25#include <qobject.h> 25#include <qobject.h>
26#include <qstring.h> 26#include <qstring.h>
27 27
28class QPopupMenu; 28class QPopupMenu;
29class KSyncProfile; 29class KSyncProfile;
30class KPimPrefs; 30class KPimPrefs;
31class QWidget; 31class QWidget;
32class KSyncManager; 32class KSyncManager;
33class KSyncInterface; 33class KSyncInterface;
34class QProgressBar; 34class QProgressBar;
35 35
36class KSyncManager : public QObject 36class KSyncManager : public QObject
37{ 37{
38 Q_OBJECT 38 Q_OBJECT
39 39
40 public: 40 public:
41 enum TargetApp { 41 enum TargetApp {
42 KOPI = 0, 42 KOPI = 0,
43 KAPI = 1, 43 KAPI = 1,
44 PWMPI = 2 }; 44 PWMPI = 2 };
45 45
46 46
47 KSyncManager(QWidget* parent, KSyncInterface* implementation, TargetApp ta, KPimPrefs* prefs, QPopupMenu* syncmenu); 47 KSyncManager(QWidget* parent, KSyncInterface* implementation, TargetApp ta, KPimPrefs* prefs, QPopupMenu* syncmenu);
48 ~KSyncManager() ; 48 ~KSyncManager() ;
49 49
50 bool blockSave() { return mBlockSaveFlag; } 50 bool blockSave() { return mBlockSaveFlag; }
51 void setBlockSave(bool sa) { mBlockSaveFlag = sa; } 51 void setBlockSave(bool sa) { mBlockSaveFlag = sa; }
52 52
53 void fillSyncMenu(); 53 void fillSyncMenu();
54 54
55 QString getCurrentSyncDevice() { return mCurrentSyncDevice; } 55 QString getCurrentSyncDevice() { return mCurrentSyncDevice; }
56 QString getCurrentSyncName() { return mCurrentSyncName; } 56 QString getCurrentSyncName() { return mCurrentSyncName; }
57 57
58 void showProgressBar(int percentage, QString caption = QString::null, int total=100); 58 void showProgressBar(int percentage, QString caption = QString::null, int total=100);
59 void hideProgressBar(); 59 void hideProgressBar();
60 bool isProgressBarCanceled(); 60 bool isProgressBarCanceled();
61 61
62 // sync stuff
63 QString mLocalMachineName;
64 QStringList mExternSyncProfiles;
65 QStringList mSyncProfileNames;
66 bool mAskForPreferences;
67 bool mShowSyncSummary;
68 bool mShowSyncEvents;
69 bool mShowTodoInAgenda;
70 bool mWriteBackExistingOnly;
71 int mSyncAlgoPrefs;
72 int mRingSyncAlgoPrefs;
73 bool mWriteBackFile;
74 int mWriteBackInFuture;
75 QString mPhoneDevice;
76 QString mPhoneConnection;
77 QString mPhoneModel;
78 QString mLastSyncedLocalFile; // save!
79
80
62 81
63 public slots: 82 public slots:
64 void slotSyncMenu( int ); 83 void slotSyncMenu( int );
65 84
66 private: 85 private:
67 // LR ******************************* 86 // LR *******************************
68 // sync stuff! 87 // sync stuff!
69 QString mCurrentSyncDevice; 88 QString mCurrentSyncDevice;
70 QString mCurrentSyncName; 89 QString mCurrentSyncName;
71 void quickSyncLocalFile(); 90 void quickSyncLocalFile();
72 bool syncWithFile( QString fn , bool quick ); 91 bool syncWithFile( QString fn , bool quick );
73 void syncLocalFile(); 92 void syncLocalFile();
74 void syncPhone(); 93 void syncPhone();
75 void syncSharp(); 94 void syncSharp();
76 bool syncExternalApplication(QString); 95 bool syncExternalApplication(QString);
77 void multiSync( bool askforPrefs ); 96 void multiSync( bool askforPrefs );
78 int mCurrentSyncProfile ; 97 int mCurrentSyncProfile ;
79 void syncRemote( KSyncProfile* prof, bool ask = true); 98 void syncRemote( KSyncProfile* prof, bool ask = true);
80 void edit_sync_options(); 99 void edit_sync_options();
81 int ringSync(); 100 int ringSync();
82 QString getPassword( ); 101 QString getPassword( );
83 102
84 private slots: 103 private slots:
85 void confSync(); 104 void confSync();
86 // ********************* 105 // *********************
87 106
88 private: 107 private:
89 bool mBlockSaveFlag; 108 bool mBlockSaveFlag;
90 109
91 110
92 QWidget* mParent; 111 QWidget* mParent;
93 KSyncInterface* mImplementation; 112 KSyncInterface* mImplementation;
94 TargetApp mTargetApp; 113 TargetApp mTargetApp;
95 KPimPrefs* mPrefs;
96 QPopupMenu* mSyncMenu; 114 QPopupMenu* mSyncMenu;
97 115
98 QProgressBar* bar; 116 QProgressBar* bar;
99 117
100 118
101 119
102 120
103 121
104}; 122};
105 123
106 124
107class KSyncInterface 125class KSyncInterface
108{ 126{
109 public: 127 public:
110 virtual bool sync(KSyncManager* manager, QString filename, int mode) = 0; 128 virtual bool sync(KSyncManager* manager, QString filename, int mode) = 0;
111 129
112 virtual bool syncExternal(KSyncManager* manager, QString resource) 130 virtual bool syncExternal(KSyncManager* manager, QString resource)
113 { 131 {
114 // empty implementation, because some syncable applications do not have an external(sharpdtm) syncmode, like pwmanager. 132 // empty implementation, because some syncable applications do not have an external(sharpdtm) syncmode, like pwmanager.
115 return false; 133 return false;
116 } 134 }
117 135
118 //called by the syncmanager to indicate that the work has to be marked as dirty. 136 //called by the syncmanager to indicate that the work has to be marked as dirty.
119 virtual void sync_setModified() = 0; 137 virtual void sync_setModified() = 0;
120 138
121 //called by the syncmanager to ask if the dirty flag is set. 139 //called by the syncmanager to ask if the dirty flag is set.
122 virtual bool sync_isModified() = 0; 140 virtual bool sync_isModified() = 0;
123 141
124 //called by the syncmanager to indicate that the work has to be saved. 142 //called by the syncmanager to indicate that the work has to be saved.
125 virtual void sync_save() = 0; 143 virtual void sync_save() = 0;
126}; 144};
127 145
128 146
129#endif 147#endif