-rwxr-xr-x | libkdepim/ol_access.cpp | 52 |
1 files changed, 26 insertions, 26 deletions
diff --git a/libkdepim/ol_access.cpp b/libkdepim/ol_access.cpp index 1b05693..821f148 100755 --- a/libkdepim/ol_access.cpp +++ b/libkdepim/ol_access.cpp @@ -1,224 +1,224 @@ /* This file is part of KDE-Pim/Pi. Copyright (c) 2006 Lutz Rogowski <rogowski@kde.org> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. As a special exception, permission is given to link this program with any edition of Qt, and distribute the resulting executable, without including the source code for Qt in the source distribution. */ #include <qtooltip.h> -#include <qframe.h> +#include <q3frame.h> #include <qpixmap.h> #include <qlayout.h> -#include <qprogressbar.h> -#include <qprogressdialog.h> -#include <qwidgetstack.h> +#include <q3progressbar.h> +#include <q3progressdialog.h> +#include <q3widgetstack.h> #include <qdatetime.h> #include <qdir.h> #include <qpushbutton.h> #include <qregexp.h> #include <qapplication.h> -#include <qhbox.h> -#include <qheader.h> +#include <q3hbox.h> +#include <q3header.h> #include <qdatetime.h> -#include <qlistview.h> +#include <q3listview.h> #include <kdebug.h> #include <klocale.h> #include <kstandarddirs.h> #include <kmessagebox.h> #include <kfiledialog.h> #include <kstaticdeleter.h> #include <kdialogbase.h> #include <ol_access.h> #include "../outport/msoutl9.h" #include <ole2.h> #include <comutil.h> -class OLEListViewItem : public QCheckListItem +class OLEListViewItem : public Q3CheckListItem { public: - OLEListViewItem( QListView *parent, QString text ) : - QCheckListItem( parent, text, QCheckListItem::CheckBox ) { ; }; - OLEListViewItem( QListViewItem *after, QString text ) : - QCheckListItem( after, text, QCheckListItem::CheckBox ) { ; }; + OLEListViewItem( Q3ListView *parent, QString text ) : + Q3CheckListItem( parent, text, Q3CheckListItem::CheckBox ) { ; }; + OLEListViewItem( Q3ListViewItem *after, QString text ) : + Q3CheckListItem( after, text, Q3CheckListItem::CheckBox ) { ; }; ~OLEListViewItem() {}; void setData( DWORD data ) {mData= data; }; void setDataID( QString data ){ mDataID = data ;} QString dataID() { return mDataID;} DWORD data() { return mData ;}; private: DWORD mData; QString mDataID; }; class OLEFolderSelect : public KDialogBase { public: OLEFolderSelect() : KDialogBase( Plain, "", Ok | Cancel, Ok, 0, "", true, false, i18n("Import!") ) { - QHBox * mw = new QHBox( this ); + Q3HBox * mw = new Q3HBox( this ); setMainWidget( mw ); - mListView = new QListView( mw ); + mListView = new Q3ListView( mw ); mListView->addColumn(i18n("Select Folder")); mListView->addColumn(i18n("Content Type")); } - QListView* listView() { return mListView;} + Q3ListView* listView() { return mListView;} private: - QListView* mListView; + Q3ListView* mListView; }; OL_access *OL_access::sInstance = 0; static KStaticDeleter<OL_access> staticDeleterPim; OL_access *OL_access::instance() { if ( !sInstance ) { sInstance = staticDeleterPim.setObject( new OL_access() ); } return sInstance; } OL_access::OL_access() { mErrorInit = true; SCODE sc = ::OleInitialize(NULL); if ( FAILED ( sc ) ) { KMessageBox::information( 0 ,i18n("OLE initialisation failed" )); return; } if(!gOlAppAB.CreateDispatch(_T("Outlook.Application"),NULL)){ KMessageBox::information( 0, i18n("Sorry, cannot access Outlook") ); return ; } mErrorInit = false; } OL_access::~OL_access() { if (sInstance == this) sInstance = staticDeleterPim.setObject(0); } KABC::Addressee::List OL_access::importOLcontacts() { KABC::Addressee::List retval; if ( mErrorInit ) return retval; QStringList folderList = getFolderSelection( OL_CONTACT_DATA , i18n("Select Folders to import")); int numFolders = folderList.count()/2; int i; for ( i = 0; i < numFolders; ++i ) { readContactData( getFolderFromID( 0, folderList[(i*2)+1] ) , &retval, false ); } KMessageBox::information( 0, i18n("%1 contacts read").arg( retval.count() ) ); return retval; } void OL_access::readContactData( LPDISPATCH dispItem, KABC::Addressee::List* list, bool syncMode ) { dispItem->AddRef(); MAPIFolder mf(dispItem); mf.m_lpDispatch->AddRef(); _Items folderItems; _variant_t indx((long)0); LPDISPATCH itm; int i; folderItems = mf.GetItems(); QString cap = i18n("Importing contact data"); if ( syncMode ) { cap = i18n("Reading contact data..."); } - QProgressDialog bar( cap,i18n("Abort"), folderItems.GetCount(), 0 ); + Q3ProgressDialog bar( cap,i18n("Abort"), folderItems.GetCount(), 0 ); bar.setCaption (i18n("Accessing OL") ); 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; list->append( ol2kapiContact( pItem, syncMode ) ); itm->Release(); } } QStringList OL_access::getFolderSelection( int type , QString caption ) { OLEFolderSelect folder_dialog; - QListView * listView = folder_dialog.listView(); + Q3ListView * listView = folder_dialog.listView(); 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( listView, mes ); mfRoot.m_lpDispatch->AddRef(); addFolder( root, mfRoot.m_lpDispatch, type ); root->setOpen( true ); listView->setSortColumn( 0 ); listView->sort( ); folder_dialog.setCaption( caption ); QStringList retval; folder_dialog.resize( folder_dialog.sizeHint().width()+50, folder_dialog.sizeHint().height()+50 ); if ( folder_dialog.exec() ) { OLEListViewItem* child = (OLEListViewItem*) listView->firstChild(); while ( child ) { if ( child->isOn() && ! child->firstChild() ) { retval << child->text( 0 ); retval << child->dataID(); } child = (OLEListViewItem*) child->itemBelow(); } //KMessageBox::information(0,retval.join(" \n ")); } return retval; } void OL_access::addFolder(OLEListViewItem* iParent, LPDISPATCH dispParent, long fType) { 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) { iParent->setEnabled( true ); fndx = (long)i; mfChild = folders.Item(fndx.Detach()); @@ -1090,123 +1090,123 @@ KABC::Addressee OL_access::ol2kapiContact( _ContactItem * aItem , bool syncMode) additionalInfo += i18n("\nUser4: "); additionalInfo += tempAdd;; } if (!additionalInfo.isEmpty() && ! syncMode ) { 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 return addressee; } #if 0 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; } DATE Qdt2date( QDateTime dt ) { DATE ddd; COleDateTime odt; odt.SetDateTime(dt.date().year(), dt.date().month(),dt.date().day(), dt.time().hour(), dt.time().minute(), dt.time().second() ); ddd = odt; return ddd; } -class OLEListViewItem : public QCheckListItem +class OLEListViewItem : public Q3CheckListItem { public: - OLEListViewItem( QListView *parent, QString text ) : - QCheckListItem( parent, text, QCheckListItem::CheckBox ) { ; }; - OLEListViewItem( QListViewItem *after, QString text ) : - QCheckListItem( after, text, QCheckListItem::CheckBox ) { ; }; + OLEListViewItem( Q3ListView *parent, QString text ) : + Q3CheckListItem( parent, text, Q3CheckListItem::CheckBox ) { ; }; + OLEListViewItem( Q3ListViewItem *after, QString text ) : + Q3CheckListItem( after, text, Q3CheckListItem::CheckBox ) { ; }; ~OLEListViewItem() {}; void setData( DWORD data ) {mData= data; }; void setDataID( QString data ){ mDataID = data ;} QString dataID() { return mDataID;} DWORD data() { return mData ;}; private: DWORD mData; QString mDataID; }; bool KAImportOLdialog::sOLDispatch = false; KAImportOLdialog::KAImportOLdialog( const QString &caption, KABC::AddressBook * aBook, QWidget *parent ) : KDialogBase( Plain, caption, User1 | Close, Ok, parent, caption, true, false, i18n("Import!") ) { mSyncMode = false; - QHBox * mw = new QHBox( this ); + Q3HBox * mw = new Q3HBox( this ); setMainWidget( mw ); - mListView = new QListView( mw ); + mListView = new Q3ListView( mw ); mListView->addColumn(i18n("Select Folder")); mListView->addColumn(i18n("Content Type")); mABook = aBook; connect( this, SIGNAL( user1Clicked() ),SLOT ( slotApply())); setupFolderView(); resize( sizeHint().width()+50, sizeHint().height()+50 ); } KAImportOLdialog::~KAImportOLdialog() { } void KAImportOLdialog::setSyncMode() { mSyncMode = true; findButton( User1 )->setText( i18n("Synchronize!") ); } 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( ! KAImportOLdialog::sOLDispatch ) { if(!gOlAppAB.CreateDispatch(_T("Outlook.Application"),NULL)){ KMessageBox::information(this,"Sorry, cannot access Outlook"); return ; } KAImportOLdialog::sOLDispatch = true; } 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 ); @@ -1258,97 +1258,97 @@ void KAImportOLdialog::addFolder(OLEListViewItem* iParent, LPDISPATCH dispParent 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() ); if ( mSyncMode ) { mSelectedFolderID = child->dataID(); accept(); return; } } 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(); QString cap = i18n("Importing contact data"); if ( mSyncMode ) { cap = i18n("Reading contact data..."); } - QProgressDialog bar( cap,i18n("Abort"), folderItems.GetCount(),this); + Q3ProgressDialog bar( cap,i18n("Abort"), folderItems.GetCount(),this); bar.setCaption (i18n("Accessing OL") ); 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; if ( addAddressee( ol2kapiContact( pItem, mSyncMode ) )) ++importedItems; itm->Release(); } } void KAImportOLdialog::slotOk() { QDialog::accept(); } KABC::Addressee KAImportOLdialog::ol2kapiContact( _ContactItem * aItem , bool syncMode) { KABC::Addressee addressee; addressee.setUid( QString::fromUcs2(aItem->GetEntryID().GetBuffer())); //GetLastModificationTime() //addressee.setName( const QString &name ); addressee.setFormattedName( QString::fromUcs2(aItem->GetFileAs().GetBuffer()) ); 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 ); |