summaryrefslogtreecommitdiffabout
path: root/kabc/stdaddressbook.cpp
Unidiff
Diffstat (limited to 'kabc/stdaddressbook.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--kabc/stdaddressbook.cpp17
1 files changed, 3 insertions, 14 deletions
diff --git a/kabc/stdaddressbook.cpp b/kabc/stdaddressbook.cpp
index 144a9dc..075f12f 100644
--- a/kabc/stdaddressbook.cpp
+++ b/kabc/stdaddressbook.cpp
@@ -1,239 +1,228 @@
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/*US
29#include <stdlib.h>
30
31#include <kapplication.h>
32#include <kcrash.h>
33#include <ksimpleconfig.h>
34*/
35
36#ifndef DESKTOP_VERSION
37#include <qpe/global.h>
38#else
39#include <qdir.h> 28#include <qdir.h>
40#endif
41
42#include "resource.h" 29#include "resource.h"
43#include <kresources/manager.h> 30#include <kresources/manager.h>
44#include <kdebug.h> 31#include <kdebug.h>
45#include <klocale.h> 32#include <klocale.h>
46#include <kstaticdeleter.h> 33#include <kstaticdeleter.h>
47#include <kstandarddirs.h> 34#include <kstandarddirs.h>
48 35
49#include "stdaddressbook.h" 36#include "stdaddressbook.h"
50 37
51using namespace KABC; 38using namespace KABC;
52 39
53StdAddressBook *StdAddressBook::mSelf = 0; 40StdAddressBook *StdAddressBook::mSelf = 0;
54bool StdAddressBook::mAutomaticSave = true; 41bool StdAddressBook::mAutomaticSave = true;
55 42
56static KStaticDeleter<StdAddressBook> addressBookDeleter; 43static KStaticDeleter<StdAddressBook> addressBookDeleter;
57 44
58QString StdAddressBook::fileName() 45QString StdAddressBook::fileName()
59{ 46{
60 return locateLocal( "data", "kabc/std.vcf" ); 47 return locateLocal( "data", "kabc/std.vcf" );
61} 48}
62 49
63QString StdAddressBook::directoryName() 50QString StdAddressBook::directoryName()
64{ 51{
65 return locateLocal( "data", "kabc/stdvcf" ); 52 return locateLocal( "data", "kabc/stdvcf" );
66} 53}
67 54
68void StdAddressBook::handleCrash() 55void StdAddressBook::handleCrash()
69{ 56{
70 StdAddressBook::self()->cleanUp(); 57 StdAddressBook::self()->cleanUp();
71} 58}
72 59
73StdAddressBook *StdAddressBook::self() 60StdAddressBook *StdAddressBook::self()
74{ 61{
75 62
76 if ( !mSelf ) 63 if ( !mSelf )
77 { 64 {
78 QString appdir = StdAddressBook::setTempAppDir(); 65 QString appdir = StdAddressBook::setTempAppDir();
79 66
80 kdDebug(5700) << "StdAddressBook::self()" << endl; 67 kdDebug(5700) << "StdAddressBook::self()" << endl;
81// 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??
82#ifdef KAB_EMBEDDED 69#ifdef KAB_EMBEDDED
83 mSelf = addressBookDeleter.setObject( new StdAddressBook ); 70 mSelf = addressBookDeleter.setObject( new StdAddressBook );
84#else //KAB_EMBEDDED 71#else //KAB_EMBEDDED
85 addressBookDeleter.setObject( mSelf, new StdAddressBook ); 72 addressBookDeleter.setObject( mSelf, new StdAddressBook );
86#endif //KAB_EMBEDDED 73#endif //KAB_EMBEDDED
87 KStandardDirs::setAppDir( appdir ); 74 KStandardDirs::setAppDir( appdir );
88 } 75 }
89 76
90 return mSelf; 77 return mSelf;
91} 78}
92 79
93QString StdAddressBook::setTempAppDir() 80QString StdAddressBook::setTempAppDir()
94{ 81{
95 QString appDIR = KStandardDirs::appDir(); 82 QString appDIR = KStandardDirs::appDir();
96#ifdef DESKTOP_VERSION 83#ifdef DESKTOP_VERSION
97 QString appdir = QDir::homeDirPath(); 84 QString appdir = QDir::homeDirPath();
98 if ( appdir.right(1) == "\\" || appdir.right(1) == "/" ) 85 if ( appdir.right(1) == "\\" || appdir.right(1) == "/" )
99 appdir += "kaddressbook/"; 86 appdir += "kaddressbook/";
100 else 87 else
101 appdir += "/kaddressbook/"; 88 appdir += "/kaddressbook/";
102 KStandardDirs::setAppDir( QDir::convertSeparators( appdir )); 89 KStandardDirs::setAppDir( QDir::convertSeparators( appdir ));
103#else 90#else
104 KStandardDirs::setAppDir( Global::applicationFileName( "kaddressbook", "" ) ); 91 QString appdir = QDir::homeDirPath() + "/kdepim/apps/kaddressbook";
92
93 KStandardDirs::setAppDir( appdir );
105#endif 94#endif
106 95
107 return appDIR; 96 return appDIR;
108} 97}
109StdAddressBook *StdAddressBook::self( bool onlyFastResources ) 98StdAddressBook *StdAddressBook::self( bool onlyFastResources )
110{ 99{
111 100
112 if ( !mSelf ) 101 if ( !mSelf )
113 { 102 {
114 QString appdir =StdAddressBook::setTempAppDir(); 103 QString appdir =StdAddressBook::setTempAppDir();
115#ifdef KAB_EMBEDDED 104#ifdef KAB_EMBEDDED
116 mSelf = addressBookDeleter.setObject( new StdAddressBook( onlyFastResources ) ); 105 mSelf = addressBookDeleter.setObject( new StdAddressBook( onlyFastResources ) );
117#else //KAB_EMBEDDED 106#else //KAB_EMBEDDED
118 addressBookDeleter.setObject( mSelf, new StdAddressBook( onlyFastResources ) ); 107 addressBookDeleter.setObject( mSelf, new StdAddressBook( onlyFastResources ) );
119#endif //KAB_EMBEDDED 108#endif //KAB_EMBEDDED
120 KStandardDirs::setAppDir( appdir ); 109 KStandardDirs::setAppDir( appdir );
121 } 110 }
122 return mSelf; 111 return mSelf;
123} 112}
124 113
125StdAddressBook::StdAddressBook() 114StdAddressBook::StdAddressBook()
126//US : AddressBook( "kabcrc" ) 115//US : AddressBook( "kabcrc" )
127 : AddressBook( locateLocal( "config", "kabcrc") ) 116 : AddressBook( locateLocal( "config", "kabcrc") )
128{ 117{
129 118
130 init( false ); 119 init( false );
131} 120}
132 121
133StdAddressBook::StdAddressBook( bool onlyFastResources ) 122StdAddressBook::StdAddressBook( bool onlyFastResources )
134//US : AddressBook( "kabcrc" ) 123//US : AddressBook( "kabcrc" )
135 : AddressBook( locateLocal( "config", "kabcrc") ) 124 : AddressBook( locateLocal( "config", "kabcrc") )
136{ 125{
137 126
138 init( onlyFastResources ); 127 init( onlyFastResources );
139} 128}
140 129
141StdAddressBook::~StdAddressBook() 130StdAddressBook::~StdAddressBook()
142{ 131{
143 if ( mAutomaticSave ) 132 if ( mAutomaticSave )
144 save(); 133 save();
145} 134}
146 135
147void StdAddressBook::init( bool ) 136void StdAddressBook::init( bool )
148{ 137{
149 KRES::Manager<Resource> *manager = resourceManager(); 138 KRES::Manager<Resource> *manager = resourceManager();
150 KRES::Manager<Resource>::ActiveIterator it; 139 KRES::Manager<Resource>::ActiveIterator it;
151 140
152 for ( it = manager->activeBegin(); it != manager->activeEnd(); ++it ) { 141 for ( it = manager->activeBegin(); it != manager->activeEnd(); ++it ) {
153 (*it)->setAddressBook( this ); 142 (*it)->setAddressBook( this );
154 if ( !(*it)->open() ) 143 if ( !(*it)->open() )
155 error( QString( "Unable to open resource '%1'!" ).arg( (*it)->resourceName() ) ); 144 error( QString( "Unable to open resource '%1'!" ).arg( (*it)->resourceName() ) );
156 } 145 }
157 146
158 Resource *res = standardResource(); 147 Resource *res = standardResource();
159 if ( !res ) { 148 if ( !res ) {
160 res = manager->createResource( "file" ); 149 res = manager->createResource( "file" );
161 if ( res ) 150 if ( res )
162 { 151 {
163 addResource( res ); 152 addResource( res );
164 } 153 }
165 else 154 else
166 kdDebug(5700) << "No resource available!!!" << endl; 155 kdDebug(5700) << "No resource available!!!" << endl;
167 } 156 }
168 157
169 setStandardResource( res ); 158 setStandardResource( res );
170 manager->writeConfig(); 159 manager->writeConfig();
171 160
172 load(); 161 load();
173} 162}
174 163
175bool StdAddressBook::save() 164bool StdAddressBook::save()
176{ 165{
177 kdDebug(5700) << "StdAddressBook::save()" << endl; 166 kdDebug(5700) << "StdAddressBook::save()" << endl;
178 167
179 bool ok = true; 168 bool ok = true;
180 AddressBook *ab = self(); 169 AddressBook *ab = self();
181 170
182 ab->deleteRemovedAddressees(); 171 ab->deleteRemovedAddressees();
183 172
184 KRES::Manager<Resource>::ActiveIterator it; 173 KRES::Manager<Resource>::ActiveIterator it;
185 KRES::Manager<Resource> *manager = ab->resourceManager(); 174 KRES::Manager<Resource> *manager = ab->resourceManager();
186 for ( it = manager->activeBegin(); it != manager->activeEnd(); ++it ) { 175 for ( it = manager->activeBegin(); it != manager->activeEnd(); ++it ) {
187 if ( !(*it)->readOnly() && (*it)->isOpen() ) { 176 if ( !(*it)->readOnly() && (*it)->isOpen() ) {
188 Ticket *ticket = ab->requestSaveTicket( *it ); 177 Ticket *ticket = ab->requestSaveTicket( *it );
189// qDebug("StdAddressBook::save '%s'", (*it)->resourceName().latin1() ); 178// qDebug("StdAddressBook::save '%s'", (*it)->resourceName().latin1() );
190 if ( !ticket ) { 179 if ( !ticket ) {
191 ab->error( i18n( "Unable to save to resource '%1'. It is locked." ) 180 ab->error( i18n( "Unable to save to resource '%1'. It is locked." )
192 .arg( (*it)->resourceName() ) ); 181 .arg( (*it)->resourceName() ) );
193 return false; 182 return false;
194 } 183 }
195 184
196 if ( !ab->save( ticket ) ) 185 if ( !ab->save( ticket ) )
197 ok = false; 186 ok = false;
198 } 187 }
199 } 188 }
200 189
201 return ok; 190 return ok;
202} 191}
203 192
204void StdAddressBook::close() 193void StdAddressBook::close()
205{ 194{
206//US destructObject is not defined on my system???. Is setObject(0) the same ??? 195//US destructObject is not defined on my system???. Is setObject(0) the same ???
207//US addressBookDeleter.destructObject(); 196//US addressBookDeleter.destructObject();
208 addressBookDeleter.setObject(0); 197 addressBookDeleter.setObject(0);
209 198
210} 199}
211 200
212void StdAddressBook::setAutomaticSave( bool enable ) 201void StdAddressBook::setAutomaticSave( bool enable )
213{ 202{
214 mAutomaticSave = enable; 203 mAutomaticSave = enable;
215} 204}
216 205
217bool StdAddressBook::automaticSave() 206bool StdAddressBook::automaticSave()
218{ 207{
219 return mAutomaticSave; 208 return mAutomaticSave;
220} 209}
221 210
222// should get const for 4.X 211// should get const for 4.X
223Addressee StdAddressBook::whoAmI() 212Addressee StdAddressBook::whoAmI()
224{ 213{
225//US KConfig config( "kabcrc" ); 214//US KConfig config( "kabcrc" );
226 KConfig config( locateLocal("config", "kabcrc") ); 215 KConfig config( locateLocal("config", "kabcrc") );
227 config.setGroup( "General" ); 216 config.setGroup( "General" );
228 217
229 return findByUid( config.readEntry( "WhoAmI" ) ); 218 return findByUid( config.readEntry( "WhoAmI" ) );
230} 219}
231 220
232void StdAddressBook::setWhoAmI( const Addressee &addr ) 221void StdAddressBook::setWhoAmI( const Addressee &addr )
233{ 222{
234//US KConfig config( "kabcrc" ); 223//US KConfig config( "kabcrc" );
235 KConfig config( locateLocal("config", "kabcrc") ); 224 KConfig config( locateLocal("config", "kabcrc") );
236 config.setGroup( "General" ); 225 config.setGroup( "General" );
237 226
238 config.writeEntry( "WhoAmI", addr.uid() ); 227 config.writeEntry( "WhoAmI", addr.uid() );
239} 228}