summaryrefslogtreecommitdiffabout
path: root/kaddressbook
authorulf69 <ulf69>2004-07-15 15:15:52 (UTC)
committer ulf69 <ulf69>2004-07-15 15:15:52 (UTC)
commitec8315212b05c128c8d5650cf5daff2b1d6b84dd (patch) (unidiff)
treeae4ffd799c19caa18c1b0964783f915395769a24 /kaddressbook
parent59f727076930aada485db6531d4084f2bfe0b928 (diff)
downloadkdepimpi-ec8315212b05c128c8d5650cf5daff2b1d6b84dd.zip
kdepimpi-ec8315212b05c128c8d5650cf5daff2b1d6b84dd.tar.gz
kdepimpi-ec8315212b05c128c8d5650cf5daff2b1d6b84dd.tar.bz2
resolved crash during import of opie and qtopia addressbooks
Diffstat (limited to 'kaddressbook') (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/xxport/opie/opie_xxport.cpp11
-rw-r--r--kaddressbook/xxport/qtopia/qtopia_xxport.cpp12
2 files changed, 21 insertions, 2 deletions
diff --git a/kaddressbook/xxport/opie/opie_xxport.cpp b/kaddressbook/xxport/opie/opie_xxport.cpp
index 12c83af..db30d34 100644
--- a/kaddressbook/xxport/opie/opie_xxport.cpp
+++ b/kaddressbook/xxport/opie/opie_xxport.cpp
@@ -139,74 +139,83 @@ bool OpieXXPort::exportContacts( const KABC::AddresseeList &list, const QString
139 res = mConverter.addresseeToOpie( *it, c ); 139 res = mConverter.addresseeToOpie( *it, c );
140 if (res == true) 140 if (res == true)
141 { 141 {
142 res = access->add(c); 142 res = access->add(c);
143 if (res == false) 143 if (res == false)
144 qDebug("Unable to append Contact %s", c.fullName().latin1()); 144 qDebug("Unable to append Contact %s", c.fullName().latin1());
145 } 145 }
146 else 146 else
147 { 147 {
148 qDebug("Unable to convert Addressee %s", addressee.formattedName().latin1()); 148 qDebug("Unable to convert Addressee %s", addressee.formattedName().latin1());
149 } 149 }
150 } 150 }
151 151
152 access->save(); 152 access->save();
153 153
154 delete access; 154 delete access;
155//US the deletion of the access object deletes the backend object as well. 155//US the deletion of the access object deletes the backend object as well.
156 156
157 return true; 157 return true;
158} 158}
159 159
160KABC::AddresseeList OpieXXPort::importContacts( const QString& ) const 160KABC::AddresseeList OpieXXPort::importContacts( const QString& ) const
161{ 161{
162 KABC::AddresseeList adrlst; 162 KABC::AddresseeList adrlst;
163 163
164 QString name = QDir::homeDirPath() + "/Applications/addressbook/addressbook.xml"; 164 QString name = QDir::homeDirPath() + "/Applications/addressbook/addressbook.xml";
165 165
166#ifndef KAB_EMBEDDED 166#ifndef KAB_EMBEDDED
167 QString fileName = KFileDialog::getOpenFileName( name ); 167 QString fileName = KFileDialog::getOpenFileName( name );
168#else //KAB_EMBEDDED 168#else //KAB_EMBEDDED
169 QString fileName = KFileDialog::getOpenFileName( name, i18n("Load file"), parentWidget() ); 169 QString fileName = KFileDialog::getOpenFileName( name, i18n("Load file"), parentWidget() );
170#endif //KAB_EMBEDDED 170#endif //KAB_EMBEDDED
171 171
172 if ( fileName.isEmpty() ) 172 if ( fileName.isEmpty() )
173 return KABC::AddresseeList(); 173 return KABC::AddresseeList();
174 174
175 OContactAccessBackend_XML* backend = new OContactAccessBackend_XML( "KA/Pi", fileName ); 175 OContactAccessBackend_XML* backend = new OContactAccessBackend_XML( "KA/Pi", fileName );
176 OContactAccess* access = new OContactAccess("KA/Pi", 0l, backend, false); 176 OContactAccess* access = new OContactAccess("KA/Pi", 0l, backend, false);
177 177
178 if ( !access ) { 178 if ( !access ) {
179 qDebug("Unable to access file() %s", fileName.latin1()); 179 qDebug("Unable to access file() %s", fileName.latin1());
180 addressBook()->error( i18n( "Unable to access file '%1'." ).arg( fileName ) ); 180 addressBook()->error( i18n( "Unable to access file '%1'." ).arg( fileName ) );
181 return KABC::AddresseeList(); 181 return KABC::AddresseeList();
182 } 182 }
183 183
184 access -> setReadAhead( 32 ); // Use ReadAhead-Cache if available 184 access -> setReadAhead( 32 ); // Use ReadAhead-Cache if available
185 185
186 KABC::OpieConverter mConverter; 186 KABC::OpieConverter mConverter;
187 bool res = false;
188 187
188 bool res = mConverter.init();
189 if (!res)
190 {
191 QString text( i18n( "Unable to initialize opie converter.<br>Most likely a problem with the category file." ) );
192 qDebug(text);
193 KMessageBox::error( parentWidget(), text );
194 delete access;
195 return KABC::AddresseeList();
196 }
197
189 198
190 OContactAccess::List::Iterator it; 199 OContactAccess::List::Iterator it;
191 OContactAccess::List allList = access->allRecords(); 200 OContactAccess::List allList = access->allRecords();
192 for ( it = allList.begin(); it != allList.end(); ++it ) 201 for ( it = allList.begin(); it != allList.end(); ++it )
193 { 202 {
194 OContact c = (*it); 203 OContact c = (*it);
195 204
196 KABC::Addressee addressee; 205 KABC::Addressee addressee;
197 206
198 res = mConverter.opieToAddressee( c, addressee ); 207 res = mConverter.opieToAddressee( c, addressee );
199 208
200 if ( !addressee.isEmpty() && res ) { 209 if ( !addressee.isEmpty() && res ) {
201 adrlst.append( addressee ); 210 adrlst.append( addressee );
202 } 211 }
203 212
204// qDebug("found %s", c.fullName().latin1()); 213// qDebug("found %s", c.fullName().latin1());
205 } 214 }
206 215
207 delete access; 216 delete access;
208//US the deletion of the access object deletes the backend object as well. 217//US the deletion of the access object deletes the backend object as well.
209 218
210 return adrlst; 219 return adrlst;
211 220
212} 221}
diff --git a/kaddressbook/xxport/qtopia/qtopia_xxport.cpp b/kaddressbook/xxport/qtopia/qtopia_xxport.cpp
index 3d830df..bf39fdb 100644
--- a/kaddressbook/xxport/qtopia/qtopia_xxport.cpp
+++ b/kaddressbook/xxport/qtopia/qtopia_xxport.cpp
@@ -118,74 +118,84 @@ bool QtopiaXXPort::exportContacts( const KABC::AddresseeList &list, const QStrin
118 if (firstcontact) 118 if (firstcontact)
119 { 119 {
120 QString text( i18n( "Do you want to remove<br>all existing entries from<br>%1<br>before exporting.?" ) ); 120 QString text( i18n( "Do you want to remove<br>all existing entries from<br>%1<br>before exporting.?" ) );
121 if ( KMessageBox::questionYesNo( parentWidget(), text.arg( fileName ) ) == KMessageBox::Yes ) { 121 if ( KMessageBox::questionYesNo( parentWidget(), text.arg( fileName ) ) == KMessageBox::Yes ) {
122 // Clean the database.. 122 // Clean the database..
123 123
124 AddressBookIterator it2(*access); 124 AddressBookIterator it2(*access);
125 for (it2.toFirst(); it2.current(); ++it2) { 125 for (it2.toFirst(); it2.current(); ++it2) {
126 access->removeContact(*it2.current()); 126 access->removeContact(*it2.current());
127 } 127 }
128 } 128 }
129 } 129 }
130 } 130 }
131 131
132 KABC::Addressee::List::ConstIterator it; 132 KABC::Addressee::List::ConstIterator it;
133 for ( it = list.begin(); it != list.end(); ++it ) { 133 for ( it = list.begin(); it != list.end(); ++it ) {
134 PimContact c; 134 PimContact c;
135 KABC::Addressee addressee = (*it); 135 KABC::Addressee addressee = (*it);
136 136
137 res = mConverter.addresseeToQtopia( *it, c ); 137 res = mConverter.addresseeToQtopia( *it, c );
138 if (res == true) 138 if (res == true)
139 { 139 {
140 access->addContact(c); 140 access->addContact(c);
141 } 141 }
142 } 142 }
143 143
144 delete access; 144 delete access;
145 145
146 return true; 146 return true;
147} 147}
148 148
149KABC::AddresseeList QtopiaXXPort::importContacts( const QString& ) const 149KABC::AddresseeList QtopiaXXPort::importContacts( const QString& ) const
150{ 150{
151 KABC::AddresseeList adrlst; 151 KABC::AddresseeList adrlst;
152 152
153 QString fileName = QDir::homeDirPath() + "/Applications/addressbook/addressbook.xml"; 153 QString fileName = QDir::homeDirPath() + "/Applications/addressbook/addressbook.xml";
154 154
155 AddressBookAccess* access = new AddressBookAccess(); 155 AddressBookAccess* access = new AddressBookAccess();
156 156
157 if ( !access ) { 157 if ( !access ) {
158 QString text( i18n( "Unable to access file '%1'." ).arg( fileName ) ); 158 QString text( i18n( "Unable to access file '%1'." ).arg( fileName ) );
159 qDebug(text.latin1()); 159 qDebug(text.latin1());
160 addressBook()->error( text ); 160 addressBook()->error( text );
161 KMessageBox::error( parentWidget(), text ); 161 KMessageBox::error( parentWidget(), text );
162 return KABC::AddresseeList(); 162 return KABC::AddresseeList();
163 } 163 }
164 164
165 KABC::QtopiaConverter mConverter; 165 KABC::QtopiaConverter mConverter;
166 bool res = false;
167 166
167 bool res = mConverter.init();
168 if (!res)
169 {
170 QString text( i18n( "Unable to initialize qtopia converter.<br>Most likely a problem with the category file." ) );
171 qDebug(text);
172 KMessageBox::error( parentWidget(), text );
173 delete access;
174 return KABC::AddresseeList();
175 }
176
177
168 178
169 { //create a new scope 179 { //create a new scope
170 AddressBookIterator it(*access); 180 AddressBookIterator it(*access);
171 181
172 for (it.toFirst(); it.current(); ++it) { 182 for (it.toFirst(); it.current(); ++it) {
173 const PimContact*contact = it.current(); 183 const PimContact*contact = it.current();
174 184
175 KABC::Addressee addressee; 185 KABC::Addressee addressee;
176 186
177 res = mConverter.qtopiaToAddressee( (*contact), addressee ); 187 res = mConverter.qtopiaToAddressee( (*contact), addressee );
178 188
179 if ( !addressee.isEmpty() && res ) 189 if ( !addressee.isEmpty() && res )
180 { 190 {
181 adrlst.append( addressee ); 191 adrlst.append( addressee );
182 } 192 }
183 } 193 }
184 } 194 }
185 195
186 delete access; 196 delete access;
187//US the deletion of the access object deletes the backend object as well. 197//US the deletion of the access object deletes the backend object as well.
188 198
189 return adrlst; 199 return adrlst;
190 200
191} 201}