summaryrefslogtreecommitdiffabout
path: root/kabc
Unidiff
Diffstat (limited to 'kabc') (more/less context) (ignore whitespace changes)
-rw-r--r--kabc/addressbook.cpp2
-rw-r--r--kabc/plugins/dir/resourcedir.cpp2
-rw-r--r--kabc/plugins/file/resourcefile.cpp28
-rw-r--r--kabc/plugins/ldap/resourceldap.cpp2
-rw-r--r--kabc/plugins/opie/resourceopie.cpp2
-rw-r--r--kabc/plugins/qtopia/resourceqtopia.cpp2
-rw-r--r--kabc/plugins/sharpdtm/resourcesharpdtm.cpp2
-rw-r--r--kabc/resource.cpp5
-rw-r--r--kabc/resource.h2
-rw-r--r--kabc/stdaddressbook.cpp36
-rw-r--r--kabc/syncprefwidget.cpp681
-rw-r--r--kabc/syncprefwidget.h138
12 files changed, 415 insertions, 487 deletions
diff --git a/kabc/addressbook.cpp b/kabc/addressbook.cpp
index 20310a0..c61b387 100644
--- a/kabc/addressbook.cpp
+++ b/kabc/addressbook.cpp
@@ -142,193 +142,193 @@ bool AddressBook::Iterator::operator!=( const Iterator &it )
142{ 142{
143 return ( d->mIt != it.d->mIt ); 143 return ( d->mIt != it.d->mIt );
144} 144}
145 145
146 146
147AddressBook::ConstIterator::ConstIterator() 147AddressBook::ConstIterator::ConstIterator()
148{ 148{
149 d = new ConstIteratorData; 149 d = new ConstIteratorData;
150} 150}
151 151
152AddressBook::ConstIterator::ConstIterator( const AddressBook::ConstIterator &i ) 152AddressBook::ConstIterator::ConstIterator( const AddressBook::ConstIterator &i )
153{ 153{
154 d = new ConstIteratorData; 154 d = new ConstIteratorData;
155 d->mIt = i.d->mIt; 155 d->mIt = i.d->mIt;
156} 156}
157 157
158AddressBook::ConstIterator &AddressBook::ConstIterator::operator=( const AddressBook::ConstIterator &i ) 158AddressBook::ConstIterator &AddressBook::ConstIterator::operator=( const AddressBook::ConstIterator &i )
159{ 159{
160 if( this == &i ) return *this; // guard for self assignment 160 if( this == &i ) return *this; // guard for self assignment
161 delete d; // delete the old data because the Iterator was really constructed before 161 delete d; // delete the old data because the Iterator was really constructed before
162 d = new ConstIteratorData; 162 d = new ConstIteratorData;
163 d->mIt = i.d->mIt; 163 d->mIt = i.d->mIt;
164 return *this; 164 return *this;
165} 165}
166 166
167AddressBook::ConstIterator::~ConstIterator() 167AddressBook::ConstIterator::~ConstIterator()
168{ 168{
169 delete d; 169 delete d;
170} 170}
171 171
172const Addressee &AddressBook::ConstIterator::operator*() const 172const Addressee &AddressBook::ConstIterator::operator*() const
173{ 173{
174 return *(d->mIt); 174 return *(d->mIt);
175} 175}
176 176
177const Addressee* AddressBook::ConstIterator::operator->() const 177const Addressee* AddressBook::ConstIterator::operator->() const
178{ 178{
179 return &(*(d->mIt)); 179 return &(*(d->mIt));
180} 180}
181 181
182AddressBook::ConstIterator &AddressBook::ConstIterator::operator++() 182AddressBook::ConstIterator &AddressBook::ConstIterator::operator++()
183{ 183{
184 (d->mIt)++; 184 (d->mIt)++;
185 return *this; 185 return *this;
186} 186}
187 187
188AddressBook::ConstIterator &AddressBook::ConstIterator::operator++(int) 188AddressBook::ConstIterator &AddressBook::ConstIterator::operator++(int)
189{ 189{
190 (d->mIt)++; 190 (d->mIt)++;
191 return *this; 191 return *this;
192} 192}
193 193
194AddressBook::ConstIterator &AddressBook::ConstIterator::operator--() 194AddressBook::ConstIterator &AddressBook::ConstIterator::operator--()
195{ 195{
196 (d->mIt)--; 196 (d->mIt)--;
197 return *this; 197 return *this;
198} 198}
199 199
200AddressBook::ConstIterator &AddressBook::ConstIterator::operator--(int) 200AddressBook::ConstIterator &AddressBook::ConstIterator::operator--(int)
201{ 201{
202 (d->mIt)--; 202 (d->mIt)--;
203 return *this; 203 return *this;
204} 204}
205 205
206bool AddressBook::ConstIterator::operator==( const ConstIterator &it ) 206bool AddressBook::ConstIterator::operator==( const ConstIterator &it )
207{ 207{
208 return ( d->mIt == it.d->mIt ); 208 return ( d->mIt == it.d->mIt );
209} 209}
210 210
211bool AddressBook::ConstIterator::operator!=( const ConstIterator &it ) 211bool AddressBook::ConstIterator::operator!=( const ConstIterator &it )
212{ 212{
213 return ( d->mIt != it.d->mIt ); 213 return ( d->mIt != it.d->mIt );
214} 214}
215 215
216 216
217AddressBook::AddressBook() 217AddressBook::AddressBook()
218{ 218{
219 init(0, "contact"); 219 init(0, "contact");
220} 220}
221 221
222AddressBook::AddressBook( const QString &config ) 222AddressBook::AddressBook( const QString &config )
223{ 223{
224 init(config, "contact"); 224 init(config, "contact");
225} 225}
226 226
227AddressBook::AddressBook( const QString &config, const QString &family ) 227AddressBook::AddressBook( const QString &config, const QString &family )
228{ 228{
229 init(config, family); 229 init(config, family);
230 230
231} 231}
232 232
233// the default family is "contact" 233// the default family is "contact"
234void AddressBook::init(const QString &config, const QString &family ) 234void AddressBook::init(const QString &config, const QString &family )
235{ 235{
236 d = new AddressBookData; 236 d = new AddressBookData;
237 if (config != 0) { 237 if (config != 0) {
238 d->mConfig = new KConfig( config ); 238 d->mConfig = new KConfig( locateLocal("config", config) );
239// qDebug("AddressBook::init 1 config=%s",config.latin1() ); 239// qDebug("AddressBook::init 1 config=%s",config.latin1() );
240 } 240 }
241 else { 241 else {
242 d->mConfig = 0; 242 d->mConfig = 0;
243// qDebug("AddressBook::init 1 config=0"); 243// qDebug("AddressBook::init 1 config=0");
244 } 244 }
245 245
246//US d->mErrorHandler = 0; 246//US d->mErrorHandler = 0;
247 d->mManager = new KRES::Manager<Resource>( family, false ); 247 d->mManager = new KRES::Manager<Resource>( family, false );
248 d->mManager->readConfig( d->mConfig ); 248 d->mManager->readConfig( d->mConfig );
249} 249}
250 250
251AddressBook::~AddressBook() 251AddressBook::~AddressBook()
252{ 252{
253 delete d->mConfig; d->mConfig = 0; 253 delete d->mConfig; d->mConfig = 0;
254 delete d->mManager; d->mManager = 0; 254 delete d->mManager; d->mManager = 0;
255//US delete d->mErrorHandler; d->mErrorHandler = 0; 255//US delete d->mErrorHandler; d->mErrorHandler = 0;
256 delete d; d = 0; 256 delete d; d = 0;
257} 257}
258 258
259bool AddressBook::load() 259bool AddressBook::load()
260{ 260{
261 261
262 262
263 clear(); 263 clear();
264 264
265 KRES::Manager<Resource>::ActiveIterator it; 265 KRES::Manager<Resource>::ActiveIterator it;
266 bool ok = true; 266 bool ok = true;
267 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it ) 267 for ( it = d->mManager->activeBegin(); it != d->mManager->activeEnd(); ++it )
268 if ( !(*it)->load() ) { 268 if ( !(*it)->load() ) {
269 error( i18n("Unable to load resource '%1'").arg( (*it)->resourceName() ) ); 269 error( i18n("Unable to load resource '%1'").arg( (*it)->resourceName() ) );
270 ok = false; 270 ok = false;
271 } 271 }
272 272
273 // mark all addressees as unchanged 273 // mark all addressees as unchanged
274 Addressee::List::Iterator addrIt; 274 Addressee::List::Iterator addrIt;
275 for ( addrIt = d->mAddressees.begin(); addrIt != d->mAddressees.end(); ++addrIt ) 275 for ( addrIt = d->mAddressees.begin(); addrIt != d->mAddressees.end(); ++addrIt )
276 (*addrIt).setChanged( false ); 276 (*addrIt).setChanged( false );
277 277
278 return ok; 278 return ok;
279} 279}
280 280
281bool AddressBook::save( Ticket *ticket ) 281bool AddressBook::save( Ticket *ticket )
282{ 282{
283 kdDebug(5700) << "AddressBook::save()"<< endl; 283 kdDebug(5700) << "AddressBook::save()"<< endl;
284 284
285 if ( ticket->resource() ) { 285 if ( ticket->resource() ) {
286 deleteRemovedAddressees(); 286 deleteRemovedAddressees();
287 287
288 return ticket->resource()->save( ticket ); 288 return ticket->resource()->save( ticket );
289 } 289 }
290 290
291 return false; 291 return false;
292} 292}
293 293
294AddressBook::Iterator AddressBook::begin() 294AddressBook::Iterator AddressBook::begin()
295{ 295{
296 Iterator it = Iterator(); 296 Iterator it = Iterator();
297 it.d->mIt = d->mAddressees.begin(); 297 it.d->mIt = d->mAddressees.begin();
298 return it; 298 return it;
299} 299}
300 300
301AddressBook::ConstIterator AddressBook::begin() const 301AddressBook::ConstIterator AddressBook::begin() const
302{ 302{
303 ConstIterator it = ConstIterator(); 303 ConstIterator it = ConstIterator();
304 it.d->mIt = d->mAddressees.begin(); 304 it.d->mIt = d->mAddressees.begin();
305 return it; 305 return it;
306} 306}
307 307
308AddressBook::Iterator AddressBook::end() 308AddressBook::Iterator AddressBook::end()
309{ 309{
310 Iterator it = Iterator(); 310 Iterator it = Iterator();
311 it.d->mIt = d->mAddressees.end(); 311 it.d->mIt = d->mAddressees.end();
312 return it; 312 return it;
313} 313}
314 314
315AddressBook::ConstIterator AddressBook::end() const 315AddressBook::ConstIterator AddressBook::end() const
316{ 316{
317 ConstIterator it = ConstIterator(); 317 ConstIterator it = ConstIterator();
318 it.d->mIt = d->mAddressees.end(); 318 it.d->mIt = d->mAddressees.end();
319 return it; 319 return it;
320} 320}
321 321
322void AddressBook::clear() 322void AddressBook::clear()
323{ 323{
324 d->mAddressees.clear(); 324 d->mAddressees.clear();
325} 325}
326 326
327Ticket *AddressBook::requestSaveTicket( Resource *resource ) 327Ticket *AddressBook::requestSaveTicket( Resource *resource )
328{ 328{
329 kdDebug(5700) << "AddressBook::requestSaveTicket()" << endl; 329 kdDebug(5700) << "AddressBook::requestSaveTicket()" << endl;
330 330
331 if ( !resource ) 331 if ( !resource )
332 { 332 {
333 qDebug("AddressBook::requestSaveTicket no resource" ); 333 qDebug("AddressBook::requestSaveTicket no resource" );
334 resource = standardResource(); 334 resource = standardResource();
diff --git a/kabc/plugins/dir/resourcedir.cpp b/kabc/plugins/dir/resourcedir.cpp
index 29f1e3a..eccd482 100644
--- a/kabc/plugins/dir/resourcedir.cpp
+++ b/kabc/plugins/dir/resourcedir.cpp
@@ -1,170 +1,170 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2002 Tobias Koenig <tokoe@kde.org> 3 Copyright (c) 2002 Tobias Koenig <tokoe@kde.org>
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/* 21/*
22Enhanced Version of the file for platform independent KDE tools. 22Enhanced Version of the file for platform independent KDE tools.
23Copyright (c) 2004 Ulf Schenk 23Copyright (c) 2004 Ulf Schenk
24 24
25$Id$ 25$Id$
26*/ 26*/
27 27
28 28
29#include <sys/types.h> 29#include <sys/types.h>
30#include <sys/stat.h> 30#include <sys/stat.h>
31#ifndef _WIN32_ 31#ifndef _WIN32_
32#include <unistd.h> 32#include <unistd.h>
33#endif 33#endif
34 34
35#include <qregexp.h> 35#include <qregexp.h>
36#include <qtimer.h> 36#include <qtimer.h>
37#include <qwidget.h> 37#include <qwidget.h>
38 38
39#include <kapplication.h> 39#include <kapplication.h>
40#include <kconfig.h> 40#include <kconfig.h>
41#include <kdebug.h> 41#include <kdebug.h>
42//US #include <kgenericfactory.h> 42//US #include <kgenericfactory.h>
43#include <kglobal.h> 43#include <kglobal.h>
44#include <klocale.h> 44#include <klocale.h>
45#include <kstandarddirs.h> 45#include <kstandarddirs.h>
46#include <kurlrequester.h> 46#include <kurlrequester.h>
47#include <kmessagebox.h> 47#include <kmessagebox.h>
48 48
49#include "addressbook.h" 49#include "addressbook.h"
50 50
51#include "formatfactory.h" 51#include "formatfactory.h"
52 52
53#include "resourcedirconfig.h" 53#include "resourcedirconfig.h"
54#include "stdaddressbook.h" 54#include "stdaddressbook.h"
55 55
56//US 56//US
57#include <qdir.h> 57#include <qdir.h>
58 58
59#include "resourcedir.h" 59#include "resourcedir.h"
60#include "syncprefwidget.h" 60#include "syncprefwidget.h"
61 61
62using namespace KABC; 62using namespace KABC;
63 63
64extern "C" 64extern "C"
65#ifdef _WIN32_ 65#ifdef _WIN32_
66__declspec(dllexport) 66__declspec(dllexport)
67#else 67#else
68{ 68{
69#endif 69#endif
70 70
71//US void *init_kabc_dir() 71//US void *init_kabc_dir()
72 void *init_microkabc_dir() 72 void *init_microkabc_dir()
73 { 73 {
74 return new KRES::PluginFactory<ResourceDir,ResourceDirConfig, SyncPrefWidget>(); 74 return new KRES::PluginFactory<ResourceDir,ResourceDirConfig, SyncPrefWidgetContainer>();
75 } 75 }
76#ifndef _WIN32_ 76#ifndef _WIN32_
77} 77}
78#endif 78#endif
79 79
80ResourceDir::ResourceDir( const KConfig *config, bool syncable ) 80ResourceDir::ResourceDir( const KConfig *config, bool syncable )
81 : Resource( config, syncable ) 81 : Resource( config, syncable )
82{ 82{
83 QString path; 83 QString path;
84 84
85 KConfig *cfg = (KConfig *)config; 85 KConfig *cfg = (KConfig *)config;
86 if ( cfg ) { 86 if ( cfg ) {
87//US path = config->readEntry( "FilePath" ); 87//US path = config->readEntry( "FilePath" );
88 path = cfg->readEntry( "FilePath", StdAddressBook::directoryName() ); 88 path = cfg->readEntry( "FilePath", StdAddressBook::directoryName() );
89//US mFormatName = config->readEntry( "FileFormat" ); 89//US mFormatName = config->readEntry( "FileFormat" );
90 mFormatName = cfg->readEntry( "FileFormat", "vcard" ); 90 mFormatName = cfg->readEntry( "FileFormat", "vcard" );
91 } else { 91 } else {
92 path = StdAddressBook::directoryName(); 92 path = StdAddressBook::directoryName();
93 mFormatName = "vcard"; 93 mFormatName = "vcard";
94 } 94 }
95 95
96 96
97 FormatFactory *factory = FormatFactory::self(); 97 FormatFactory *factory = FormatFactory::self();
98 mFormat = factory->format( mFormatName ); 98 mFormat = factory->format( mFormatName );
99 99
100 if ( !mFormat ) { 100 if ( !mFormat ) {
101 mFormatName = "vcard"; 101 mFormatName = "vcard";
102 mFormat = factory->format( mFormatName ); 102 mFormat = factory->format( mFormatName );
103 } 103 }
104 104
105/*US 105/*US
106//US qDebug("ResourceDir::ResourceDir initialized with format %s ", mFormatName.latin1()); 106//US qDebug("ResourceDir::ResourceDir initialized with format %s ", mFormatName.latin1());
107 if (mFormatName == "vcard") 107 if (mFormatName == "vcard")
108 mFormat = new VCardFormatPlugin2(); 108 mFormat = new VCardFormatPlugin2();
109 else if (mFormatName == "binary") 109 else if (mFormatName == "binary")
110 mFormat = new BinaryFormat(); 110 mFormat = new BinaryFormat();
111 else 111 else
112 qDebug("ResourceFile::init format unknown !!! %s ", mFormatName.latin1()); 112 qDebug("ResourceFile::init format unknown !!! %s ", mFormatName.latin1());
113*/ 113*/
114 114
115 connect( &mDirWatch, SIGNAL( dirty(const QString&) ), SLOT( pathChanged() ) ); 115 connect( &mDirWatch, SIGNAL( dirty(const QString&) ), SLOT( pathChanged() ) );
116 connect( &mDirWatch, SIGNAL( created(const QString&) ), SLOT( pathChanged() ) ); 116 connect( &mDirWatch, SIGNAL( created(const QString&) ), SLOT( pathChanged() ) );
117 connect( &mDirWatch, SIGNAL( deleted(const QString&) ), SLOT( pathChanged() ) ); 117 connect( &mDirWatch, SIGNAL( deleted(const QString&) ), SLOT( pathChanged() ) );
118 118
119 setPath( path ); 119 setPath( path );
120} 120}
121 121
122ResourceDir::~ResourceDir() 122ResourceDir::~ResourceDir()
123{ 123{
124 delete mFormat; 124 delete mFormat;
125 mFormat = 0; 125 mFormat = 0;
126} 126}
127 127
128void ResourceDir::writeConfig( KConfig *config ) 128void ResourceDir::writeConfig( KConfig *config )
129{ 129{
130 config->setGroup( "Resource_" + identifier() ); 130 config->setGroup( "Resource_" + identifier() );
131 Resource::writeConfig( config ); 131 Resource::writeConfig( config );
132 132
133 config->writeEntry( "FilePath", mPath ); 133 config->writeEntry( "FilePath", mPath );
134 config->writeEntry( "FileFormat", mFormatName ); 134 config->writeEntry( "FileFormat", mFormatName );
135} 135}
136 136
137Ticket *ResourceDir::requestSaveTicket() 137Ticket *ResourceDir::requestSaveTicket()
138{ 138{
139 kdDebug(5700) << "ResourceDir::requestSaveTicket()" << endl; 139 kdDebug(5700) << "ResourceDir::requestSaveTicket()" << endl;
140 140
141 if ( !addressBook() ) return 0; 141 if ( !addressBook() ) return 0;
142 142
143 if ( !lock( mPath ) ) { 143 if ( !lock( mPath ) ) {
144 kdDebug(5700) << "ResourceDir::requestSaveTicket(): Unable to lock path '" 144 kdDebug(5700) << "ResourceDir::requestSaveTicket(): Unable to lock path '"
145 << mPath << "'" << endl; 145 << mPath << "'" << endl;
146 return 0; 146 return 0;
147 } 147 }
148 return createTicket( this ); 148 return createTicket( this );
149} 149}
150 150
151 151
152bool ResourceDir::doOpen() 152bool ResourceDir::doOpen()
153{ 153{
154 QDir dir( mPath ); 154 QDir dir( mPath );
155 if ( !dir.exists() ) { // no directory available 155 if ( !dir.exists() ) { // no directory available
156 return dir.mkdir( dir.path() ); 156 return dir.mkdir( dir.path() );
157 } else { 157 } else {
158 QString testName = dir.entryList( QDir::Files )[0]; 158 QString testName = dir.entryList( QDir::Files )[0];
159 if ( testName.isNull() || testName.isEmpty() ) // no file in directory 159 if ( testName.isNull() || testName.isEmpty() ) // no file in directory
160 return true; 160 return true;
161 161
162 QFile file( mPath + "/" + testName ); 162 QFile file( mPath + "/" + testName );
163 if ( file.open( IO_ReadOnly ) ) 163 if ( file.open( IO_ReadOnly ) )
164 return true; 164 return true;
165 165
166 if ( file.size() == 0 ) 166 if ( file.size() == 0 )
167 return true; 167 return true;
168 168
169 bool ok = mFormat->checkFormat( &file ); 169 bool ok = mFormat->checkFormat( &file );
170 file.close(); 170 file.close();
diff --git a/kabc/plugins/file/resourcefile.cpp b/kabc/plugins/file/resourcefile.cpp
index d98efc8..da2e4d7 100644
--- a/kabc/plugins/file/resourcefile.cpp
+++ b/kabc/plugins/file/resourcefile.cpp
@@ -1,222 +1,212 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
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/* 21/*
22Enhanced Version of the file for platform independent KDE tools. 22Enhanced Version of the file for platform independent KDE tools.
23Copyright (c) 2004 Ulf Schenk 23Copyright (c) 2004 Ulf Schenk
24 24
25$Id$ 25$Id$
26*/ 26*/
27 27
28#include <sys/types.h> 28#include <sys/types.h>
29#include <sys/stat.h> 29#include <sys/stat.h>
30#ifndef _WIN32_ 30#ifndef _WIN32_
31#include <unistd.h> 31#include <unistd.h>
32#endif 32#endif
33 33
34#include <qfile.h> 34#include <qfile.h>
35#include <qfileinfo.h> 35#include <qfileinfo.h>
36#include <qregexp.h> 36#include <qregexp.h>
37#include <qtimer.h> 37#include <qtimer.h>
38 38
39#include <kapplication.h> 39#include <kapplication.h>
40#include <kconfig.h> 40#include <kconfig.h>
41#include <kdebug.h> 41#include <kdebug.h>
42#include <klocale.h> 42#include <klocale.h>
43//US #include <ksavefile.h> 43//US #include <ksavefile.h>
44#include <kstandarddirs.h> 44#include <kstandarddirs.h>
45#include <kmessagebox.h> 45#include <kmessagebox.h>
46 46
47#include "formatfactory.h" 47#include "formatfactory.h"
48 48
49#include "resource.h" 49#include "resource.h"
50#include "resourcefileconfig.h" 50#include "resourcefileconfig.h"
51#include "stdaddressbook.h" 51#include "stdaddressbook.h"
52 52
53#include "resourcefile.h" 53#include "resourcefile.h"
54#include "syncprefwidget.h" 54#include "syncprefwidget.h"
55 55
56 56
57using namespace KABC; 57using namespace KABC;
58 58
59extern "C" 59extern "C"
60#ifdef _WIN32_ 60#ifdef _WIN32_
61__declspec(dllexport) 61__declspec(dllexport)
62#else 62#else
63{ 63{
64#endif 64#endif
65 65
66//US void *init_kabc_file() 66//US void *init_kabc_file()
67 void *init_microkabc_file() 67 void *init_microkabc_file()
68 { 68 {
69 return new KRES::PluginFactory<ResourceFile,ResourceFileConfig, SyncPrefWidget>(); 69 return new KRES::PluginFactory<ResourceFile,ResourceFileConfig, SyncPrefWidgetContainer>();
70 } 70 }
71#ifndef _WIN32_ 71#ifndef _WIN32_
72} 72}
73#endif 73#endif
74 74
75ResourceFile::ResourceFile( const KConfig *config, bool syncable ) 75ResourceFile::ResourceFile( const KConfig *config, bool syncable )
76 : Resource( config, syncable ) , mFormat( 0 ) 76 : Resource( config, syncable ) , mFormat( 0 )
77{ 77{
78 QString fileName, formatName; 78 QString fileName, formatName, default_fileName;
79
80 if (syncable == true)
81 default_fileName = "/home/polo/kdepim/apps/kabc/localfile.vcf";
82 else
83 default_fileName = StdAddressBook::fileName();
79 84
80 KConfig *cfg = (KConfig *)config; 85 KConfig *cfg = (KConfig *)config;
81 if ( cfg ) { 86 if ( cfg ) {
82 fileName = cfg->readEntry( "FileName", StdAddressBook::fileName() ); 87 fileName = cfg->readEntry( "FileName", default_fileName );
83 formatName = cfg->readEntry( "FileFormat", "vcard" ); 88 formatName = cfg->readEntry( "FileFormat", "vcard" );
84// qDebug("ResourceFile::ResourceFile : 1 %s, %s", fileName.latin1(), formatName.latin1() );
85 } else { 89 } else {
86 fileName = StdAddressBook::fileName(); 90 fileName = default_fileName;
87 formatName = "vcard"; 91 formatName = "vcard";
88// qDebug("ResourceFile::ResourceFile : 2 %s, %s", fileName.latin1(), formatName.latin1() );
89 } 92 }
90 93
91 init( fileName, formatName ); 94 init( fileName, formatName );
92} 95}
93 96
94ResourceFile::ResourceFile( const QString &fileName, bool syncable , 97ResourceFile::ResourceFile( const QString &fileName, bool syncable ,
95 const QString &formatName ) 98 const QString &formatName )
96 : Resource( 0, syncable ) 99 : Resource( 0, syncable )
97{ 100{
98// qDebug("ResourceFile::ResourceFile : 3 %s, %s", fileName.latin1(), formatName.latin1()); 101// qDebug("ResourceFile::ResourceFile : 3 %s, %s", fileName.latin1(), formatName.latin1());
99 init( fileName, formatName ); 102 init( fileName, formatName );
100} 103}
101 104
102void ResourceFile::init( const QString &fileName, const QString &formatName ) 105void ResourceFile::init( const QString &fileName, const QString &formatName )
103{ 106{
104 mFormatName = formatName; 107 mFormatName = formatName;
105 108
106 FormatFactory *factory = FormatFactory::self(); 109 FormatFactory *factory = FormatFactory::self();
107 mFormat = factory->format( mFormatName ); 110 mFormat = factory->format( mFormatName );
108 111
109 if ( !mFormat ) { 112 if ( !mFormat ) {
110 mFormatName = "vcard"; 113 mFormatName = "vcard";
111 mFormat = factory->format( mFormatName ); 114 mFormat = factory->format( mFormatName );
112 } 115 }
113 116
114/*US
115//US qDebug("ResourceFile::init initialized with format %s ", formatName.latin1());
116 if (mFormatName == "vcard") {
117 mFormat = new VCardFormatPlugin2();
118// qDebug("ResourceFile::init format VCardFormatPlugin2");
119 }
120 else if (mFormatName == "binary") {
121 mFormat = new BinaryFormat();
122// qDebug("ResourceFile::init format BinaryFormat");
123 }
124 else
125 qDebug("ResourceFile::init format unknown !!! %s ", formatName.latin1());
126*/
127 117
128 connect( &mDirWatch, SIGNAL( dirty(const QString&) ), SLOT( fileChanged() ) ); 118 connect( &mDirWatch, SIGNAL( dirty(const QString&) ), SLOT( fileChanged() ) );
129 connect( &mDirWatch, SIGNAL( created(const QString&) ), SLOT( fileChanged() ) ); 119 connect( &mDirWatch, SIGNAL( created(const QString&) ), SLOT( fileChanged() ) );
130 connect( &mDirWatch, SIGNAL( deleted(const QString&) ), SLOT( fileChanged() ) ); 120 connect( &mDirWatch, SIGNAL( deleted(const QString&) ), SLOT( fileChanged() ) );
131 121
132 setFileName( fileName ); 122 setFileName( fileName );
133} 123}
134 124
135ResourceFile::~ResourceFile() 125ResourceFile::~ResourceFile()
136{ 126{
137 delete mFormat; 127 delete mFormat;
138 mFormat = 0; 128 mFormat = 0;
139} 129}
140 130
141void ResourceFile::writeConfig( KConfig *config ) 131void ResourceFile::writeConfig( KConfig *config )
142{ 132{
143 133
144 config->setGroup( "Resource_" + identifier() ); 134 config->setGroup( "Resource_" + identifier() );
145 Resource::writeConfig( config ); 135 Resource::writeConfig( config );
146 136
147 config->writeEntry( "FileName", mFileName ); 137 config->writeEntry( "FileName", mFileName );
148 config->writeEntry( "FileFormat", mFormatName ); 138 config->writeEntry( "FileFormat", mFormatName );
149 139
150// qDebug("ResourceFile::writeConfig format %s, %s", mFileName.latin1(), mFormatName.latin1()); 140// qDebug("ResourceFile::writeConfig format %s, %s", mFileName.latin1(), mFormatName.latin1());
151 141
152} 142}
153 143
154Ticket *ResourceFile::requestSaveTicket() 144Ticket *ResourceFile::requestSaveTicket()
155{ 145{
156 kdDebug(5700) << "ResourceFile::requestSaveTicket()" << endl; 146 kdDebug(5700) << "ResourceFile::requestSaveTicket()" << endl;
157 147
158 if ( !addressBook() ) return 0; 148 if ( !addressBook() ) return 0;
159 149
160 if ( !lock( mFileName ) ) { 150 if ( !lock( mFileName ) ) {
161 kdDebug(5700) << "ResourceFile::requestSaveTicket(): Unable to lock file '" 151 kdDebug(5700) << "ResourceFile::requestSaveTicket(): Unable to lock file '"
162 << mFileName << "'" << endl; 152 << mFileName << "'" << endl;
163 return 0; 153 return 0;
164 } 154 }
165 return createTicket( this ); 155 return createTicket( this );
166} 156}
167 157
168 158
169bool ResourceFile::doOpen() 159bool ResourceFile::doOpen()
170{ 160{
171 QFile file( mFileName ); 161 QFile file( mFileName );
172 162
173 if ( !file.exists() ) { 163 if ( !file.exists() ) {
174 // try to create the file 164 // try to create the file
175 bool ok = file.open( IO_WriteOnly ); 165 bool ok = file.open( IO_WriteOnly );
176 if ( ok ) 166 if ( ok )
177 file.close(); 167 file.close();
178 168
179 return ok; 169 return ok;
180 } else { 170 } else {
181 if ( !file.open( IO_ReadWrite ) ) 171 if ( !file.open( IO_ReadWrite ) )
182 return false; 172 return false;
183 173
184 if ( file.size() == 0 ) { 174 if ( file.size() == 0 ) {
185 file.close(); 175 file.close();
186 return true; 176 return true;
187 } 177 }
188 178
189 bool ok = mFormat->checkFormat( &file ); 179 bool ok = mFormat->checkFormat( &file );
190 file.close(); 180 file.close();
191 181
192 return ok; 182 return ok;
193 } 183 }
194} 184}
195 185
196void ResourceFile::doClose() 186void ResourceFile::doClose()
197{ 187{
198} 188}
199 189
200bool ResourceFile::load() 190bool ResourceFile::load()
201{ 191{
202 192
203 193
204 QFile file( mFileName ); 194 QFile file( mFileName );
205 if ( !file.open( IO_ReadOnly ) ) { 195 if ( !file.open( IO_ReadOnly ) ) {
206 addressBook()->error( i18n( "Unable to open file '%1'." ).arg( mFileName ) ); 196 addressBook()->error( i18n( "Unable to open file '%1'." ).arg( mFileName ) );
207 return false; 197 return false;
208 } 198 }
209 199
210// qDebug("ResourceFile::load format %s, %s", mFileName.latin1(), mFormatName.latin1()); 200// qDebug("ResourceFile::load format %s, %s", mFileName.latin1(), mFormatName.latin1());
211 201
212 return mFormat->loadAll( addressBook(), this, &file ); 202 return mFormat->loadAll( addressBook(), this, &file );
213} 203}
214 204
215bool ResourceFile::save( Ticket *ticket ) 205bool ResourceFile::save( Ticket *ticket )
216{ 206{
217// qDebug("ResourceFile::save format %s, %s", mFileName.latin1(), mFormatName.latin1()); 207// qDebug("ResourceFile::save format %s, %s", mFileName.latin1(), mFormatName.latin1());
218 208
219 209
220 // create backup file 210 // create backup file
221 QString extension = "_" + QString::number( QDate::currentDate().dayOfWeek() ); 211 QString extension = "_" + QString::number( QDate::currentDate().dayOfWeek() );
222 212
diff --git a/kabc/plugins/ldap/resourceldap.cpp b/kabc/plugins/ldap/resourceldap.cpp
index 198e80a..17f115d 100644
--- a/kabc/plugins/ldap/resourceldap.cpp
+++ b/kabc/plugins/ldap/resourceldap.cpp
@@ -1,144 +1,144 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2002 Tobias Koenig <tokoe@kde.org> 3 Copyright (c) 2002 Tobias Koenig <tokoe@kde.org>
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/* 21/*
22Enhanced Version of the file for platform independent KDE tools. 22Enhanced Version of the file for platform independent KDE tools.
23Copyright (c) 2004 Ulf Schenk 23Copyright (c) 2004 Ulf Schenk
24 24
25$Id$ 25$Id$
26*/ 26*/
27 27
28#include <kdebug.h> 28#include <kdebug.h>
29#include <kglobal.h> 29#include <kglobal.h>
30#include <klineedit.h> 30#include <klineedit.h>
31#include <klocale.h> 31#include <klocale.h>
32#include <kconfig.h> 32#include <kconfig.h>
33#include <kstringhandler.h> 33#include <kstringhandler.h>
34 34
35#include <stdlib.h> 35#include <stdlib.h>
36 36
37#include "resourceldap.h" 37#include "resourceldap.h"
38#include "resourceldapconfig.h" 38#include "resourceldapconfig.h"
39#include "syncprefwidget.h" 39#include "syncprefwidget.h"
40 40
41using namespace KABC; 41using namespace KABC;
42 42
43extern "C" 43extern "C"
44{ 44{
45//US void *init_kabc_ldap() 45//US void *init_kabc_ldap()
46 void *init_microkabc_ldap() 46 void *init_microkabc_ldap()
47 { 47 {
48 return new KRES::PluginFactory<ResourceLDAP,ResourceLDAPConfig, SyncPrefWidget>(); 48 return new KRES::PluginFactory<ResourceLDAP,ResourceLDAPConfig, SyncPrefWidgetContainer>();
49 } 49 }
50} 50}
51 51
52void addModOp( LDAPMod ***pmods, const QString &attr, const QString &value ); 52void addModOp( LDAPMod ***pmods, const QString &attr, const QString &value );
53 53
54 54
55ResourceLDAP::ResourceLDAP( const KConfig *config, bool syncable ) 55ResourceLDAP::ResourceLDAP( const KConfig *config, bool syncable )
56 : Resource( config, syncable ), mPort( 389 ), mLdap( 0 ) 56 : Resource( config, syncable ), mPort( 389 ), mLdap( 0 )
57{ 57{
58 KConfig *cfg = (KConfig *)config; 58 KConfig *cfg = (KConfig *)config;
59 if ( cfg ) { 59 if ( cfg ) {
60 mUser = cfg->readEntry( "LdapUser" ); 60 mUser = cfg->readEntry( "LdapUser" );
61 mPassword = KStringHandler::obscure( cfg->readEntry( "LdapPassword" ) ); 61 mPassword = KStringHandler::obscure( cfg->readEntry( "LdapPassword" ) );
62 mDn = cfg->readEntry( "LdapDn" ); 62 mDn = cfg->readEntry( "LdapDn" );
63 mHost = cfg->readEntry( "LdapHost" ); 63 mHost = cfg->readEntry( "LdapHost" );
64 mPort = cfg->readNumEntry( "LdapPort", 389 ); 64 mPort = cfg->readNumEntry( "LdapPort", 389 );
65 mFilter = cfg->readEntry( "LdapFilter" ); 65 mFilter = cfg->readEntry( "LdapFilter" );
66 mAnonymous = cfg->readBoolEntry( "LdapAnonymous" ); 66 mAnonymous = cfg->readBoolEntry( "LdapAnonymous" );
67 67
68 QStringList attributes = cfg->readListEntry( "LdapAttributes" ); 68 QStringList attributes = cfg->readListEntry( "LdapAttributes" );
69 for ( uint pos = 0; pos < attributes.count(); pos += 2 ) 69 for ( uint pos = 0; pos < attributes.count(); pos += 2 )
70 mAttributes.insert( attributes[ pos ], attributes[ pos + 1 ] ); 70 mAttributes.insert( attributes[ pos ], attributes[ pos + 1 ] );
71 } 71 }
72 72
73 /** 73 /**
74 If you want to add new attributes, append them here, add a 74 If you want to add new attributes, append them here, add a
75 translation string in the ctor of AttributesDialog and 75 translation string in the ctor of AttributesDialog and
76 handle them in the load() method below. 76 handle them in the load() method below.
77 These are the default values from 77 These are the default values from
78 */ 78 */
79 if ( mAttributes.count() == 0 ) { 79 if ( mAttributes.count() == 0 ) {
80 mAttributes.insert( "commonName", "cn" ); 80 mAttributes.insert( "commonName", "cn" );
81 mAttributes.insert( "formattedName", "displayName" ); 81 mAttributes.insert( "formattedName", "displayName" );
82 mAttributes.insert( "familyName", "sn" ); 82 mAttributes.insert( "familyName", "sn" );
83 mAttributes.insert( "givenName", "givenName" ); 83 mAttributes.insert( "givenName", "givenName" );
84 mAttributes.insert( "mail", "mail" ); 84 mAttributes.insert( "mail", "mail" );
85 mAttributes.insert( "mailAlias", "" ); 85 mAttributes.insert( "mailAlias", "" );
86 mAttributes.insert( "phoneNumber", "telephoneNumber" ); 86 mAttributes.insert( "phoneNumber", "telephoneNumber" );
87 mAttributes.insert( "uid", "uid" ); 87 mAttributes.insert( "uid", "uid" );
88 } 88 }
89} 89}
90 90
91void ResourceLDAP::writeConfig( KConfig *config ) 91void ResourceLDAP::writeConfig( KConfig *config )
92{ 92{
93 Resource::writeConfig( config ); 93 Resource::writeConfig( config );
94 94
95 config->writeEntry( "LdapUser", mUser ); 95 config->writeEntry( "LdapUser", mUser );
96 config->writeEntry( "LdapPassword", KStringHandler::obscure( mPassword ) ); 96 config->writeEntry( "LdapPassword", KStringHandler::obscure( mPassword ) );
97 config->writeEntry( "LdapDn", mDn ); 97 config->writeEntry( "LdapDn", mDn );
98 config->writeEntry( "LdapHost", mHost ); 98 config->writeEntry( "LdapHost", mHost );
99 config->writeEntry( "LdapPort", mPort ); 99 config->writeEntry( "LdapPort", mPort );
100 config->writeEntry( "LdapFilter", mFilter ); 100 config->writeEntry( "LdapFilter", mFilter );
101 config->writeEntry( "LdapAnonymous", mAnonymous ); 101 config->writeEntry( "LdapAnonymous", mAnonymous );
102 102
103 QStringList attributes; 103 QStringList attributes;
104 QMap<QString, QString>::Iterator it; 104 QMap<QString, QString>::Iterator it;
105 for ( it = mAttributes.begin(); it != mAttributes.end(); ++it ) 105 for ( it = mAttributes.begin(); it != mAttributes.end(); ++it )
106 attributes << it.key() << it.data(); 106 attributes << it.key() << it.data();
107 107
108 config->writeEntry( "LdapAttributes", attributes ); 108 config->writeEntry( "LdapAttributes", attributes );
109} 109}
110 110
111Ticket *ResourceLDAP::requestSaveTicket() 111Ticket *ResourceLDAP::requestSaveTicket()
112{ 112{
113 if ( !addressBook() ) { 113 if ( !addressBook() ) {
114 kdDebug(5700) << "no addressbook" << endl; 114 kdDebug(5700) << "no addressbook" << endl;
115 return 0; 115 return 0;
116 } 116 }
117 117
118 return createTicket( this ); 118 return createTicket( this );
119} 119}
120 120
121bool ResourceLDAP::doOpen() 121bool ResourceLDAP::doOpen()
122{ 122{
123 if ( mLdap ) 123 if ( mLdap )
124 return false; 124 return false;
125 125
126 if ( !mPort ) 126 if ( !mPort )
127 mPort = 389; 127 mPort = 389;
128 128
129 mLdap = ldap_init( mHost.local8Bit(), mPort ); 129 mLdap = ldap_init( mHost.local8Bit(), mPort );
130 if ( !mLdap ) { 130 if ( !mLdap ) {
131 addressBook()->error( i18n( "Unable to connect to server '%1' on port '%2'" ).arg( mHost ).arg( mPort ) ); 131 addressBook()->error( i18n( "Unable to connect to server '%1' on port '%2'" ).arg( mHost ).arg( mPort ) );
132 return false; 132 return false;
133 } 133 }
134 134
135 if ( !mUser.isEmpty() && !mAnonymous ) { 135 if ( !mUser.isEmpty() && !mAnonymous ) {
136 if ( ldap_simple_bind_s( mLdap, mUser.local8Bit(), mPassword.local8Bit() ) != LDAP_SUCCESS ) { 136 if ( ldap_simple_bind_s( mLdap, mUser.local8Bit(), mPassword.local8Bit() ) != LDAP_SUCCESS ) {
137 addressBook()->error( i18n( "Unable to bind to server '%1'" ).arg( mHost ) ); 137 addressBook()->error( i18n( "Unable to bind to server '%1'" ).arg( mHost ) );
138 return false; 138 return false;
139 } 139 }
140 140
141 kdDebug(5700) << "ResourceLDAP: bind to server successfully" << endl; 141 kdDebug(5700) << "ResourceLDAP: bind to server successfully" << endl;
142 } else { 142 } else {
143 if ( ldap_simple_bind_s( mLdap, NULL, NULL ) != LDAP_SUCCESS ) { 143 if ( ldap_simple_bind_s( mLdap, NULL, NULL ) != LDAP_SUCCESS ) {
144 addressBook()->error( i18n( "Unable to bind anonymously to server '%1'" ).arg( mHost ) ); 144 addressBook()->error( i18n( "Unable to bind anonymously to server '%1'" ).arg( mHost ) );
diff --git a/kabc/plugins/opie/resourceopie.cpp b/kabc/plugins/opie/resourceopie.cpp
index 9dfd473..4b811e9 100644
--- a/kabc/plugins/opie/resourceopie.cpp
+++ b/kabc/plugins/opie/resourceopie.cpp
@@ -1,160 +1,160 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
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/* 21/*
22Enhanced Version of the file for platform independent KDE tools. 22Enhanced Version of the file for platform independent KDE tools.
23Copyright (c) 2004 Ulf Schenk 23Copyright (c) 2004 Ulf Schenk
24 24
25$Id$ 25$Id$
26*/ 26*/
27 27
28#include <sys/types.h> 28#include <sys/types.h>
29#include <sys/stat.h> 29#include <sys/stat.h>
30#include <unistd.h> 30#include <unistd.h>
31 31
32#include <qdir.h> 32#include <qdir.h>
33#include <qfile.h> 33#include <qfile.h>
34#include <qfileinfo.h> 34#include <qfileinfo.h>
35#include <qregexp.h> 35#include <qregexp.h>
36 36
37#include <kapplication.h> 37#include <kapplication.h>
38#include <kconfig.h> 38#include <kconfig.h>
39#include <kdebug.h> 39#include <kdebug.h>
40#include <klocale.h> 40#include <klocale.h>
41//US #include <ksavefile.h> 41//US #include <ksavefile.h>
42#include <kstandarddirs.h> 42#include <kstandarddirs.h>
43#include <kmessagebox.h> 43#include <kmessagebox.h>
44 44
45//US #include "formatfactory.h" 45//US #include "formatfactory.h"
46//US #include <qpe/qpeapplication.h> 46//US #include <qpe/qpeapplication.h>
47 47
48#include <opie/ocontactaccess.h> 48#include <opie/ocontactaccess.h>
49#include <opie/ocontactaccessbackend_xml.h> 49#include <opie/ocontactaccessbackend_xml.h>
50 50
51#include "resourceopieconfig.h" 51#include "resourceopieconfig.h"
52#include "stdaddressbook.h" 52#include "stdaddressbook.h"
53#include "syncprefwidget.h" 53#include "syncprefwidget.h"
54 54
55#include "opieconverter.h" 55#include "opieconverter.h"
56 56
57#include "resourceopie.h" 57#include "resourceopie.h"
58 58
59using namespace KABC; 59using namespace KABC;
60extern "C" 60extern "C"
61{ 61{
62 void *init_microkabc_opie() 62 void *init_microkabc_opie()
63 { 63 {
64 return new KRES::PluginFactory<ResourceOpie,ResourceOpieConfig, SyncPrefWidget>(); 64 return new KRES::PluginFactory<ResourceOpie,ResourceOpieConfig, SyncPrefWidgetContainer>();
65 } 65 }
66} 66}
67 67
68ResourceOpie::ResourceOpie( const KConfig *config, bool syncable ) 68ResourceOpie::ResourceOpie( const KConfig *config, bool syncable )
69 : Resource( config, syncable ), mAccess(0), mConverter (0) 69 : Resource( config, syncable ), mAccess(0), mConverter (0)
70{ 70{
71 QString fileName = QDir::homeDirPath() + "/Applications/addressbook/addressbook.xml"; 71 QString fileName = QDir::homeDirPath() + "/Applications/addressbook/addressbook.xml";
72 72
73 KConfig *cfg = (KConfig *)config; 73 KConfig *cfg = (KConfig *)config;
74 if ( cfg ) { 74 if ( cfg ) {
75 fileName = cfg->readEntry( "FileName", fileName ); 75 fileName = cfg->readEntry( "FileName", fileName );
76 76
77 } 77 }
78 78
79 init( fileName ); 79 init( fileName );
80} 80}
81 81
82ResourceOpie::ResourceOpie( const QString &fileName, bool syncable ) 82ResourceOpie::ResourceOpie( const QString &fileName, bool syncable )
83 : Resource( 0, syncable ) 83 : Resource( 0, syncable )
84{ 84{
85 init( fileName ); 85 init( fileName );
86} 86}
87 87
88void ResourceOpie::init( const QString &fileName ) 88void ResourceOpie::init( const QString &fileName )
89{ 89{
90 qDebug("ResourceOpie::init()"); 90 qDebug("ResourceOpie::init()");
91 91
92 connect( &mDirWatch, SIGNAL( dirty(const QString&) ), SLOT( fileChanged() ) ); 92 connect( &mDirWatch, SIGNAL( dirty(const QString&) ), SLOT( fileChanged() ) );
93 connect( &mDirWatch, SIGNAL( created(const QString&) ), SLOT( fileChanged() ) ); 93 connect( &mDirWatch, SIGNAL( created(const QString&) ), SLOT( fileChanged() ) );
94 connect( &mDirWatch, SIGNAL( deleted(const QString&) ), SLOT( fileChanged() ) ); 94 connect( &mDirWatch, SIGNAL( deleted(const QString&) ), SLOT( fileChanged() ) );
95 95
96 setFileName( fileName ); 96 setFileName( fileName );
97} 97}
98 98
99ResourceOpie::~ResourceOpie() 99ResourceOpie::~ResourceOpie()
100{ 100{
101 if (mConverter != 0) 101 if (mConverter != 0)
102 delete mConverter; 102 delete mConverter;
103 103
104 if(mAccess != 0) 104 if(mAccess != 0)
105 delete mAccess; 105 delete mAccess;
106} 106}
107 107
108void ResourceOpie::writeConfig( KConfig *config ) 108void ResourceOpie::writeConfig( KConfig *config )
109{ 109{
110 Resource::writeConfig( config ); 110 Resource::writeConfig( config );
111 111
112 config->writeEntry( "FileName", fileName() ); 112 config->writeEntry( "FileName", fileName() );
113} 113}
114 114
115Ticket *ResourceOpie::requestSaveTicket() 115Ticket *ResourceOpie::requestSaveTicket()
116{ 116{
117 kdDebug(5700) << "ResourceOpie::requestSaveTicket()" << endl; 117 kdDebug(5700) << "ResourceOpie::requestSaveTicket()" << endl;
118 118
119 qDebug("ResourceOpie::requestSaveTicket: %s", fileName().latin1()); 119 qDebug("ResourceOpie::requestSaveTicket: %s", fileName().latin1());
120 120
121 if ( !addressBook() ) return 0; 121 if ( !addressBook() ) return 0;
122 122
123 if ( !lock( fileName() ) ) { 123 if ( !lock( fileName() ) ) {
124 kdDebug(5700) << "ResourceOpie::requestSaveTicket(): Unable to lock file '" 124 kdDebug(5700) << "ResourceOpie::requestSaveTicket(): Unable to lock file '"
125 << fileName() << "'" << endl; 125 << fileName() << "'" << endl;
126 return 0; 126 return 0;
127 } 127 }
128 return createTicket( this ); 128 return createTicket( this );
129} 129}
130 130
131 131
132bool ResourceOpie::doOpen() 132bool ResourceOpie::doOpen()
133{ 133{
134 qDebug("ResourceOpie::doOpen: %s", fileName().latin1()); 134 qDebug("ResourceOpie::doOpen: %s", fileName().latin1());
135 135
136 OContactAccessBackend_XML* backend = new OContactAccessBackend_XML( "KDEPim/Pi", fileName() ); 136 OContactAccessBackend_XML* backend = new OContactAccessBackend_XML( "KDEPim/Pi", fileName() );
137 mAccess = new OContactAccess("KDEPim/Pi", 0l, backend, false); 137 mAccess = new OContactAccess("KDEPim/Pi", 0l, backend, false);
138 138
139 if ( !mAccess ) { 139 if ( !mAccess ) {
140 qDebug("Unable to load file() %s", fileName().latin1()); 140 qDebug("Unable to load file() %s", fileName().latin1());
141 return false; 141 return false;
142 } 142 }
143 143
144 mAccess->setReadAhead( 32 ); // Use ReadAhead-Cache if available 144 mAccess->setReadAhead( 32 ); // Use ReadAhead-Cache if available
145 145
146 146
147 if (mConverter == 0) 147 if (mConverter == 0)
148 { 148 {
149 mConverter = new OpieConverter(); 149 mConverter = new OpieConverter();
150 bool res = mConverter->init(); 150 bool res = mConverter->init();
151 if ( !res ) 151 if ( !res )
152 { 152 {
153 qDebug("Unable to initialize opie converter. Most likely a problem with the category file"); 153 qDebug("Unable to initialize opie converter. Most likely a problem with the category file");
154 delete mAccess; 154 delete mAccess;
155 mAccess = 0; 155 mAccess = 0;
156 return false; 156 return false;
157 } 157 }
158 } 158 }
159 159
160 160
diff --git a/kabc/plugins/qtopia/resourceqtopia.cpp b/kabc/plugins/qtopia/resourceqtopia.cpp
index 5565580..93a4d33 100644
--- a/kabc/plugins/qtopia/resourceqtopia.cpp
+++ b/kabc/plugins/qtopia/resourceqtopia.cpp
@@ -1,157 +1,157 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
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/* 21/*
22Enhanced Version of the file for platform independent KDE tools. 22Enhanced Version of the file for platform independent KDE tools.
23Copyright (c) 2004 Ulf Schenk 23Copyright (c) 2004 Ulf Schenk
24 24
25$Id$ 25$Id$
26*/ 26*/
27#include <sys/types.h> 27#include <sys/types.h>
28#include <sys/stat.h> 28#include <sys/stat.h>
29#include <unistd.h> 29#include <unistd.h>
30 30
31#include <qdir.h> 31#include <qdir.h>
32#include <qfile.h> 32#include <qfile.h>
33#include <qfileinfo.h> 33#include <qfileinfo.h>
34#include <qregexp.h> 34#include <qregexp.h>
35//US #include <qtimer.h> 35//US #include <qtimer.h>
36 36
37#include <kapplication.h> 37#include <kapplication.h>
38#include <kconfig.h> 38#include <kconfig.h>
39#include <kdebug.h> 39#include <kdebug.h>
40#include <klocale.h> 40#include <klocale.h>
41//US #include <ksavefile.h> 41//US #include <ksavefile.h>
42#include <kstandarddirs.h> 42#include <kstandarddirs.h>
43#include <kmessagebox.h> 43#include <kmessagebox.h>
44 44
45#include <qpe/pim/addressbookaccess.h> 45#include <qpe/pim/addressbookaccess.h>
46 46
47 47
48#include "resourceqtopiaconfig.h" 48#include "resourceqtopiaconfig.h"
49#include "stdaddressbook.h" 49#include "stdaddressbook.h"
50 50
51#include "qtopiaconverter.h" 51#include "qtopiaconverter.h"
52#include "syncprefwidget.h" 52#include "syncprefwidget.h"
53 53
54#include "resourceqtopia.h" 54#include "resourceqtopia.h"
55 55
56using namespace KABC; 56using namespace KABC;
57extern "C" 57extern "C"
58{ 58{
59 void *init_microkabc_qtopia() 59 void *init_microkabc_qtopia()
60 { 60 {
61 return new KRES::PluginFactory<ResourceQtopia,ResourceQtopiaConfig, SyncPrefWidget>(); 61 return new KRES::PluginFactory<ResourceQtopia,ResourceQtopiaConfig, SyncPrefWidgetContainer>();
62 } 62 }
63} 63}
64 64
65ResourceQtopia::ResourceQtopia( const KConfig *config, bool syncable ) 65ResourceQtopia::ResourceQtopia( const KConfig *config, bool syncable )
66 : Resource( config, syncable ), mConverter (0) 66 : Resource( config, syncable ), mConverter (0)
67{ 67{
68 // we can not choose the filename. Therefore use the default to display 68 // we can not choose the filename. Therefore use the default to display
69 QString fileName = QDir::homeDirPath() + "/Applications/addressbook/addressbook.xml"; 69 QString fileName = QDir::homeDirPath() + "/Applications/addressbook/addressbook.xml";
70 init( fileName ); 70 init( fileName );
71} 71}
72 72
73ResourceQtopia::ResourceQtopia( const QString &fileName, bool syncable ) 73ResourceQtopia::ResourceQtopia( const QString &fileName, bool syncable )
74 : Resource( 0, syncable ) 74 : Resource( 0, syncable )
75{ 75{
76 init( fileName ); 76 init( fileName );
77} 77}
78 78
79void ResourceQtopia::init( const QString &fileName ) 79void ResourceQtopia::init( const QString &fileName )
80{ 80{
81 81
82 connect( &mDirWatch, SIGNAL( dirty(const QString&) ), SLOT( fileChanged() ) ); 82 connect( &mDirWatch, SIGNAL( dirty(const QString&) ), SLOT( fileChanged() ) );
83 connect( &mDirWatch, SIGNAL( created(const QString&) ), SLOT( fileChanged() ) ); 83 connect( &mDirWatch, SIGNAL( created(const QString&) ), SLOT( fileChanged() ) );
84 connect( &mDirWatch, SIGNAL( deleted(const QString&) ), SLOT( fileChanged() ) ); 84 connect( &mDirWatch, SIGNAL( deleted(const QString&) ), SLOT( fileChanged() ) );
85 85
86 setFileName( fileName ); 86 setFileName( fileName );
87} 87}
88 88
89ResourceQtopia::~ResourceQtopia() 89ResourceQtopia::~ResourceQtopia()
90{ 90{
91 if (mConverter != 0) 91 if (mConverter != 0)
92 delete mConverter; 92 delete mConverter;
93 93
94 if(mAccess != 0) 94 if(mAccess != 0)
95 delete mAccess; 95 delete mAccess;
96} 96}
97 97
98void ResourceQtopia::writeConfig( KConfig *config ) 98void ResourceQtopia::writeConfig( KConfig *config )
99{ 99{
100 Resource::writeConfig( config ); 100 Resource::writeConfig( config );
101} 101}
102 102
103Ticket *ResourceQtopia::requestSaveTicket() 103Ticket *ResourceQtopia::requestSaveTicket()
104{ 104{
105 kdDebug(5700) << "ResourceQtopia::requestSaveTicket()" << endl; 105 kdDebug(5700) << "ResourceQtopia::requestSaveTicket()" << endl;
106 106
107 qDebug("ResourceQtopia::requestSaveTicket: %s", fileName().latin1()); 107 qDebug("ResourceQtopia::requestSaveTicket: %s", fileName().latin1());
108 108
109 if ( !addressBook() ) return 0; 109 if ( !addressBook() ) return 0;
110 110
111 if ( !lock( fileName() ) ) { 111 if ( !lock( fileName() ) ) {
112 kdDebug(5700) << "ResourceQtopia::requestSaveTicket(): Unable to lock file '" 112 kdDebug(5700) << "ResourceQtopia::requestSaveTicket(): Unable to lock file '"
113 << fileName() << "'" << endl; 113 << fileName() << "'" << endl;
114 return 0; 114 return 0;
115 } 115 }
116 return createTicket( this ); 116 return createTicket( this );
117} 117}
118 118
119 119
120bool ResourceQtopia::doOpen() 120bool ResourceQtopia::doOpen()
121{ 121{
122 qDebug("ResourceQtopia::doOpen(): %s", fileName().latin1()); 122 qDebug("ResourceQtopia::doOpen(): %s", fileName().latin1());
123 123
124 mAccess = new AddressBookAccess(); 124 mAccess = new AddressBookAccess();
125 125
126 if ( !mAccess ) { 126 if ( !mAccess ) {
127 qDebug("Unable to load file() %s", fileName().latin1()); 127 qDebug("Unable to load file() %s", fileName().latin1());
128 return false; 128 return false;
129 } 129 }
130 130
131 131
132 if (mConverter == 0) 132 if (mConverter == 0)
133 { 133 {
134 mConverter = new QtopiaConverter(); 134 mConverter = new QtopiaConverter();
135 bool res = mConverter->init(); 135 bool res = mConverter->init();
136 if ( !res ) 136 if ( !res )
137 { 137 {
138 QString msg("Unable to initialize qtopia converter. Most likely a problem with the category file"); 138 QString msg("Unable to initialize qtopia converter. Most likely a problem with the category file");
139 qDebug(msg); 139 qDebug(msg);
140 delete mAccess; 140 delete mAccess;
141 mAccess = 0; 141 mAccess = 0;
142 return false; 142 return false;
143 } 143 }
144 } 144 }
145 145
146 return true; 146 return true;
147} 147}
148 148
149void ResourceQtopia::doClose() 149void ResourceQtopia::doClose()
150{ 150{
151 qDebug("ResourceQtopia::doClose: %s", fileName().latin1()); 151 qDebug("ResourceQtopia::doClose: %s", fileName().latin1());
152 152
153 if(mAccess) 153 if(mAccess)
154 { 154 {
155 delete mAccess; 155 delete mAccess;
156 mAccess = 0; 156 mAccess = 0;
157 } 157 }
diff --git a/kabc/plugins/sharpdtm/resourcesharpdtm.cpp b/kabc/plugins/sharpdtm/resourcesharpdtm.cpp
index 70c3718..b63df0c 100644
--- a/kabc/plugins/sharpdtm/resourcesharpdtm.cpp
+++ b/kabc/plugins/sharpdtm/resourcesharpdtm.cpp
@@ -1,159 +1,159 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
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/* 21/*
22Enhanced Version of the file for platform independent KDE tools. 22Enhanced Version of the file for platform independent KDE tools.
23Copyright (c) 2004 Ulf Schenk 23Copyright (c) 2004 Ulf Schenk
24 24
25$Id$ 25$Id$
26*/ 26*/
27 27
28#include <sys/types.h> 28#include <sys/types.h>
29#include <sys/stat.h> 29#include <sys/stat.h>
30#include <unistd.h> 30#include <unistd.h>
31 31
32#include <qdir.h> 32#include <qdir.h>
33#include <qfile.h> 33#include <qfile.h>
34#include <qfileinfo.h> 34#include <qfileinfo.h>
35#include <qregexp.h> 35#include <qregexp.h>
36//US #include <qtimer.h> 36//US #include <qtimer.h>
37 37
38#include <kapplication.h> 38#include <kapplication.h>
39#include <kconfig.h> 39#include <kconfig.h>
40#include <kdebug.h> 40#include <kdebug.h>
41#include <klocale.h> 41#include <klocale.h>
42//US #include <ksavefile.h> 42//US #include <ksavefile.h>
43#include <kstandarddirs.h> 43#include <kstandarddirs.h>
44#include <kmessagebox.h> 44#include <kmessagebox.h>
45 45
46#include <sl/slzdb.h> 46#include <sl/slzdb.h>
47 47
48 48
49#include "resourcesharpdtmconfig.h" 49#include "resourcesharpdtmconfig.h"
50#include "resourcesharpdtm.h" 50#include "resourcesharpdtm.h"
51 51
52#include "syncprefwidget.h" 52#include "syncprefwidget.h"
53 53
54#include "stdaddressbook.h" 54#include "stdaddressbook.h"
55 55
56#include "sharpdtmconverter.h" 56#include "sharpdtmconverter.h"
57 57
58using namespace KABC; 58using namespace KABC;
59extern "C" 59extern "C"
60{ 60{
61 void *init_microkabc_sharpdtm() 61 void *init_microkabc_sharpdtm()
62 { 62 {
63 return new KRES::PluginFactory<ResourceSharpDTM,ResourceSharpDTMConfig,SyncPrefWidget>(); 63 return new KRES::PluginFactory<ResourceSharpDTM,ResourceSharpDTMConfig,SyncPrefWidgetContainer>();
64 } 64 }
65} 65}
66 66
67ResourceSharpDTM::ResourceSharpDTM( const KConfig *config, bool syncable ) 67ResourceSharpDTM::ResourceSharpDTM( const KConfig *config, bool syncable )
68 : Resource( config, syncable ), mConverter (0) 68 : Resource( config, syncable ), mConverter (0)
69{ 69{
70 // we can not choose the filename. Therefore use the default to display 70 // we can not choose the filename. Therefore use the default to display
71 71
72 QString fileName = SlZDataBase::addressbookFileName(); 72 QString fileName = SlZDataBase::addressbookFileName();
73 init( fileName ); 73 init( fileName );
74} 74}
75 75
76ResourceSharpDTM::ResourceSharpDTM( const QString &fileName, bool syncable ) 76ResourceSharpDTM::ResourceSharpDTM( const QString &fileName, bool syncable )
77 : Resource( 0, syncable ) 77 : Resource( 0, syncable )
78{ 78{
79 init( fileName ); 79 init( fileName );
80} 80}
81 81
82void ResourceSharpDTM::init( const QString &fileName ) 82void ResourceSharpDTM::init( const QString &fileName )
83{ 83{
84 84
85 connect( &mDirWatch, SIGNAL( dirty(const QString&) ), SLOT( fileChanged() ) ); 85 connect( &mDirWatch, SIGNAL( dirty(const QString&) ), SLOT( fileChanged() ) );
86 connect( &mDirWatch, SIGNAL( created(const QString&) ), SLOT( fileChanged() ) ); 86 connect( &mDirWatch, SIGNAL( created(const QString&) ), SLOT( fileChanged() ) );
87 connect( &mDirWatch, SIGNAL( deleted(const QString&) ), SLOT( fileChanged() ) ); 87 connect( &mDirWatch, SIGNAL( deleted(const QString&) ), SLOT( fileChanged() ) );
88 88
89 setFileName( fileName ); 89 setFileName( fileName );
90} 90}
91 91
92ResourceSharpDTM::~ResourceSharpDTM() 92ResourceSharpDTM::~ResourceSharpDTM()
93{ 93{
94 if (mConverter != 0) 94 if (mConverter != 0)
95 delete mConverter; 95 delete mConverter;
96 96
97 if(mAccess != 0) 97 if(mAccess != 0)
98 delete mAccess; 98 delete mAccess;
99} 99}
100 100
101void ResourceSharpDTM::writeConfig( KConfig *config ) 101void ResourceSharpDTM::writeConfig( KConfig *config )
102{ 102{
103 Resource::writeConfig( config ); 103 Resource::writeConfig( config );
104} 104}
105 105
106Ticket *ResourceSharpDTM::requestSaveTicket() 106Ticket *ResourceSharpDTM::requestSaveTicket()
107{ 107{
108 kdDebug(5700) << "ResourceSharpDTM::requestSaveTicket()" << endl; 108 kdDebug(5700) << "ResourceSharpDTM::requestSaveTicket()" << endl;
109 109
110 qDebug("ResourceSharpDTM::requestSaveTicket: %s", fileName().latin1()); 110 qDebug("ResourceSharpDTM::requestSaveTicket: %s", fileName().latin1());
111 111
112 if ( !addressBook() ) return 0; 112 if ( !addressBook() ) return 0;
113 113
114 if ( !lock( fileName() ) ) { 114 if ( !lock( fileName() ) ) {
115 kdDebug(5700) << "ResourceSharpDTM::requestSaveTicket(): Unable to lock file '" 115 kdDebug(5700) << "ResourceSharpDTM::requestSaveTicket(): Unable to lock file '"
116 << fileName() << "'" << endl; 116 << fileName() << "'" << endl;
117 return 0; 117 return 0;
118 } 118 }
119 return createTicket( this ); 119 return createTicket( this );
120} 120}
121 121
122 122
123bool ResourceSharpDTM::doOpen() 123bool ResourceSharpDTM::doOpen()
124{ 124{
125 qDebug("ResourceSharpDTM::doOpen: %s", fileName().latin1()); 125 qDebug("ResourceSharpDTM::doOpen: %s", fileName().latin1());
126 126
127 // the last parameter in the SlZDataBase constructor means "readonly" 127 // the last parameter in the SlZDataBase constructor means "readonly"
128 mAccess = new SlZDataBase(fileName(), 128 mAccess = new SlZDataBase(fileName(),
129 SlZDataBase::addressbookItems(), 129 SlZDataBase::addressbookItems(),
130 NULL, true); 130 NULL, true);
131 131
132 if ( !mAccess ) { 132 if ( !mAccess ) {
133 qDebug("Unable to load file() %s", fileName().latin1()); 133 qDebug("Unable to load file() %s", fileName().latin1());
134 return false; 134 return false;
135 } 135 }
136 136
137 if (mConverter == 0) 137 if (mConverter == 0)
138 { 138 {
139 mConverter = new SharpDTMConverter(); 139 mConverter = new SharpDTMConverter();
140 bool res = mConverter->init(); 140 bool res = mConverter->init();
141 if ( !res ) 141 if ( !res )
142 { 142 {
143 QString msg("Unable to initialize sharp converter. Most likely a problem with the category file"); 143 QString msg("Unable to initialize sharp converter. Most likely a problem with the category file");
144 144
145 qDebug(msg); 145 qDebug(msg);
146 delete mAccess; 146 delete mAccess;
147 mAccess = 0; 147 mAccess = 0;
148 return false; 148 return false;
149 } 149 }
150 } 150 }
151 151
152 return true; 152 return true;
153} 153}
154 154
155void ResourceSharpDTM::doClose() 155void ResourceSharpDTM::doClose()
156{ 156{
157 qDebug("ResourceSharpDTM::doClose: %s", fileName().latin1()); 157 qDebug("ResourceSharpDTM::doClose: %s", fileName().latin1());
158 158
159 if(mAccess) 159 if(mAccess)
diff --git a/kabc/resource.cpp b/kabc/resource.cpp
index 2f03927..d39fd6a 100644
--- a/kabc/resource.cpp
+++ b/kabc/resource.cpp
@@ -20,120 +20,125 @@
20 20
21/* 21/*
22Enhanced Version of the file for platform independent KDE tools. 22Enhanced Version of the file for platform independent KDE tools.
23Copyright (c) 2004 Ulf Schenk 23Copyright (c) 2004 Ulf Schenk
24 24
25$Id$ 25$Id$
26*/ 26*/
27 27
28#include <kdebug.h> 28#include <kdebug.h>
29 29
30#include <ksyncprofile.h> 30#include <ksyncprofile.h>
31 31
32#include "resource.h" 32#include "resource.h"
33 33
34using namespace KABC; 34using namespace KABC;
35 35
36Resource::Resource( const KConfig *config, bool syncable ) 36Resource::Resource( const KConfig *config, bool syncable )
37 : KRES::Resource( config ), mAddressBook( 0 ), mSyncProfile( 0 ) 37 : KRES::Resource( config ), mAddressBook( 0 ), mSyncProfile( 0 )
38{ 38{
39 if(syncable == true) { 39 if(syncable == true) {
40 mSyncProfile = new KSyncProfile( identifier() ); 40 mSyncProfile = new KSyncProfile( identifier() );
41 mSyncProfile->setName(resourceName()); 41 mSyncProfile->setName(resourceName());
42 mSyncProfile->readConfig( (KConfig *)config ); 42 mSyncProfile->readConfig( (KConfig *)config );
43 } 43 }
44} 44}
45 45
46Resource::~Resource() 46Resource::~Resource()
47{ 47{
48 if (mSyncProfile != 0) { 48 if (mSyncProfile != 0) {
49 delete mSyncProfile; 49 delete mSyncProfile;
50 } 50 }
51} 51}
52 52
53void Resource::writeConfig( KConfig *config ) 53void Resource::writeConfig( KConfig *config )
54{ 54{
55 KRES::Resource::writeConfig( config ); 55 KRES::Resource::writeConfig( config );
56 56
57 if(mSyncProfile != 0) 57 if(mSyncProfile != 0)
58 mSyncProfile->writeConfig( config ); 58 mSyncProfile->writeConfig( config );
59} 59}
60 60
61 61
62void Resource::setAddressBook( AddressBook *ab ) 62void Resource::setAddressBook( AddressBook *ab )
63{ 63{
64 mAddressBook = ab; 64 mAddressBook = ab;
65} 65}
66 66
67AddressBook *Resource::addressBook() 67AddressBook *Resource::addressBook()
68{ 68{
69 return mAddressBook; 69 return mAddressBook;
70} 70}
71 71
72bool Resource::doOpen() 72bool Resource::doOpen()
73{ 73{
74 return true; 74 return true;
75} 75}
76 76
77void Resource::doClose() 77void Resource::doClose()
78{ 78{
79} 79}
80 80
81Ticket *Resource::requestSaveTicket() 81Ticket *Resource::requestSaveTicket()
82{ 82{
83 return 0; 83 return 0;
84} 84}
85 85
86bool Resource::load() 86bool Resource::load()
87{ 87{
88 return true; 88 return true;
89} 89}
90 90
91bool Resource::save( Ticket * ) 91bool Resource::save( Ticket * )
92{ 92{
93 return false; 93 return false;
94} 94}
95 95
96Ticket *Resource::createTicket( Resource *resource ) 96Ticket *Resource::createTicket( Resource *resource )
97{ 97{
98 return new Ticket( resource ); 98 return new Ticket( resource );
99} 99}
100 100
101void Resource::removeAddressee( const Addressee& ) 101void Resource::removeAddressee( const Addressee& )
102{ 102{
103 // do nothing 103 // do nothing
104} 104}
105 105
106void Resource::cleanUp() 106void Resource::cleanUp()
107{ 107{
108 // do nothing 108 // do nothing
109} 109}
110 110
111bool Resource::isSyncable() const 111bool Resource::isSyncable() const
112{ 112{
113 return (mSyncProfile != 0); 113 return (mSyncProfile != 0);
114} 114}
115 115
116KSyncProfile* Resource::getSyncProfile()
117{
118 return mSyncProfile;
119}
120
116 121
117QString Resource::fileName() const 122QString Resource::fileName() const
118{ 123{
119 return mFileName; 124 return mFileName;
120} 125}
121 126
122void Resource::setFileName( const QString &fileName ) 127void Resource::setFileName( const QString &fileName )
123{ 128{
124 mFileName = fileName; 129 mFileName = fileName;
125} 130}
126 131
127/** 132/**
128 * Set the name of resource.You can override this method, 133 * Set the name of resource.You can override this method,
129 * but also remember to call Resource::setResourceName(). 134 * but also remember to call Resource::setResourceName().
130 */ 135 */
131void Resource::setResourceName( const QString &name ) 136void Resource::setResourceName( const QString &name )
132{ 137{
133 KRES::Resource::setResourceName(name); 138 KRES::Resource::setResourceName(name);
134 if(mSyncProfile != 0) { 139 if(mSyncProfile != 0) {
135 mSyncProfile->setName( name ); 140 mSyncProfile->setName( name );
136 } 141 }
137 142
138} 143}
139 144
diff --git a/kabc/resource.h b/kabc/resource.h
index 7d42f81..2024d2d 100644
--- a/kabc/resource.h
+++ b/kabc/resource.h
@@ -49,121 +49,123 @@ class Ticket
49 public: 49 public:
50 Resource *resource() { return mResource; } 50 Resource *resource() { return mResource; }
51 51
52 private: 52 private:
53 Ticket( Resource *resource ) : mResource( resource ) {} 53 Ticket( Resource *resource ) : mResource( resource ) {}
54 54
55 Resource *mResource; 55 Resource *mResource;
56}; 56};
57 57
58/** 58/**
59 * @internal 59 * @internal
60 */ 60 */
61class Resource : public KRES::Resource 61class Resource : public KRES::Resource
62{ 62{
63private: 63private:
64 /** 64 /**
65 * make this constructor private to force everybody to use the other one 65 * make this constructor private to force everybody to use the other one
66 */ 66 */
67 Resource( const KConfig *config); 67 Resource( const KConfig *config);
68 68
69public: 69public:
70 /** 70 /**
71 * Constructor 71 * Constructor
72 */ 72 */
73 Resource( const KConfig *config, bool syncable ); 73 Resource( const KConfig *config, bool syncable );
74 74
75 /** 75 /**
76 * Destructor. 76 * Destructor.
77 */ 77 */
78 virtual ~Resource(); 78 virtual ~Resource();
79 79
80 /** 80 /**
81 * Sets the address book of the resource. 81 * Sets the address book of the resource.
82 */ 82 */
83 void setAddressBook( AddressBook* ); 83 void setAddressBook( AddressBook* );
84 84
85 /** 85 /**
86 * Returns a pointer to the addressbook. 86 * Returns a pointer to the addressbook.
87 */ 87 */
88 AddressBook *addressBook(); 88 AddressBook *addressBook();
89 89
90 /** 90 /**
91 * Writes the resource specific config to file. 91 * Writes the resource specific config to file.
92 */ 92 */
93 virtual void writeConfig( KConfig *config ); 93 virtual void writeConfig( KConfig *config );
94 94
95 /** 95 /**
96 * Open the resource and returns if it was successfully 96 * Open the resource and returns if it was successfully
97 */ 97 */
98 virtual bool doOpen(); 98 virtual bool doOpen();
99 99
100 100
101 /** 101 /**
102 * Request a ticket, you have to pass through @ref save() to 102 * Request a ticket, you have to pass through @ref save() to
103 * allow locking. 103 * allow locking.
104 */ 104 */
105 virtual Ticket *requestSaveTicket(); 105 virtual Ticket *requestSaveTicket();
106 106
107 /** 107 /**
108 * Load all addressees to the addressbook 108 * Load all addressees to the addressbook
109 */ 109 */
110 virtual bool load(); 110 virtual bool load();
111 111
112 /** 112 /**
113 * Save all addressees to the addressbook. 113 * Save all addressees to the addressbook.
114 * 114 *
115 * @param ticket The ticket you get by @ref requestSaveTicket() 115 * @param ticket The ticket you get by @ref requestSaveTicket()
116 */ 116 */
117 virtual bool save( Ticket *ticket ); 117 virtual bool save( Ticket *ticket );
118 118
119 /** 119 /**
120 * Removes a addressee from resource. This method is mainly 120 * Removes a addressee from resource. This method is mainly
121 * used by record-based resources like LDAP or SQL. 121 * used by record-based resources like LDAP or SQL.
122 */ 122 */
123 virtual void removeAddressee( const Addressee& addr ); 123 virtual void removeAddressee( const Addressee& addr );
124 124
125 125
126 /** 126 /**
127 * This method is called by an error handler if the application 127 * This method is called by an error handler if the application
128 * crashed 128 * crashed
129 */ 129 */
130 virtual void cleanUp(); 130 virtual void cleanUp();
131 131
132 /** 132 /**
133 * Set name of file to be used for saving. 133 * Set name of file to be used for saving.
134 */ 134 */
135 virtual void setFileName( const QString & ); 135 virtual void setFileName( const QString & );
136 136
137 /** 137 /**
138 * Return name of file used for loading and saving the address book. 138 * Return name of file used for loading and saving the address book.
139 */ 139 */
140 virtual QString fileName() const; 140 virtual QString fileName() const;
141 141
142 142
143 virtual bool isSyncable() const; 143 virtual bool isSyncable() const;
144 144
145 virtual KSyncProfile* getSyncProfile();
146
145 /** 147 /**
146 * Set the name of resource.You can override this method, 148 * Set the name of resource.You can override this method,
147 * but also remember to call Resource::setResourceName(). 149 * but also remember to call Resource::setResourceName().
148 */ 150 */
149 virtual void setResourceName( const QString &name ); 151 virtual void setResourceName( const QString &name );
150 152
151 153
152 154
153protected: 155protected:
154 Ticket *createTicket( Resource * ); 156 Ticket *createTicket( Resource * );
155 virtual void doClose(); 157 virtual void doClose();
156 158
157private: 159private:
158 AddressBook *mAddressBook; 160 AddressBook *mAddressBook;
159 KSyncProfile *mSyncProfile; 161 KSyncProfile *mSyncProfile;
160 QString mFileName; 162 QString mFileName;
161 163
162}; 164};
163 165
164 166
165} 167}
166 168
167 169
168 170
169#endif 171#endif
diff --git a/kabc/stdaddressbook.cpp b/kabc/stdaddressbook.cpp
index 1e00cc6..760820e 100644
--- a/kabc/stdaddressbook.cpp
+++ b/kabc/stdaddressbook.cpp
@@ -1,228 +1,226 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
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/* 21/*
22Enhanced Version of the file for platform independent KDE tools. 22Enhanced Version of the file for platform independent KDE tools.
23Copyright (c) 2004 Ulf Schenk 23Copyright (c) 2004 Ulf Schenk
24 24
25$Id$ 25$Id$
26*/ 26*/
27 27
28#include <qdir.h> 28#include <qdir.h>
29#include "resource.h" 29#include "resource.h"
30#include <kresources/manager.h> 30#include <kresources/manager.h>
31#include <kdebug.h> 31#include <kdebug.h>
32#include <klocale.h> 32#include <klocale.h>
33#include <kstaticdeleter.h> 33#include <kstaticdeleter.h>
34#include <kstandarddirs.h> 34#include <kstandarddirs.h>
35 35
36#include "stdaddressbook.h" 36#include "stdaddressbook.h"
37 37
38using namespace KABC; 38using namespace KABC;
39 39
40StdAddressBook *StdAddressBook::mSelf = 0; 40StdAddressBook *StdAddressBook::mSelf = 0;
41bool StdAddressBook::mAutomaticSave = true; 41bool StdAddressBook::mAutomaticSave = true;
42 42
43static KStaticDeleter<StdAddressBook> addressBookDeleter; 43static KStaticDeleter<StdAddressBook> addressBookDeleter;
44 44
45QString StdAddressBook::fileName() 45QString StdAddressBook::fileName()
46{ 46{
47 return locateLocal( "data", "kabc/std.vcf" ); 47 return locateLocal( "data", "kabc/std.vcf" );
48} 48}
49 49
50QString StdAddressBook::directoryName() 50QString StdAddressBook::directoryName()
51{ 51{
52 return locateLocal( "data", "kabc/stdvcf" ); 52 return locateLocal( "data", "kabc/stdvcf" );
53} 53}
54 54
55void StdAddressBook::handleCrash() 55void StdAddressBook::handleCrash()
56{ 56{
57 StdAddressBook::self()->cleanUp(); 57 StdAddressBook::self()->cleanUp();
58} 58}
59 59
60StdAddressBook *StdAddressBook::self() 60StdAddressBook *StdAddressBook::self()
61{ 61{
62 62
63 if ( !mSelf ) 63 if ( !mSelf )
64 { 64 {
65 QString appdir = StdAddressBook::setTempAppDir(); 65 QString appdir = StdAddressBook::setTempAppDir();
66 66
67 kdDebug(5700) << "StdAddressBook::self()" << endl; 67 kdDebug(5700) << "StdAddressBook::self()" << endl;
68// US im am not sure why I have to use the other format here?? 68// US im am not sure why I have to use the other format here??
69#ifdef KAB_EMBEDDED 69#ifdef KAB_EMBEDDED
70 mSelf = addressBookDeleter.setObject( new StdAddressBook ); 70 mSelf = addressBookDeleter.setObject( new StdAddressBook );
71#else //KAB_EMBEDDED 71#else //KAB_EMBEDDED
72 addressBookDeleter.setObject( mSelf, new StdAddressBook ); 72 addressBookDeleter.setObject( mSelf, new StdAddressBook );
73#endif //KAB_EMBEDDED 73#endif //KAB_EMBEDDED
74 KStandardDirs::setAppDir( appdir ); 74 KStandardDirs::setAppDir( appdir );
75 } 75 }
76 76
77 return mSelf; 77 return mSelf;
78} 78}
79 79
80QString StdAddressBook::setTempAppDir() 80QString StdAddressBook::setTempAppDir()
81{ 81{
82 QString appDIR = KStandardDirs::appDir(); 82 QString appDIR = KStandardDirs::appDir();
83#ifdef DESKTOP_VERSION 83#ifdef DESKTOP_VERSION
84 QString appdir = QDir::homeDirPath(); 84 QString appdir = QDir::homeDirPath();
85 if ( appdir.right(1) == "\\" || appdir.right(1) == "/" ) 85 if ( appdir.right(1) == "\\" || appdir.right(1) == "/" )
86 appdir += "kaddressbook/"; 86 appdir += "kaddressbook/";
87 else 87 else
88 appdir += "/kaddressbook/"; 88 appdir += "/kaddressbook/";
89 KStandardDirs::setAppDir( QDir::convertSeparators( appdir )); 89 KStandardDirs::setAppDir( QDir::convertSeparators( appdir ));
90#else 90#else
91 QString appdir = QDir::homeDirPath() + "/kdepim/apps/kaddressbook"; 91 QString appdir = QDir::homeDirPath() + "/kdepim/apps/kaddressbook";
92 92
93 KStandardDirs::setAppDir( appdir ); 93 KStandardDirs::setAppDir( appdir );
94#endif 94#endif
95 95
96 return appDIR; 96 return appDIR;
97} 97}
98StdAddressBook *StdAddressBook::self( bool onlyFastResources ) 98StdAddressBook *StdAddressBook::self( bool onlyFastResources )
99{ 99{
100 100
101 if ( !mSelf ) 101 if ( !mSelf )
102 { 102 {
103 QString appdir =StdAddressBook::setTempAppDir(); 103 QString appdir =StdAddressBook::setTempAppDir();
104#ifdef KAB_EMBEDDED 104#ifdef KAB_EMBEDDED
105 mSelf = addressBookDeleter.setObject( new StdAddressBook( onlyFastResources ) ); 105 mSelf = addressBookDeleter.setObject( new StdAddressBook( onlyFastResources ) );
106#else //KAB_EMBEDDED 106#else //KAB_EMBEDDED
107 addressBookDeleter.setObject( mSelf, new StdAddressBook( onlyFastResources ) ); 107 addressBookDeleter.setObject( mSelf, new StdAddressBook( onlyFastResources ) );
108#endif //KAB_EMBEDDED 108#endif //KAB_EMBEDDED
109 KStandardDirs::setAppDir( appdir ); 109 KStandardDirs::setAppDir( appdir );
110 } 110 }
111 return mSelf; 111 return mSelf;
112} 112}
113 113
114StdAddressBook::StdAddressBook() 114StdAddressBook::StdAddressBook()
115//US : AddressBook( "kabcrc" ) 115 : AddressBook( "kabcrc" )
116 : AddressBook( locateLocal( "config", "kabcrc") )
117{ 116{
118 117
119 init( false ); 118 init( false );
120} 119}
121 120
122StdAddressBook::StdAddressBook( bool onlyFastResources ) 121StdAddressBook::StdAddressBook( bool onlyFastResources )
123//US : AddressBook( "kabcrc" ) 122 : AddressBook( "kabcrc" )
124 : AddressBook( locateLocal( "config", "kabcrc") )
125{ 123{
126 124
127 init( onlyFastResources ); 125 init( onlyFastResources );
128} 126}
129 127
130StdAddressBook::~StdAddressBook() 128StdAddressBook::~StdAddressBook()
131{ 129{
132 if ( mAutomaticSave ) 130 if ( mAutomaticSave )
133 save(); 131 save();
134} 132}
135 133
136void StdAddressBook::init( bool ) 134void StdAddressBook::init( bool )
137{ 135{
138 KRES::Manager<Resource> *manager = resourceManager(); 136 KRES::Manager<Resource> *manager = resourceManager();
139 KRES::Manager<Resource>::ActiveIterator it; 137 KRES::Manager<Resource>::ActiveIterator it;
140 138
141 for ( it = manager->activeBegin(); it != manager->activeEnd(); ++it ) { 139 for ( it = manager->activeBegin(); it != manager->activeEnd(); ++it ) {
142 (*it)->setAddressBook( this ); 140 (*it)->setAddressBook( this );
143 if ( !(*it)->open() ) 141 if ( !(*it)->open() )
144 error( QString( "Unable to open resource '%1'!" ).arg( (*it)->resourceName() ) ); 142 error( QString( "Unable to open resource '%1'!" ).arg( (*it)->resourceName() ) );
145 } 143 }
146 144
147 Resource *res = standardResource(); 145 Resource *res = standardResource();
148 if ( !res ) { 146 if ( !res ) {
149 res = manager->createResource( "file" ); 147 res = manager->createResource( "file" );
150 if ( res ) 148 if ( res )
151 { 149 {
152 addResource( res ); 150 addResource( res );
153 } 151 }
154 else 152 else
155 qDebug(" No resource available!!!"); 153 qDebug(" No resource available!!!");
156 } 154 }
157 155
158 setStandardResource( res ); 156 setStandardResource( res );
159 manager->writeConfig(); 157 manager->writeConfig();
160 158
161 load(); 159 load();
162} 160}
163 161
164bool StdAddressBook::save() 162bool StdAddressBook::save()
165{ 163{
166 kdDebug(5700) << "StdAddressBook::save()" << endl; 164 kdDebug(5700) << "StdAddressBook::save()" << endl;
167 165
168 bool ok = true; 166 bool ok = true;
169 AddressBook *ab = self(); 167 AddressBook *ab = self();
170 168
171 ab->deleteRemovedAddressees(); 169 ab->deleteRemovedAddressees();
172 170
173 KRES::Manager<Resource>::ActiveIterator it; 171 KRES::Manager<Resource>::ActiveIterator it;
174 KRES::Manager<Resource> *manager = ab->resourceManager(); 172 KRES::Manager<Resource> *manager = ab->resourceManager();
175 for ( it = manager->activeBegin(); it != manager->activeEnd(); ++it ) { 173 for ( it = manager->activeBegin(); it != manager->activeEnd(); ++it ) {
176 if ( !(*it)->readOnly() && (*it)->isOpen() ) { 174 if ( !(*it)->readOnly() && (*it)->isOpen() ) {
177 Ticket *ticket = ab->requestSaveTicket( *it ); 175 Ticket *ticket = ab->requestSaveTicket( *it );
178// qDebug("StdAddressBook::save '%s'", (*it)->resourceName().latin1() ); 176// qDebug("StdAddressBook::save '%s'", (*it)->resourceName().latin1() );
179 if ( !ticket ) { 177 if ( !ticket ) {
180 ab->error( i18n( "Unable to save to resource '%1'. It is locked." ) 178 ab->error( i18n( "Unable to save to resource '%1'. It is locked." )
181 .arg( (*it)->resourceName() ) ); 179 .arg( (*it)->resourceName() ) );
182 return false; 180 return false;
183 } 181 }
184 182
185 if ( !ab->save( ticket ) ) 183 if ( !ab->save( ticket ) )
186 ok = false; 184 ok = false;
187 } 185 }
188 } 186 }
189 187
190 return ok; 188 return ok;
191} 189}
192 190
193void StdAddressBook::close() 191void StdAddressBook::close()
194{ 192{
195//US destructObject is not defined on my system???. Is setObject(0) the same ??? 193//US destructObject is not defined on my system???. Is setObject(0) the same ???
196//US addressBookDeleter.destructObject(); 194//US addressBookDeleter.destructObject();
197 addressBookDeleter.setObject(0); 195 addressBookDeleter.setObject(0);
198 196
199} 197}
200 198
201void StdAddressBook::setAutomaticSave( bool enable ) 199void StdAddressBook::setAutomaticSave( bool enable )
202{ 200{
203 mAutomaticSave = enable; 201 mAutomaticSave = enable;
204} 202}
205 203
206bool StdAddressBook::automaticSave() 204bool StdAddressBook::automaticSave()
207{ 205{
208 return mAutomaticSave; 206 return mAutomaticSave;
209} 207}
210 208
211// should get const for 4.X 209// should get const for 4.X
212Addressee StdAddressBook::whoAmI() 210Addressee StdAddressBook::whoAmI()
213{ 211{
214//US KConfig config( "kabcrc" ); 212//US KConfig config( "kabcrc" );
215 KConfig config( locateLocal("config", "kabcrc") ); 213 KConfig config( locateLocal("config", "kabcrc") );
216 config.setGroup( "General" ); 214 config.setGroup( "General" );
217 215
218 return findByUid( config.readEntry( "WhoAmI" ) ); 216 return findByUid( config.readEntry( "WhoAmI" ) );
219} 217}
220 218
221void StdAddressBook::setWhoAmI( const Addressee &addr ) 219void StdAddressBook::setWhoAmI( const Addressee &addr )
222{ 220{
223//US KConfig config( "kabcrc" ); 221//US KConfig config( "kabcrc" );
224 KConfig config( locateLocal("config", "kabcrc") ); 222 KConfig config( locateLocal("config", "kabcrc") );
225 config.setGroup( "General" ); 223 config.setGroup( "General" );
226 224
227 config.writeEntry( "WhoAmI", addr.uid() ); 225 config.writeEntry( "WhoAmI", addr.uid() );
228} 226}
diff --git a/kabc/syncprefwidget.cpp b/kabc/syncprefwidget.cpp
index 51a8040..a2bde72 100644
--- a/kabc/syncprefwidget.cpp
+++ b/kabc/syncprefwidget.cpp
@@ -1,495 +1,410 @@
1/* 1/*
2 This file is part of KABC for platform independent KDE tools. 2 This file is part of KABC for platform independent KDE tools.
3 Copyright (c) 2004 Ulf Schenk 3 Copyright (c) 2004 Ulf Schenk
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/*
25$Id$ 25$Id$
26*/ 26*/
27 27
28/*US
29#include <qlayout.h>
30#include <qlabel.h>
31#include <qgroupbox.h>
32#include <qbuttongroup.h>
33#include <qlineedit.h>
34#include <qfont.h>
35#include <qslider.h>
36#include <qfile.h>
37#include <qtextstream.h>
38#include <qcombobox.h>
39#include <qvbox.h>
40#include <qhbox.h>
41#include <qspinbox.h>
42#include <qdatetime.h>
43#include <qcheckbox.h>
44#include <qradiobutton.h>
45#include <qpushbutton.h>
46#include <qstrlist.h>
47#include <qapplication.h>
48
49#include <kcolorbutton.h>
50#include <kdebug.h>
51#include <klocale.h>
52#include <kglobal.h>
53#include <kfontdialog.h>
54#include <kmessagebox.h>
55#include <kcolordialog.h>
56#include <kiconloader.h>
57#include <kemailsettings.h>
58#include <kstandarddirs.h>
59#include <kfiledialog.h>
60#include <kmessagebox.h>
61
62#include <kurlrequester.h>
63#include <klineedit.h>
64#include <libkdepim/ksyncprofile.h>
65
66
67#include "koprefs.h"
68
69#include "kosyncprefsdialog.h"
70#include "koglobals.h"
71*/
72 28
73#include <qlayout.h> 29#include <qlayout.h>
74#include <qbuttongroup.h> 30#include <qbuttongroup.h>
75#include <qcheckbox.h> 31#include <qcheckbox.h>
76#include <qradiobutton.h> 32#include <qradiobutton.h>
77#include <qvbox.h> 33#include <qvbox.h>
78#include <qhbox.h> 34#include <qhbox.h>
79#include <qlabel.h> 35#include <qlabel.h>
80#include <qlineedit.h> 36#include <qlineedit.h>
81#include <qpushbutton.h> 37#include <qpushbutton.h>
38#include <qscrollview.h>
39#include <qcombobox.h>
82 40
83 41
84#include <klocale.h> 42#include <klocale.h>
85#include <kdialog.h> 43#include <kdialog.h>
86 44
87 45#include "ksyncprofile.h"
46#include "resource.h"
88#include "syncprefwidget.h" 47#include "syncprefwidget.h"
89 48
90 49
91SyncPrefWidget::SyncPrefWidget(QWidget *parent) : 50SyncPrefWidget_Settings::SyncPrefWidget_Settings(QWidget *parent, const char *name) :
92 KRES::SyncWidget(parent) 51 KRES::SyncWidget(parent, name)
93{ 52{
94 53 init();
95//US setCaption( i18n("Synchronization Preferences"));
96
97//US mSyncProfiles.setAutoDelete( true );
98 init();
99} 54}
100 55
101 56
102SyncPrefWidget::~SyncPrefWidget() 57SyncPrefWidget_Settings::~SyncPrefWidget_Settings()
103{ 58{
104} 59}
105 60
106//US #include <qlayout.h> 61void SyncPrefWidget_Settings::init()
107//US #include <qscrollview.h>
108void SyncPrefWidget::init()
109{ 62{
110 QLabel * lab;
111 QPushButton* button;
112
113/*US
114 //QFrame *page = addPage(i18n("Sync Prefs"),0,0);
115 QVBox * mainbox = new QVBox( this );
116 QScrollView* sv = new QScrollView( mainbox );
117 QHBoxLayout * lay = new QHBoxLayout( this );
118 lay->addWidget( mainbox );
119 QHBox * b_box = new QHBox( mainbox );
120*/
121/*US
122 QPushButton* button = new QPushButton( i18n("Ok"), b_box );
123 connect ( button, SIGNAL( clicked()), this, SLOT (slotOK() ) );
124 button = new QPushButton( i18n("Cancel"), b_box );
125 connect ( button, SIGNAL( clicked()), this, SLOT (reject() ) );
126*/
127 //QBoxLayout * sl = new QVBoxLayout(this );
128 //sl->addWidget ( sv );
129/*US
130 sv->setResizePolicy ( QScrollView::AutoOneFit );
131 QFrame *topFrame = new QFrame ( sv );
132 sv->addChild( topFrame );
133 mSetupSyncAlgTab = topFrame;
134 QGridLayout *topLayout = new QGridLayout(topFrame,6,2);
135 topLayout->setSpacing(spacingHint());
136 topLayout->setMargin(marginHint());
137*/
138//US new code for the layout
139 QGridLayout *topLayout = new QGridLayout( this, 6,2 ); 63 QGridLayout *topLayout = new QGridLayout( this, 6,2 );
140 topLayout->setMargin( KDialog::marginHint() ); 64 topLayout->setMargin( KDialog::marginHint() );
141 topLayout->setSpacing( KDialog::spacingHint() ); 65 topLayout->setSpacing( KDialog::spacingHint() );
142 66
143 //lab = new QLabel(i18n("Sync settings not yet implemented. DO NOT USE!"), topFrame); 67 int iii = 0;
144 int iii = 0; 68 mIncludeInRing = new QCheckBox( i18n("Include in multiple sync"), this );
145 //topLayout->addMultiCellWidget(lab , iii,iii,0,1); 69 topLayout->addMultiCellWidget(mIncludeInRing, iii,iii,0,1);
146 //++iii; 70 ++iii;
147
148/*US
149 mMyMachineName = new QLineEdit(topFrame);
150 lab = new QLabel(mMyMachineName, i18n("Local device name:"), topFrame);
151 topLayout->addWidget(lab ,iii,0);
152 topLayout->addWidget(mMyMachineName,iii,1);
153 ++iii;
154
155 QHBox* buttonbox = new QHBox( topFrame);
156 topLayout->addMultiCellWidget(buttonbox, iii,iii,0,1);
157 ++iii;
158 button = new QPushButton( i18n("New profile"), buttonbox );
159 connect ( button, SIGNAL( clicked()), this, SLOT (newProfile() ) );
160
161 button = new QPushButton( i18n("Clone profile"), buttonbox );
162 connect ( button, SIGNAL( clicked()), this, SLOT ( cloneProfile() ) );
163
164 button = new QPushButton( i18n("Delete profile"), buttonbox );
165 connect ( button, SIGNAL( clicked()), this, SLOT (deleteProfile() ) );
166
167 mProfileBox = new QComboBox(topFrame);
168 mProfileBox->setEditable ( true );
169 connect ( mProfileBox, SIGNAL(activated ( int ) ), this, SLOT (profileChanged( int ) ) );
170 connect ( mProfileBox, SIGNAL( textChanged ( const QString & ) ), this, SLOT (textChanged( const QString & ) ) );
171
172 lab = new QLabel(mProfileBox, i18n("Profile:"), topFrame);
173 topLayout->addWidget(lab ,iii,0);
174 topLayout->addWidget(mProfileBox, iii,1);
175 ++iii;
176*/
177 mIncludeInRing = new QCheckBox( i18n("Include in multiple sync"), this );
178 topLayout->addMultiCellWidget(mIncludeInRing, iii,iii,0,1);
179 ++iii;
180
181 mAskForPreferences = new QCheckBox( i18n("Ask for preferences before sync"), this );
182 topLayout->addMultiCellWidget(mAskForPreferences, iii,iii,0,1);
183 ++iii;
184 QButtonGroup* gr = new QButtonGroup ( 1, Qt::Horizontal, i18n("Sync preferences"), this);
185 topLayout->addMultiCellWidget(gr, iii,iii,0,1);
186 ++iii;
187 loc = new QRadioButton ( i18n("Take local entry on conflict"), gr );
188 rem = new QRadioButton ( i18n("Take remote entry on conflict"), gr );
189 newest = new QRadioButton ( i18n("Take newest entry on conflict"), gr );
190 ask = new QRadioButton ( i18n("Ask for every entry on conflict"), gr );
191 f_loc= new QRadioButton ( i18n("Force: Take local entry always"), gr );
192 f_rem = new QRadioButton ( i18n("Force: Take remote entry always"), gr );
193 // both = new QRadioButton ( i18n("Take both on conflict"), gr );
194 71
195 mShowSummaryAfterSync = new QCheckBox( i18n("Show summary after sync"), this ); 72 mAskForPreferences = new QCheckBox( i18n("Ask for preferences before sync"), this );
196 topLayout->addMultiCellWidget(mShowSummaryAfterSync, iii,iii,0,1); 73 topLayout->addMultiCellWidget(mAskForPreferences, iii,iii,0,1);
197 ++iii; 74 ++iii;
198
199 mWriteBackExisting= new QCheckBox( i18n("Write back existing entries only"), this );
200 topLayout->addMultiCellWidget(mWriteBackExisting, iii,iii,0,1);
201 ++iii;
202
203 mWriteBackFile = new QCheckBox( i18n("Write back file"), this );
204 topLayout->addMultiCellWidget(mWriteBackFile, iii,iii,0,1);
205 ++iii;
206
207 mIsNotLocal = new QCheckBox( i18n("Remote file (w down/upload command)"), this );
208 topLayout->addMultiCellWidget(mIsNotLocal, iii,iii,0,1);
209 connect (mIsNotLocal, SIGNAL( checked(bool)), this, SLOT (kindChanged(bool) ) );
210/*US
211 proGr = new QButtonGroup ( 1, Qt::Horizontal, i18n("Profile kind"), this);
212 gr = proGr;
213 topLayout->addMultiCellWidget(gr, iii,iii,0,1);
214 ++iii;
215 mIsLocal = new QRadioButton ( i18n("Local file"), gr );
216 mIsNotLocal = new QRadioButton ( i18n("Remote file (w down/upload command)"), gr );
217 connect (mIsLocal, SIGNAL( toggled(bool)), this, SLOT (kindChanged(bool) ) );
218*/
219 75
220/*US 76 mShowSummaryAfterSync = new QCheckBox( i18n("Show summary after sync"), this );
221 localFileWidget = new QVBox( topFrame); 77 topLayout->addMultiCellWidget(mShowSummaryAfterSync, iii,iii,0,1);
222 topLayout->addMultiCellWidget(localFileWidget, iii,iii,0,1); 78 ++iii;
223 ++iii;
224 QHBox* temphb = new QHBox( localFileWidget );
225 lab = new QLabel( i18n("Local file:"), temphb);
226 mRemoteFile = new QLineEdit(localFileWidget);
227 79
228 button = new QPushButton( i18n("Choose..."), temphb ); 80 mWriteBackExisting= new QCheckBox( i18n("Write back existing entries only"), this );
229 connect ( button, SIGNAL( clicked()), this, SLOT ( chooseFile() ) ); 81 topLayout->addMultiCellWidget(mWriteBackExisting, iii,iii,0,1);
230*/ 82 ++iii;
231 QHBox* temphb;
232 83
233 remoteFileWidget = new QVBox( this); 84 mWriteBackFile = new QCheckBox( i18n("Write back synced data"), this );
234 topLayout->addMultiCellWidget(remoteFileWidget, iii,iii,0,1); 85 topLayout->addMultiCellWidget(mWriteBackFile, iii,iii,0,1);
235 ++iii; 86 ++iii;
236 lab = new QLabel( i18n("Pre sync (download) command:"), remoteFileWidget);
237 mRemotePrecommand = new QLineEdit(remoteFileWidget);
238 87
239 lab = new QLabel( i18n("Local temp file:"), remoteFileWidget); 88}
240 mLocalTempFile = new QLineEdit(remoteFileWidget);
241 89
90void SyncPrefWidget_Settings::loadSettings( KRES::Resource *res )
91{
92 KABC::Resource* resource = (KABC::Resource*)( res );
93 KSyncProfile* prof = resource->getSyncProfile();
94
95 if (prof == 0)
96 {
97 qDebug("SyncPrefWidget_Settings::loadSettings: something is wrong, because resource does have no syncprofile" );
98 return;
99 }
100
101 mIncludeInRing->setChecked( prof->getIncludeInRingSync() );
102 mAskForPreferences->setChecked( prof->getAskForPreferences());
103 mShowSummaryAfterSync->setChecked( prof->getShowSummaryAfterSync());
104 mWriteBackExisting->setChecked( prof->getWriteBackExisting() );
105 mWriteBackFile->setChecked( prof->getWriteBackFile());
106}
242 107
243 lab = new QLabel( i18n("Post sync (upload) command:"), remoteFileWidget); 108void SyncPrefWidget_Settings::saveSettings( KRES::Resource *res )
244 mRemotePostcommand = new QLineEdit(remoteFileWidget); 109{
110 KABC::Resource* resource = (KABC::Resource*)( res );
111 KSyncProfile* prof = resource->getSyncProfile();
112
113 if (prof == 0)
114 {
115 qDebug("SyncPrefWidget_Settings::saveSettings: something is wrong, because resource does have no syncprofile" );
116 return;
117 }
118
119 prof->setIncludeInRingSync( mIncludeInRing->isChecked() );
120 prof->setAskForPreferences( mAskForPreferences->isChecked());
121 prof->setShowSummaryAfterSync( mShowSummaryAfterSync->isChecked() );
122 prof->setWriteBackExisting(mWriteBackExisting->isChecked() );
123 prof->setWriteBackFile( mWriteBackFile->isChecked());
124}
245 125
246 lab = new QLabel( i18n("Fill in default values for:"), remoteFileWidget);
247 temphb = new QHBox( remoteFileWidget );
248 button = new QPushButton( i18n("ssh/scp"), temphb );
249 connect ( button, SIGNAL( clicked()), this, SLOT (fillSSH() ) );
250 button = new QPushButton( i18n("ftp"), temphb );
251 connect ( button, SIGNAL( clicked()), this, SLOT (fillFTP() ) );
252 lab = new QLabel( i18n("Hint: Use $PWD$ for placeholder of password!"), remoteFileWidget);
253 126
127/***********************************************************************
128 *
129 *
130 **********************************************************************/
254 131
255} 132SyncPrefWidget_Conflict::SyncPrefWidget_Conflict(QWidget *parent, const char *name) :
256/*US 133 KRES::SyncWidget(parent, name)
257void SyncPrefWidget::slotOK()
258{ 134{
259 if ( mMyMachineName->text() == "undefined" ) { 135 init();
260 KMessageBox::error(this,i18n("Local device name undefined!\nPlease define device name!"),i18n("KO/Pi config error"));
261 return;
262 }
263 int i;
264 for (i = 0; i < mSyncProfileNames.count(); ++ i) {
265 if ( mSyncProfileNames.contains( mSyncProfileNames[i]) > 1 ) {
266 KMessageBox::error(this,i18n("Multiple profiles with same name!\nPlease use unique profile names!"),i18n("KO/Pi config error"));
267 return;
268 }
269 }
270 usrWriteConfig();
271 QDialog::accept();
272} 136}
273void SyncPrefWidget::accept() 137
138
139SyncPrefWidget_Conflict::~SyncPrefWidget_Conflict()
274{ 140{
275 slotOK();
276} 141}
277void KOSyncPrefsDialog::chooseFile() 142
143void SyncPrefWidget_Conflict::init()
278{ 144{
279 QString fn =KOPrefs::instance()->mLastSyncedLocalFile; 145 QGridLayout *topLayout = new QGridLayout( this, 6,2 );
146 topLayout->setMargin( KDialog::marginHint() );
147 topLayout->setSpacing( KDialog::spacingHint() );
280 148
281 fn =KFileDialog:: getOpenFileName( fn, i18n("Sync filename(*.ics/*.vcs)"), this ); 149 int iii = 0;
282 if ( fn == "" ) 150
283 return; 151 QButtonGroup* gr = new QButtonGroup ( 1, Qt::Horizontal, i18n("In case of conflicts"), this);
284 mRemoteFile->setText( fn ); 152 topLayout->addMultiCellWidget(gr, iii,iii,0,1);
153 ++iii;
154 loc = new QRadioButton ( i18n("Take local entry on conflict"), gr );
155 rem = new QRadioButton ( i18n("Take remote entry on conflict"), gr );
156 newest = new QRadioButton ( i18n("Take newest entry on conflict"), gr );
157 ask = new QRadioButton ( i18n("Ask for every entry on conflict"), gr );
158 f_loc= new QRadioButton ( i18n("Force: Take local entry always"), gr );
159 f_rem = new QRadioButton ( i18n("Force: Take remote entry always"), gr );
160 // both = new QRadioButton ( i18n("Take both on conflict"), gr );
285} 161}
286 162
287void KOSyncPrefsDialog::textChanged( const QString & s ) 163void SyncPrefWidget_Conflict::loadSettings( KRES::Resource *res )
288{ 164{
289 if ( mProfileBox->count() == 0 ) 165 KABC::Resource* resource = (KABC::Resource*)( res );
290 return; 166 KSyncProfile* prof = resource->getSyncProfile();
291 if ( currentSelection < 3 ) { 167
292 //KMessageBox::error(this,i18n("This profil name\ncannot be edited!\n"),i18n("KO/Pi config error")); 168 if (prof == 0)
293 mProfileBox->blockSignals( true ); 169 {
294 mProfileBox->setCurrentItem(mProfileBox-> currentItem ()); 170 qDebug("SyncPrefWidget_Conflict::loadSettings: something is wrong, because resource does have no syncprofile" );
295 mProfileBox->blockSignals( false ); 171 return;
296 return; 172 }
297 } 173
298 //qDebug("cur i %d ",mProfileBox-> currentItem () ); 174 switch ( prof->getSyncPrefs() ) {
299 mProfileBox->changeItem ( s, mProfileBox-> currentItem () ) ; 175 case 0:
300 KSyncProfile* prof = mSyncProfiles.at(mProfileBox-> currentItem ()) ; 176 loc->setChecked( true);
301 prof->setName( s ); 177 break;
302 mSyncProfileNames[mProfileBox-> currentItem ()] = s; 178 case 1:
179 rem->setChecked( true );
180 break;
181 case 2:
182 newest->setChecked( true);
183 break;
184 case 3:
185 ask->setChecked( true);
186 break;
187 case 4:
188 f_loc->setChecked( true);
189 break;
190 case 5:
191 f_rem->setChecked( true);
192 break;
193 case 6:
194 //both->setChecked( true);
195 break;
196 default:
197 break;
198 }
303} 199}
304void KOSyncPrefsDialog::profileChanged( int item ) 200
201void SyncPrefWidget_Conflict::saveSettings( KRES::Resource *res )
305{ 202{
306 //qDebug("KOSyncPrefsDialog::profileChanged %d ", item ); 203 KABC::Resource* resource = (KABC::Resource*)( res );
307 KSyncProfile* prof; 204 KSyncProfile* prof = resource->getSyncProfile();
308 saveProfile(); 205
309 currentSelection = item; 206 if (prof == 0)
310 prof = mSyncProfiles.at(item) ; 207 {
311 mRemotePrecommand->setText(prof->getPreSyncCommand()); 208 qDebug("SyncPrefWidget_Conftlict::saveSettings: something is wrong, because resource does have no syncprofile" );
312 mRemotePostcommand->setText(prof->getPostSyncCommand()); 209 return;
313 mLocalTempFile->setText(prof->getLocalTempFile()); 210 }
314 mRemoteFile->setText(prof->getRemoteFileName()) ; 211
315 mShowSummaryAfterSync->setChecked( prof->getShowSummaryAfterSync()); 212 int syncprefs = rem->isChecked()*1+newest->isChecked()*2+ ask->isChecked()*3+ f_loc->isChecked()*4+ f_rem->isChecked()*5 ;//+ both->isChecked()*6 ;
316 mAskForPreferences->setChecked( prof->getAskForPreferences()); 213 prof->setSyncPrefs( syncprefs );
317 mWriteBackExisting->setChecked( prof->getWriteBackExisting() ); 214
318 mWriteBackFile->setChecked( prof->getWriteBackFile()); 215}
319 mIncludeInRing->setChecked( prof->getIncludeInRingSync() ); 216
320 217
321 switch ( prof->getSyncPrefs() ) { 218/***********************************************************************
322 case 0: 219 *
323 loc->setChecked( true); 220 *
324 break; 221 **********************************************************************/
325 case 1: 222
326 rem->setChecked( true ); 223SyncPrefWidget_Remote::SyncPrefWidget_Remote(QWidget *parent, const char *name) :
327 break; 224 KRES::SyncWidget(parent, name)
328 case 2: 225{
329 newest->setChecked( true); 226 init();
330 break;
331 case 3:
332 ask->setChecked( true);
333 break;
334 case 4:
335 f_loc->setChecked( true);
336 break;
337 case 5:
338 f_rem->setChecked( true);
339 break;
340 case 6:
341 //both->setChecked( true);
342 break;
343 default:
344 break;
345 }
346 mIsLocal->setChecked(prof->getIsLocalFileSync()) ;
347 mIsNotLocal->setChecked(!prof->getIsLocalFileSync());
348 proGr->setEnabled( item > 2 );
349 if ( item < 3 ) {
350 localFileWidget->setEnabled(false);
351 remoteFileWidget->setEnabled(false);
352
353 } else
354 kindChanged( prof->getIsLocalFileSync() );
355} 227}
356 228
357void KOSyncPrefsDialog::fillSSH() 229
230SyncPrefWidget_Remote::~SyncPrefWidget_Remote()
358{ 231{
359 mRemotePrecommand->setText("scp zaurus@192.168.0.65:/home/zaurus/kdepim/apps/korganizer/mycalendar.ics /tmp/mycalendar.ics" );
360 mLocalTempFile->setText("/tmp/mycalendar.ics" );
361 mRemotePostcommand->setText("scp /tmp/mycalendar.ics zaurus@192.168.0.65:/home/zaurus/kdepim/apps/korganizer/mycalendar.ics" );
362} 232}
363void KOSyncPrefsDialog::fillFTP() 233
234void SyncPrefWidget_Remote::init()
364{ 235{
365 mRemotePrecommand->setText("cd /tmp;ftp ftp://zaurus:a@192.168.0.65/kdepim/apps/korganizer/mycalendar.ics" ); 236 QLabel * lab;
366 mLocalTempFile->setText("/tmp/mycalendar.ics" ); 237 QPushButton* button;
367 mRemotePostcommand->setText("ftp -u ftp://zaurus:a@192.168.0.65/kdepim/apps/korganizer/mycalendar.ics /tmp/mycalendar.ics" ); 238
239
240 QGridLayout *topLayout = new QGridLayout( this, 6,2 );
241 topLayout->setMargin( KDialog::marginHint() );
242 topLayout->setSpacing( KDialog::spacingHint() );
243
244 int iii = 0;
245
246 QButtonGroup* gr;
247
248 QButtonGroup *proGr = new QButtonGroup ( 1, Qt::Horizontal, i18n("Profile kind"), this);
249 gr = proGr;
250 topLayout->addMultiCellWidget(gr, iii,iii,0,1);
251 ++iii;
252 mProfileKind = new QComboBox( gr );
253
254 mProfileKind->insertItem( i18n("Local file"), Local );
255 mProfileKind->insertItem( i18n("Remote file (w down/upload cmd)"),Remote );
256 mProfileKind->insertItem( i18n("Mobile device (cell phone)"), Mobile );
257
258 connect( mProfileKind, SIGNAL( activated( int ) ),
259 this, SLOT (kindChanged( int ) ) );
260
261
262 QHBox* temphb;
263
264 remoteFileWidget = new QVBox( this);
265 topLayout->addMultiCellWidget(remoteFileWidget, iii,iii,0,1);
266 ++iii;
267 lab = new QLabel( i18n("Pre sync (download) command:"), remoteFileWidget);
268 mRemotePrecommand = new QLineEdit(remoteFileWidget);
269
270 lab = new QLabel( i18n("Local temp file (=Location):"), remoteFileWidget);
271 mLocalTempFile = new QLineEdit(remoteFileWidget);
272 mLocalTempFile->setEnabled(false);
273
274
275 lab = new QLabel( i18n("Post sync (upload) command:"), remoteFileWidget);
276 mRemotePostcommand = new QLineEdit(remoteFileWidget);
277
278 lab = new QLabel( i18n("Fill in default values for:"), remoteFileWidget);
279 temphb = new QHBox( remoteFileWidget );
280 button = new QPushButton( i18n("ssh/scp"), temphb );
281 connect ( button, SIGNAL( clicked()), this, SLOT (fillSSH() ) );
282 button = new QPushButton( i18n("ftp"), temphb );
283 connect ( button, SIGNAL( clicked()), this, SLOT (fillFTP() ) );
284 lab = new QLabel( i18n("Hint: Use $PWD$ for placeholder of password!"), remoteFileWidget);
368 285
369} 286}
370void KOSyncPrefsDialog::kindChanged( bool b ) 287
288void SyncPrefWidget_Remote::loadSettings( KRES::Resource *res )
371{ 289{
290 KABC::Resource* resource = (KABC::Resource*)( res );
291 KSyncProfile* prof = resource->getSyncProfile();
292
293 if (prof == 0)
294 {
295 qDebug("SyncPrefWidget_Remote::loadSettings: something is wrong, because resource does have no syncprofile" );
296 return;
297 }
372 298
373 localFileWidget->setEnabled(b); 299 int val;
374 remoteFileWidget->setEnabled(!b);
375 300
301 if (prof->getIsPhoneSync())
302 val = Mobile;
303 else if (!prof->getIsLocalFileSync())
304 val = Remote;
305 else // default value
306 val = Local;
307
308 mProfileKind->setCurrentItem( val );
309 kindChanged( val );
310
311
312 mRemotePrecommand->setText(prof->getPreSyncCommand());
313 mLocalTempFile->setText(resource->fileName());
314 mRemotePostcommand->setText(prof->getPostSyncCommand());
376} 315}
377void KOSyncPrefsDialog::deleteProfile() 316
317void SyncPrefWidget_Remote::saveSettings( KRES::Resource *res )
378{ 318{
379 //qDebug("KOSyncPrefsDialog::deleteProfile() "); 319 KABC::Resource* resource = (KABC::Resource*)( res );
380 if ( currentSelection >= 0 ) { 320 KSyncProfile* prof = resource->getSyncProfile();
381 if ( currentSelection < 3 ) { 321
382 KMessageBox::error(this,i18n("This profil cannot be deleted!\n"),i18n("KO/Pi config error")); 322 if (prof == 0)
383 return; 323 {
384 } 324 qDebug("SyncPrefWidget_Remote::saveSettings: something is wrong, because resource does have no syncprofile" );
385 KSyncProfile* temp = mSyncProfiles.at(currentSelection); 325 return;
386 mSyncProfiles.remove( temp ); 326 }
387 mSyncProfileNames.remove( mSyncProfileNames.at( currentSelection )); 327
388 insertProfiles(); 328 int val = mProfileKind->currentItem();
389 } 329
330 if (val == Mobile)
331 {
332 prof->setIsLocalFileSync(true);
333 prof->setIsPhoneSync(true);
334 }
335 else if (val == Remote)
336 {
337 prof->setIsLocalFileSync(false);
338 prof->setIsPhoneSync(false);
339 }
340 else // default value is Local
341 {
342 prof->setIsLocalFileSync(true);
343 prof->setIsPhoneSync(false);
344 }
345
346
347 prof->setPreSyncCommand( mRemotePrecommand->text());
348//US prof->setLocalTempFile( mLocalTempFile->text());
349 prof->setPostSyncCommand( mRemotePostcommand->text() );
390} 350}
391 351
392void KOSyncPrefsDialog::saveProfile() 352
353void SyncPrefWidget_Remote::fillSSH()
393{ 354{
394 KSyncProfile* prof; 355 QString location = mLocalTempFile->text();
395 if ( currentSelection >= 0 ) {
396 prof = mSyncProfiles.at(currentSelection) ;
397 prof->setPreSyncCommand( mRemotePrecommand->text());
398 prof->setPostSyncCommand( mRemotePostcommand->text() );
399 prof->setLocalTempFile( mLocalTempFile->text());
400 prof->setRemoteFileName( mRemoteFile->text() );
401 prof->setShowSummaryAfterSync( mShowSummaryAfterSync->isChecked() );
402 prof->setAskForPreferences( mAskForPreferences->isChecked());
403 prof->setWriteBackExisting(mWriteBackExisting->isChecked() );
404 prof->setWriteBackFile( mWriteBackFile->isChecked());
405 prof->setIncludeInRingSync( mIncludeInRing->isChecked() );
406 int syncprefs = rem->isChecked()*1+newest->isChecked()*2+ ask->isChecked()*3+ f_loc->isChecked()*4+ f_rem->isChecked()*5 ;//+ both->isChecked()*6 ;
407 prof->setSyncPrefs( syncprefs);
408 prof->setIsLocalFileSync( mIsLocal->isChecked() );
409 }
410 356
357 mRemotePrecommand->setText("scp zaurus@192.168.0.65:/home/zaurus/kdepim/"+location + " " + location );
358//US mLocalTempFile->setText("/tmp/mycalendar.ics" );
359 mRemotePostcommand->setText("scp " + location + " zaurus@192.168.0.65:/home/zaurus/kdepim/"+location );
411} 360}
412 361
413void KOSyncPrefsDialog::insertProfiles() 362void SyncPrefWidget_Remote::fillFTP()
414{ 363{
415 int curItem = mProfileBox->currentItem(); 364 QString location = mLocalTempFile->text();
416 mProfileBox->blockSignals( true ); 365
417 mProfileBox->clear(); 366 mRemotePrecommand->setText("cd /tmp;ftp ftp://zaurus:a@192.168.0.65/kdepim/" + location );
418 mProfileBox->insertStringList (mSyncProfileNames ); 367//US mLocalTempFile->setText("/tmp/mycalendar.ics" );
419 int item = mSyncProfileNames.count() -1; 368 mRemotePostcommand->setText("ftp -u ftp://zaurus:a@192.168.0.65/kdepim/"+location+ " " + location);
420 if ( curItem >= 0 && mSyncProfileNames.count() > 0 && curItem < mSyncProfileNames.count() ) 369
421 mProfileBox->setCurrentItem( curItem );
422 else if ( item >= 0 ) {
423 mProfileBox->setCurrentItem( item );
424 }
425 currentSelection = -1;
426 if ( mSyncProfileNames.count() > 0 ) {
427 //qDebug(" profileChanged( mProfileBox->currentItem() ");
428 profileChanged( mProfileBox->currentItem() );
429 currentSelection = mProfileBox->currentItem();
430 }
431 mProfileBox->blockSignals( false );
432} 370}
433 371
434void KOSyncPrefsDialog::addProfile ( KSyncProfile* temp ) 372
373void SyncPrefWidget_Remote::kindChanged( int newKind )
435{ 374{
436 saveProfile(); 375
437 mSyncProfiles.append( temp ); 376 if (newKind == Mobile)
438 mSyncProfileNames << temp->getName(); 377 remoteFileWidget->setEnabled(false);
439 insertProfiles(); 378 else if (newKind == Remote)
440 int last = mProfileBox->count() -1; 379 remoteFileWidget->setEnabled(true);
441 mProfileBox->blockSignals( true ); 380 else // default value is local
442 mProfileBox->setCurrentItem( last ); 381 remoteFileWidget->setEnabled(false);
443 mProfileBox->blockSignals( false ); 382
444 profileChanged(last);
445} 383}
446void KOSyncPrefsDialog::newProfile() 384
385/***********************************************************************
386 *
387 *
388 **********************************************************************/
389
390
391SyncPrefWidgetContainer::SyncPrefWidgetContainer()
392 : SyncWidgetContainer()
447{ 393{
448 addProfile ( new KSyncProfile () );
449} 394}
450 395
451void KOSyncPrefsDialog::cloneProfile() 396KRES::SyncWidget* SyncPrefWidgetContainer::generateSettingsTab(QWidget *parent = 0, const char *name = 0)
452{ 397{
453 if ( currentSelection >= 0 ) 398 return new SyncPrefWidget_Settings(parent, name);
454 addProfile (mSyncProfiles.at(currentSelection)->clone()) ;
455 else
456 newProfile();
457} 399}
458 400
459 401KRES::SyncWidget* SyncPrefWidgetContainer::generateConflictsTab(QWidget *parent = 0, const char *name = 0)
460void KOSyncPrefsDialog::usrReadConfig()
461{ 402{
462 KConfig *config = KOGlobals::config(); 403 return new SyncPrefWidget_Conflict(parent, name);
463 config->setGroup("SyncProfiles");
464 mSyncProfileNames = KOPrefs::instance()->mSyncProfileNames;
465 int i;
466 KSyncProfile* temp ;
467 mSyncProfiles.clear();
468 for ( i = 0; i < mSyncProfileNames.count();++i ) {
469 temp = new KSyncProfile ();
470 temp->setName( mSyncProfileNames[i] );
471 temp->readConfig( config );
472 mSyncProfiles.append( temp );
473 }
474 insertProfiles();
475 mMyMachineName->setText(KOPrefs::instance()->mLocalMachineName );
476} 404}
477 405
478 406KRES::SyncWidget* SyncPrefWidgetContainer::generateRemoteTab(QWidget *parent = 0, const char *name = 0)
479void KOSyncPrefsDialog::usrWriteConfig()
480{ 407{
481 saveProfile(); 408 return new SyncPrefWidget_Remote(parent, name);
482 if ( currentSelection >= 0 )
483 profileChanged(currentSelection);
484 KConfig *config = KOGlobals::config();
485 config->setGroup("SyncProfiles");
486 KSyncProfile* prof = mSyncProfiles.first();
487 while ( prof ) {
488 prof->writeConfig(config);
489 prof = mSyncProfiles.next();
490 }
491 KOPrefs::instance()->mSyncProfileNames = mSyncProfileNames;
492 KOPrefs::instance()->mLocalMachineName = mMyMachineName->text();
493 config->writeEntry("SyncProfileNames",&mSyncProfileNames);
494} 409}
495*/ 410
diff --git a/kabc/syncprefwidget.h b/kabc/syncprefwidget.h
index 3709d78..b20a68e 100644
--- a/kabc/syncprefwidget.h
+++ b/kabc/syncprefwidget.h
@@ -1,121 +1,139 @@
1/* 1/*
2 This file is part of KABC/Pi. 2 This file is part of KABC/Pi.
3 Copyright (c) 2004 Ulf Schenk 3 Copyright (c) 2004 Ulf Schenk
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/*
25$Id$ 25$Id$
26*/ 26*/
27 27
28#ifndef _SYNCPREFWIDGET_H 28#ifndef _SYNCPREFWIDGET_H
29#define _SYNCPREFWIDGET_H 29#define _SYNCPREFWIDGET_H
30 30
31#include <kresources/syncwidget.h> 31#include <kresources/syncwidget.h>
32 32
33/*US
34//#include <qframe.h>
35//#include <qdict.h>
36#include <qvbox.h>
37#include <qhbox.h>
38//#include <qcolor.h>
39//#include <qlistview.h>
40
41#include <kdialogbase.h>
42
43#include <libkdepim/kprefsdialog.h>
44*/
45
46//US class KColorButton;
47//US class QSpinBox;;
48class QRadioButton; 33class QRadioButton;
49class QCheckBox; 34class QCheckBox;
50class QVBox; 35class QVBox;
51//US class QSlider; 36class QComboBox;
52//US class KURLRequester;
53//US class QComboBox;
54class QLineEdit; 37class QLineEdit;
55//US class QStringList; 38class KRES::Resource;
56//US class KSyncProfile;
57 39
58 40class SyncPrefWidget_Settings : public KRES::SyncWidget
59/** Dialog to change the korganizer configuration.
60 */
61class SyncPrefWidget : public KRES::SyncWidget
62{ 41{
63 Q_OBJECT 42 Q_OBJECT
64 public: 43 public:
65 SyncPrefWidget(QWidget *parent=0); 44 SyncPrefWidget_Settings(QWidget *parent=0, const char *name = 0 );
66 ~SyncPrefWidget(); 45 ~SyncPrefWidget_Settings();
67//US void usrReadConfig();
68 46
69 public slots: 47 public slots:
70 protected slots: 48 virtual void loadSettings( KRES::Resource *resource );
71//US void accept(); 49 virtual void saveSettings( KRES::Resource *resource );
72//US void deleteProfile();
73//US void newProfile();
74//US void cloneProfile();
75//US void kindChanged(bool);
76//US void fillSSH();
77//US void fillFTP();
78//US void textChanged( const QString & );
79//US void profileChanged( int );
80//US void chooseFile();
81//US void slotOK();
82 50
83 protected:
84//US void usrWriteConfig();
85 51
52 protected:
86 void init(); 53 void init();
87 54
88 private: 55 private:
56 QCheckBox* mIncludeInRing;
57 QCheckBox* mWriteBackFile;
58 QCheckBox* mWriteBackExisting;
59 QCheckBox* mAskForPreferences;
60 QCheckBox* mShowSummaryAfterSync;
61};
89 62
90 63
91//US int currentSelection;
92//US QPtrList<KSyncProfile> mSyncProfiles;
93//US QStringList mSyncProfileNames;
94//US QLineEdit * mMyMachineName;
95//US QComboBox * mProfileBox;
96//US QRadioButton* mIsLocal;
97 QCheckBox* mIsNotLocal;
98 QCheckBox* mIncludeInRing;
99//US void addProfile ( KSyncProfile* );
100//US void insertProfiles();
101//US void saveProfile();
102//US QButtonGroup* proGr;
103 64
65class SyncPrefWidget_Conflict : public KRES::SyncWidget
66{
67 Q_OBJECT
68 public:
69 SyncPrefWidget_Conflict(QWidget *parent=0, const char *name = 0 );
70 ~SyncPrefWidget_Conflict();
71
72 public slots:
73 virtual void loadSettings( KRES::Resource *resource );
74 virtual void saveSettings( KRES::Resource *resource );
75
76 protected:
77 void init();
78
79 private:
104 QRadioButton* loc, *rem, *newest, *ask, *f_loc,* f_rem, *both; 80 QRadioButton* loc, *rem, *newest, *ask, *f_loc,* f_rem, *both;
81};
82
83
84
105 85
86class SyncPrefWidget_Remote : public KRES::SyncWidget
87{
88 Q_OBJECT
89 public:
90 SyncPrefWidget_Remote(QWidget *parent=0, const char *name = 0 );
91 ~SyncPrefWidget_Remote();
92
93 enum Types {
94 Local = 0,
95 Remote = 1,
96 Mobile =2
97 };
106 98
99
100 public slots:
101 virtual void loadSettings( KRES::Resource *resource );
102 virtual void saveSettings( KRES::Resource *resource );
103
104 protected slots:
105 void fillSSH();
106 void fillFTP();
107 void kindChanged( int newKind );
108
109 protected:
110 void init();
111
112 private:
113 QComboBox* mProfileKind;
107 QLineEdit * mRemotePostcommand; 114 QLineEdit * mRemotePostcommand;
108 QLineEdit * mRemotePrecommand; 115 QLineEdit * mRemotePrecommand;
109 QLineEdit * mRemoteFile; 116 QLineEdit * mRemoteFile;
110 QLineEdit * mLocalTempFile; 117 QLineEdit * mLocalTempFile;
111//US QWidget* mSetupSyncAlgTab;
112
113//US QVBox* localFileWidget;
114 QVBox* remoteFileWidget; 118 QVBox* remoteFileWidget;
115 QCheckBox* mWriteBackFile;
116 QCheckBox* mWriteBackExisting;
117 QCheckBox* mAskForPreferences;
118 QCheckBox* mShowSummaryAfterSync;
119}; 119};
120 120
121
122
123
124
125class SyncPrefWidgetContainer : public KRES::SyncWidgetContainer
126{
127 Q_OBJECT
128
129public:
130 SyncPrefWidgetContainer();
131
132 virtual KRES::SyncWidget* generateSettingsTab(QWidget *parent, const char *name);
133 virtual KRES::SyncWidget* generateConflictsTab(QWidget *parent, const char *name);
134 virtual KRES::SyncWidget* generateRemoteTab(QWidget *parent, const char *name);
135};
136
137
138
121#endif 139#endif