summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--kabc/plugins/sharpdtm/resourcesharpdtm.cpp66
1 files changed, 41 insertions, 25 deletions
diff --git a/kabc/plugins/sharpdtm/resourcesharpdtm.cpp b/kabc/plugins/sharpdtm/resourcesharpdtm.cpp
index 48b7d91..7069f5d 100644
--- a/kabc/plugins/sharpdtm/resourcesharpdtm.cpp
+++ b/kabc/plugins/sharpdtm/resourcesharpdtm.cpp
@@ -72,24 +72,34 @@ ResourceSharpDTM::ResourceSharpDTM( const KConfig *config )
72 init( fileName ); 72 init( fileName );
73} 73}
74 74
75ResourceSharpDTM::ResourceSharpDTM( const QString &fileName ) 75ResourceSharpDTM::ResourceSharpDTM( const QString &fileName )
76 : Resource( 0 ) 76 : Resource( 0 )
77{ 77{
78 mAccess = 0; 78 mAccess = 0;
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 if (mConverter == 0) {
85 mConverter = new SharpDTMConverter();
86 bool res = mConverter->init();
87 if ( !res )
88 {
89 QString msg("Unable to initialize sharp converter. Most likely a problem with the category file");
90 qDebug(msg);
91 return;
92 }
93 }
84 setFileName( fileName ); 94 setFileName( fileName );
85} 95}
86 96
87ResourceSharpDTM::~ResourceSharpDTM() 97ResourceSharpDTM::~ResourceSharpDTM()
88{ 98{
89 if (mConverter != 0) 99 if (mConverter != 0)
90 delete mConverter; 100 delete mConverter;
91 101
92 if(mAccess != 0) 102 if(mAccess != 0)
93 delete mAccess; 103 delete mAccess;
94} 104}
95 105
@@ -101,77 +111,80 @@ void ResourceSharpDTM::writeConfig( KConfig *config )
101Ticket *ResourceSharpDTM::requestSaveTicket() 111Ticket *ResourceSharpDTM::requestSaveTicket()
102{ 112{
103 113
104 qDebug("ResourceSharpDTM::requestSaveTicket: %s", fileName().latin1()); 114 qDebug("ResourceSharpDTM::requestSaveTicket: %s", fileName().latin1());
105 115
106 if ( !addressBook() ) return 0; 116 if ( !addressBook() ) return 0;
107 return createTicket( this ); 117 return createTicket( this );
108} 118}
109 119
110 120
111bool ResourceSharpDTM::doOpen() 121bool ResourceSharpDTM::doOpen()
112{ 122{
113 qDebug("%xResourceSharpDTM::doOpen: %s", this,fileName().latin1()); 123 if (!mConverter)
114
115 if ( ! mAccess ) {
116 // the last parameter in the SlZDataBase constructor means "readonly"
117 mAccess = new SlZDataBase(fileName(),
118 SlZDataBase::addressbookItems(),
119 NULL, false);
120 }
121 if ( !mAccess ) {
122 qDebug("Unable to load file() %s", fileName().latin1());
123 return false; 124 return false;
124 }
125 if (mConverter == 0) {
126 mConverter = new SharpDTMConverter();
127 bool res = mConverter->init();
128 if ( !res )
129 {
130 QString msg("Unable to initialize sharp converter. Most likely a problem with the category file");
131 qDebug(msg);
132 delete mAccess;
133 mAccess = 0;
134 return false;
135 }
136 }
137 return true; 125 return true;
138} 126}
139 127
140void ResourceSharpDTM::doClose() 128void ResourceSharpDTM::doClose()
141{ 129{
142 return; 130 return;
143} 131}
144 132
145bool ResourceSharpDTM::load() 133bool ResourceSharpDTM::load()
146{ 134{
135 if (!mConverter)
136 return false;
137 QString fileN = SlZDataBase::addressbookFileName();
138 if ( ! mAccess ) {
139 mAccess = new SlZDataBase(fileN,
140 SlZDataBase::addressbookItems(),
141 0, false);
142 }
143 if(mAccess == 0)
144 return false;
145
147 qDebug("%xResourceSharpDTM::load: %s",this, fileName().latin1()); 146 qDebug("%xResourceSharpDTM::load: %s",this, fileName().latin1());
148 bool res = false; 147 bool res = false;
149 CardId id; 148 CardId id;
150 for (bool res=mAccess->first(); res == true; res=mAccess->next()) 149 for (bool res=mAccess->first(); res == true; res=mAccess->next())
151 { 150 {
152 id = mAccess->cardId(); 151 id = mAccess->cardId();
153 KABC::Addressee addressee; 152 KABC::Addressee addressee;
154 res = mConverter->sharpToAddressee( id, mAccess, addressee ); 153 res = mConverter->sharpToAddressee( id, mAccess, addressee );
155 if ( !addressee.isEmpty() && res ) 154 if ( !addressee.isEmpty() && res )
156 { 155 {
157 addressee.setResource( this ); 156 addressee.setResource( this );
158 addressBook()->insertAddressee( addressee ); 157 addressBook()->insertAddressee( addressee );
159 } 158 }
160 } 159 }
160 if(mAccess != 0)
161 delete mAccess;
162 mAccess = 0;
163
161 return true; 164 return true;
162} 165}
163 166
164bool ResourceSharpDTM::save( Ticket *ticket ) 167bool ResourceSharpDTM::save( Ticket *ticket )
165{ 168{
169 if (!mConverter)
170 return false;
171 QString fileN = SlZDataBase::addressbookFileName();
172 if ( ! mAccess ) {
173 mAccess = new SlZDataBase(fileN,
174 SlZDataBase::addressbookItems(),
175 0, false);
176 }
177 if(mAccess == 0)
178 return false;
166 qDebug("ResourceSharpDTM::save: %s", fileName().latin1()); 179 qDebug("ResourceSharpDTM::save: %s", fileName().latin1());
167 KABC::AddressBook::Iterator it; 180 KABC::AddressBook::Iterator it;
168 bool res; 181 bool res;
169 KABC::Addressee::List changedAddressees; 182 KABC::Addressee::List changedAddressees;
170 typedef QMap<int,QString> AddresseeMap; 183 typedef QMap<int,QString> AddresseeMap;
171 AddresseeMap map; 184 AddresseeMap map;
172 CardId id ; 185 CardId id ;
173 for ( it = addressBook()->begin(); it != addressBook()->end(); ++it ) { 186 for ( it = addressBook()->begin(); it != addressBook()->end(); ++it ) {
174 187
175 if ( (*it).tempSyncStat() != SYNC_TEMPSTATE_NEW_EXTERNAL ) { 188 if ( (*it).tempSyncStat() != SYNC_TEMPSTATE_NEW_EXTERNAL ) {
176 QString uid = (*it).originalExternalUID(); 189 QString uid = (*it).originalExternalUID();
177 bool res; 190 bool res;
@@ -240,46 +253,49 @@ bool ResourceSharpDTM::save( Ticket *ticket )
240 res = mConverter->sharpToAddressee( id, mAccess, addressee ); 253 res = mConverter->sharpToAddressee( id, mAccess, addressee );
241 254
242 if ( !addressee.isEmpty() && res ) 255 if ( !addressee.isEmpty() && res )
243 { 256 {
244 addressee.setResource( this ); 257 addressee.setResource( this );
245 addressee.setUid( itam.data() ); 258 addressee.setUid( itam.data() );
246 addressee.setTempSyncStat( SYNC_TEMPSTATE_NEW_ID ); 259 addressee.setTempSyncStat( SYNC_TEMPSTATE_NEW_ID );
247 addressBook()->insertAddressee( addressee , false ); 260 addressBook()->insertAddressee( addressee , false );
248 } 261 }
249 } 262 }
250 } 263 }
251 delete ticket; 264 delete ticket;
252 265 if(mAccess != 0)
266 delete mAccess;
267 mAccess = 0;
253 return true; 268 return true;
254} 269}
255 270
256bool ResourceSharpDTM::lock( const QString &lockfileName ) 271bool ResourceSharpDTM::lock( const QString &lockfileName )
257{ 272{
273 return true;
258} 274}
259 275
260void ResourceSharpDTM::unlock( const QString &fileName ) 276void ResourceSharpDTM::unlock( const QString &fileName )
261{ 277{
262 278
263} 279}
264 280
265void ResourceSharpDTM::setFileName( const QString &newFileName ) 281void ResourceSharpDTM::setFileName( const QString &newFileName )
266{ 282{
267 Resource::setFileName( newFileName ); 283 Resource::setFileName( newFileName );
268} 284}
269 285
270void ResourceSharpDTM::fileChanged() 286void ResourceSharpDTM::fileChanged()
271{ 287{
272 288
273} 289}
274 290
275void ResourceSharpDTM::removeAddressee( const Addressee &addr ) 291void ResourceSharpDTM::removeAddressee( const Addressee &addr )
276{ 292{
277} 293}
278 294
279void ResourceSharpDTM::cleanUp() 295void ResourceSharpDTM::cleanUp()
280{ 296{
281 unlock( fileName() ); 297
282} 298}
283 299
284 300
285 301