summaryrefslogtreecommitdiffabout
path: root/libkdepim/ol_access.cpp
Side-by-side diff
Diffstat (limited to 'libkdepim/ol_access.cpp') (more/less context) (ignore whitespace changes)
-rwxr-xr-xlibkdepim/ol_access.cpp52
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 );