author | zautrix <zautrix> | 2006-02-24 18:49:56 (UTC) |
---|---|---|
committer | zautrix <zautrix> | 2006-02-24 18:49:56 (UTC) |
commit | d7738fdfc685192eb2f8317db6ffad3c246001c8 (patch) (unidiff) | |
tree | d9aae6ca97851fd1b53c4d9e74740a5ee2b69ea9 /kaddressbook | |
parent | 987757f168bbae56100f2aff763b865e81ceec18 (diff) | |
download | kdepimpi-d7738fdfc685192eb2f8317db6ffad3c246001c8.zip kdepimpi-d7738fdfc685192eb2f8317db6ffad3c246001c8.tar.gz kdepimpi-d7738fdfc685192eb2f8317db6ffad3c246001c8.tar.bz2 |
kapi sync
-rw-r--r-- | kaddressbook/kabcore.cpp | 130 | ||||
-rw-r--r-- | kaddressbook/kabcore.h | 5 | ||||
-rw-r--r-- | kaddressbook/kaimportoldialog.cpp | 712 | ||||
-rw-r--r-- | kaddressbook/kaimportoldialog.h | 63 | ||||
-rw-r--r-- | kaddressbook/phoneeditwidget.cpp | 11 |
5 files changed, 120 insertions, 801 deletions
diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp index 7d8586a..ab2824c 100644 --- a/kaddressbook/kabcore.cpp +++ b/kaddressbook/kabcore.cpp | |||
@@ -97,128 +97,129 @@ $Id$ | |||
97 | #include <kresources/kcmkresources.h> | 97 | #include <kresources/kcmkresources.h> |
98 | #include <ktoolbar.h> | 98 | #include <ktoolbar.h> |
99 | #include <kprefsdialog.h> | 99 | #include <kprefsdialog.h> |
100 | 100 | ||
101 | 101 | ||
102 | //#include <qlabel.h> | 102 | //#include <qlabel.h> |
103 | 103 | ||
104 | 104 | ||
105 | #ifndef DESKTOP_VERSION | 105 | #ifndef DESKTOP_VERSION |
106 | #include <qpe/ir.h> | 106 | #include <qpe/ir.h> |
107 | #include <qpe/qpemenubar.h> | 107 | #include <qpe/qpemenubar.h> |
108 | #include <qtopia/qcopenvelope_qws.h> | 108 | #include <qtopia/qcopenvelope_qws.h> |
109 | #else | 109 | #else |
110 | 110 | ||
111 | #include <qmenubar.h> | 111 | #include <qmenubar.h> |
112 | #endif | 112 | #endif |
113 | 113 | ||
114 | #endif // KAB_EMBEDDED | 114 | #endif // KAB_EMBEDDED |
115 | #include "kcmconfigs/kcmkabconfig.h" | 115 | #include "kcmconfigs/kcmkabconfig.h" |
116 | #include "kcmconfigs/kcmkdepimconfig.h" | 116 | #include "kcmconfigs/kcmkdepimconfig.h" |
117 | #include "kpimglobalprefs.h" | 117 | #include "kpimglobalprefs.h" |
118 | #include "externalapphandler.h" | 118 | #include "externalapphandler.h" |
119 | #include "xxportselectdialog.h" | 119 | #include "xxportselectdialog.h" |
120 | 120 | ||
121 | 121 | ||
122 | #include <kresources/selectdialog.h> | 122 | #include <kresources/selectdialog.h> |
123 | #include <kmessagebox.h> | 123 | #include <kmessagebox.h> |
124 | 124 | ||
125 | #include <picture.h> | 125 | #include <picture.h> |
126 | #include <resource.h> | 126 | #include <resource.h> |
127 | 127 | ||
128 | //US#include <qsplitter.h> | 128 | //US#include <qsplitter.h> |
129 | #include <qmap.h> | 129 | #include <qmap.h> |
130 | #include <qdir.h> | 130 | #include <qdir.h> |
131 | #include <qfile.h> | 131 | #include <qfile.h> |
132 | #include <qvbox.h> | 132 | #include <qvbox.h> |
133 | #include <qlayout.h> | 133 | #include <qlayout.h> |
134 | #include <qclipboard.h> | 134 | #include <qclipboard.h> |
135 | #include <qtextstream.h> | 135 | #include <qtextstream.h> |
136 | #include <qradiobutton.h> | 136 | #include <qradiobutton.h> |
137 | #include <qbuttongroup.h> | 137 | #include <qbuttongroup.h> |
138 | 138 | ||
139 | #include <libkdepim/categoryselectdialog.h> | 139 | #include <libkdepim/categoryselectdialog.h> |
140 | #include <libkdepim/categoryeditdialog.h> | 140 | #include <libkdepim/categoryeditdialog.h> |
141 | #include <kabc/vcardconverter.h> | 141 | #include <kabc/vcardconverter.h> |
142 | 142 | ||
143 | 143 | ||
144 | #include "addresseeutil.h" | 144 | #include "addresseeutil.h" |
145 | #include "undocmds.h" | 145 | #include "undocmds.h" |
146 | #include "addresseeeditordialog.h" | 146 | #include "addresseeeditordialog.h" |
147 | #include "viewmanager.h" | 147 | #include "viewmanager.h" |
148 | #include "details/detailsviewcontainer.h" | 148 | #include "details/detailsviewcontainer.h" |
149 | #include "kabprefs.h" | 149 | #include "kabprefs.h" |
150 | #include "xxportmanager.h" | 150 | #include "xxportmanager.h" |
151 | #include "incsearchwidget.h" | 151 | #include "incsearchwidget.h" |
152 | #include "jumpbuttonbar.h" | 152 | #include "jumpbuttonbar.h" |
153 | #include "extensionmanager.h" | 153 | #include "extensionmanager.h" |
154 | #include "addresseeconfig.h" | 154 | #include "addresseeconfig.h" |
155 | #include "nameeditdialog.h" | 155 | #include "nameeditdialog.h" |
156 | #include <kcmultidialog.h> | 156 | #include <kcmultidialog.h> |
157 | 157 | ||
158 | #ifdef _WIN32_ | 158 | #ifdef _WIN32_ |
159 | #ifdef _OL_IMPORT_ | 159 | #ifdef _OL_IMPORT_ |
160 | #include "kaimportoldialog.h" | 160 | #include "kaimportoldialog.h" |
161 | #include <libkdepim/ol_access.h> | ||
161 | #endif | 162 | #endif |
162 | #else | 163 | #else |
163 | #include <unistd.h> | 164 | #include <unistd.h> |
164 | #endif | 165 | #endif |
165 | // sync includes | 166 | // sync includes |
166 | #include <libkdepim/ksyncprofile.h> | 167 | #include <libkdepim/ksyncprofile.h> |
167 | #include <libkdepim/ksyncprefsdialog.h> | 168 | #include <libkdepim/ksyncprefsdialog.h> |
168 | 169 | ||
169 | 170 | ||
170 | class KABCatPrefs : public QDialog | 171 | class KABCatPrefs : public QDialog |
171 | { | 172 | { |
172 | public: | 173 | public: |
173 | KABCatPrefs( QWidget *parent=0, const char *name=0 ) : | 174 | KABCatPrefs( QWidget *parent=0, const char *name=0 ) : |
174 | QDialog( parent, name, true ) | 175 | QDialog( parent, name, true ) |
175 | { | 176 | { |
176 | setCaption( i18n("Manage new Categories") ); | 177 | setCaption( i18n("Manage new Categories") ); |
177 | QVBoxLayout* lay = new QVBoxLayout( this ); | 178 | QVBoxLayout* lay = new QVBoxLayout( this ); |
178 | lay->setSpacing( 3 ); | 179 | lay->setSpacing( 3 ); |
179 | lay->setMargin( 3 ); | 180 | lay->setMargin( 3 ); |
180 | QLabel * lab = new QLabel( i18n("After importing/loading/syncing\nthere may be new categories in\naddressees\nwhich are not in the category list.\nPlease choose what to do:\n "), this ); | 181 | QLabel * lab = new QLabel( i18n("After importing/loading/syncing\nthere may be new categories in\naddressees\nwhich are not in the category list.\nPlease choose what to do:\n "), this ); |
181 | lay->addWidget( lab ); | 182 | lay->addWidget( lab ); |
182 | QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("New categories not in list:"), this ); | 183 | QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("New categories not in list:"), this ); |
183 | lay->addWidget( format ); | 184 | lay->addWidget( format ); |
184 | format->setExclusive ( true ) ; | 185 | format->setExclusive ( true ) ; |
185 | addCatBut = new QRadioButton(i18n("Add to category list"), format ); | 186 | addCatBut = new QRadioButton(i18n("Add to category list"), format ); |
186 | new QRadioButton(i18n("Remove from addressees"), format ); | 187 | new QRadioButton(i18n("Remove from addressees"), format ); |
187 | addCatBut->setChecked( true ); | 188 | addCatBut->setChecked( true ); |
188 | QPushButton * ok = new QPushButton( i18n("OK"), this ); | 189 | QPushButton * ok = new QPushButton( i18n("OK"), this ); |
189 | lay->addWidget( ok ); | 190 | lay->addWidget( ok ); |
190 | QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); | 191 | QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); |
191 | lay->addWidget( cancel ); | 192 | lay->addWidget( cancel ); |
192 | connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); | 193 | connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); |
193 | connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); | 194 | connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); |
194 | resize( 200, 200 ); | 195 | resize( 200, 200 ); |
195 | } | 196 | } |
196 | 197 | ||
197 | bool addCat() { return addCatBut->isChecked(); } | 198 | bool addCat() { return addCatBut->isChecked(); } |
198 | private: | 199 | private: |
199 | QRadioButton* addCatBut; | 200 | QRadioButton* addCatBut; |
200 | }; | 201 | }; |
201 | 202 | ||
202 | class KABFormatPrefs : public QDialog | 203 | class KABFormatPrefs : public QDialog |
203 | { | 204 | { |
204 | public: | 205 | public: |
205 | KABFormatPrefs( QWidget *parent=0, const char *name=0 ) : | 206 | KABFormatPrefs( QWidget *parent=0, const char *name=0 ) : |
206 | QDialog( parent, name, true ) | 207 | QDialog( parent, name, true ) |
207 | { | 208 | { |
208 | setCaption( i18n("Set formatted name") ); | 209 | setCaption( i18n("Set formatted name") ); |
209 | QVBoxLayout* lay = new QVBoxLayout( this ); | 210 | QVBoxLayout* lay = new QVBoxLayout( this ); |
210 | lay->setSpacing( 3 ); | 211 | lay->setSpacing( 3 ); |
211 | lay->setMargin( 3 ); | 212 | lay->setMargin( 3 ); |
212 | QLabel * lab = new QLabel( i18n("You can set the formatted name\nfor a list of contacts in one go."), this ); | 213 | QLabel * lab = new QLabel( i18n("You can set the formatted name\nfor a list of contacts in one go."), this ); |
213 | lay->addWidget( lab ); | 214 | lay->addWidget( lab ); |
214 | QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("Set formatted name to:"), this ); | 215 | QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("Set formatted name to:"), this ); |
215 | lay->addWidget( format ); | 216 | lay->addWidget( format ); |
216 | format->setExclusive ( true ) ; | 217 | format->setExclusive ( true ) ; |
217 | simple = new QRadioButton(i18n("Simple: James Bond"), format ); | 218 | simple = new QRadioButton(i18n("Simple: James Bond"), format ); |
218 | full = new QRadioButton(i18n("Full: Mr. James 007 Bond I"), format ); | 219 | full = new QRadioButton(i18n("Full: Mr. James 007 Bond I"), format ); |
219 | reverse = new QRadioButton(i18n("Reverse: Bond, James"), format ); | 220 | reverse = new QRadioButton(i18n("Reverse: Bond, James"), format ); |
220 | company = new QRadioButton(i18n("Organization: MI6"), format ); | 221 | company = new QRadioButton(i18n("Organization: MI6"), format ); |
221 | simple->setChecked( true ); | 222 | simple->setChecked( true ); |
222 | setCompany = new QCheckBox(i18n("Set formatted name to\norganization, if name empty"), this); | 223 | setCompany = new QCheckBox(i18n("Set formatted name to\norganization, if name empty"), this); |
223 | lay->addWidget( setCompany ); | 224 | lay->addWidget( setCompany ); |
224 | QPushButton * ok = new QPushButton( i18n("Select contact list"), this ); | 225 | QPushButton * ok = new QPushButton( i18n("Select contact list"), this ); |
@@ -1308,154 +1309,202 @@ void KABCore::newContact() | |||
1308 | if ( res ) | 1309 | if ( res ) |
1309 | kresResources.append( res ); | 1310 | kresResources.append( res ); |
1310 | } | 1311 | } |
1311 | } | 1312 | } |
1312 | 1313 | ||
1313 | KRES::Resource *res = KRES::SelectDialog::getResource( kresResources, this ); | 1314 | KRES::Resource *res = KRES::SelectDialog::getResource( kresResources, this ); |
1314 | resource = static_cast<KABC::Resource*>( res ); | 1315 | resource = static_cast<KABC::Resource*>( res ); |
1315 | 1316 | ||
1316 | if ( resource ) { | 1317 | if ( resource ) { |
1317 | KABC::Addressee addr; | 1318 | KABC::Addressee addr; |
1318 | addr.setResource( resource ); | 1319 | addr.setResource( resource ); |
1319 | mEditorDialog->setAddressee( addr ); | 1320 | mEditorDialog->setAddressee( addr ); |
1320 | mEditorDialog->setCaption( i18n("Edit new contact")); | 1321 | mEditorDialog->setCaption( i18n("Edit new contact")); |
1321 | KApplication::execDialog ( mEditorDialog ); | 1322 | KApplication::execDialog ( mEditorDialog ); |
1322 | 1323 | ||
1323 | } else | 1324 | } else |
1324 | return; | 1325 | return; |
1325 | 1326 | ||
1326 | // mEditorDict.insert( dialog->addressee().uid(), dialog ); | 1327 | // mEditorDict.insert( dialog->addressee().uid(), dialog ); |
1327 | 1328 | ||
1328 | 1329 | ||
1329 | } | 1330 | } |
1330 | 1331 | ||
1331 | void KABCore::addEmail( QString aStr ) | 1332 | void KABCore::addEmail( QString aStr ) |
1332 | { | 1333 | { |
1333 | #ifndef KAB_EMBEDDED | 1334 | #ifndef KAB_EMBEDDED |
1334 | QString fullName, email; | 1335 | QString fullName, email; |
1335 | 1336 | ||
1336 | KABC::Addressee::parseEmailAddress( aStr, fullName, email ); | 1337 | KABC::Addressee::parseEmailAddress( aStr, fullName, email ); |
1337 | 1338 | ||
1338 | // Try to lookup the addressee matching the email address | 1339 | // Try to lookup the addressee matching the email address |
1339 | bool found = false; | 1340 | bool found = false; |
1340 | QStringList emailList; | 1341 | QStringList emailList; |
1341 | KABC::AddressBook::Iterator it; | 1342 | KABC::AddressBook::Iterator it; |
1342 | for ( it = mAddressBook->begin(); !found && (it != mAddressBook->end()); ++it ) { | 1343 | for ( it = mAddressBook->begin(); !found && (it != mAddressBook->end()); ++it ) { |
1343 | emailList = (*it).emails(); | 1344 | emailList = (*it).emails(); |
1344 | if ( emailList.contains( email ) > 0 ) { | 1345 | if ( emailList.contains( email ) > 0 ) { |
1345 | found = true; | 1346 | found = true; |
1346 | (*it).setNameFromString( fullName ); | 1347 | (*it).setNameFromString( fullName ); |
1347 | editContact( (*it).uid() ); | 1348 | editContact( (*it).uid() ); |
1348 | } | 1349 | } |
1349 | } | 1350 | } |
1350 | 1351 | ||
1351 | if ( !found ) { | 1352 | if ( !found ) { |
1352 | KABC::Addressee addr; | 1353 | KABC::Addressee addr; |
1353 | addr.setNameFromString( fullName ); | 1354 | addr.setNameFromString( fullName ); |
1354 | addr.insertEmail( email, true ); | 1355 | addr.insertEmail( email, true ); |
1355 | 1356 | ||
1356 | mAddressBook->insertAddressee( addr ); | 1357 | mAddressBook->insertAddressee( addr ); |
1357 | mViewManager->refreshView( addr.uid() ); | 1358 | mViewManager->refreshView( addr.uid() ); |
1358 | editContact( addr.uid() ); | 1359 | editContact( addr.uid() ); |
1359 | } | 1360 | } |
1360 | #else //KAB_EMBEDDED | 1361 | #else //KAB_EMBEDDED |
1361 | qDebug("KABCore::addEmail finsih method"); | 1362 | qDebug("KABCore::addEmail finsih method"); |
1362 | #endif //KAB_EMBEDDED | 1363 | #endif //KAB_EMBEDDED |
1363 | } | 1364 | } |
1364 | 1365 | ||
1365 | void KABCore::importVCard( const KURL &url, bool showPreview ) | 1366 | void KABCore::importVCard( const KURL &url, bool showPreview ) |
1366 | { | 1367 | { |
1367 | mXXPortManager->importVCard( url, showPreview ); | 1368 | mXXPortManager->importVCard( url, showPreview ); |
1368 | } | 1369 | } |
1369 | void KABCore::importFromOL() | 1370 | void KABCore::importFromOL() |
1370 | { | 1371 | { |
1371 | #ifdef _OL_IMPORT_ | 1372 | #ifdef _OL_IMPORT_ |
1372 | KAImportOLdialog* idgl = new KAImportOLdialog( i18n("Import Contacts from OL"), mAddressBook, this ); | 1373 | KABC::Addressee::List list = OL_access::instance()->importOLcontacts(); |
1373 | idgl->exec(); | 1374 | if ( list.count() > 0 ) { |
1374 | KABC::Addressee::List list = idgl->getAddressList(); | 1375 | KABC::Addressee::List listNew; |
1375 | if ( list.count() > 0 ) { | 1376 | KABC::Addressee::List listExisting; |
1376 | KABC::Addressee::List listNew; | 1377 | KABC::Addressee::List::Iterator it; |
1377 | KABC::Addressee::List listExisting; | 1378 | KABC::AddressBook::Iterator iter; |
1378 | KABC::Addressee::List::Iterator it; | 1379 | for ( it = list.begin(); it != list.end(); ++it ) { |
1379 | KABC::AddressBook::Iterator iter; | 1380 | if ( mAddressBook->findByUid((*it).uid() ).isEmpty()) |
1380 | for ( it = list.begin(); it != list.end(); ++it ) { | 1381 | listNew.append( (*it) ); |
1381 | if ( mAddressBook->findByUid((*it).uid() ).isEmpty()) | 1382 | else |
1382 | listNew.append( (*it) ); | 1383 | listExisting.append( (*it) ); |
1383 | else | 1384 | } |
1384 | listExisting.append( (*it) ); | 1385 | QString mess = i18n("%1 contacts read from OL.\n\n%2 contacts added to addressbook!").arg( list.count()).arg( listNew.count() ); |
1385 | } | 1386 | if ( listExisting.count() > 0 ) |
1386 | if ( listExisting.count() > 0 ) | 1387 | mess += "\n\n"+ i18n("%1 contacts not added to addressbook\nbecause they were already in the addressbook!").arg( listExisting.count() ); |
1387 | KMessageBox::information( this, i18n("%1 contacts not added to addressbook\nbecause they were already in the addressbook!").arg( listExisting.count() )); | 1388 | |
1388 | if ( listNew.count() > 0 ) { | 1389 | KMessageBox::information( this, mess ); |
1389 | pasteWithNewUid = false; | 1390 | if ( listNew.count() > 0 ) { |
1390 | pasteContacts( listNew ); | 1391 | pasteWithNewUid = false; |
1391 | pasteWithNewUid = true; | 1392 | pasteContacts( listNew ); |
1393 | pasteWithNewUid = true; | ||
1394 | } | ||
1392 | } | 1395 | } |
1393 | } | ||
1394 | delete idgl; | ||
1395 | #endif | 1396 | #endif |
1396 | } | 1397 | } |
1397 | 1398 | ||
1399 | bool KABCore::readOLdata( KABC::AddressBook* local ) | ||
1400 | { | ||
1401 | #ifdef _OL_IMPORT_ | ||
1402 | QStringList folderList = OL_access::instance()->getFolderSelection( OL_CONTACT_DATA , i18n("Select Folder to sync")); | ||
1403 | KABC::Addressee::List list; | ||
1404 | if ( folderList.count() ) { | ||
1405 | OL_access::instance()->readContactData( OL_access::instance()->getFolderFromID( 0, folderList[1] ) , &list, true ); | ||
1406 | KABC::Addressee::List::Iterator it; | ||
1407 | for ( it = list.begin(); it != list.end(); ++it ) { | ||
1408 | (*it).setExternalUID( (*it).uid() ); | ||
1409 | (*it).setOriginalExternalUID( (*it).uid() ); | ||
1410 | (*it).setTempSyncStat( SYNC_TEMPSTATE_NEW_EXTERNAL ); | ||
1411 | local->insertAddressee( (*it) , false, false ); | ||
1412 | } | ||
1413 | mOLsyncFolderID = folderList[1]; | ||
1414 | //KMessageBox::information( this, i18n("OLsync folder ID ") + mOLsyncFolderID ); | ||
1415 | } | ||
1416 | return list.count() > 0; | ||
1417 | #else | ||
1418 | return false; | ||
1419 | #endif | ||
1420 | } | ||
1421 | bool KABCore::writeOLdata( KABC::AddressBook* aBook ) | ||
1422 | { | ||
1423 | #ifdef _OL_IMPORT_ | ||
1424 | if ( !OL_access::instance()->setSelectedFolder( mOLsyncFolderID ) ) | ||
1425 | return false; | ||
1426 | KABC::AddressBook::Iterator it; | ||
1427 | for ( it = aBook->begin(); it != aBook->end(); ++it ) { | ||
1428 | if ( (*it).tempSyncStat() != SYNC_TEMPSTATE_NEW_EXTERNAL ) { | ||
1429 | KABC::Addressee addressee = (*it); | ||
1430 | if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_ADDED_EXTERNAL ) { | ||
1431 | (*it) = OL_access::instance()->addAddressee( (*it) ); | ||
1432 | (*it).setTempSyncStat( SYNC_TEMPSTATE_NEW_ID ); | ||
1433 | } else if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_DELETE ) { | ||
1434 | OL_access::instance()->deleteAddressee( (*it) ); | ||
1435 | } else if ( (*it).tempSyncStat() != SYNC_TEMPSTATE_NEW_EXTERNAL ) { | ||
1436 | //changed | ||
1437 | (*it) = OL_access::instance()->changeAddressee( (*it) ); | ||
1438 | (*it).setTempSyncStat( SYNC_TEMPSTATE_NEW_CSUM ); | ||
1439 | } | ||
1440 | } | ||
1441 | } | ||
1442 | return true; | ||
1443 | #else | ||
1444 | return false; | ||
1445 | #endif | ||
1446 | } | ||
1398 | void KABCore::importVCard( const QString &vCard, bool showPreview ) | 1447 | void KABCore::importVCard( const QString &vCard, bool showPreview ) |
1399 | { | 1448 | { |
1400 | mXXPortManager->importVCard( vCard, showPreview ); | 1449 | mXXPortManager->importVCard( vCard, showPreview ); |
1401 | } | 1450 | } |
1402 | 1451 | ||
1403 | //US added a second method without defaultparameter | 1452 | //US added a second method without defaultparameter |
1404 | void KABCore::editContact2() { | 1453 | void KABCore::editContact2() { |
1405 | editContact( QString::null ); | 1454 | editContact( QString::null ); |
1406 | } | 1455 | } |
1407 | 1456 | ||
1408 | void KABCore::editContact( const QString &uid ) | 1457 | void KABCore::editContact( const QString &uid ) |
1409 | { | 1458 | { |
1410 | 1459 | ||
1411 | if ( mExtensionManager->isQuickEditVisible() ) | 1460 | if ( mExtensionManager->isQuickEditVisible() ) |
1412 | return; | 1461 | return; |
1413 | 1462 | ||
1414 | // First, locate the contact entry | 1463 | // First, locate the contact entry |
1415 | QString localUID = uid; | 1464 | QString localUID = uid; |
1416 | if ( localUID.isNull() ) { | 1465 | if ( localUID.isNull() ) { |
1417 | QStringList uidList = mViewManager->selectedUids(); | 1466 | QStringList uidList = mViewManager->selectedUids(); |
1418 | if ( uidList.count() > 0 ) | 1467 | if ( uidList.count() > 0 ) |
1419 | localUID = *( uidList.at( 0 ) ); | 1468 | localUID = *( uidList.at( 0 ) ); |
1420 | } | 1469 | } |
1421 | 1470 | ||
1422 | KABC::Addressee addr = mAddressBook->findByUid( localUID ); | 1471 | KABC::Addressee addr = mAddressBook->findByUid( localUID ); |
1423 | if ( !addr.isEmpty() ) { | 1472 | if ( !addr.isEmpty() ) { |
1424 | mEditorDialog->setAddressee( addr ); | 1473 | mEditorDialog->setAddressee( addr ); |
1425 | KApplication::execDialog ( mEditorDialog ); | 1474 | KApplication::execDialog ( mEditorDialog ); |
1426 | } | 1475 | } |
1427 | } | 1476 | } |
1428 | 1477 | ||
1429 | /** | 1478 | /** |
1430 | Shows or edits the detail view for the given uid. If the uid is QString::null, | 1479 | Shows or edits the detail view for the given uid. If the uid is QString::null, |
1431 | the method will try to find a selected addressee in the view. | 1480 | the method will try to find a selected addressee in the view. |
1432 | */ | 1481 | */ |
1433 | void KABCore::executeContact( const QString &uid /*US = QString::null*/ ) | 1482 | void KABCore::executeContact( const QString &uid /*US = QString::null*/ ) |
1434 | { | 1483 | { |
1435 | if ( mMultipleViewsAtOnce ) | 1484 | if ( mMultipleViewsAtOnce ) |
1436 | { | 1485 | { |
1437 | editContact( uid ); | 1486 | editContact( uid ); |
1438 | } | 1487 | } |
1439 | else | 1488 | else |
1440 | { | 1489 | { |
1441 | setDetailsVisible( true ); | 1490 | setDetailsVisible( true ); |
1442 | mActionDetails->setChecked(true); | 1491 | mActionDetails->setChecked(true); |
1443 | } | 1492 | } |
1444 | 1493 | ||
1445 | } | 1494 | } |
1446 | 1495 | ||
1447 | void KABCore::save() | 1496 | void KABCore::save() |
1448 | { | 1497 | { |
1449 | if (syncManager->blockSave()) | 1498 | if (syncManager->blockSave()) |
1450 | return; | 1499 | return; |
1451 | if ( !mModified ) | 1500 | if ( !mModified ) |
1452 | return; | 1501 | return; |
1453 | 1502 | ||
1454 | syncManager->setBlockSave(true); | 1503 | syncManager->setBlockSave(true); |
1455 | QString text = i18n( "There was an error while attempting to save\n the " | 1504 | QString text = i18n( "There was an error while attempting to save\n the " |
1456 | "address book. Please check that some \nother application is " | 1505 | "address book. Please check that some \nother application is " |
1457 | "not using it. " ); | 1506 | "not using it. " ); |
1458 | message(i18n("Saving ... please wait! "), false); | 1507 | message(i18n("Saving ... please wait! "), false); |
1459 | //qApp->processEvents(); | 1508 | //qApp->processEvents(); |
1460 | #ifndef KAB_EMBEDDED | 1509 | #ifndef KAB_EMBEDDED |
1461 | KABC::StdAddressBook *b = dynamic_cast<KABC::StdAddressBook*>( mAddressBook ); | 1510 | KABC::StdAddressBook *b = dynamic_cast<KABC::StdAddressBook*>( mAddressBook ); |
@@ -3313,134 +3362,171 @@ bool KABCore::sync(KSyncManager* manager, QString filename, int mode,QString res | |||
3313 | mGlobalSyncMode = SYNC_MODE_NORMAL; | 3362 | mGlobalSyncMode = SYNC_MODE_NORMAL; |
3314 | if ( manager != syncManager ) | 3363 | if ( manager != syncManager ) |
3315 | qDebug("KABCore::sync:: ERROR! :: manager != syncManager "); | 3364 | qDebug("KABCore::sync:: ERROR! :: manager != syncManager "); |
3316 | QString mCurrentSyncDevice = manager->getCurrentSyncDevice(); | 3365 | QString mCurrentSyncDevice = manager->getCurrentSyncDevice(); |
3317 | 3366 | ||
3318 | AddressBook abLocal(filename,"syncContact"); | 3367 | AddressBook abLocal(filename,"syncContact"); |
3319 | bool syncOK = false; | 3368 | bool syncOK = false; |
3320 | if ( abLocal.load() ) { | 3369 | if ( abLocal.load() ) { |
3321 | qDebug("KA: Sync::AB loaded %s,sync mode %d",filename.latin1(), mode ); | 3370 | qDebug("KA: Sync::AB loaded %s,sync mode %d",filename.latin1(), mode ); |
3322 | bool external = false; | 3371 | bool external = false; |
3323 | bool isXML = false; | 3372 | bool isXML = false; |
3324 | if ( filename.right(4) == ".xml") { | 3373 | if ( filename.right(4) == ".xml") { |
3325 | mGlobalSyncMode = SYNC_MODE_EXTERNAL; | 3374 | mGlobalSyncMode = SYNC_MODE_EXTERNAL; |
3326 | isXML = true; | 3375 | isXML = true; |
3327 | abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice, true ); | 3376 | abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice, true ); |
3328 | } else { | 3377 | } else { |
3329 | external = !manager->mIsKapiFile; | 3378 | external = !manager->mIsKapiFile; |
3330 | if ( external ) { | 3379 | if ( external ) { |
3331 | qDebug("KA: Sync::Setting vcf mode to external "); | 3380 | qDebug("KA: Sync::Setting vcf mode to external "); |
3332 | mGlobalSyncMode = SYNC_MODE_EXTERNAL; | 3381 | mGlobalSyncMode = SYNC_MODE_EXTERNAL; |
3333 | AddressBook::Iterator it; | 3382 | AddressBook::Iterator it; |
3334 | for ( it = abLocal.begin(); it != abLocal.end(); ++it ) { | 3383 | for ( it = abLocal.begin(); it != abLocal.end(); ++it ) { |
3335 | (*it).setID( mCurrentSyncDevice, (*it).uid() ); | 3384 | (*it).setID( mCurrentSyncDevice, (*it).uid() ); |
3336 | (*it).computeCsum( mCurrentSyncDevice ); | 3385 | (*it).computeCsum( mCurrentSyncDevice ); |
3337 | } | 3386 | } |
3338 | } | 3387 | } |
3339 | } | 3388 | } |
3340 | //AddressBook::Iterator it; | 3389 | //AddressBook::Iterator it; |
3341 | //QStringList vcards; | 3390 | //QStringList vcards; |
3342 | //for ( it = abLocal.begin(); it != abLocal.end(); ++it ) { | 3391 | //for ( it = abLocal.begin(); it != abLocal.end(); ++it ) { |
3343 | // qDebug("Name %s ", (*it).familyName().latin1()); | 3392 | // qDebug("Name %s ", (*it).familyName().latin1()); |
3344 | //} | 3393 | //} |
3345 | syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, mode ); | 3394 | syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, mode ); |
3346 | syncManager->hideProgressBar(); | 3395 | syncManager->hideProgressBar(); |
3347 | if ( syncOK ) { | 3396 | if ( syncOK ) { |
3348 | if ( syncManager->mWriteBackFile ) | 3397 | if ( syncManager->mWriteBackFile ) |
3349 | { | 3398 | { |
3350 | if ( external ) | 3399 | if ( external ) |
3351 | abLocal.removeSyncAddressees( !isXML); | 3400 | abLocal.removeSyncAddressees( !isXML); |
3352 | qDebug("KA: Sync::Saving remote AB "); | 3401 | qDebug("KA: Sync::Saving remote AB "); |
3353 | if ( ! abLocal.saveAB()) | 3402 | if ( ! abLocal.saveAB()) |
3354 | qDebug("KA: sync::Error writing back AB to file "); | 3403 | qDebug("KA: sync::Error writing back AB to file "); |
3355 | if ( external ) { | 3404 | if ( external ) { |
3356 | // afterwrite processing | 3405 | // afterwrite processing |
3357 | abLocal.postExternSync( mAddressBook,mCurrentSyncDevice ,isXML); | 3406 | abLocal.postExternSync( mAddressBook,mCurrentSyncDevice ,isXML); |
3358 | } | 3407 | } |
3359 | } | 3408 | } |
3360 | } | 3409 | } |
3361 | setModified(); | 3410 | setModified(); |
3362 | 3411 | ||
3363 | } | 3412 | } |
3364 | abLocal.removeResources(); | 3413 | abLocal.removeResources(); |
3365 | if ( syncOK ) | 3414 | if ( syncOK ) |
3366 | mViewManager->refreshView(); | 3415 | mViewManager->refreshView(); |
3367 | return syncOK; | 3416 | return syncOK; |
3368 | 3417 | ||
3369 | } | 3418 | } |
3370 | void KABCore::removeSyncInfo( QString syncProfile) | 3419 | void KABCore::removeSyncInfo( QString syncProfile) |
3371 | { | 3420 | { |
3372 | qDebug("KA: AB:removeSyncInfo for profile %s ", syncProfile.latin1()); | 3421 | qDebug("KA: AB:removeSyncInfo for profile %s ", syncProfile.latin1()); |
3373 | mAddressBook->removeSyncInfo( syncProfile ); | 3422 | mAddressBook->removeSyncInfo( syncProfile ); |
3374 | setModified(); | 3423 | setModified(); |
3375 | } | 3424 | } |
3376 | 3425 | ||
3426 | bool KABCore::syncOL() | ||
3427 | { | ||
3428 | disableBR( true ); | ||
3429 | QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice(); | ||
3430 | AddressBook abLocal; | ||
3431 | if ( ! readOLdata( &abLocal ) ) | ||
3432 | return false; | ||
3433 | bool syncOK = false; | ||
3434 | message(i18n("Data from OL loaded..."), false); | ||
3435 | mGlobalSyncMode = SYNC_MODE_EXTERNAL; | ||
3436 | message(i18n("Sync preprocessing..."),false); | ||
3437 | abLocal.preOLSync( mAddressBook ,mCurrentSyncDevice ); | ||
3438 | message(i18n("Synchronizing..."),false); | ||
3439 | syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, syncManager->mSyncAlgoPrefs ); | ||
3440 | syncManager->hideProgressBar(); | ||
3441 | if ( syncOK ) { | ||
3442 | if ( syncManager->mWriteBackFile ) { | ||
3443 | abLocal.removeSyncAddressees( false ); | ||
3444 | message(i18n("Saving address data to OL..."),false); | ||
3445 | //abLocal.saveAB(); | ||
3446 | writeOLdata( &abLocal ); | ||
3447 | message(i18n("Sync postprocessing..."),false); | ||
3448 | abLocal.postExternSync( mAddressBook,mCurrentSyncDevice, true ); | ||
3449 | } | ||
3450 | } else | ||
3451 | message( i18n("Sync cancelled or failed.") ); | ||
3452 | setModified(); | ||
3453 | abLocal.removeResources(); | ||
3454 | if ( syncOK ) { | ||
3455 | mViewManager->refreshView(); | ||
3456 | message(i18n("OL syncing finished.")); | ||
3457 | } | ||
3458 | disableBR( false ); | ||
3459 | return syncOK; | ||
3460 | } | ||
3377 | 3461 | ||
3378 | //this is a overwritten callbackmethods from the syncinterface | 3462 | //this is a overwritten callbackmethods from the syncinterface |
3379 | bool KABCore::syncExternal(KSyncManager* manager, QString resource) | 3463 | bool KABCore::syncExternal(KSyncManager* manager, QString resource) |
3380 | { | 3464 | { |
3381 | if ( resource == "phone" ) | 3465 | if ( resource == "phone" ) |
3382 | return syncPhone(); | 3466 | return syncPhone(); |
3467 | if ( resource == "ol" ) | ||
3468 | return syncOL(); | ||
3383 | disableBR( true ); | 3469 | disableBR( true ); |
3384 | if ( manager != syncManager ) | 3470 | if ( manager != syncManager ) |
3385 | qDebug("KABCore::syncExternal:: ERROR! :: manager != syncManager "); | 3471 | qDebug("KABCore::syncExternal:: ERROR! :: manager != syncManager "); |
3386 | QString mCurrentSyncDevice = manager->getCurrentSyncDevice(); | 3472 | QString mCurrentSyncDevice = manager->getCurrentSyncDevice(); |
3387 | 3473 | ||
3388 | AddressBook abLocal( resource,"syncContact"); | 3474 | AddressBook abLocal( resource,"syncContact"); |
3389 | bool syncOK = false; | 3475 | bool syncOK = false; |
3390 | message(i18n("Loading DTM address data..."), false); | 3476 | message(i18n("Loading DTM address data..."), false); |
3391 | if ( abLocal.load() ) { | 3477 | if ( abLocal.load() ) { |
3392 | qDebug("KA: AB sharp loaded ,sync device %s",mCurrentSyncDevice.latin1()); | 3478 | qDebug("KA: AB sharp loaded ,sync device %s",mCurrentSyncDevice.latin1()); |
3393 | mGlobalSyncMode = SYNC_MODE_EXTERNAL; | 3479 | mGlobalSyncMode = SYNC_MODE_EXTERNAL; |
3394 | message(i18n("Sync preprocessing..."),false); | 3480 | message(i18n("Sync preprocessing..."),false); |
3395 | abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice, false ); | 3481 | abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice, false ); |
3396 | message(i18n("Synchronizing..."),false); | 3482 | message(i18n("Synchronizing..."),false); |
3397 | syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, syncManager->mSyncAlgoPrefs ); | 3483 | syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, syncManager->mSyncAlgoPrefs ); |
3398 | syncManager->hideProgressBar(); | 3484 | syncManager->hideProgressBar(); |
3399 | if ( syncOK ) { | 3485 | if ( syncOK ) { |
3400 | if ( syncManager->mWriteBackFile ) { | 3486 | if ( syncManager->mWriteBackFile ) { |
3401 | abLocal.removeSyncAddressees( false ); | 3487 | abLocal.removeSyncAddressees( false ); |
3402 | message(i18n("Saving DTM address data..."),false); | 3488 | message(i18n("Saving DTM address data..."),false); |
3403 | abLocal.saveAB(); | 3489 | abLocal.saveAB(); |
3404 | message(i18n("Sync postprocessing..."),false); | 3490 | message(i18n("Sync postprocessing..."),false); |
3405 | abLocal.postExternSync( mAddressBook,mCurrentSyncDevice, true ); | 3491 | abLocal.postExternSync( mAddressBook,mCurrentSyncDevice, true ); |
3406 | } | 3492 | } |
3407 | } else | 3493 | } else |
3408 | message( i18n("Sync cancelled or failed.") ); | 3494 | message( i18n("Sync cancelled or failed.") ); |
3409 | setModified(); | 3495 | setModified(); |
3410 | } | 3496 | } |
3411 | abLocal.removeResources(); | 3497 | abLocal.removeResources(); |
3412 | if ( syncOK ) { | 3498 | if ( syncOK ) { |
3413 | mViewManager->refreshView(); | 3499 | mViewManager->refreshView(); |
3414 | message(i18n("DTM syncing finished.")); | 3500 | message(i18n("DTM syncing finished.")); |
3415 | } | 3501 | } |
3416 | disableBR( false ); | 3502 | disableBR( false ); |
3417 | return syncOK; | 3503 | return syncOK; |
3418 | 3504 | ||
3419 | } | 3505 | } |
3420 | void KABCore::message( QString m, bool startTimer) | 3506 | void KABCore::message( QString m, bool startTimer) |
3421 | { | 3507 | { |
3422 | topLevelWidget()->setCaption( m ); | 3508 | topLevelWidget()->setCaption( m ); |
3423 | qApp->processEvents(); | 3509 | qApp->processEvents(); |
3424 | if ( startTimer ) | 3510 | if ( startTimer ) |
3425 | mMessageTimer->start( 15000, true ); | 3511 | mMessageTimer->start( 15000, true ); |
3426 | else | 3512 | else |
3427 | mMessageTimer->stop(); | 3513 | mMessageTimer->stop(); |
3428 | } | 3514 | } |
3429 | bool KABCore::syncPhone() | 3515 | bool KABCore::syncPhone() |
3430 | { | 3516 | { |
3431 | QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice(); | 3517 | QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice(); |
3432 | QString fileName = getPhoneFile(); | 3518 | QString fileName = getPhoneFile(); |
3433 | if ( !PhoneAccess::readFromPhone( fileName) ) { | 3519 | if ( !PhoneAccess::readFromPhone( fileName) ) { |
3434 | message(i18n("Phone access failed!")); | 3520 | message(i18n("Phone access failed!")); |
3435 | return false; | 3521 | return false; |
3436 | } | 3522 | } |
3437 | AddressBook abLocal( fileName,"syncContact"); | 3523 | AddressBook abLocal( fileName,"syncContact"); |
3438 | bool syncOK = false; | 3524 | bool syncOK = false; |
3439 | { | 3525 | { |
3440 | abLocal.importFromFile( fileName ); | 3526 | abLocal.importFromFile( fileName ); |
3441 | qDebug("KA: AB phone loaded ,sync device %s",mCurrentSyncDevice.latin1()); | 3527 | qDebug("KA: AB phone loaded ,sync device %s",mCurrentSyncDevice.latin1()); |
3442 | mGlobalSyncMode = SYNC_MODE_EXTERNAL; | 3528 | mGlobalSyncMode = SYNC_MODE_EXTERNAL; |
3443 | abLocal.preparePhoneSync( mCurrentSyncDevice, true ); | 3529 | abLocal.preparePhoneSync( mCurrentSyncDevice, true ); |
3444 | abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice, true ); | 3530 | abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice, true ); |
3445 | syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, syncManager->mSyncAlgoPrefs ); | 3531 | syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, syncManager->mSyncAlgoPrefs ); |
3446 | syncManager->hideProgressBar(); | 3532 | syncManager->hideProgressBar(); |
diff --git a/kaddressbook/kabcore.h b/kaddressbook/kabcore.h index e69cb60..ec6a9ec 100644 --- a/kaddressbook/kabcore.h +++ b/kaddressbook/kabcore.h | |||
@@ -454,82 +454,87 @@ class KABCore : public QWidget, public KSyncInterface | |||
454 | KAction *mActionQuit; | 454 | KAction *mActionQuit; |
455 | 455 | ||
456 | //US edit menu | 456 | //US edit menu |
457 | KAction *mActionCopy; | 457 | KAction *mActionCopy; |
458 | KAction *mActionCut; | 458 | KAction *mActionCut; |
459 | KAction *mActionPaste; | 459 | KAction *mActionPaste; |
460 | KAction *mActionSelectAll; | 460 | KAction *mActionSelectAll; |
461 | KAction *mActionUndo; | 461 | KAction *mActionUndo; |
462 | KAction *mActionRedo; | 462 | KAction *mActionRedo; |
463 | KAction *mActionDelete; | 463 | KAction *mActionDelete; |
464 | 464 | ||
465 | //US settings menu | 465 | //US settings menu |
466 | KAction *mActionConfigResources; | 466 | KAction *mActionConfigResources; |
467 | KAction *mActionConfigGlobal; | 467 | KAction *mActionConfigGlobal; |
468 | KAction *mActionConfigKAddressbook; | 468 | KAction *mActionConfigKAddressbook; |
469 | KAction *mActionConfigShortcuts; | 469 | KAction *mActionConfigShortcuts; |
470 | KAction *mActionConfigureToolbars; | 470 | KAction *mActionConfigureToolbars; |
471 | KAction *mActionKeyBindings; | 471 | KAction *mActionKeyBindings; |
472 | KToggleAction *mActionJumpBar; | 472 | KToggleAction *mActionJumpBar; |
473 | KToggleAction *mActionDetails; | 473 | KToggleAction *mActionDetails; |
474 | KAction *mActionWhoAmI; | 474 | KAction *mActionWhoAmI; |
475 | KAction *mActionCategories; | 475 | KAction *mActionCategories; |
476 | KAction *mActionEditCategories; | 476 | KAction *mActionEditCategories; |
477 | KAction *mActionManageCategories; | 477 | KAction *mActionManageCategories; |
478 | KAction *mActionAboutKAddressbook; | 478 | KAction *mActionAboutKAddressbook; |
479 | KAction *mActionLicence; | 479 | KAction *mActionLicence; |
480 | KAction *mActionFaq; | 480 | KAction *mActionFaq; |
481 | KAction *mActionWN; | 481 | KAction *mActionWN; |
482 | KAction *mActionSyncHowto; | 482 | KAction *mActionSyncHowto; |
483 | KAction *mActionStorageHowto; | 483 | KAction *mActionStorageHowto; |
484 | KAction *mActionKdeSyncHowto; | 484 | KAction *mActionKdeSyncHowto; |
485 | KAction *mActionMultiSyncHowto; | 485 | KAction *mActionMultiSyncHowto; |
486 | 486 | ||
487 | KAction *mActionDeleteView; | 487 | KAction *mActionDeleteView; |
488 | 488 | ||
489 | QPopupMenu *viewMenu; | 489 | QPopupMenu *viewMenu; |
490 | QPopupMenu *filterMenu; | 490 | QPopupMenu *filterMenu; |
491 | QPopupMenu *settingsMenu; | 491 | QPopupMenu *settingsMenu; |
492 | QPopupMenu *changeMenu; | 492 | QPopupMenu *changeMenu; |
493 | QPopupMenu *beamMenu; | 493 | QPopupMenu *beamMenu; |
494 | //US QAction *mActionSave; | 494 | //US QAction *mActionSave; |
495 | QPopupMenu *ImportMenu; | 495 | QPopupMenu *ImportMenu; |
496 | QPopupMenu *ExportMenu; | 496 | QPopupMenu *ExportMenu; |
497 | //LR additional methods | 497 | //LR additional methods |
498 | KAction *mActionRemoveVoice; | 498 | KAction *mActionRemoveVoice; |
499 | KAction *mActionSetFormattedName; | 499 | KAction *mActionSetFormattedName; |
500 | KAction * mActionImportOL; | 500 | KAction * mActionImportOL; |
501 | 501 | ||
502 | #ifndef KAB_EMBEDDED | 502 | #ifndef KAB_EMBEDDED |
503 | KAddressBookService *mAddressBookService; | 503 | KAddressBookService *mAddressBookService; |
504 | #endif //KAB_EMBEDDED | 504 | #endif //KAB_EMBEDDED |
505 | 505 | ||
506 | class KABCorePrivate; | 506 | class KABCorePrivate; |
507 | KABCorePrivate *d; | 507 | KABCorePrivate *d; |
508 | //US bool mBlockSaveFlag; | 508 | //US bool mBlockSaveFlag; |
509 | 509 | ||
510 | #ifdef KAB_EMBEDDED | 510 | #ifdef KAB_EMBEDDED |
511 | KAddressBookMain *mMainWindow; // should be the same like mGUIClient | 511 | KAddressBookMain *mMainWindow; // should be the same like mGUIClient |
512 | #endif //KAB_EMBEDDED | 512 | #endif //KAB_EMBEDDED |
513 | 513 | ||
514 | //this are the overwritten callbackmethods from the syncinterface | 514 | //this are the overwritten callbackmethods from the syncinterface |
515 | virtual bool sync(KSyncManager* manager, QString filename, int mode,QString resource); | 515 | virtual bool sync(KSyncManager* manager, QString filename, int mode,QString resource); |
516 | virtual bool syncExternal(KSyncManager* manager, QString resource); | 516 | virtual bool syncExternal(KSyncManager* manager, QString resource); |
517 | virtual void removeSyncInfo( QString syncProfile); | 517 | virtual void removeSyncInfo( QString syncProfile); |
518 | bool readOLdata( KABC::AddressBook* local ); | ||
519 | bool writeOLdata( KABC::AddressBook* local ); | ||
520 | bool syncOL(); | ||
518 | bool syncPhone(); | 521 | bool syncPhone(); |
519 | void message( QString m , bool startTimer = true); | 522 | void message( QString m , bool startTimer = true); |
520 | 523 | ||
521 | // LR ******************************* | 524 | // LR ******************************* |
522 | // sync stuff! | 525 | // sync stuff! |
523 | QString sentSyncFile(); | 526 | QString sentSyncFile(); |
524 | QPopupMenu *syncMenu; | 527 | QPopupMenu *syncMenu; |
525 | KSyncManager* syncManager; | 528 | KSyncManager* syncManager; |
526 | int mGlobalSyncMode; | 529 | int mGlobalSyncMode; |
527 | bool synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBook* remote,int mode); | 530 | bool synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBook* remote,int mode); |
528 | KABC::Addressee getLastSyncAddressee(); | 531 | KABC::Addressee getLastSyncAddressee(); |
529 | QDateTime mLastAddressbookSync; | 532 | QDateTime mLastAddressbookSync; |
530 | int takeAddressee( KABC::Addressee* local, KABC::Addressee* remote, int mode , bool full ); | 533 | int takeAddressee( KABC::Addressee* local, KABC::Addressee* remote, int mode , bool full ); |
531 | // ********************* | 534 | // ********************* |
535 | //OL sync stuff | ||
536 | QString mOLsyncFolderID; | ||
532 | 537 | ||
533 | }; | 538 | }; |
534 | 539 | ||
535 | #endif | 540 | #endif |
diff --git a/kaddressbook/kaimportoldialog.cpp b/kaddressbook/kaimportoldialog.cpp index 2f794d6..6afc288 100644 --- a/kaddressbook/kaimportoldialog.cpp +++ b/kaddressbook/kaimportoldialog.cpp | |||
@@ -1,735 +1,23 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of KAddressbook/Pi. | 2 | This file is part of KAddressbook/Pi. |
3 | Copyright (c) 2004 Lutz Rogowski <rogowski@kde.org> | 3 | Copyright (c) 2004 Lutz Rogowski <rogowski@kde.org> |
4 | 4 | ||
5 | This program is free software; you can redistribute it and/or modify | 5 | This program is free software; you can redistribute it and/or modify |
6 | it under the terms of the GNU General Public License as published by | 6 | it under the terms of the GNU General Public License as published by |
7 | the Free Software Foundation; either version 2 of the License, or | 7 | the Free Software Foundation; either version 2 of the License, or |
8 | (at your option) any later version. | 8 | (at your option) any later version. |
9 | 9 | ||
10 | This program is distributed in the hope that it will be useful, | 10 | This program is distributed in the hope that it will be useful, |
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
13 | GNU General Public License for more details. | 13 | GNU General Public License for more details. |
14 | 14 | ||
15 | You should have received a copy of the GNU General Public License | 15 | You should have received a copy of the GNU General Public License |
16 | along with this program; if not, write to the Free Software | 16 | along with this program; if not, write to the Free Software |
17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
18 | 18 | ||
19 | As a special exception, permission is given to link this program | 19 | As a special exception, permission is given to link this program |
20 | with any edition of Qt, and distribute the resulting executable, | 20 | with any edition of Qt, and distribute the resulting executable, |
21 | without including the source code for Qt in the source distribution. | 21 | without including the source code for Qt in the source distribution. |
22 | */ | 22 | */ |
23 | 23 | ||
24 | #include <qtooltip.h> | ||
25 | #include <qframe.h> | ||
26 | #include <qpixmap.h> | ||
27 | #include <qlayout.h> | ||
28 | #include <qprogressbar.h> | ||
29 | #include <qprogressdialog.h> | ||
30 | #include <qwidgetstack.h> | ||
31 | #include <qdatetime.h> | ||
32 | #include <qdir.h> | ||
33 | #include <qregexp.h> | ||
34 | #include <qapplication.h> | ||
35 | #include <qhbox.h> | ||
36 | #include <qheader.h> | ||
37 | #include <qdatetime.h> | ||
38 | #include <qlistview.h> | ||
39 | |||
40 | #include <kdebug.h> | ||
41 | #include <klocale.h> | ||
42 | #include <kstandarddirs.h> | ||
43 | #include <kmessagebox.h> | ||
44 | #include <kfiledialog.h> | ||
45 | |||
46 | #include <libkdepim/categoryselectdialog.h> | ||
47 | #include <libkdepim/kinputdialog.h> | ||
48 | |||
49 | #include <libkcal/calendarlocal.h> | ||
50 | #include <libkcal/icalformat.h> | ||
51 | |||
52 | #include <kabc/addresseelist.h> | ||
53 | #include <kabc/phonenumber.h> | ||
54 | |||
55 | #include "kaimportoldialog.h" | ||
56 | |||
57 | #include "../outport/msoutl9.h" | ||
58 | #include <ole2.h> | ||
59 | #include <comutil.h> | ||
60 | _Application gOlAppAB; | ||
61 | |||
62 | QDateTime mDdate2Qdtr( DATE dt) | ||
63 | { | ||
64 | COleDateTime odt; | ||
65 | SYSTEMTIME st; | ||
66 | odt = dt; | ||
67 | if ( odt.GetStatus() != 0 ) | ||
68 | return QDateTime(); | ||
69 | odt.GetAsSystemTime(st); | ||
70 | if ( st.wYear > 4000 ) // this program as a year 4000 bug! | ||
71 | return QDateTime(); | ||
72 | // it seems so, that 1.1.4501 indicates: DATE invalid | ||
73 | QDateTime qdt (QDate(st.wYear, st.wMonth,st.wDay ),QTime( st.wHour, st.wMinute,st.wSecond ) ); | ||
74 | return qdt; | ||
75 | } | ||
76 | |||
77 | class OLEListViewItem : public QCheckListItem | ||
78 | { | ||
79 | public: | ||
80 | OLEListViewItem( QListView *parent, QString text ) : | ||
81 | QCheckListItem( parent, text, QCheckListItem::CheckBox ) { ; }; | ||
82 | OLEListViewItem( QListViewItem *after, QString text ) : | ||
83 | QCheckListItem( after, text, QCheckListItem::CheckBox ) { ; }; | ||
84 | ~OLEListViewItem() {}; | ||
85 | void setData( DWORD data ) {mData= data; }; | ||
86 | DWORD data() { return mData ;}; | ||
87 | private: | ||
88 | DWORD mData; | ||
89 | }; | ||
90 | |||
91 | KAImportOLdialog::KAImportOLdialog( const QString &caption, | ||
92 | KABC::AddressBook * aBook, QWidget *parent ) : | ||
93 | KDialogBase( Plain, caption, User1 | Close, Ok, | ||
94 | parent, caption, true, false, i18n("Import!") ) | ||
95 | { | ||
96 | QHBox * mw = new QHBox( this ); | ||
97 | setMainWidget( mw ); | ||
98 | mListView = new QListView( mw ); | ||
99 | mListView->addColumn(i18n("Select Folder to import")); | ||
100 | mListView->addColumn(i18n("Content Type")); | ||
101 | mABook = aBook; | ||
102 | connect( this, SIGNAL( user1Clicked() ),SLOT ( slotApply())); | ||
103 | setupFolderView(); | ||
104 | resize( sizeHint().width()+50, sizeHint().height()+50 ); | ||
105 | } | ||
106 | |||
107 | KAImportOLdialog::~KAImportOLdialog() | ||
108 | { | ||
109 | |||
110 | } | ||
111 | |||
112 | KABC::Addressee::List KAImportOLdialog::getAddressList() | ||
113 | { | ||
114 | return mAList; | ||
115 | } | ||
116 | void KAImportOLdialog::setupFolderView() | ||
117 | { | ||
118 | SCODE sc = ::OleInitialize(NULL); | ||
119 | if ( FAILED ( sc ) ) { | ||
120 | KMessageBox::information(this,"OLE initialisation failed"); | ||
121 | return; | ||
122 | } | ||
123 | |||
124 | if(!gOlAppAB.CreateDispatch(_T("Outlook.Application"),NULL)){ | ||
125 | KMessageBox::information(this,"Sorry, cannot access Outlook"); | ||
126 | return ; | ||
127 | } | ||
128 | MAPIFolder mfInbox; | ||
129 | MAPIFolder mfRoot; | ||
130 | CString szName; | ||
131 | _NameSpace olNS; | ||
132 | olNS = gOlAppAB.GetNamespace(_T("MAPI")); | ||
133 | mfInbox = olNS.GetDefaultFolder(6); | ||
134 | mfRoot = mfInbox.GetParent(); | ||
135 | szName = mfRoot.GetName(); | ||
136 | long iType = mfRoot.GetDefaultItemType(); | ||
137 | QString mes; | ||
138 | mes = QString::fromUcs2( szName.GetBuffer() ); | ||
139 | OLEListViewItem * root = new OLEListViewItem( mListView, mes ); | ||
140 | mfRoot.m_lpDispatch->AddRef(); | ||
141 | addFolder( root, mfRoot.m_lpDispatch ); | ||
142 | root->setOpen( true ); | ||
143 | mListView->setSortColumn( 0 ); | ||
144 | mListView->sort( ); | ||
145 | } | ||
146 | |||
147 | |||
148 | void KAImportOLdialog::addFolder(OLEListViewItem* iParent, LPDISPATCH dispParent) | ||
149 | { | ||
150 | MAPIFolder mfParent(dispParent), mfChild; | ||
151 | _Folders folders; | ||
152 | _variant_t fndx((long)0); | ||
153 | CString szName; | ||
154 | long iType; | ||
155 | OLEListViewItem* hChild; | ||
156 | |||
157 | folders = mfParent.GetFolders(); | ||
158 | for(int i=1; i <= folders.GetCount(); ++i) | ||
159 | { | ||
160 | fndx = (long)i; | ||
161 | mfChild = folders.Item(fndx.Detach()); | ||
162 | mfChild.m_lpDispatch->AddRef(); | ||
163 | szName = mfChild.GetName(); | ||
164 | iType = mfChild.GetDefaultItemType(); | ||
165 | hChild = new OLEListViewItem( iParent , QString::fromUcs2( szName.GetBuffer() ) ); | ||
166 | if ( iType != 2) | ||
167 | hChild->setEnabled( false ); | ||
168 | QString ts; | ||
169 | switch( iType ) { | ||
170 | case 0: | ||
171 | ts = i18n("Mail"); | ||
172 | break; | ||
173 | case 1: | ||
174 | ts = i18n("Calendar"); | ||
175 | break; | ||
176 | case 2: | ||
177 | ts = i18n("Contacts"); | ||
178 | break; | ||
179 | case 3: | ||
180 | ts = i18n("Todos"); | ||
181 | break; | ||
182 | case 4: | ||
183 | ts = i18n("Journals"); | ||
184 | break; | ||
185 | case 5: | ||
186 | ts = i18n("Notes"); | ||
187 | break; | ||
188 | default: | ||
189 | ts = i18n("Unknown"); | ||
190 | } | ||
191 | hChild->setText( 1,ts); | ||
192 | hChild->setData( (DWORD) mfChild.m_lpDispatch ); | ||
193 | mfChild.m_lpDispatch->AddRef(); | ||
194 | addFolder(hChild, mfChild.m_lpDispatch); | ||
195 | } | ||
196 | } | ||
197 | |||
198 | void KAImportOLdialog::slotApply() | ||
199 | { | ||
200 | importedItems = 0; | ||
201 | OLEListViewItem* child = (OLEListViewItem*) mListView->firstChild(); | ||
202 | while ( child ) { | ||
203 | if ( child->isOn() ) | ||
204 | readContactData( child->data() ); | ||
205 | child = (OLEListViewItem*) child->itemBelow(); | ||
206 | } | ||
207 | QString mes = i18n("Importing complete.\n\n%1 items imported.").arg( importedItems); | ||
208 | KMessageBox::information(this,mes); | ||
209 | } | ||
210 | void KAImportOLdialog::readContactData( DWORD folder ) | ||
211 | { | ||
212 | |||
213 | LPDISPATCH dispItem = (LPDISPATCH)folder; | ||
214 | dispItem->AddRef(); | ||
215 | MAPIFolder mf(dispItem); | ||
216 | mf.m_lpDispatch->AddRef(); | ||
217 | _Items folderItems; | ||
218 | _variant_t indx((long)0); | ||
219 | LPDISPATCH itm; | ||
220 | int i; | ||
221 | folderItems = mf.GetItems(); | ||
222 | QProgressDialog bar( i18n("Importing contact data"),i18n("Abort"), folderItems.GetCount(),this); | ||
223 | bar.setCaption (i18n("Importing!") ); | ||
224 | int h = bar.sizeHint().height() ; | ||
225 | int w = 300; | ||
226 | int dw = QApplication::desktop()->width(); | ||
227 | int dh = QApplication::desktop()->height(); | ||
228 | //bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); | ||
229 | bar.show(); | ||
230 | for(i=1; i <= folderItems.GetCount(); ++i) | ||
231 | { | ||
232 | qApp->processEvents(); | ||
233 | if ( ! bar.isVisible() ) | ||
234 | return ; | ||
235 | bar.setProgress( i ); | ||
236 | indx = (long)i; | ||
237 | itm = folderItems.Item(indx.Detach()); | ||
238 | _ContactItem * pItem = (_ContactItem *)&itm; | ||
239 | ol2kapiContact( pItem ); | ||
240 | itm->Release(); | ||
241 | } | ||
242 | } | ||
243 | void KAImportOLdialog::slotOk() | ||
244 | { | ||
245 | QDialog::accept(); | ||
246 | } | ||
247 | |||
248 | void KAImportOLdialog::ol2kapiContact( _ContactItem * aItem ) | ||
249 | { | ||
250 | KABC::Addressee addressee; | ||
251 | |||
252 | addressee.setUid( QString::fromUcs2(aItem->GetEntryID().GetBuffer())); | ||
253 | //GetLastModificationTime() | ||
254 | //addressee.setName( const QString &name ); | ||
255 | //addressee.setFormattedName( const QString &formattedName ); | ||
256 | addressee.setFamilyName( QString::fromUcs2(aItem->GetLastName().GetBuffer()) ); | ||
257 | addressee.setGivenName( QString::fromUcs2(aItem->GetFirstName().GetBuffer()) ); | ||
258 | addressee.setAdditionalName( QString::fromUcs2(aItem->GetMiddleName().GetBuffer()) ); | ||
259 | addressee.setPrefix(QString::fromUcs2(aItem->GetTitle().GetBuffer()) ); | ||
260 | addressee.setSuffix( QString::fromUcs2(aItem->GetSuffix().GetBuffer()) ); | ||
261 | addressee.setNickName( QString::fromUcs2(aItem->GetNickName().GetBuffer()) ); | ||
262 | QDateTime dtb = mDdate2Qdtr(aItem->GetBirthday()); | ||
263 | if ( dtb.isValid() ) | ||
264 | addressee.setBirthday( mDdate2Qdtr(aItem->GetBirthday())); | ||
265 | |||
266 | //QString::fromUcs2(aItem->.GetBuffer()) | ||
267 | //addressee.setMailer( const QString &mailer ); | ||
268 | //addressee.setTimeZone( const TimeZone &timeZone ); | ||
269 | //addressee.setGeo( const Geo &geo ); | ||
270 | //addressee.setTitle( QString::fromUcs2(aItem->GetJobTitle().GetBuffer()) );// titel is the prefix | ||
271 | addressee.setRole( QString::fromUcs2(aItem->GetJobTitle().GetBuffer()) ); | ||
272 | addressee.setOrganization( QString::fromUcs2(aItem->GetCompanyName().GetBuffer()).replace( QRegExp("\\r"), "") ); | ||
273 | QString notesStr = QString::fromUcs2(aItem->GetBody().GetBuffer()); | ||
274 | notesStr.replace( QRegExp("\\r"), ""); | ||
275 | |||
276 | addressee.setProductId( QString::fromUcs2(aItem->GetCustomerID().GetBuffer()) ); | ||
277 | //addressee.setRevision( const QDateTime &revision ); | ||
278 | // addressee.setSortString( const QString &sortString ); | ||
279 | addressee.setUrl( QString::fromUcs2(aItem->GetWebPage().GetBuffer()) ); | ||
280 | |||
281 | QString tempS; | ||
282 | tempS = QString::fromUcs2(aItem->GetNetMeetingAlias().GetBuffer())+" AT SERVER: " +QString::fromUcs2(aItem->GetNetMeetingServer().GetBuffer()); | ||
283 | if ( tempS.length() > 12 ) | ||
284 | addressee.insertCustom( "KADDRESSBOOK", "X-IMAddress", tempS ); | ||
285 | tempS = QString::fromUcs2(aItem->GetSpouse().GetBuffer()); | ||
286 | if ( !tempS.isEmpty() ) | ||
287 | addressee.insertCustom( "KADDRESSBOOK", "X-SpousesName", tempS ); | ||
288 | tempS = QString::fromUcs2(aItem->GetManagerName().GetBuffer()); | ||
289 | if ( !tempS.isEmpty() ) | ||
290 | addressee.insertCustom( "KADDRESSBOOK", "X-ManagersName", tempS ); | ||
291 | tempS = QString::fromUcs2(aItem->GetAssistantName().GetBuffer()); | ||
292 | if ( !tempS.isEmpty() ) | ||
293 | addressee.insertCustom( "KADDRESSBOOK", "X-AssistantsName", tempS ); | ||
294 | tempS = QString::fromUcs2(aItem->GetDepartment().GetBuffer()); | ||
295 | if ( !tempS.isEmpty() ) | ||
296 | addressee.insertCustom( "KADDRESSBOOK", "X-Department", tempS ); | ||
297 | tempS = QString::fromUcs2(aItem->GetOfficeLocation().GetBuffer()).replace( QRegExp("\\r"), ""); | ||
298 | if ( !tempS.isEmpty() ) | ||
299 | addressee.insertCustom( "KADDRESSBOOK", "X-Office",tempS ); | ||
300 | tempS = QString::fromUcs2(aItem->GetProfession().GetBuffer()); | ||
301 | if ( !tempS.isEmpty() ) | ||
302 | addressee.insertCustom( "KADDRESSBOOK", "X-Profession", tempS ); | ||
303 | dtb = mDdate2Qdtr(aItem->GetAnniversary()); | ||
304 | if (dtb.isValid() ) { | ||
305 | QString dt = KGlobal::locale()->formatDate( dtb.date() , true, KLocale::ISODate); | ||
306 | addressee.insertCustom( "KADDRESSBOOK", "X-Anniversary", dt); | ||
307 | } | ||
308 | int sec = aItem->GetSensitivity() ; | ||
309 | if ( sec > 1 )// mapping pers -> private | ||
310 | --sec; | ||
311 | addressee.setSecrecy( sec ); | ||
312 | //addressee.setLogo( const Picture &logo ); | ||
313 | //addressee.setPhoto( const Picture &photo ); | ||
314 | //addressee.setSound( const Sound &sound ); | ||
315 | //addressee.setAgent( const Agent &agent ); | ||
316 | QString cat = QString::fromUcs2( aItem->GetCategories().GetBuffer()).replace( QRegExp("\\r"), ""); | ||
317 | cat = cat.replace( QRegExp("; "), ";"); | ||
318 | addressee.setCategories( QStringList::split( ";", cat )); | ||
319 | |||
320 | QString phoneS; | ||
321 | |||
322 | phoneS = QString::fromUcs2( aItem->GetAssistantTelephoneNumber().GetBuffer()); | ||
323 | if ( ! phoneS.isEmpty()) | ||
324 | addressee.insertPhoneNumber( KABC::PhoneNumber(phoneS ,KABC::PhoneNumber::Work + KABC::PhoneNumber::Voice ) ); | ||
325 | phoneS = QString::fromUcs2( aItem->GetBusinessTelephoneNumber().GetBuffer()); | ||
326 | if ( ! phoneS.isEmpty()) | ||
327 | addressee.insertPhoneNumber( KABC::PhoneNumber(phoneS ,KABC::PhoneNumber::Work ) ); | ||
328 | phoneS = QString::fromUcs2( aItem->GetBusiness2TelephoneNumber().GetBuffer()); | ||
329 | if ( ! phoneS.isEmpty()) | ||
330 | addressee.insertPhoneNumber( KABC::PhoneNumber(phoneS ,KABC::PhoneNumber::Work ) ); | ||
331 | phoneS = QString::fromUcs2( aItem->GetBusinessFaxNumber().GetBuffer()); | ||
332 | if ( ! phoneS.isEmpty()) | ||
333 | addressee.insertPhoneNumber( KABC::PhoneNumber(phoneS ,KABC::PhoneNumber::Work + KABC::PhoneNumber::Fax ) ); | ||
334 | phoneS = QString::fromUcs2( aItem->GetCarTelephoneNumber().GetBuffer()); | ||
335 | if ( ! phoneS.isEmpty()) | ||
336 | addressee.insertPhoneNumber( KABC::PhoneNumber(phoneS ,KABC::PhoneNumber::Car ) ); | ||
337 | phoneS = QString::fromUcs2( aItem->GetHomeTelephoneNumber().GetBuffer()); | ||
338 | if ( ! phoneS.isEmpty()) | ||
339 | addressee.insertPhoneNumber( KABC::PhoneNumber(phoneS ,KABC::PhoneNumber::Home ) ); | ||
340 | phoneS = QString::fromUcs2( aItem->GetHome2TelephoneNumber().GetBuffer()); | ||
341 | if ( ! phoneS.isEmpty()) | ||
342 | addressee.insertPhoneNumber( KABC::PhoneNumber(phoneS ,KABC::PhoneNumber::Home ) ); | ||
343 | phoneS = QString::fromUcs2( aItem->GetHomeFaxNumber().GetBuffer()); | ||
344 | if ( ! phoneS.isEmpty()) | ||
345 | addressee.insertPhoneNumber( KABC::PhoneNumber(phoneS ,KABC::PhoneNumber::Home + KABC::PhoneNumber::Fax ) ); | ||
346 | phoneS = QString::fromUcs2( aItem->GetISDNNumber().GetBuffer()); | ||
347 | if ( ! phoneS.isEmpty()) | ||
348 | addressee.insertPhoneNumber( KABC::PhoneNumber(phoneS ,KABC::PhoneNumber::Isdn ) ); | ||
349 | phoneS = QString::fromUcs2( aItem->GetMobileTelephoneNumber().GetBuffer()); | ||
350 | if ( ! phoneS.isEmpty()) | ||
351 | addressee.insertPhoneNumber( KABC::PhoneNumber(phoneS ,KABC::PhoneNumber::Cell ) ); | ||
352 | phoneS = QString::fromUcs2( aItem->GetOtherFaxNumber().GetBuffer()); | ||
353 | if ( ! phoneS.isEmpty()) | ||
354 | addressee.insertPhoneNumber( KABC::PhoneNumber(phoneS ,KABC::PhoneNumber::Fax ) ); | ||
355 | phoneS = QString::fromUcs2( aItem->GetOtherTelephoneNumber().GetBuffer()); | ||
356 | if ( ! phoneS.isEmpty()) | ||
357 | addressee.insertPhoneNumber( KABC::PhoneNumber(phoneS ,KABC::PhoneNumber::Voice ) ); | ||
358 | phoneS = QString::fromUcs2( aItem->GetPagerNumber().GetBuffer()); | ||
359 | if ( ! phoneS.isEmpty()) | ||
360 | addressee.insertPhoneNumber( KABC::PhoneNumber(phoneS ,KABC::PhoneNumber::Pager ) ); | ||
361 | phoneS = QString::fromUcs2( aItem->GetPrimaryTelephoneNumber().GetBuffer()); | ||
362 | if ( ! phoneS.isEmpty()) | ||
363 | addressee.insertPhoneNumber( KABC::PhoneNumber(phoneS ,KABC::PhoneNumber::Pref ) ); | ||
364 | phoneS = QString::fromUcs2( aItem->GetTTYTDDTelephoneNumber().GetBuffer()); | ||
365 | if ( ! phoneS.isEmpty()) | ||
366 | addressee.insertPhoneNumber( KABC::PhoneNumber(phoneS ,KABC::PhoneNumber::Modem ) ); | ||
367 | phoneS = QString::fromUcs2( aItem->GetTelexNumber().GetBuffer()); | ||
368 | if ( ! phoneS.isEmpty()) | ||
369 | addressee.insertPhoneNumber( KABC::PhoneNumber(phoneS ,KABC::PhoneNumber::Fax + KABC::PhoneNumber::Bbs ) ); | ||
370 | phoneS = QString::fromUcs2( aItem->GetCompanyMainTelephoneNumber().GetBuffer()); | ||
371 | if ( ! phoneS.isEmpty()) | ||
372 | addressee.insertPhoneNumber( KABC::PhoneNumber(phoneS ,KABC::PhoneNumber::Work + KABC::PhoneNumber::Pref ) ); | ||
373 | phoneS = QString::fromUcs2( aItem->GetRadioTelephoneNumber().GetBuffer()); | ||
374 | if ( ! phoneS.isEmpty()) | ||
375 | addressee.insertPhoneNumber( KABC::PhoneNumber(phoneS ,KABC::PhoneNumber::Video ) ); | ||
376 | phoneS = QString::fromUcs2( aItem->GetCallbackTelephoneNumber().GetBuffer()); | ||
377 | if ( ! phoneS.isEmpty()) | ||
378 | addressee.insertPhoneNumber( KABC::PhoneNumber(phoneS ,KABC::PhoneNumber::Voice + KABC::PhoneNumber::Pref ) ); | ||
379 | |||
380 | bool preferred = true; | ||
381 | phoneS = QString::fromUcs2( aItem->GetEmail1Address().GetBuffer()); | ||
382 | if ( ! phoneS.isEmpty()) { | ||
383 | addressee.insertEmail(phoneS , preferred ); | ||
384 | preferred = false; | ||
385 | } | ||
386 | phoneS = QString::fromUcs2( aItem->GetEmail2Address().GetBuffer()); | ||
387 | if ( ! phoneS.isEmpty()) { | ||
388 | addressee.insertEmail(phoneS , preferred ); | ||
389 | preferred = false; | ||
390 | } | ||
391 | phoneS = QString::fromUcs2( aItem->GetEmail3Address().GetBuffer()); | ||
392 | if ( ! phoneS.isEmpty()) { | ||
393 | addressee.insertEmail(phoneS , preferred ); | ||
394 | preferred = false; | ||
395 | } | ||
396 | // is this the number of the preferred email? | ||
397 | //long GetSelectedMailingAddress();??? | ||
398 | |||
399 | KABC::Address addressHome; | ||
400 | KABC::Address* addressAdd = &addressHome; | ||
401 | bool insert = false; | ||
402 | phoneS = QString::fromUcs2( aItem->GetHomeAddressCountry().GetBuffer()); | ||
403 | phoneS.replace( QRegExp("\\r"), ""); | ||
404 | if ( ! phoneS.isEmpty()) { | ||
405 | addressAdd->setCountry(phoneS ); | ||
406 | insert = true; | ||
407 | } | ||
408 | phoneS = QString::fromUcs2( aItem->GetHomeAddressState().GetBuffer()); | ||
409 | phoneS.replace( QRegExp("\\r"), ""); | ||
410 | if ( ! phoneS.isEmpty()) { | ||
411 | addressAdd->setRegion(phoneS ); | ||
412 | insert = true; | ||
413 | } | ||
414 | phoneS = QString::fromUcs2( aItem->GetHomeAddressCity().GetBuffer()); | ||
415 | phoneS.replace( QRegExp("\\r"), ""); | ||
416 | if ( ! phoneS.isEmpty()) { | ||
417 | addressAdd->setLocality(phoneS ); | ||
418 | insert = true; | ||
419 | } | ||
420 | phoneS = QString::fromUcs2( aItem->GetHomeAddressPostalCode().GetBuffer()); | ||
421 | phoneS.replace( QRegExp("\\r"), ""); | ||
422 | if ( ! phoneS.isEmpty()) { | ||
423 | addressAdd->setPostalCode(phoneS ); | ||
424 | insert = true; | ||
425 | } | ||
426 | phoneS = QString::fromUcs2( aItem->GetHomeAddressPostOfficeBox().GetBuffer()); | ||
427 | phoneS.replace( QRegExp("\\r"), ""); | ||
428 | if ( ! phoneS.isEmpty()) { | ||
429 | addressAdd->setPostOfficeBox(phoneS ); | ||
430 | insert = true; | ||
431 | } | ||
432 | phoneS = QString::fromUcs2( aItem->GetHomeAddressStreet().GetBuffer()); | ||
433 | phoneS.replace( QRegExp("\\r"), ""); | ||
434 | if ( ! phoneS.isEmpty()) { | ||
435 | addressAdd->setStreet(phoneS ); | ||
436 | insert = true; | ||
437 | } | ||
438 | phoneS = QString::fromUcs2( aItem->GetHomeAddress().GetBuffer()); | ||
439 | phoneS.replace( QRegExp("\\r"), ""); | ||
440 | if ( ! phoneS.isEmpty()) { | ||
441 | // redundant !addressAdd->setExtended(phoneS ); | ||
442 | // insert = true; | ||
443 | } | ||
444 | addressAdd->setType( KABC::Address::Home ); | ||
445 | if ( insert ) | ||
446 | addressee.insertAddress( *addressAdd ); | ||
447 | // ++++++++++++++++++++++ end of address | ||
448 | |||
449 | KABC::Address addressWork; | ||
450 | addressAdd = &addressWork; | ||
451 | insert = false; | ||
452 | phoneS = QString::fromUcs2( aItem->GetBusinessAddressCountry().GetBuffer()); | ||
453 | phoneS.replace( QRegExp("\\r"), ""); | ||
454 | if ( ! phoneS.isEmpty()) { | ||
455 | addressAdd->setCountry(phoneS ); | ||
456 | insert = true; | ||
457 | } | ||
458 | phoneS = QString::fromUcs2( aItem->GetBusinessAddressState().GetBuffer()); | ||
459 | phoneS.replace( QRegExp("\\r"), ""); | ||
460 | if ( ! phoneS.isEmpty()) { | ||
461 | addressAdd->setRegion(phoneS ); | ||
462 | insert = true; | ||
463 | } | ||
464 | phoneS = QString::fromUcs2( aItem->GetBusinessAddressCity().GetBuffer()); | ||
465 | phoneS.replace( QRegExp("\\r"), ""); | ||
466 | if ( ! phoneS.isEmpty()) { | ||
467 | addressAdd->setLocality(phoneS ); | ||
468 | insert = true; | ||
469 | } | ||
470 | phoneS = QString::fromUcs2( aItem->GetBusinessAddressPostalCode().GetBuffer()); | ||
471 | phoneS.replace( QRegExp("\\r"), ""); | ||
472 | if ( ! phoneS.isEmpty()) { | ||
473 | addressAdd->setPostalCode(phoneS ); | ||
474 | insert = true; | ||
475 | } | ||
476 | phoneS = QString::fromUcs2( aItem->GetBusinessAddressPostOfficeBox().GetBuffer()); | ||
477 | phoneS.replace( QRegExp("\\r"), ""); | ||
478 | if ( ! phoneS.isEmpty()) { | ||
479 | addressAdd->setPostOfficeBox(phoneS ); | ||
480 | insert = true; | ||
481 | } | ||
482 | phoneS = QString::fromUcs2( aItem->GetBusinessAddressStreet().GetBuffer()); | ||
483 | phoneS.replace( QRegExp("\\r"), ""); | ||
484 | if ( ! phoneS.isEmpty()) { | ||
485 | addressAdd->setStreet(phoneS ); | ||
486 | insert = true; | ||
487 | } | ||
488 | phoneS = QString::fromUcs2( aItem->GetBusinessAddress().GetBuffer()); | ||
489 | phoneS.replace( QRegExp("\\r"), ""); | ||
490 | if ( ! phoneS.isEmpty()) { | ||
491 | // redundant !addressAdd->setExtended(phoneS ); | ||
492 | // insert = true; | ||
493 | } | ||
494 | addressAdd->setType( KABC::Address::Work ); | ||
495 | if ( insert ) | ||
496 | addressee.insertAddress( *addressAdd ); | ||
497 | // ++++++++++++++++++++++ end of address | ||
498 | |||
499 | KABC::Address addressOther; | ||
500 | addressAdd = &addressOther; | ||
501 | insert = false; | ||
502 | phoneS = QString::fromUcs2( aItem->GetOtherAddressCountry().GetBuffer()); | ||
503 | phoneS.replace( QRegExp("\\r"), ""); | ||
504 | if ( ! phoneS.isEmpty()) { | ||
505 | addressAdd->setCountry(phoneS ); | ||
506 | insert = true; | ||
507 | } | ||
508 | phoneS = QString::fromUcs2( aItem->GetOtherAddressState().GetBuffer()); | ||
509 | phoneS.replace( QRegExp("\\r"), ""); | ||
510 | if ( ! phoneS.isEmpty()) { | ||
511 | addressAdd->setRegion(phoneS ); | ||
512 | insert = true; | ||
513 | } | ||
514 | phoneS = QString::fromUcs2( aItem->GetOtherAddressCity().GetBuffer()); | ||
515 | phoneS.replace( QRegExp("\\r"), ""); | ||
516 | if ( ! phoneS.isEmpty()) { | ||
517 | addressAdd->setLocality(phoneS ); | ||
518 | insert = true; | ||
519 | } | ||
520 | phoneS = QString::fromUcs2( aItem->GetOtherAddressPostalCode().GetBuffer()); | ||
521 | phoneS.replace( QRegExp("\\r"), ""); | ||
522 | if ( ! phoneS.isEmpty()) { | ||
523 | addressAdd->setPostalCode(phoneS ); | ||
524 | insert = true; | ||
525 | } | ||
526 | phoneS = QString::fromUcs2( aItem->GetOtherAddressPostOfficeBox().GetBuffer()); | ||
527 | phoneS.replace( QRegExp("\\r"), ""); | ||
528 | if ( ! phoneS.isEmpty()) { | ||
529 | addressAdd->setPostOfficeBox(phoneS ); | ||
530 | insert = true; | ||
531 | } | ||
532 | phoneS = QString::fromUcs2( aItem->GetOtherAddressStreet().GetBuffer()); | ||
533 | phoneS.replace( QRegExp("\\r"), ""); | ||
534 | if ( ! phoneS.isEmpty()) { | ||
535 | addressAdd->setStreet(phoneS ); | ||
536 | insert = true; | ||
537 | } | ||
538 | phoneS = QString::fromUcs2( aItem->GetOtherAddress().GetBuffer()); | ||
539 | if ( ! phoneS.isEmpty()) { | ||
540 | // redundant !addressAdd->setExtended(phoneS ); | ||
541 | //insert = true; | ||
542 | } | ||
543 | //addressAdd->setId( ); | ||
544 | if ( insert ) | ||
545 | addressee.insertAddress( *addressAdd ); | ||
546 | // ++++++++++++++++++++++ end of address | ||
547 | KABC::Address addressMail; | ||
548 | addressAdd = &addressMail; | ||
549 | insert = false; | ||
550 | phoneS = QString::fromUcs2( aItem->GetMailingAddressCountry().GetBuffer()); | ||
551 | phoneS.replace( QRegExp("\\r"), ""); | ||
552 | if ( ! phoneS.isEmpty()) { | ||
553 | addressAdd->setCountry(phoneS ); | ||
554 | insert = true; | ||
555 | } | ||
556 | phoneS = QString::fromUcs2( aItem->GetMailingAddressState().GetBuffer()); | ||
557 | phoneS.replace( QRegExp("\\r"), ""); | ||
558 | if ( ! phoneS.isEmpty()) { | ||
559 | addressAdd->setRegion(phoneS ); | ||
560 | insert = true; | ||
561 | } | ||
562 | phoneS = QString::fromUcs2( aItem->GetMailingAddressCity().GetBuffer()); | ||
563 | phoneS.replace( QRegExp("\\r"), ""); | ||
564 | if ( ! phoneS.isEmpty()) { | ||
565 | addressAdd->setLocality(phoneS ); | ||
566 | insert = true; | ||
567 | } | ||
568 | phoneS = QString::fromUcs2( aItem->GetMailingAddressPostalCode().GetBuffer()); | ||
569 | phoneS.replace( QRegExp("\\r"), ""); | ||
570 | if ( ! phoneS.isEmpty()) { | ||
571 | addressAdd->setPostalCode(phoneS ); | ||
572 | insert = true; | ||
573 | } | ||
574 | phoneS = QString::fromUcs2( aItem->GetMailingAddressPostOfficeBox().GetBuffer()); | ||
575 | phoneS.replace( QRegExp("\\r"), ""); | ||
576 | if ( ! phoneS.isEmpty()) { | ||
577 | addressAdd->setPostOfficeBox(phoneS ); | ||
578 | insert = true; | ||
579 | } | ||
580 | phoneS = QString::fromUcs2( aItem->GetMailingAddressStreet().GetBuffer()); | ||
581 | phoneS.replace( QRegExp("\\r"), ""); | ||
582 | if ( ! phoneS.isEmpty()) { | ||
583 | addressAdd->setStreet(phoneS ); | ||
584 | insert = true; | ||
585 | } | ||
586 | phoneS = QString::fromUcs2( aItem->GetMailingAddress().GetBuffer()); | ||
587 | phoneS.replace( QRegExp("\\r"), ""); | ||
588 | if ( ! phoneS.isEmpty()) { | ||
589 | // redundant ! addressAdd->setExtended(phoneS ); | ||
590 | // insert = true; | ||
591 | } | ||
592 | addressAdd->setType( KABC::Address::Postal ); | ||
593 | if ( insert ) { | ||
594 | addressee.insertAddress( *addressAdd ); | ||
595 | } | ||
596 | // the following code is disabled | ||
597 | // it does not seem to be useful | ||
598 | #if 0 | ||
599 | if ( insert ) { | ||
600 | addressAdd->setType( KABC::Address::Home ); | ||
601 | if ( addressMail == addressHome ) { | ||
602 | addressHome.setType( KABC::Address::Postal+ KABC::Address::Home ); | ||
603 | addressee.insertAddress( addressHome ); | ||
604 | } else { | ||
605 | addressAdd->setType( KABC::Address::Work ); | ||
606 | if ( addressMail == addressWork ){ | ||
607 | addressWork.setType( KABC::Address::Postal+ KABC::Address::Work ); | ||
608 | addressee.insertAddress( addressWork ); | ||
609 | |||
610 | } else { | ||
611 | addressAdd->setType( 0 ); | ||
612 | if ( addressOther == addressMail ){ | ||
613 | addressOther.setType( KABC::Address::Postal ); | ||
614 | addressee.insertAddress( addressOther ); | ||
615 | } else { | ||
616 | addressee.insertAddress( *addressAdd ); | ||
617 | } | ||
618 | } | ||
619 | } | ||
620 | } | ||
621 | #endif | ||
622 | // ++++++++++++++++++++++ end of ALL addresses | ||
623 | //GetUserProperties(); | ||
624 | tempS = QString::fromUcs2(aItem->GetInternetFreeBusyAddress().GetBuffer()); | ||
625 | phoneS.replace( QRegExp("\\r"), ""); | ||
626 | if ( !tempS.isEmpty() ) | ||
627 | addressee.insertCustom( "KADDRESSBOOK", "X-FreeBusyUrl", tempS ); | ||
628 | tempS = QString::fromUcs2(aItem->GetChildren().GetBuffer()); | ||
629 | if ( !tempS.isEmpty() ) | ||
630 | addressee.insertCustom( "KADDRESSBOOK", "X-Children", tempS ); | ||
631 | int gen = aItem->GetGender(); | ||
632 | if ( gen != 0 ) { // 0 undef - 1 female - 2 male | ||
633 | if ( gen == 1 ) | ||
634 | addressee.insertCustom( "KADDRESSBOOK", "X-Gender", "female" ); | ||
635 | else | ||
636 | addressee.insertCustom( "KADDRESSBOOK", "X-Gender", "male" ); | ||
637 | } | ||
638 | QString additionalInfo; | ||
639 | QString tempAdd; | ||
640 | tempAdd = QString::fromUcs2(aItem->GetLanguage().GetBuffer()); | ||
641 | if ( ! tempAdd.isEmpty() ) { | ||
642 | additionalInfo += i18n("\nLanguage: "); | ||
643 | additionalInfo += tempAdd; | ||
644 | } | ||
645 | tempAdd = QString::fromUcs2(aItem->GetHobby().GetBuffer()); | ||
646 | phoneS.replace( QRegExp("\\r"), ""); | ||
647 | if ( ! tempAdd.isEmpty() ) { | ||
648 | additionalInfo += i18n("\nHobby: "); | ||
649 | additionalInfo += tempAdd;; | ||
650 | } | ||
651 | tempAdd =QString::fromUcs2(aItem->GetPersonalHomePage().GetBuffer()); | ||
652 | phoneS.replace( QRegExp("\\r"), ""); | ||
653 | if ( ! tempAdd.isEmpty() ) { | ||
654 | additionalInfo += i18n("\nHomepage: "); | ||
655 | additionalInfo += tempAdd;; | ||
656 | } | ||
657 | tempAdd = QString::fromUcs2(aItem->GetBillingInformation().GetBuffer()); | ||
658 | phoneS.replace( QRegExp("\\r"), ""); | ||
659 | if ( ! tempAdd.isEmpty() ) { | ||
660 | additionalInfo += i18n("\nBilling information: "); | ||
661 | additionalInfo += tempAdd;; | ||
662 | } | ||
663 | tempAdd = QString::fromUcs2(aItem->GetCustomerID().GetBuffer()); | ||
664 | phoneS.replace( QRegExp("\\r"), ""); | ||
665 | if ( ! tempAdd.isEmpty() ) { | ||
666 | additionalInfo += i18n("\nCustomer ID: "); | ||
667 | additionalInfo += tempAdd;; | ||
668 | } | ||
669 | tempAdd = QString::fromUcs2(aItem->GetUser1().GetBuffer()); | ||
670 | phoneS.replace( QRegExp("\\r"), ""); | ||
671 | if ( ! tempAdd.isEmpty() ) { | ||
672 | additionalInfo += i18n("\nUser1: "); | ||
673 | additionalInfo += tempAdd;; | ||
674 | } | ||
675 | tempAdd = QString::fromUcs2(aItem->GetUser2().GetBuffer()); | ||
676 | phoneS.replace( QRegExp("\\r"), ""); | ||
677 | if ( ! tempAdd.isEmpty() ) { | ||
678 | additionalInfo += i18n("\nUser2: "); | ||
679 | additionalInfo += tempAdd;; | ||
680 | } | ||
681 | tempAdd = QString::fromUcs2(aItem->GetUser3().GetBuffer()); | ||
682 | phoneS.replace( QRegExp("\\r"), ""); | ||
683 | if ( ! tempAdd.isEmpty() ) { | ||
684 | additionalInfo += i18n("\nUser3: "); | ||
685 | additionalInfo += tempAdd;; | ||
686 | } | ||
687 | tempAdd = QString::fromUcs2(aItem->GetUser4().GetBuffer()); | ||
688 | phoneS.replace( QRegExp("\\r"), ""); | ||
689 | if ( ! tempAdd.isEmpty() ) { | ||
690 | additionalInfo += i18n("\nUser4: "); | ||
691 | additionalInfo += tempAdd;; | ||
692 | } | ||
693 | if (!additionalInfo.isEmpty() ) { | ||
694 | tempAdd = notesStr; | ||
695 | notesStr = "+++++++++++++++++++++++++++\n"; | ||
696 | notesStr += i18n("Additonal fields created\nby KA/Pi Outlook import:"); | ||
697 | notesStr += additionalInfo; | ||
698 | notesStr += i18n("\nEnd additonal fields created\nby KA/Pi Outlook import!\n"); | ||
699 | notesStr += "+++++++++++++++++++++++++++\n"; | ||
700 | notesStr += tempAdd; | ||
701 | } | ||
702 | addressee.setNote( notesStr ); | ||
703 | #if 0 | ||
704 | // pending | ||
705 | - IM address: no clue where to get info about the helper ID | ||
706 | -custom fields: difficult to implement - not implemented | ||
707 | -keys: makes no sense | ||
708 | #endif | ||
709 | |||
710 | if ( addAddressee( addressee )) | ||
711 | ++importedItems; | ||
712 | } | ||
713 | void KAImportOLdialog::slotCancel() | ||
714 | { | ||
715 | reject(); | ||
716 | } | ||
717 | |||
718 | bool KAImportOLdialog::addAddressee( KABC::Addressee a ) | ||
719 | { | ||
720 | bool add = true; | ||
721 | KABC::Addressee::List::Iterator it; | ||
722 | for ( it = mAList.begin(); it != mAList.end(); ++it ) { | ||
723 | if ( (*it).uid() == a.uid() ) { | ||
724 | add = false; | ||
725 | break; | ||
726 | } | ||
727 | } | ||
728 | if ( add ) { | ||
729 | if ( mABook->findByUid(a.uid() ).isEmpty()) | ||
730 | mAList.append ( a ); | ||
731 | else | ||
732 | add = false; | ||
733 | } | ||
734 | return add; | ||
735 | } | ||
diff --git a/kaddressbook/kaimportoldialog.h b/kaddressbook/kaimportoldialog.h index 41ea5f8..278935b 100644 --- a/kaddressbook/kaimportoldialog.h +++ b/kaddressbook/kaimportoldialog.h | |||
@@ -1,85 +1,22 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of KOrganizer. | 2 | This file is part of KOrganizer. |
3 | Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> | 3 | Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> |
4 | 4 | ||
5 | This program is free software; you can redistribute it and/or modify | 5 | This program is free software; you can redistribute it and/or modify |
6 | it under the terms of the GNU General Public License as published by | 6 | it under the terms of the GNU General Public License as published by |
7 | the Free Software Foundation; either version 2 of the License, or | 7 | the Free Software Foundation; either version 2 of the License, or |
8 | (at your option) any later version. | 8 | (at your option) any later version. |
9 | 9 | ||
10 | This program is distributed in the hope that it will be useful, | 10 | This program is distributed in the hope that it will be useful, |
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
13 | GNU General Public License for more details. | 13 | GNU General Public License for more details. |
14 | 14 | ||
15 | You should have received a copy of the GNU General Public License | 15 | You should have received a copy of the GNU General Public License |
16 | along with this program; if not, write to the Free Software | 16 | along with this program; if not, write to the Free Software |
17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
18 | 18 | ||
19 | As a special exception, permission is given to link this program | 19 | As a special exception, permission is given to link this program |
20 | with any edition of Qt, and distribute the resulting executable, | 20 | with any edition of Qt, and distribute the resulting executable, |
21 | without including the source code for Qt in the source distribution. | 21 | without including the source code for Qt in the source distribution. |
22 | */ | 22 | */ |
23 | #ifndef KOINCIDENCEEDITOR_H | ||
24 | #define KOINCIDENCEEDITOR_H | ||
25 | |||
26 | #include <kdialogbase.h> | ||
27 | |||
28 | #include <afxdisp.h> | ||
29 | |||
30 | #include <kabc/addressee.h> | ||
31 | #include <kabc/addressbook.h> | ||
32 | |||
33 | class QDateTime; | ||
34 | class QListView; | ||
35 | class OLEListViewItem; | ||
36 | class _ContactItem; | ||
37 | |||
38 | |||
39 | //using namespace KABC; | ||
40 | //class KABC::AddressBook; | ||
41 | |||
42 | /** | ||
43 | This is the base class for the calendar component editors. | ||
44 | */ | ||
45 | class KAImportOLdialog : public KDialogBase | ||
46 | { | ||
47 | Q_OBJECT | ||
48 | public: | ||
49 | /** | ||
50 | Construct new IncidenceEditor. | ||
51 | */ | ||
52 | KAImportOLdialog( const QString &caption, KABC::AddressBook * aBook, | ||
53 | QWidget *parent ); | ||
54 | ~KAImportOLdialog(); | ||
55 | |||
56 | /** Initialize editor. This function creates the tab widgets. */ | ||
57 | void init(); | ||
58 | KABC::Addressee::List getAddressList(); | ||
59 | public slots: | ||
60 | |||
61 | |||
62 | signals: | ||
63 | |||
64 | protected slots: | ||
65 | void slotApply(); | ||
66 | void slotOk(); | ||
67 | void slotCancel(); | ||
68 | |||
69 | protected: | ||
70 | void setupFolderView(); | ||
71 | void addFolder(OLEListViewItem* iParent, LPDISPATCH dispParent); | ||
72 | void readContactData( DWORD folder ); | ||
73 | void ol2kapiContact( _ContactItem * ); | ||
74 | |||
75 | KABC::AddressBook * mABook; | ||
76 | QListView * mListView; | ||
77 | KABC::Addressee::List mAList; | ||
78 | bool addAddressee( KABC::Addressee a ); | ||
79 | private: | ||
80 | int importedItems; | ||
81 | }; | ||
82 | |||
83 | #endif | ||
84 | |||
85 | |||
diff --git a/kaddressbook/phoneeditwidget.cpp b/kaddressbook/phoneeditwidget.cpp index 5639aa2..df3b551 100644 --- a/kaddressbook/phoneeditwidget.cpp +++ b/kaddressbook/phoneeditwidget.cpp | |||
@@ -1,183 +1,186 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of KAddressBook. | 2 | This file is part of KAddressBook. |
3 | Copyright (c) 2002 Mike Pilone <mpilone@slac.com> | 3 | Copyright (c) 2002 Mike Pilone <mpilone@slac.com> |
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 | #include <qlayout.h> | 24 | #include <qlayout.h> |
25 | #include <qlabel.h> | 25 | #include <qlabel.h> |
26 | #include <qtooltip.h> | 26 | #include <qtooltip.h> |
27 | #include <qpushbutton.h> | 27 | #include <qpushbutton.h> |
28 | #include <qcheckbox.h> | 28 | #include <qcheckbox.h> |
29 | #include <qstring.h> | 29 | #include <qstring.h> |
30 | #include <qlistbox.h> | 30 | #include <qlistbox.h> |
31 | #include <qlistview.h> | 31 | #include <qlistview.h> |
32 | #include <qbuttongroup.h> | 32 | #include <qbuttongroup.h> |
33 | #include <qhbox.h> | 33 | #include <qhbox.h> |
34 | #include <qcursor.h> | 34 | #include <qcursor.h> |
35 | #include <qtimer.h> | 35 | #include <qtimer.h> |
36 | #include <qapplication.h> | 36 | #include <qapplication.h> |
37 | 37 | ||
38 | #include <kbuttonbox.h> | 38 | #include <kbuttonbox.h> |
39 | #include <klistview.h> | 39 | #include <klistview.h> |
40 | #include <kapplication.h> | 40 | #include <kapplication.h> |
41 | #include <qapplication.h> | 41 | #include <qapplication.h> |
42 | #include <kconfig.h> | 42 | #include <kconfig.h> |
43 | #include <kmessagebox.h> | ||
43 | #include <klineedit.h> | 44 | #include <klineedit.h> |
44 | #include <kcombobox.h> | 45 | #include <kcombobox.h> |
45 | #include <klocale.h> | 46 | #include <klocale.h> |
46 | #include <kdebug.h> | 47 | #include <kdebug.h> |
47 | #include <kglobal.h> | 48 | #include <kglobal.h> |
48 | #include <kiconloader.h> | 49 | #include <kiconloader.h> |
49 | 50 | ||
50 | #include <kabc/phonenumber.h> | 51 | #include <kabc/phonenumber.h> |
51 | 52 | ||
52 | #include "typecombo.h" | 53 | #include "typecombo.h" |
53 | 54 | ||
54 | #include "phoneeditwidget.h" | 55 | #include "phoneeditwidget.h" |
55 | 56 | ||
56 | PhoneEditWidget::PhoneEditWidget( QWidget *parent, const char *name ) | 57 | PhoneEditWidget::PhoneEditWidget( QWidget *parent, const char *name ) |
57 | : QWidget(parent,name) | 58 | : QWidget(parent,name) |
58 | { | 59 | { |
59 | QGridLayout* gridLayout = new QGridLayout ( this, 2,2 ); | 60 | QGridLayout* gridLayout = new QGridLayout ( this, 2,2 ); |
60 | 61 | ||
61 | QLabel *temp = new QLabel( "", this ); | 62 | QLabel *temp = new QLabel( "", this ); |
62 | temp->setAlignment( Qt::AlignCenter ); | 63 | temp->setAlignment( Qt::AlignCenter ); |
63 | temp->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop, 0 ) ); | 64 | temp->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop, 0 ) ); |
64 | QPushButton *addBut = new QPushButton ( "add", this ); | 65 | QPushButton *addBut = new QPushButton ( "add", this ); |
65 | addBut->setPixmap ( SmallIcon("plus")); | 66 | addBut->setPixmap ( SmallIcon("plus")); |
66 | addBut->setMaximumSize( addBut->sizeHint().height(),addBut->sizeHint().height() ); | 67 | addBut->setMaximumSize( addBut->sizeHint().height(),addBut->sizeHint().height() ); |
67 | connect(addBut,SIGNAL(clicked ()),SLOT(addNumber())); | 68 | connect(addBut,SIGNAL(clicked ()),SLOT(addNumber())); |
68 | 69 | ||
69 | sv = new QScrollView( this ); | 70 | sv = new QScrollView( this ); |
70 | sv->setFrameStyle ( QFrame::Plain ); | 71 | sv->setFrameStyle ( QFrame::Plain ); |
71 | sv->setLineWidth ( 0 ); | 72 | sv->setLineWidth ( 0 ); |
72 | sv->setMidLineWidth ( 0 ); | 73 | sv->setMidLineWidth ( 0 ); |
73 | mw = new QWidget ( sv->viewport() ); | 74 | mw = new QWidget ( sv->viewport() ); |
74 | sv->addChild(mw); | 75 | sv->addChild(mw); |
75 | sv->setResizePolicy( QScrollView::AutoOneFit ); | 76 | sv->setResizePolicy( QScrollView::AutoOneFit ); |
76 | mainLayout = new QVBoxLayout ( mw ); | 77 | mainLayout = new QVBoxLayout ( mw ); |
77 | mainLayout->setMargin( 0 ); | 78 | mainLayout->setMargin( 0 ); |
78 | mainLayout->setSpacing( 0 ); | 79 | mainLayout->setSpacing( 0 ); |
79 | gridLayout->setMargin( 2 ); | 80 | gridLayout->setMargin( 2 ); |
80 | gridLayout->setSpacing( 4 ); | 81 | gridLayout->setSpacing( 4 ); |
81 | if ( QApplication::desktop()->width() == 240 || QApplication::desktop()->width() == 480 ) { | 82 | if ( QApplication::desktop()->width() == 240 || QApplication::desktop()->width() == 480 ) { |
82 | gridLayout->addWidget( addBut, 0, 0 ); | 83 | gridLayout->addWidget( addBut, 0, 0 ); |
83 | gridLayout->addWidget( temp, 0, 1 ); | 84 | gridLayout->addWidget( temp, 0, 1 ); |
84 | gridLayout->addMultiCellWidget( sv, 1,1 , 0,1 ); | 85 | gridLayout->addMultiCellWidget( sv, 1,1 , 0,1 ); |
85 | } else { | 86 | } else { |
86 | gridLayout->addWidget( temp, 1, 0 ); | 87 | gridLayout->addWidget( temp, 1, 0 ); |
87 | gridLayout->addWidget( addBut, 0, 0 ); | 88 | gridLayout->addWidget( addBut, 0, 0 ); |
88 | gridLayout->addMultiCellWidget( sv, 0, 1, 1,1 ); | 89 | gridLayout->addMultiCellWidget( sv, 0, 1, 1,1 ); |
89 | } | 90 | } |
90 | setDefaults(); | 91 | setDefaults(); |
91 | mTypeNumberEditList.setAutoDelete( true ); | 92 | mTypeNumberEditList.setAutoDelete( true ); |
92 | mPopup = new QPopupMenu( this ); | 93 | mPopup = new QPopupMenu( this ); |
93 | QStringList list = PhoneNumber::supportedTypeListNames(); | 94 | QStringList list = PhoneNumber::supportedTypeListNames(); |
94 | mPopupCount = list.count(); | 95 | mPopupCount = list.count(); |
95 | int i = 0; | 96 | int i = 0; |
96 | while ( i < mPopupCount ) { | 97 | while ( i < mPopupCount ) { |
97 | mPopup->insertItem( list[ i ], i ); | 98 | mPopup->insertItem( list[ i ], i ); |
98 | ++i; | 99 | ++i; |
99 | } | 100 | } |
100 | connect(mPopup,SIGNAL(activated(int)),this,SLOT(addNumberInt( int))); | 101 | connect(mPopup,SIGNAL(activated(int)),this,SLOT(addNumberInt( int))); |
101 | 102 | ||
102 | } | 103 | } |
103 | 104 | ||
104 | PhoneEditWidget::~PhoneEditWidget() | 105 | PhoneEditWidget::~PhoneEditWidget() |
105 | { | 106 | { |
106 | } | 107 | } |
107 | void PhoneEditWidget::setDefaults() | 108 | void PhoneEditWidget::setDefaults() |
108 | { | 109 | { |
109 | mTypeNumberEditList.clear(); | 110 | mTypeNumberEditList.clear(); |
110 | PhoneTypeNumberEdit* edit = appendEditCombo(); | 111 | PhoneTypeNumberEdit* edit = appendEditCombo(); |
111 | KABC::PhoneNumber phoneNumber; | 112 | KABC::PhoneNumber phoneNumber; |
112 | phoneNumber.setType( KABC::PhoneNumber::Home | KABC::PhoneNumber::Pref ); | 113 | phoneNumber.setType( KABC::PhoneNumber::Home | KABC::PhoneNumber::Pref ); |
113 | edit->setPhoneNumber( phoneNumber ); | 114 | edit->setPhoneNumber( phoneNumber ); |
114 | edit = appendEditCombo(); | 115 | edit = appendEditCombo(); |
115 | phoneNumber.setType( KABC::PhoneNumber::Work | KABC::PhoneNumber::Pref ); | 116 | KABC::PhoneNumber phoneNumber2; |
116 | edit->setPhoneNumber( phoneNumber ); | 117 | phoneNumber2.setType( KABC::PhoneNumber::Work | KABC::PhoneNumber::Pref ); |
118 | edit->setPhoneNumber( phoneNumber2 ); | ||
117 | edit = appendEditCombo(); | 119 | edit = appendEditCombo(); |
118 | phoneNumber.setType( KABC::PhoneNumber::Cell ); | 120 | KABC::PhoneNumber phoneNumber3; |
119 | edit->setPhoneNumber( phoneNumber ); | 121 | phoneNumber3.setType( KABC::PhoneNumber::Cell ); |
122 | edit->setPhoneNumber( phoneNumber3 ); | ||
120 | 123 | ||
121 | } | 124 | } |
122 | void PhoneEditWidget::addNumberInt( int index ) | 125 | void PhoneEditWidget::addNumberInt( int index ) |
123 | { | 126 | { |
124 | PhoneTypeNumberEdit* edit = appendEditCombo(); | 127 | PhoneTypeNumberEdit* edit = appendEditCombo(); |
125 | KABC::PhoneNumber phoneNumber; | 128 | KABC::PhoneNumber phoneNumber; |
126 | phoneNumber.setType( PhoneNumber::supportedTypeList()[index] ); | 129 | phoneNumber.setType( PhoneNumber::supportedTypeList()[index] ); |
127 | edit->setPhoneNumber( phoneNumber ); | 130 | edit->setPhoneNumber( phoneNumber ); |
128 | //verticalScrollBar()->setValue( 1024); | 131 | //verticalScrollBar()->setValue( 1024); |
129 | QTimer::singleShot( 0, this, SLOT ( bottomVisible() ) ); | 132 | QTimer::singleShot( 0, this, SLOT ( bottomVisible() ) ); |
130 | } | 133 | } |
131 | void PhoneEditWidget::bottomVisible() | 134 | void PhoneEditWidget::bottomVisible() |
132 | { | 135 | { |
133 | sv->setContentsPos ( 0, 1024 ); | 136 | sv->setContentsPos ( 0, 1024 ); |
134 | } | 137 | } |
135 | void PhoneEditWidget::addNumber() | 138 | void PhoneEditWidget::addNumber() |
136 | { | 139 | { |
137 | int i = 0; | 140 | int i = 0; |
138 | while ( i < mPopupCount ) { | 141 | while ( i < mPopupCount ) { |
139 | mPopup->setItemEnabled( i, true ); | 142 | mPopup->setItemEnabled( i, true ); |
140 | ++i; | 143 | ++i; |
141 | } | 144 | } |
142 | PhoneTypeNumberEdit* edit = mTypeNumberEditList.first(); | 145 | PhoneTypeNumberEdit* edit = mTypeNumberEditList.first(); |
143 | while ( edit ) { | 146 | while ( edit ) { |
144 | if ( edit->currentType() < mPopupCount -1 ) | 147 | if ( edit->currentType() < mPopupCount -1 ) |
145 | mPopup->setItemEnabled( edit->currentType(), false ); | 148 | mPopup->setItemEnabled( edit->currentType(), false ); |
146 | edit = mTypeNumberEditList.next(); | 149 | edit = mTypeNumberEditList.next(); |
147 | } | 150 | } |
148 | mPopup->popup( QCursor::pos() ); | 151 | mPopup->popup( QCursor::pos() ); |
149 | } | 152 | } |
150 | PhoneTypeNumberEdit* PhoneEditWidget::appendEditCombo() | 153 | PhoneTypeNumberEdit* PhoneEditWidget::appendEditCombo() |
151 | { | 154 | { |
152 | PhoneTypeNumberEdit* edit = new PhoneTypeNumberEdit( mw ); | 155 | PhoneTypeNumberEdit* edit = new PhoneTypeNumberEdit( mw ); |
153 | connect ( edit, SIGNAL ( typeChange( int , int) ), this, SIGNAL ( typeChange( int , int)) ); | 156 | connect ( edit, SIGNAL ( typeChange( int , int) ), this, SIGNAL ( typeChange( int , int)) ); |
154 | connect ( edit, SIGNAL ( modified() ), this, SIGNAL ( modified() ) ); | 157 | connect ( edit, SIGNAL ( modified() ), this, SIGNAL ( modified() ) ); |
155 | connect ( edit, SIGNAL ( deleteMe( PhoneTypeNumberEdit* ) ), this, SLOT ( deleteEdit( PhoneTypeNumberEdit*) ) ); | 158 | connect ( edit, SIGNAL ( deleteMe( PhoneTypeNumberEdit* ) ), this, SLOT ( deleteEdit( PhoneTypeNumberEdit*) ) ); |
156 | connect ( this, SIGNAL ( typeChange( int , int)), edit, SLOT ( typeExternalChanged( int, int)) ); | 159 | connect ( this, SIGNAL ( typeChange( int , int)), edit, SLOT ( typeExternalChanged( int, int)) ); |
157 | 160 | ||
158 | mainLayout->add( edit ); | 161 | mainLayout->add( edit ); |
159 | mTypeNumberEditList.append( edit ); | 162 | mTypeNumberEditList.append( edit ); |
160 | return edit; | 163 | return edit; |
161 | } | 164 | } |
162 | 165 | ||
163 | void PhoneEditWidget::deleteEdit( PhoneTypeNumberEdit* ew ) | 166 | void PhoneEditWidget::deleteEdit( PhoneTypeNumberEdit* ew ) |
164 | { | 167 | { |
165 | mPendingDelete = ew; | 168 | mPendingDelete = ew; |
166 | QTimer::singleShot( 0, this, SLOT ( pendingDelete() ) ); | 169 | QTimer::singleShot( 0, this, SLOT ( pendingDelete() ) ); |
167 | } | 170 | } |
168 | void PhoneEditWidget::pendingDelete() | 171 | void PhoneEditWidget::pendingDelete() |
169 | { | 172 | { |
170 | mTypeNumberEditList.removeRef( mPendingDelete ); | 173 | mTypeNumberEditList.removeRef( mPendingDelete ); |
171 | emit modified(); | 174 | emit modified(); |
172 | } | 175 | } |
173 | 176 | ||
174 | void PhoneEditWidget::setPhoneNumbers( const KABC::PhoneNumber::List &li ) | 177 | void PhoneEditWidget::setPhoneNumbers( const KABC::PhoneNumber::List &li ) |
175 | { | 178 | { |
176 | if ( li.isEmpty() ) { | 179 | if ( li.isEmpty() ) { |
177 | setDefaults(); | 180 | setDefaults(); |
178 | return; | 181 | return; |
179 | } | 182 | } |
180 | mTypeNumberEditList.clear(); | 183 | mTypeNumberEditList.clear(); |
181 | KABC::PhoneNumber::List::Iterator it; | 184 | KABC::PhoneNumber::List::Iterator it; |
182 | KABC::PhoneNumber::List list2 = li; | 185 | KABC::PhoneNumber::List list2 = li; |
183 | KABC::PhoneNumber::List list ; | 186 | KABC::PhoneNumber::List list ; |