author | zautrix <zautrix> | 2006-02-24 18:49:56 (UTC) |
---|---|---|
committer | zautrix <zautrix> | 2006-02-24 18:49:56 (UTC) |
commit | d7738fdfc685192eb2f8317db6ffad3c246001c8 (patch) (side-by-side diff) | |
tree | d9aae6ca97851fd1b53c4d9e74740a5ee2b69ea9 | |
parent | 987757f168bbae56100f2aff763b865e81ceec18 (diff) | |
download | kdepimpi-d7738fdfc685192eb2f8317db6ffad3c246001c8.zip kdepimpi-d7738fdfc685192eb2f8317db6ffad3c246001c8.tar.gz kdepimpi-d7738fdfc685192eb2f8317db6ffad3c246001c8.tar.bz2 |
kapi sync
-rw-r--r-- | kabc/addressbook.cpp | 22 | ||||
-rw-r--r-- | kabc/addressbook.h | 1 | ||||
-rw-r--r-- | kabc/addressee.cpp | 75 | ||||
-rw-r--r-- | kabc/addressee.h | 4 | ||||
-rw-r--r-- | kabc/phonenumber.cpp | 24 | ||||
-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 | ||||
-rw-r--r-- | korganizer/journalentry.h | 1 | ||||
-rw-r--r-- | korganizer/kojournalview.cpp | 9 | ||||
-rw-r--r-- | libkdepim/externalapphandler.cpp | 2 | ||||
-rw-r--r-- | libkdepim/ksyncmanager.cpp | 71 | ||||
-rw-r--r-- | libkdepim/ksyncmanager.h | 3 | ||||
-rw-r--r-- | libkdepim/libkdepim.pro | 15 |
16 files changed, 337 insertions, 811 deletions
diff --git a/kabc/addressbook.cpp b/kabc/addressbook.cpp index f9e4387..fe59fcb 100644 --- a/kabc/addressbook.cpp +++ b/kabc/addressbook.cpp @@ -946,6 +946,23 @@ void AddressBook::preExternSync( AddressBook* aBook, const QString& csd , bool i } mergeAB( aBook ,csd, isSubset ); } +void AddressBook::preOLSync( AddressBook* aBook, const QString& csd ) +{ + //qDebug("AddressBook::preExternSync "); + AddressBook::Iterator it; + for ( it = begin(); it != end(); ++it ) { + (*it).setID( csd, (*it).externalUID() ); + (*it).computeCsum( csd ); + } + + Addressee ad; + for ( it = begin(); it != end(); ++it ) { + ad = aBook->findByExternUid( (*it).externalUID(), csd ); + if ( !ad.isEmpty() ) { + (*it).mergeOLContact( ad ); + } + } +} void AddressBook::postExternSync( AddressBook* aBook , const QString& csd, bool setID) { //qDebug("AddressBook::postExternSync "); @@ -964,8 +981,9 @@ void AddressBook::postExternSync( AddressBook* aBook , const QString& csd, bool } else { (*it).setIDStr(":"); if ( setID ) { - if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ) - ad.setID( csd, (*it).externalUID() ); + if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ) + ad.setID( csd, (*it).externalUID() );{ + } } else ad.setID( csd, (*it).uid() ); (*it).computeCsum( csd ); diff --git a/kabc/addressbook.h b/kabc/addressbook.h index e6daa5e..a8a9fc1 100644 --- a/kabc/addressbook.h +++ b/kabc/addressbook.h @@ -308,6 +308,7 @@ class AddressBook : public QObject bool containsExternalUid( const QString& uid ); void preExternSync( AddressBook* aBook, const QString& csd, bool isSubset ); + void preOLSync( AddressBook* aBook, const QString& csd); void postExternSync( AddressBook* aBook, const QString& csd , bool setID ); signals: /** diff --git a/kabc/addressee.cpp b/kabc/addressee.cpp index 6cfac80..e8e440c 100644 --- a/kabc/addressee.cpp +++ b/kabc/addressee.cpp @@ -32,6 +32,7 @@ $Id$ #include <kdebug.h> #include <kapplication.h> #include <klocale.h> +#include <kmessagebox.h> #include <kidmanager.h> //US #include <kstandarddirs.h> @@ -211,7 +212,7 @@ void Addressee::computeCsum(const QString &dev) { QStringList l; //if ( !mData->name.isEmpty() ) l.append(mData->name); - //if ( !mData->formattedName.isEmpty() ) l.append(mData->formattedName ); + if ( !mData->formattedName.isEmpty() ) l.append(mData->formattedName ); if ( !mData->familyName.isEmpty() ) l.append( mData->familyName ); if ( !mData->givenName.isEmpty() ) l.append(mData->givenName ); if ( !mData->additionalName.isEmpty() ) l.append( mData->additionalName ); @@ -332,6 +333,53 @@ bool Addressee::matchPhoneNumber( QRegExp* re ) const return false; } +void Addressee::mergeOLContact( const Addressee& ad ) +{ + if ( mData->formattedName.isEmpty() ) mData->formattedName = ad.mData->formattedName; + if ( mData->mailer.isEmpty() ) mData->mailer = ad.mData->mailer; + if ( !mData->timeZone.isValid() ) mData->timeZone = ad.mData->timeZone; + if ( !mData->geo.isValid() ) mData->geo = ad.mData->geo; + if ( mData->logo.undefined() && !ad.mData->logo.undefined() ) mData->logo = ad.mData->logo; + if ( mData->photo.undefined() && !ad.mData->photo.undefined() ) mData->photo = ad.mData->photo; + if ( !mData->sound.isIntern() ) { + if ( mData->sound.url().isEmpty() ) { + mData->sound = ad.mData->sound; + } + } + if ( !mData->agent.isIntern() ) { + if ( mData->agent.url().isEmpty() ) { + mData->agent = ad.mData->agent; + } + } + { + Key::List::Iterator itA; + for( itA = ad.mData->keys.begin(); itA != ad.mData->keys.end(); ++itA ) { + bool found = false; + Key::List::Iterator it; + for( it = mData->keys.begin(); it != mData->keys.end(); ++it ) { + if ( (*it) == (*itA)) { + found = true; + break; + + } + } + if ( ! found ) { + mData->keys.append( *itA ); + } + } + } + + KABC::Address addthis = otherAddress(); + KABC::Address addother = ad.otherAddress(); + if ( !addthis.isEmpty() && !addother.isEmpty() ) + addthis.setType( addother.type() ); + //qDebug("merge contact %s ", ad.uid().latin1()); + setUid( ad.uid() ); + setRevision( ad.revision() ); + + +} + void Addressee::mergeContact( const Addressee& ad , bool isSubSet) // = false) { // merge all standard non-outlook fields. @@ -1653,7 +1701,6 @@ void Addressee::insertPhoneNumber( const PhoneNumber &phoneNumber ) { detach(); mData->empty = false; - PhoneNumber::List::Iterator it; for( it = mData->phoneNumbers.begin(); it != mData->phoneNumbers.end(); ++it ) { if ( (*it).id() == phoneNumber.id() ) { @@ -1720,6 +1767,17 @@ PhoneNumber::List Addressee::phoneNumbers( int type ) const } return list; } +QString Addressee::phoneNumberString( int type ) const +{ + + PhoneNumber::List::ConstIterator it; + for( it = mData->phoneNumbers.begin(); it != mData->phoneNumbers.end(); ++it ) { + if ((*it).type() == type ) { + return ( *it ).number(); + } + } + return ""; +} PhoneNumber Addressee::findPhoneNumber( const QString &id ) const { @@ -1925,7 +1983,18 @@ void Addressee::removeAddress( const Address &address ) } } } - +Address Addressee::otherAddress() const +{ + Address::List::ConstIterator it; + for( it = mData->addresses.begin(); it != mData->addresses.end(); ++it ) { + if ( matchBinaryPatternA( (*it).type(), KABC::Address::Work ) ) + continue; + if ( matchBinaryPatternA( (*it).type(), KABC::Address::Home ) ) + continue; + return (*it); + } + return Address(); +} Address Addressee::address( int type ) const { Address address( type ); diff --git a/kabc/addressee.h b/kabc/addressee.h index aac78dc..0ea1803 100644 --- a/kabc/addressee.h +++ b/kabc/addressee.h @@ -118,6 +118,7 @@ class Addressee void setOriginalExternalUID( const QString &id ); QString originalExternalUID() const; void mergeContact( const Addressee& ad, bool isSubSet ); + void mergeOLContact( const Addressee& ad ); void simplifyEmails(); void simplifyAddresses(); void simplifyPhoneNumbers(); @@ -647,6 +648,7 @@ class Addressee Return phone number, which matches the given type. */ PhoneNumber phoneNumber( int type ) const; + QString phoneNumberString( int type ) const; bool matchPhoneNumber( QRegExp* searchExp ) const; bool matchAddress( QRegExp* searchExp ) const; @@ -731,7 +733,7 @@ class Addressee Return list of all addresses. */ Address::List addresses() const; - + Address otherAddress() const; /** Return list of addresses with a special type. */ diff --git a/kabc/phonenumber.cpp b/kabc/phonenumber.cpp index 12b9b09..1752745 100644 --- a/kabc/phonenumber.cpp +++ b/kabc/phonenumber.cpp @@ -232,6 +232,30 @@ PhoneNumber::TypeList PhoneNumber::supportedTypeList() list << (Home| Pref) << (Work| Pref) << Cell <<(Pcs|Pref)<< (Pcs|Voice)<< Home << Work << Car << Pcs <<(Work| Msg | Voice) << (Work| Msg) << (Home | Fax) << (Work| Fax) << Fax<< Pager << Isdn << Msg << Pref << Voice; return list; } + +#if 0 +Home| Pref i18n("Home") Home +Work| Pref i18n("Work") Business +Cell i18n("Mobile") Mobile +Pcs|Pref i18n("SiP") Radio +Pcs|Voice i18n("VoIP") TTY/TTD +Home i18n("Home2") Home 2 +Work i18n("Work2") Business 2 +Car i18n("Mobile2") Car +Pcs i18n("SiP2") Telex +Work| Msg | Voice i18n("Assistent") Assistent +Work| Msg i18n("Company") Company +Home | Fax i18n("Fax (Home)") Home Fax +Work| Fax i18n("Fax (Work)") Business Fax +Fax i18n("Fax (Other)") Other Fax +Pager i18n("Pager") Pager +Isdn i18n("ISDN") Isdn +Msg i18n("Callback") Callback +Pref i18n("Primary") Primary +Voice; i18n("Other") Other + +#endif + QStringList PhoneNumber::supportedTypeListNames() { static QStringList list; diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp index 7d8586a..ab2824c 100644 --- a/kaddressbook/kabcore.cpp +++ b/kaddressbook/kabcore.cpp @@ -158,6 +158,7 @@ $Id$ #ifdef _WIN32_ #ifdef _OL_IMPORT_ #include "kaimportoldialog.h" +#include <libkdepim/ol_access.h> #endif #else #include <unistd.h> @@ -1369,32 +1370,80 @@ void KABCore::importVCard( const KURL &url, bool showPreview ) void KABCore::importFromOL() { #ifdef _OL_IMPORT_ - KAImportOLdialog* idgl = new KAImportOLdialog( i18n("Import Contacts from OL"), mAddressBook, this ); - idgl->exec(); - KABC::Addressee::List list = idgl->getAddressList(); - if ( list.count() > 0 ) { - KABC::Addressee::List listNew; - KABC::Addressee::List listExisting; - KABC::Addressee::List::Iterator it; - KABC::AddressBook::Iterator iter; - for ( it = list.begin(); it != list.end(); ++it ) { - if ( mAddressBook->findByUid((*it).uid() ).isEmpty()) - listNew.append( (*it) ); - else - listExisting.append( (*it) ); - } - if ( listExisting.count() > 0 ) - KMessageBox::information( this, i18n("%1 contacts not added to addressbook\nbecause they were already in the addressbook!").arg( listExisting.count() )); - if ( listNew.count() > 0 ) { - pasteWithNewUid = false; - pasteContacts( listNew ); - pasteWithNewUid = true; + KABC::Addressee::List list = OL_access::instance()->importOLcontacts(); + if ( list.count() > 0 ) { + KABC::Addressee::List listNew; + KABC::Addressee::List listExisting; + KABC::Addressee::List::Iterator it; + KABC::AddressBook::Iterator iter; + for ( it = list.begin(); it != list.end(); ++it ) { + if ( mAddressBook->findByUid((*it).uid() ).isEmpty()) + listNew.append( (*it) ); + else + listExisting.append( (*it) ); + } + QString mess = i18n("%1 contacts read from OL.\n\n%2 contacts added to addressbook!").arg( list.count()).arg( listNew.count() ); + if ( listExisting.count() > 0 ) + mess += "\n\n"+ i18n("%1 contacts not added to addressbook\nbecause they were already in the addressbook!").arg( listExisting.count() ); + + KMessageBox::information( this, mess ); + if ( listNew.count() > 0 ) { + pasteWithNewUid = false; + pasteContacts( listNew ); + pasteWithNewUid = true; + } } - } - delete idgl; #endif } +bool KABCore::readOLdata( KABC::AddressBook* local ) +{ +#ifdef _OL_IMPORT_ + QStringList folderList = OL_access::instance()->getFolderSelection( OL_CONTACT_DATA , i18n("Select Folder to sync")); + KABC::Addressee::List list; + if ( folderList.count() ) { + OL_access::instance()->readContactData( OL_access::instance()->getFolderFromID( 0, folderList[1] ) , &list, true ); + KABC::Addressee::List::Iterator it; + for ( it = list.begin(); it != list.end(); ++it ) { + (*it).setExternalUID( (*it).uid() ); + (*it).setOriginalExternalUID( (*it).uid() ); + (*it).setTempSyncStat( SYNC_TEMPSTATE_NEW_EXTERNAL ); + local->insertAddressee( (*it) , false, false ); + } + mOLsyncFolderID = folderList[1]; + //KMessageBox::information( this, i18n("OLsync folder ID ") + mOLsyncFolderID ); + } + return list.count() > 0; +#else + return false; +#endif +} +bool KABCore::writeOLdata( KABC::AddressBook* aBook ) +{ +#ifdef _OL_IMPORT_ + if ( !OL_access::instance()->setSelectedFolder( mOLsyncFolderID ) ) + return false; + KABC::AddressBook::Iterator it; + for ( it = aBook->begin(); it != aBook->end(); ++it ) { + if ( (*it).tempSyncStat() != SYNC_TEMPSTATE_NEW_EXTERNAL ) { + KABC::Addressee addressee = (*it); + if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_ADDED_EXTERNAL ) { + (*it) = OL_access::instance()->addAddressee( (*it) ); + (*it).setTempSyncStat( SYNC_TEMPSTATE_NEW_ID ); + } else if ( (*it).tempSyncStat() == SYNC_TEMPSTATE_DELETE ) { + OL_access::instance()->deleteAddressee( (*it) ); + } else if ( (*it).tempSyncStat() != SYNC_TEMPSTATE_NEW_EXTERNAL ) { + //changed + (*it) = OL_access::instance()->changeAddressee( (*it) ); + (*it).setTempSyncStat( SYNC_TEMPSTATE_NEW_CSUM ); + } + } + } + return true; +#else + return false; +#endif +} void KABCore::importVCard( const QString &vCard, bool showPreview ) { mXXPortManager->importVCard( vCard, showPreview ); @@ -3374,12 +3423,49 @@ void KABCore::removeSyncInfo( QString syncProfile) setModified(); } +bool KABCore::syncOL() +{ + disableBR( true ); + QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice(); + AddressBook abLocal; + if ( ! readOLdata( &abLocal ) ) + return false; + bool syncOK = false; + message(i18n("Data from OL loaded..."), false); + mGlobalSyncMode = SYNC_MODE_EXTERNAL; + message(i18n("Sync preprocessing..."),false); + abLocal.preOLSync( mAddressBook ,mCurrentSyncDevice ); + message(i18n("Synchronizing..."),false); + syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, syncManager->mSyncAlgoPrefs ); + syncManager->hideProgressBar(); + if ( syncOK ) { + if ( syncManager->mWriteBackFile ) { + abLocal.removeSyncAddressees( false ); + message(i18n("Saving address data to OL..."),false); + //abLocal.saveAB(); + writeOLdata( &abLocal ); + message(i18n("Sync postprocessing..."),false); + abLocal.postExternSync( mAddressBook,mCurrentSyncDevice, true ); + } + } else + message( i18n("Sync cancelled or failed.") ); + setModified(); + abLocal.removeResources(); + if ( syncOK ) { + mViewManager->refreshView(); + message(i18n("OL syncing finished.")); + } + disableBR( false ); + return syncOK; +} //this is a overwritten callbackmethods from the syncinterface bool KABCore::syncExternal(KSyncManager* manager, QString resource) { if ( resource == "phone" ) return syncPhone(); + if ( resource == "ol" ) + return syncOL(); disableBR( true ); if ( manager != syncManager ) qDebug("KABCore::syncExternal:: ERROR! :: manager != syncManager "); diff --git a/kaddressbook/kabcore.h b/kaddressbook/kabcore.h index e69cb60..ec6a9ec 100644 --- a/kaddressbook/kabcore.h +++ b/kaddressbook/kabcore.h @@ -515,6 +515,9 @@ class KABCore : public QWidget, public KSyncInterface virtual bool sync(KSyncManager* manager, QString filename, int mode,QString resource); virtual bool syncExternal(KSyncManager* manager, QString resource); virtual void removeSyncInfo( QString syncProfile); + bool readOLdata( KABC::AddressBook* local ); + bool writeOLdata( KABC::AddressBook* local ); + bool syncOL(); bool syncPhone(); void message( QString m , bool startTimer = true); @@ -529,6 +532,8 @@ class KABCore : public QWidget, public KSyncInterface QDateTime mLastAddressbookSync; int takeAddressee( KABC::Addressee* local, KABC::Addressee* remote, int mode , bool full ); // ********************* + //OL sync stuff + QString mOLsyncFolderID; }; diff --git a/kaddressbook/kaimportoldialog.cpp b/kaddressbook/kaimportoldialog.cpp index 2f794d6..6afc288 100644 --- a/kaddressbook/kaimportoldialog.cpp +++ b/kaddressbook/kaimportoldialog.cpp @@ -21,715 +21,3 @@ without including the source code for Qt in the source distribution. */ -#include <qtooltip.h> -#include <qframe.h> -#include <qpixmap.h> -#include <qlayout.h> -#include <qprogressbar.h> -#include <qprogressdialog.h> -#include <qwidgetstack.h> -#include <qdatetime.h> -#include <qdir.h> -#include <qregexp.h> -#include <qapplication.h> -#include <qhbox.h> -#include <qheader.h> -#include <qdatetime.h> -#include <qlistview.h> - -#include <kdebug.h> -#include <klocale.h> -#include <kstandarddirs.h> -#include <kmessagebox.h> -#include <kfiledialog.h> - -#include <libkdepim/categoryselectdialog.h> -#include <libkdepim/kinputdialog.h> - -#include <libkcal/calendarlocal.h> -#include <libkcal/icalformat.h> - -#include <kabc/addresseelist.h> -#include <kabc/phonenumber.h> - -#include "kaimportoldialog.h" - -#include "../outport/msoutl9.h" -#include <ole2.h> -#include <comutil.h> -_Application gOlAppAB; - -QDateTime mDdate2Qdtr( DATE dt) -{ - COleDateTime odt; - SYSTEMTIME st; - odt = dt; - if ( odt.GetStatus() != 0 ) - return QDateTime(); - odt.GetAsSystemTime(st); - if ( st.wYear > 4000 ) // this program as a year 4000 bug! - return QDateTime(); - // it seems so, that 1.1.4501 indicates: DATE invalid - QDateTime qdt (QDate(st.wYear, st.wMonth,st.wDay ),QTime( st.wHour, st.wMinute,st.wSecond ) ); - return qdt; -} - -class OLEListViewItem : public QCheckListItem -{ - public: - OLEListViewItem( QListView *parent, QString text ) : - QCheckListItem( parent, text, QCheckListItem::CheckBox ) { ; }; - OLEListViewItem( QListViewItem *after, QString text ) : - QCheckListItem( after, text, QCheckListItem::CheckBox ) { ; }; - ~OLEListViewItem() {}; - void setData( DWORD data ) {mData= data; }; - DWORD data() { return mData ;}; - private: - DWORD mData; -}; - -KAImportOLdialog::KAImportOLdialog( const QString &caption, - KABC::AddressBook * aBook, QWidget *parent ) : - KDialogBase( Plain, caption, User1 | Close, Ok, - parent, caption, true, false, i18n("Import!") ) -{ - QHBox * mw = new QHBox( this ); - setMainWidget( mw ); - mListView = new QListView( mw ); - mListView->addColumn(i18n("Select Folder to import")); - mListView->addColumn(i18n("Content Type")); - mABook = aBook; - connect( this, SIGNAL( user1Clicked() ),SLOT ( slotApply())); - setupFolderView(); - resize( sizeHint().width()+50, sizeHint().height()+50 ); -} - -KAImportOLdialog::~KAImportOLdialog() -{ - -} - -KABC::Addressee::List KAImportOLdialog::getAddressList() -{ - return mAList; -} -void KAImportOLdialog::setupFolderView() -{ - SCODE sc = ::OleInitialize(NULL); - if ( FAILED ( sc ) ) { - KMessageBox::information(this,"OLE initialisation failed"); - return; - } - - if(!gOlAppAB.CreateDispatch(_T("Outlook.Application"),NULL)){ - KMessageBox::information(this,"Sorry, cannot access Outlook"); - return ; - } - MAPIFolder mfInbox; - MAPIFolder mfRoot; - CString szName; - _NameSpace olNS; - olNS = gOlAppAB.GetNamespace(_T("MAPI")); - mfInbox = olNS.GetDefaultFolder(6); - mfRoot = mfInbox.GetParent(); - szName = mfRoot.GetName(); - long iType = mfRoot.GetDefaultItemType(); - QString mes; - mes = QString::fromUcs2( szName.GetBuffer() ); - OLEListViewItem * root = new OLEListViewItem( mListView, mes ); - mfRoot.m_lpDispatch->AddRef(); - addFolder( root, mfRoot.m_lpDispatch ); - root->setOpen( true ); - mListView->setSortColumn( 0 ); - mListView->sort( ); -} - - -void KAImportOLdialog::addFolder(OLEListViewItem* iParent, LPDISPATCH dispParent) -{ - MAPIFolder mfParent(dispParent), mfChild; - _Folders folders; - _variant_t fndx((long)0); - CString szName; - long iType; - OLEListViewItem* hChild; - - folders = mfParent.GetFolders(); - for(int i=1; i <= folders.GetCount(); ++i) - { - fndx = (long)i; - mfChild = folders.Item(fndx.Detach()); - mfChild.m_lpDispatch->AddRef(); - szName = mfChild.GetName(); - iType = mfChild.GetDefaultItemType(); - hChild = new OLEListViewItem( iParent , QString::fromUcs2( szName.GetBuffer() ) ); - if ( iType != 2) - hChild->setEnabled( false ); - QString ts; - switch( iType ) { - case 0: - ts = i18n("Mail"); - break; - case 1: - ts = i18n("Calendar"); - break; - case 2: - ts = i18n("Contacts"); - break; - case 3: - ts = i18n("Todos"); - break; - case 4: - ts = i18n("Journals"); - break; - case 5: - ts = i18n("Notes"); - break; - default: - ts = i18n("Unknown"); - } - hChild->setText( 1,ts); - hChild->setData( (DWORD) mfChild.m_lpDispatch ); - mfChild.m_lpDispatch->AddRef(); - addFolder(hChild, mfChild.m_lpDispatch); - } -} - -void KAImportOLdialog::slotApply() -{ - importedItems = 0; - OLEListViewItem* child = (OLEListViewItem*) mListView->firstChild(); - while ( child ) { - if ( child->isOn() ) - readContactData( child->data() ); - child = (OLEListViewItem*) child->itemBelow(); - } - QString mes = i18n("Importing complete.\n\n%1 items imported.").arg( importedItems); - KMessageBox::information(this,mes); -} -void KAImportOLdialog::readContactData( DWORD folder ) -{ - - LPDISPATCH dispItem = (LPDISPATCH)folder; - dispItem->AddRef(); - MAPIFolder mf(dispItem); - mf.m_lpDispatch->AddRef(); - _Items folderItems; - _variant_t indx((long)0); - LPDISPATCH itm; - int i; - folderItems = mf.GetItems(); - QProgressDialog bar( i18n("Importing contact data"),i18n("Abort"), folderItems.GetCount(),this); - bar.setCaption (i18n("Importing!") ); - int h = bar.sizeHint().height() ; - int w = 300; - int dw = QApplication::desktop()->width(); - int dh = QApplication::desktop()->height(); - //bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); - bar.show(); - for(i=1; i <= folderItems.GetCount(); ++i) - { - qApp->processEvents(); - if ( ! bar.isVisible() ) - return ; - bar.setProgress( i ); - indx = (long)i; - itm = folderItems.Item(indx.Detach()); - _ContactItem * pItem = (_ContactItem *)&itm; - ol2kapiContact( pItem ); - itm->Release(); - } -} -void KAImportOLdialog::slotOk() -{ - QDialog::accept(); -} - -void KAImportOLdialog::ol2kapiContact( _ContactItem * aItem ) -{ - KABC::Addressee addressee; - - addressee.setUid( QString::fromUcs2(aItem->GetEntryID().GetBuffer())); - //GetLastModificationTime() - //addressee.setName( const QString &name ); - //addressee.setFormattedName( const QString &formattedName ); - addressee.setFamilyName( QString::fromUcs2(aItem->GetLastName().GetBuffer()) ); - addressee.setGivenName( QString::fromUcs2(aItem->GetFirstName().GetBuffer()) ); - addressee.setAdditionalName( QString::fromUcs2(aItem->GetMiddleName().GetBuffer()) ); - addressee.setPrefix(QString::fromUcs2(aItem->GetTitle().GetBuffer()) ); - addressee.setSuffix( QString::fromUcs2(aItem->GetSuffix().GetBuffer()) ); - addressee.setNickName( QString::fromUcs2(aItem->GetNickName().GetBuffer()) ); - QDateTime dtb = mDdate2Qdtr(aItem->GetBirthday()); - if ( dtb.isValid() ) - addressee.setBirthday( mDdate2Qdtr(aItem->GetBirthday())); - - //QString::fromUcs2(aItem->.GetBuffer()) - //addressee.setMailer( const QString &mailer ); - //addressee.setTimeZone( const TimeZone &timeZone ); - //addressee.setGeo( const Geo &geo ); - //addressee.setTitle( QString::fromUcs2(aItem->GetJobTitle().GetBuffer()) );// titel is the prefix - addressee.setRole( QString::fromUcs2(aItem->GetJobTitle().GetBuffer()) ); - addressee.setOrganization( QString::fromUcs2(aItem->GetCompanyName().GetBuffer()).replace( QRegExp("\\r"), "") ); - QString notesStr = QString::fromUcs2(aItem->GetBody().GetBuffer()); - notesStr.replace( QRegExp("\\r"), ""); - - addressee.setProductId( QString::fromUcs2(aItem->GetCustomerID().GetBuffer()) ); - //addressee.setRevision( const QDateTime &revision ); - // addressee.setSortString( const QString &sortString ); - addressee.setUrl( QString::fromUcs2(aItem->GetWebPage().GetBuffer()) ); - - QString tempS; - tempS = QString::fromUcs2(aItem->GetNetMeetingAlias().GetBuffer())+" AT SERVER: " +QString::fromUcs2(aItem->GetNetMeetingServer().GetBuffer()); - if ( tempS.length() > 12 ) - addressee.insertCustom( "KADDRESSBOOK", "X-IMAddress", tempS ); - tempS = QString::fromUcs2(aItem->GetSpouse().GetBuffer()); - if ( !tempS.isEmpty() ) - addressee.insertCustom( "KADDRESSBOOK", "X-SpousesName", tempS ); - tempS = QString::fromUcs2(aItem->GetManagerName().GetBuffer()); - if ( !tempS.isEmpty() ) - addressee.insertCustom( "KADDRESSBOOK", "X-ManagersName", tempS ); - tempS = QString::fromUcs2(aItem->GetAssistantName().GetBuffer()); - if ( !tempS.isEmpty() ) - addressee.insertCustom( "KADDRESSBOOK", "X-AssistantsName", tempS ); - tempS = QString::fromUcs2(aItem->GetDepartment().GetBuffer()); - if ( !tempS.isEmpty() ) - addressee.insertCustom( "KADDRESSBOOK", "X-Department", tempS ); - tempS = QString::fromUcs2(aItem->GetOfficeLocation().GetBuffer()).replace( QRegExp("\\r"), ""); - if ( !tempS.isEmpty() ) - addressee.insertCustom( "KADDRESSBOOK", "X-Office",tempS ); - tempS = QString::fromUcs2(aItem->GetProfession().GetBuffer()); - if ( !tempS.isEmpty() ) - addressee.insertCustom( "KADDRESSBOOK", "X-Profession", tempS ); - dtb = mDdate2Qdtr(aItem->GetAnniversary()); - if (dtb.isValid() ) { - QString dt = KGlobal::locale()->formatDate( dtb.date() , true, KLocale::ISODate); - addressee.insertCustom( "KADDRESSBOOK", "X-Anniversary", dt); - } - int sec = aItem->GetSensitivity() ; - if ( sec > 1 )// mapping pers -> private - --sec; - addressee.setSecrecy( sec ); - //addressee.setLogo( const Picture &logo ); - //addressee.setPhoto( const Picture &photo ); - //addressee.setSound( const Sound &sound ); - //addressee.setAgent( const Agent &agent ); - QString cat = QString::fromUcs2( aItem->GetCategories().GetBuffer()).replace( QRegExp("\\r"), ""); - cat = cat.replace( QRegExp("; "), ";"); - addressee.setCategories( QStringList::split( ";", cat )); - - QString phoneS; - - phoneS = QString::fromUcs2( aItem->GetAssistantTelephoneNumber().GetBuffer()); - if ( ! phoneS.isEmpty()) - addressee.insertPhoneNumber( KABC::PhoneNumber(phoneS ,KABC::PhoneNumber::Work + KABC::PhoneNumber::Voice ) ); - phoneS = QString::fromUcs2( aItem->GetBusinessTelephoneNumber().GetBuffer()); - if ( ! phoneS.isEmpty()) - addressee.insertPhoneNumber( KABC::PhoneNumber(phoneS ,KABC::PhoneNumber::Work ) ); - phoneS = QString::fromUcs2( aItem->GetBusiness2TelephoneNumber().GetBuffer()); - if ( ! phoneS.isEmpty()) - addressee.insertPhoneNumber( KABC::PhoneNumber(phoneS ,KABC::PhoneNumber::Work ) ); - phoneS = QString::fromUcs2( aItem->GetBusinessFaxNumber().GetBuffer()); - if ( ! phoneS.isEmpty()) - addressee.insertPhoneNumber( KABC::PhoneNumber(phoneS ,KABC::PhoneNumber::Work + KABC::PhoneNumber::Fax ) ); - phoneS = QString::fromUcs2( aItem->GetCarTelephoneNumber().GetBuffer()); - if ( ! phoneS.isEmpty()) - addressee.insertPhoneNumber( KABC::PhoneNumber(phoneS ,KABC::PhoneNumber::Car ) ); - phoneS = QString::fromUcs2( aItem->GetHomeTelephoneNumber().GetBuffer()); - if ( ! phoneS.isEmpty()) - addressee.insertPhoneNumber( KABC::PhoneNumber(phoneS ,KABC::PhoneNumber::Home ) ); - phoneS = QString::fromUcs2( aItem->GetHome2TelephoneNumber().GetBuffer()); - if ( ! phoneS.isEmpty()) - addressee.insertPhoneNumber( KABC::PhoneNumber(phoneS ,KABC::PhoneNumber::Home ) ); - phoneS = QString::fromUcs2( aItem->GetHomeFaxNumber().GetBuffer()); - if ( ! phoneS.isEmpty()) - addressee.insertPhoneNumber( KABC::PhoneNumber(phoneS ,KABC::PhoneNumber::Home + KABC::PhoneNumber::Fax ) ); - phoneS = QString::fromUcs2( aItem->GetISDNNumber().GetBuffer()); - if ( ! phoneS.isEmpty()) - addressee.insertPhoneNumber( KABC::PhoneNumber(phoneS ,KABC::PhoneNumber::Isdn ) ); - phoneS = QString::fromUcs2( aItem->GetMobileTelephoneNumber().GetBuffer()); - if ( ! phoneS.isEmpty()) - addressee.insertPhoneNumber( KABC::PhoneNumber(phoneS ,KABC::PhoneNumber::Cell ) ); - phoneS = QString::fromUcs2( aItem->GetOtherFaxNumber().GetBuffer()); - if ( ! phoneS.isEmpty()) - addressee.insertPhoneNumber( KABC::PhoneNumber(phoneS ,KABC::PhoneNumber::Fax ) ); - phoneS = QString::fromUcs2( aItem->GetOtherTelephoneNumber().GetBuffer()); - if ( ! phoneS.isEmpty()) - addressee.insertPhoneNumber( KABC::PhoneNumber(phoneS ,KABC::PhoneNumber::Voice ) ); - phoneS = QString::fromUcs2( aItem->GetPagerNumber().GetBuffer()); - if ( ! phoneS.isEmpty()) - addressee.insertPhoneNumber( KABC::PhoneNumber(phoneS ,KABC::PhoneNumber::Pager ) ); - phoneS = QString::fromUcs2( aItem->GetPrimaryTelephoneNumber().GetBuffer()); - if ( ! phoneS.isEmpty()) - addressee.insertPhoneNumber( KABC::PhoneNumber(phoneS ,KABC::PhoneNumber::Pref ) ); - phoneS = QString::fromUcs2( aItem->GetTTYTDDTelephoneNumber().GetBuffer()); - if ( ! phoneS.isEmpty()) - addressee.insertPhoneNumber( KABC::PhoneNumber(phoneS ,KABC::PhoneNumber::Modem ) ); - phoneS = QString::fromUcs2( aItem->GetTelexNumber().GetBuffer()); - if ( ! phoneS.isEmpty()) - addressee.insertPhoneNumber( KABC::PhoneNumber(phoneS ,KABC::PhoneNumber::Fax + KABC::PhoneNumber::Bbs ) ); - phoneS = QString::fromUcs2( aItem->GetCompanyMainTelephoneNumber().GetBuffer()); - if ( ! phoneS.isEmpty()) - addressee.insertPhoneNumber( KABC::PhoneNumber(phoneS ,KABC::PhoneNumber::Work + KABC::PhoneNumber::Pref ) ); - phoneS = QString::fromUcs2( aItem->GetRadioTelephoneNumber().GetBuffer()); - if ( ! phoneS.isEmpty()) - addressee.insertPhoneNumber( KABC::PhoneNumber(phoneS ,KABC::PhoneNumber::Video ) ); - phoneS = QString::fromUcs2( aItem->GetCallbackTelephoneNumber().GetBuffer()); - if ( ! phoneS.isEmpty()) - addressee.insertPhoneNumber( KABC::PhoneNumber(phoneS ,KABC::PhoneNumber::Voice + KABC::PhoneNumber::Pref ) ); - - bool preferred = true; - phoneS = QString::fromUcs2( aItem->GetEmail1Address().GetBuffer()); - if ( ! phoneS.isEmpty()) { - addressee.insertEmail(phoneS , preferred ); - preferred = false; - } - phoneS = QString::fromUcs2( aItem->GetEmail2Address().GetBuffer()); - if ( ! phoneS.isEmpty()) { - addressee.insertEmail(phoneS , preferred ); - preferred = false; - } - phoneS = QString::fromUcs2( aItem->GetEmail3Address().GetBuffer()); - if ( ! phoneS.isEmpty()) { - addressee.insertEmail(phoneS , preferred ); - preferred = false; - } - // is this the number of the preferred email? - // long GetSelectedMailingAddress();??? - - KABC::Address addressHome; - KABC::Address* addressAdd = &addressHome; - bool insert = false; - phoneS = QString::fromUcs2( aItem->GetHomeAddressCountry().GetBuffer()); - phoneS.replace( QRegExp("\\r"), ""); - if ( ! phoneS.isEmpty()) { - addressAdd->setCountry(phoneS ); - insert = true; - } - phoneS = QString::fromUcs2( aItem->GetHomeAddressState().GetBuffer()); - phoneS.replace( QRegExp("\\r"), ""); - if ( ! phoneS.isEmpty()) { - addressAdd->setRegion(phoneS ); - insert = true; - } - phoneS = QString::fromUcs2( aItem->GetHomeAddressCity().GetBuffer()); - phoneS.replace( QRegExp("\\r"), ""); - if ( ! phoneS.isEmpty()) { - addressAdd->setLocality(phoneS ); - insert = true; - } - phoneS = QString::fromUcs2( aItem->GetHomeAddressPostalCode().GetBuffer()); - phoneS.replace( QRegExp("\\r"), ""); - if ( ! phoneS.isEmpty()) { - addressAdd->setPostalCode(phoneS ); - insert = true; - } - phoneS = QString::fromUcs2( aItem->GetHomeAddressPostOfficeBox().GetBuffer()); - phoneS.replace( QRegExp("\\r"), ""); - if ( ! phoneS.isEmpty()) { - addressAdd->setPostOfficeBox(phoneS ); - insert = true; - } - phoneS = QString::fromUcs2( aItem->GetHomeAddressStreet().GetBuffer()); - phoneS.replace( QRegExp("\\r"), ""); - if ( ! phoneS.isEmpty()) { - addressAdd->setStreet(phoneS ); - insert = true; - } - phoneS = QString::fromUcs2( aItem->GetHomeAddress().GetBuffer()); - phoneS.replace( QRegExp("\\r"), ""); - if ( ! phoneS.isEmpty()) { - // redundant !addressAdd->setExtended(phoneS ); - // insert = true; - } - addressAdd->setType( KABC::Address::Home ); - if ( insert ) - addressee.insertAddress( *addressAdd ); - // ++++++++++++++++++++++ end of address - - KABC::Address addressWork; - addressAdd = &addressWork; - insert = false; - phoneS = QString::fromUcs2( aItem->GetBusinessAddressCountry().GetBuffer()); - phoneS.replace( QRegExp("\\r"), ""); - if ( ! phoneS.isEmpty()) { - addressAdd->setCountry(phoneS ); - insert = true; - } - phoneS = QString::fromUcs2( aItem->GetBusinessAddressState().GetBuffer()); - phoneS.replace( QRegExp("\\r"), ""); - if ( ! phoneS.isEmpty()) { - addressAdd->setRegion(phoneS ); - insert = true; - } - phoneS = QString::fromUcs2( aItem->GetBusinessAddressCity().GetBuffer()); - phoneS.replace( QRegExp("\\r"), ""); - if ( ! phoneS.isEmpty()) { - addressAdd->setLocality(phoneS ); - insert = true; - } - phoneS = QString::fromUcs2( aItem->GetBusinessAddressPostalCode().GetBuffer()); - phoneS.replace( QRegExp("\\r"), ""); - if ( ! phoneS.isEmpty()) { - addressAdd->setPostalCode(phoneS ); - insert = true; - } - phoneS = QString::fromUcs2( aItem->GetBusinessAddressPostOfficeBox().GetBuffer()); - phoneS.replace( QRegExp("\\r"), ""); - if ( ! phoneS.isEmpty()) { - addressAdd->setPostOfficeBox(phoneS ); - insert = true; - } - phoneS = QString::fromUcs2( aItem->GetBusinessAddressStreet().GetBuffer()); - phoneS.replace( QRegExp("\\r"), ""); - if ( ! phoneS.isEmpty()) { - addressAdd->setStreet(phoneS ); - insert = true; - } - phoneS = QString::fromUcs2( aItem->GetBusinessAddress().GetBuffer()); - phoneS.replace( QRegExp("\\r"), ""); - if ( ! phoneS.isEmpty()) { - // redundant !addressAdd->setExtended(phoneS ); - // insert = true; - } - addressAdd->setType( KABC::Address::Work ); - if ( insert ) - addressee.insertAddress( *addressAdd ); - // ++++++++++++++++++++++ end of address - - KABC::Address addressOther; - addressAdd = &addressOther; - insert = false; - phoneS = QString::fromUcs2( aItem->GetOtherAddressCountry().GetBuffer()); - phoneS.replace( QRegExp("\\r"), ""); - if ( ! phoneS.isEmpty()) { - addressAdd->setCountry(phoneS ); - insert = true; - } - phoneS = QString::fromUcs2( aItem->GetOtherAddressState().GetBuffer()); - phoneS.replace( QRegExp("\\r"), ""); - if ( ! phoneS.isEmpty()) { - addressAdd->setRegion(phoneS ); - insert = true; - } - phoneS = QString::fromUcs2( aItem->GetOtherAddressCity().GetBuffer()); - phoneS.replace( QRegExp("\\r"), ""); - if ( ! phoneS.isEmpty()) { - addressAdd->setLocality(phoneS ); - insert = true; - } - phoneS = QString::fromUcs2( aItem->GetOtherAddressPostalCode().GetBuffer()); - phoneS.replace( QRegExp("\\r"), ""); - if ( ! phoneS.isEmpty()) { - addressAdd->setPostalCode(phoneS ); - insert = true; - } - phoneS = QString::fromUcs2( aItem->GetOtherAddressPostOfficeBox().GetBuffer()); - phoneS.replace( QRegExp("\\r"), ""); - if ( ! phoneS.isEmpty()) { - addressAdd->setPostOfficeBox(phoneS ); - insert = true; - } - phoneS = QString::fromUcs2( aItem->GetOtherAddressStreet().GetBuffer()); - phoneS.replace( QRegExp("\\r"), ""); - if ( ! phoneS.isEmpty()) { - addressAdd->setStreet(phoneS ); - insert = true; - } - phoneS = QString::fromUcs2( aItem->GetOtherAddress().GetBuffer()); - if ( ! phoneS.isEmpty()) { - // redundant !addressAdd->setExtended(phoneS ); - //insert = true; - } - //addressAdd->setId( ); - if ( insert ) - addressee.insertAddress( *addressAdd ); - // ++++++++++++++++++++++ end of address - KABC::Address addressMail; - addressAdd = &addressMail; - insert = false; - phoneS = QString::fromUcs2( aItem->GetMailingAddressCountry().GetBuffer()); - phoneS.replace( QRegExp("\\r"), ""); - if ( ! phoneS.isEmpty()) { - addressAdd->setCountry(phoneS ); - insert = true; - } - phoneS = QString::fromUcs2( aItem->GetMailingAddressState().GetBuffer()); - phoneS.replace( QRegExp("\\r"), ""); - if ( ! phoneS.isEmpty()) { - addressAdd->setRegion(phoneS ); - insert = true; - } - phoneS = QString::fromUcs2( aItem->GetMailingAddressCity().GetBuffer()); - phoneS.replace( QRegExp("\\r"), ""); - if ( ! phoneS.isEmpty()) { - addressAdd->setLocality(phoneS ); - insert = true; - } - phoneS = QString::fromUcs2( aItem->GetMailingAddressPostalCode().GetBuffer()); - phoneS.replace( QRegExp("\\r"), ""); - if ( ! phoneS.isEmpty()) { - addressAdd->setPostalCode(phoneS ); - insert = true; - } - phoneS = QString::fromUcs2( aItem->GetMailingAddressPostOfficeBox().GetBuffer()); - phoneS.replace( QRegExp("\\r"), ""); - if ( ! phoneS.isEmpty()) { - addressAdd->setPostOfficeBox(phoneS ); - insert = true; - } - phoneS = QString::fromUcs2( aItem->GetMailingAddressStreet().GetBuffer()); - phoneS.replace( QRegExp("\\r"), ""); - if ( ! phoneS.isEmpty()) { - addressAdd->setStreet(phoneS ); - insert = true; - } - phoneS = QString::fromUcs2( aItem->GetMailingAddress().GetBuffer()); - phoneS.replace( QRegExp("\\r"), ""); - if ( ! phoneS.isEmpty()) { - // redundant ! addressAdd->setExtended(phoneS ); - // insert = true; - } - addressAdd->setType( KABC::Address::Postal ); - if ( insert ) { - addressee.insertAddress( *addressAdd ); - } - // the following code is disabled - // it does not seem to be useful -#if 0 - if ( insert ) { - addressAdd->setType( KABC::Address::Home ); - if ( addressMail == addressHome ) { - addressHome.setType( KABC::Address::Postal+ KABC::Address::Home ); - addressee.insertAddress( addressHome ); - } else { - addressAdd->setType( KABC::Address::Work ); - if ( addressMail == addressWork ){ - addressWork.setType( KABC::Address::Postal+ KABC::Address::Work ); - addressee.insertAddress( addressWork ); - - } else { - addressAdd->setType( 0 ); - if ( addressOther == addressMail ){ - addressOther.setType( KABC::Address::Postal ); - addressee.insertAddress( addressOther ); - } else { - addressee.insertAddress( *addressAdd ); - } - } - } - } -#endif - // ++++++++++++++++++++++ end of ALL addresses - //GetUserProperties(); - tempS = QString::fromUcs2(aItem->GetInternetFreeBusyAddress().GetBuffer()); - phoneS.replace( QRegExp("\\r"), ""); - if ( !tempS.isEmpty() ) - addressee.insertCustom( "KADDRESSBOOK", "X-FreeBusyUrl", tempS ); - tempS = QString::fromUcs2(aItem->GetChildren().GetBuffer()); - if ( !tempS.isEmpty() ) - addressee.insertCustom( "KADDRESSBOOK", "X-Children", tempS ); - int gen = aItem->GetGender(); - if ( gen != 0 ) { // 0 undef - 1 female - 2 male - if ( gen == 1 ) - addressee.insertCustom( "KADDRESSBOOK", "X-Gender", "female" ); - else - addressee.insertCustom( "KADDRESSBOOK", "X-Gender", "male" ); - } - QString additionalInfo; - QString tempAdd; - tempAdd = QString::fromUcs2(aItem->GetLanguage().GetBuffer()); - if ( ! tempAdd.isEmpty() ) { - additionalInfo += i18n("\nLanguage: "); - additionalInfo += tempAdd; - } - tempAdd = QString::fromUcs2(aItem->GetHobby().GetBuffer()); - phoneS.replace( QRegExp("\\r"), ""); - if ( ! tempAdd.isEmpty() ) { - additionalInfo += i18n("\nHobby: "); - additionalInfo += tempAdd;; - } - tempAdd =QString::fromUcs2(aItem->GetPersonalHomePage().GetBuffer()); - phoneS.replace( QRegExp("\\r"), ""); - if ( ! tempAdd.isEmpty() ) { - additionalInfo += i18n("\nHomepage: "); - additionalInfo += tempAdd;; - } - tempAdd = QString::fromUcs2(aItem->GetBillingInformation().GetBuffer()); - phoneS.replace( QRegExp("\\r"), ""); - if ( ! tempAdd.isEmpty() ) { - additionalInfo += i18n("\nBilling information: "); - additionalInfo += tempAdd;; - } - tempAdd = QString::fromUcs2(aItem->GetCustomerID().GetBuffer()); - phoneS.replace( QRegExp("\\r"), ""); - if ( ! tempAdd.isEmpty() ) { - additionalInfo += i18n("\nCustomer ID: "); - additionalInfo += tempAdd;; - } - tempAdd = QString::fromUcs2(aItem->GetUser1().GetBuffer()); - phoneS.replace( QRegExp("\\r"), ""); - if ( ! tempAdd.isEmpty() ) { - additionalInfo += i18n("\nUser1: "); - additionalInfo += tempAdd;; - } - tempAdd = QString::fromUcs2(aItem->GetUser2().GetBuffer()); - phoneS.replace( QRegExp("\\r"), ""); - if ( ! tempAdd.isEmpty() ) { - additionalInfo += i18n("\nUser2: "); - additionalInfo += tempAdd;; - } - tempAdd = QString::fromUcs2(aItem->GetUser3().GetBuffer()); - phoneS.replace( QRegExp("\\r"), ""); - if ( ! tempAdd.isEmpty() ) { - additionalInfo += i18n("\nUser3: "); - additionalInfo += tempAdd;; - } - tempAdd = QString::fromUcs2(aItem->GetUser4().GetBuffer()); - phoneS.replace( QRegExp("\\r"), ""); - if ( ! tempAdd.isEmpty() ) { - additionalInfo += i18n("\nUser4: "); - additionalInfo += tempAdd;; - } - if (!additionalInfo.isEmpty() ) { - tempAdd = notesStr; - notesStr = "+++++++++++++++++++++++++++\n"; - notesStr += i18n("Additonal fields created\nby KA/Pi Outlook import:"); - notesStr += additionalInfo; - notesStr += i18n("\nEnd additonal fields created\nby KA/Pi Outlook import!\n"); - notesStr += "+++++++++++++++++++++++++++\n"; - notesStr += tempAdd; - } - addressee.setNote( notesStr ); -#if 0 - // pending - - IM address: no clue where to get info about the helper ID - -custom fields: difficult to implement - not implemented - -keys: makes no sense -#endif - - if ( addAddressee( addressee )) - ++importedItems; -} -void KAImportOLdialog::slotCancel() -{ - reject(); -} - -bool KAImportOLdialog::addAddressee( KABC::Addressee a ) -{ - bool add = true; - KABC::Addressee::List::Iterator it; - for ( it = mAList.begin(); it != mAList.end(); ++it ) { - if ( (*it).uid() == a.uid() ) { - add = false; - break; - } - } - if ( add ) { - if ( mABook->findByUid(a.uid() ).isEmpty()) - mAList.append ( a ); - else - add = false; - } - return add; -} diff --git a/kaddressbook/kaimportoldialog.h b/kaddressbook/kaimportoldialog.h index 41ea5f8..278935b 100644 --- a/kaddressbook/kaimportoldialog.h +++ b/kaddressbook/kaimportoldialog.h @@ -20,66 +20,3 @@ with any edition of Qt, and distribute the resulting executable, without including the source code for Qt in the source distribution. */ -#ifndef KOINCIDENCEEDITOR_H -#define KOINCIDENCEEDITOR_H - -#include <kdialogbase.h> - -#include <afxdisp.h> - -#include <kabc/addressee.h> -#include <kabc/addressbook.h> - -class QDateTime; -class QListView; -class OLEListViewItem; -class _ContactItem; - - -//using namespace KABC; -//class KABC::AddressBook; - -/** - This is the base class for the calendar component editors. -*/ -class KAImportOLdialog : public KDialogBase -{ - Q_OBJECT - public: - /** - Construct new IncidenceEditor. - */ - KAImportOLdialog( const QString &caption, KABC::AddressBook * aBook, - QWidget *parent ); - ~KAImportOLdialog(); - - /** Initialize editor. This function creates the tab widgets. */ - void init(); - KABC::Addressee::List getAddressList(); - public slots: - - - signals: - - protected slots: - void slotApply(); - void slotOk(); - void slotCancel(); - - protected: - void setupFolderView(); - void addFolder(OLEListViewItem* iParent, LPDISPATCH dispParent); - void readContactData( DWORD folder ); - void ol2kapiContact( _ContactItem * ); - - KABC::AddressBook * mABook; - QListView * mListView; - KABC::Addressee::List mAList; - bool addAddressee( KABC::Addressee a ); - private: - int importedItems; -}; - -#endif - - diff --git a/kaddressbook/phoneeditwidget.cpp b/kaddressbook/phoneeditwidget.cpp index 5639aa2..df3b551 100644 --- a/kaddressbook/phoneeditwidget.cpp +++ b/kaddressbook/phoneeditwidget.cpp @@ -40,6 +40,7 @@ #include <kapplication.h> #include <qapplication.h> #include <kconfig.h> +#include <kmessagebox.h> #include <klineedit.h> #include <kcombobox.h> #include <klocale.h> @@ -112,11 +113,13 @@ void PhoneEditWidget::setDefaults() phoneNumber.setType( KABC::PhoneNumber::Home | KABC::PhoneNumber::Pref ); edit->setPhoneNumber( phoneNumber ); edit = appendEditCombo(); - phoneNumber.setType( KABC::PhoneNumber::Work | KABC::PhoneNumber::Pref ); - edit->setPhoneNumber( phoneNumber ); + KABC::PhoneNumber phoneNumber2; + phoneNumber2.setType( KABC::PhoneNumber::Work | KABC::PhoneNumber::Pref ); + edit->setPhoneNumber( phoneNumber2 ); edit = appendEditCombo(); - phoneNumber.setType( KABC::PhoneNumber::Cell ); - edit->setPhoneNumber( phoneNumber ); + KABC::PhoneNumber phoneNumber3; + phoneNumber3.setType( KABC::PhoneNumber::Cell ); + edit->setPhoneNumber( phoneNumber3 ); } void PhoneEditWidget::addNumberInt( int index ) diff --git a/korganizer/journalentry.h b/korganizer/journalentry.h index a69846c..ee17da8 100644 --- a/korganizer/journalentry.h +++ b/korganizer/journalentry.h @@ -56,6 +56,7 @@ class JournalEntry : public QFrame { void setVisibleMode( bool b ) { visibleMode = b;} void fillCalendar( int id = 0 ); void resizeEvent(QResizeEvent* e ) ; + KTextEdit * editor() {return mEditor;}; protected slots: void slotSaveTemplate(); void slotLoadTemplate(); diff --git a/korganizer/kojournalview.cpp b/korganizer/kojournalview.cpp index a23a3b2..406df5a 100644 --- a/korganizer/kojournalview.cpp +++ b/korganizer/kojournalview.cpp @@ -37,6 +37,7 @@ #include <kdebug.h> #include "koprefs.h" #include <kglobal.h> +#include <ktextedit.h> #include <libkcal/calendar.h> @@ -177,6 +178,7 @@ void KOJournalView::showList(QPtrList<Journal> jl) JournalEntry* firstEntry = mEntry; int count = jl.count(); int iii = 0; + QWidget* fw = qApp->focusWidget (); while ( iii < count ) { if ( !mEntry ) { mEntry = getNewEntry(); @@ -187,11 +189,18 @@ void KOJournalView::showList(QPtrList<Journal> jl) mEntry->show(); mEntry = 0; } else { + int xxx = -1, yyy = -1; + if ( ((QWidget*) mEntry->editor() ) == fw ) { + mEntry->editor()->getCursorPosition( &xxx,&yyy); + } mEntry->setVisibleMode( true ); mEntry->setDate(mDate); mEntry->setJournal(jl.at(iii), false); mEntry->setVisibleMode( true ); mEntry->show(); + if ( xxx > -1 && yyy > -1 ) { + mEntry->editor()->setCursorPosition( xxx, yyy ); + } mEntry = jEntries.next(); } ++iii; diff --git a/libkdepim/externalapphandler.cpp b/libkdepim/externalapphandler.cpp index 59be506..f376e6c 100644 --- a/libkdepim/externalapphandler.cpp +++ b/libkdepim/externalapphandler.cpp @@ -847,6 +847,8 @@ bool ExternalAppHandler::mailToOneContact( const QString& name, const QString& e } parameters = translateMessage(parameters, name, emailadress); + + //KMessageBox::information(0,parameters); proc->addArgument( parameters ); proc->launch(""); #endif diff --git a/libkdepim/ksyncmanager.cpp b/libkdepim/ksyncmanager.cpp index b7929ec..5708dfc 100644 --- a/libkdepim/ksyncmanager.cpp +++ b/libkdepim/ksyncmanager.cpp @@ -112,7 +112,7 @@ void KSyncManager::fillSyncMenu() QString externalName; #ifdef DESKTOP_VERSION #ifdef _WIN32_ - externalName = "OutLook(not_implemented)"; + externalName = "OutLook"; #else externalName = "KDE_Desktop"; #endif @@ -143,7 +143,7 @@ void KSyncManager::fillSyncMenu() if ( i == 0 ) { #ifdef DESKTOP_VERSION #ifdef _WIN32_ - insertText = "OutLook(not_implemented)"; + insertText = "OutLook"; #else insertText = "KDE_Desktop"; #endif @@ -934,8 +934,74 @@ void KSyncManager::confSync() } QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) ); } +void KSyncManager::syncOL() +{ + mSyncWithDesktop = true; + emit save(); + switch(mTargetApp) + { + case (KAPI): + { + syncExternalApplication("ol"); + } + break; + case (KOPI): + { +#ifdef DESKTOP_VERSION + QString command = "kdecaldump33"; + QString commandfile = "kdecaldump33"; + QString commandpath = qApp->applicationDirPath () + "/"; +#else + QString command = "kdecaldump33"; + QString commandfile = "kdecaldump33"; + QString commandpath = QDir::homeDirPath ()+"/"; +#endif + if ( ! QFile::exists ( commandpath+commandfile ) ) + command = commandfile; + else + command = commandpath+commandfile; + + QString fileName = QDir::homeDirPath ()+"/.kdecalendardump.ics"; + int result = system ( command.latin1()); + qDebug("Cal dump 33 command call result result: %d ", result); + if ( result != 0 ) { + qDebug("Calling CAL dump version 33 failed. Trying 34... "); + commandfile = "kdecaldump34"; + if ( ! QFile::exists ( commandpath+commandfile ) ) + command = commandfile; + else + command = commandpath+commandfile; + result = system ( command.latin1()); + qDebug("Cal dump 34 command call result result: %d ", result); + if ( result != 0 ) { + KMessageBox::error( 0, i18n("Error accessing KDE calendar data.\nMake sure the file\n%1kdecaldump3x\nexists ( x = 3 or 4 ).\nSupported KDE versions are 3.3 and 3.4.\nUsed version should be auto detected.\n").arg( commandpath )); + return; + } + } + if ( syncWithFile( fileName,true ) ) { + if ( mWriteBackFile ) { + command += " --read"; + system ( command.latin1()); + } + } + + } + break; + case (PWMPI): + + break; + default: + qDebug("KSM::slotSyncMenu: invalid apptype selected"); + break; + + } +} void KSyncManager::syncKDE() { +#ifdef _WIN32_ + syncOL(); +#else + mSyncWithDesktop = true; emit save(); switch(mTargetApp) @@ -1032,6 +1098,7 @@ void KSyncManager::syncKDE() break; } +#endif } void KSyncManager::syncSharp() diff --git a/libkdepim/ksyncmanager.h b/libkdepim/ksyncmanager.h index 04cdade..71d17e9 100644 --- a/libkdepim/ksyncmanager.h +++ b/libkdepim/ksyncmanager.h @@ -203,6 +203,7 @@ class KSyncManager : public QObject void syncPhone(); void syncSharp(); void syncKDE(); + void syncOL(); bool syncExternalApplication(QString); int mCurrentSyncProfile ; void syncRemote( KSyncProfile* prof, bool ask = true); @@ -241,8 +242,6 @@ class KSyncInterface // have an external(sharpdtm) syncmode, like pwmanager. return false; } - - }; diff --git a/libkdepim/libkdepim.pro b/libkdepim/libkdepim.pro index 84af7ad..7160d0e 100644 --- a/libkdepim/libkdepim.pro +++ b/libkdepim/libkdepim.pro @@ -58,4 +58,19 @@ SOURCES = \ kcmconfigs/kdepimconfigwidget.cpp \ phoneaccess.cpp +win32: { +#olimport section +importol { +debug: { +LIBS += mfc71ud.lib +} +release: { +LIBS += mfc71u.lib +} +DEFINES += _OL_IMPORT_ +HEADERS += ol_access.h +SOURCES += ol_access.cpp +#olimport section end +} +} |