summaryrefslogtreecommitdiffabout
path: root/libkdepim/ol_access.cpp
Unidiff
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 @@
1/* 1/*
2 This file is part of KDE-Pim/Pi. 2 This file is part of KDE-Pim/Pi.
3 Copyright (c) 2006 Lutz Rogowski <rogowski@kde.org> 3 Copyright (c) 2006 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> 24#include <qtooltip.h>
25#include <qframe.h> 25#include <q3frame.h>
26#include <qpixmap.h> 26#include <qpixmap.h>
27#include <qlayout.h> 27#include <qlayout.h>
28#include <qprogressbar.h> 28#include <q3progressbar.h>
29#include <qprogressdialog.h> 29#include <q3progressdialog.h>
30#include <qwidgetstack.h> 30#include <q3widgetstack.h>
31#include <qdatetime.h> 31#include <qdatetime.h>
32#include <qdir.h> 32#include <qdir.h>
33#include <qpushbutton.h> 33#include <qpushbutton.h>
34#include <qregexp.h> 34#include <qregexp.h>
35#include <qapplication.h> 35#include <qapplication.h>
36#include <qhbox.h> 36#include <q3hbox.h>
37#include <qheader.h> 37#include <q3header.h>
38#include <qdatetime.h> 38#include <qdatetime.h>
39#include <qlistview.h> 39#include <q3listview.h>
40 40
41#include <kdebug.h> 41#include <kdebug.h>
42#include <klocale.h> 42#include <klocale.h>
43#include <kstandarddirs.h> 43#include <kstandarddirs.h>
44#include <kmessagebox.h> 44#include <kmessagebox.h>
45#include <kfiledialog.h> 45#include <kfiledialog.h>
46#include <kstaticdeleter.h> 46#include <kstaticdeleter.h>
47#include <kdialogbase.h> 47#include <kdialogbase.h>
48 48
49 49
50#include <ol_access.h> 50#include <ol_access.h>
51 51
52#include "../outport/msoutl9.h" 52#include "../outport/msoutl9.h"
53#include <ole2.h> 53#include <ole2.h>
54#include <comutil.h> 54#include <comutil.h>
55 55
56 56
57class OLEListViewItem : public QCheckListItem 57class OLEListViewItem : public Q3CheckListItem
58{ 58{
59public: 59public:
60 OLEListViewItem( QListView *parent, QString text ) : 60 OLEListViewItem( Q3ListView *parent, QString text ) :
61 QCheckListItem( parent, text, QCheckListItem::CheckBox ) { ; }; 61 Q3CheckListItem( parent, text, Q3CheckListItem::CheckBox ) { ; };
62 OLEListViewItem( QListViewItem *after, QString text ) : 62 OLEListViewItem( Q3ListViewItem *after, QString text ) :
63 QCheckListItem( after, text, QCheckListItem::CheckBox ) { ; }; 63 Q3CheckListItem( after, text, Q3CheckListItem::CheckBox ) { ; };
64 ~OLEListViewItem() {}; 64 ~OLEListViewItem() {};
65 void setData( DWORD data ) {mData= data; }; 65 void setData( DWORD data ) {mData= data; };
66 void setDataID( QString data ){ mDataID = data ;} 66 void setDataID( QString data ){ mDataID = data ;}
67 QString dataID() { return mDataID;} 67 QString dataID() { return mDataID;}
68 DWORD data() { return mData ;}; 68 DWORD data() { return mData ;};
69private: 69private:
70 DWORD mData; 70 DWORD mData;
71 QString mDataID; 71 QString mDataID;
72}; 72};
73 73
74class OLEFolderSelect : public KDialogBase 74class OLEFolderSelect : public KDialogBase
75{ 75{
76 public: 76 public:
77 OLEFolderSelect() : 77 OLEFolderSelect() :
78 KDialogBase( Plain, "", Ok | Cancel, Ok, 78 KDialogBase( Plain, "", Ok | Cancel, Ok,
79 0, "", true, false, i18n("Import!") ) 79 0, "", true, false, i18n("Import!") )
80 { 80 {
81 QHBox * mw = new QHBox( this ); 81 Q3HBox * mw = new Q3HBox( this );
82 setMainWidget( mw ); 82 setMainWidget( mw );
83 mListView = new QListView( mw ); 83 mListView = new Q3ListView( mw );
84 mListView->addColumn(i18n("Select Folder")); 84 mListView->addColumn(i18n("Select Folder"));
85 mListView->addColumn(i18n("Content Type")); 85 mListView->addColumn(i18n("Content Type"));
86 } 86 }
87 QListView* listView() { return mListView;} 87 Q3ListView* listView() { return mListView;}
88private: 88private:
89 QListView* mListView; 89 Q3ListView* mListView;
90}; 90};
91 91
92OL_access *OL_access::sInstance = 0; 92OL_access *OL_access::sInstance = 0;
93static KStaticDeleter<OL_access> staticDeleterPim; 93static KStaticDeleter<OL_access> staticDeleterPim;
94 94
95OL_access *OL_access::instance() 95OL_access *OL_access::instance()
96{ 96{
97 if ( !sInstance ) { 97 if ( !sInstance ) {
98 sInstance = staticDeleterPim.setObject( new OL_access() ); 98 sInstance = staticDeleterPim.setObject( new OL_access() );
99 } 99 }
100 return sInstance; 100 return sInstance;
101} 101}
102 102
103 103
104OL_access::OL_access() 104OL_access::OL_access()
105{ 105{
106 mErrorInit = true; 106 mErrorInit = true;
107 SCODE sc = ::OleInitialize(NULL); 107 SCODE sc = ::OleInitialize(NULL);
108 if ( FAILED ( sc ) ) { 108 if ( FAILED ( sc ) ) {
109 KMessageBox::information( 0 ,i18n("OLE initialisation failed" )); 109 KMessageBox::information( 0 ,i18n("OLE initialisation failed" ));
110 return; 110 return;
111 } 111 }
112 if(!gOlAppAB.CreateDispatch(_T("Outlook.Application"),NULL)){ 112 if(!gOlAppAB.CreateDispatch(_T("Outlook.Application"),NULL)){
113 KMessageBox::information( 0, i18n("Sorry, cannot access Outlook") ); 113 KMessageBox::information( 0, i18n("Sorry, cannot access Outlook") );
114 return ; 114 return ;
115 } 115 }
116 mErrorInit = false; 116 mErrorInit = false;
117} 117}
118OL_access::~OL_access() 118OL_access::~OL_access()
119{ 119{
120 if (sInstance == this) 120 if (sInstance == this)
121 sInstance = staticDeleterPim.setObject(0); 121 sInstance = staticDeleterPim.setObject(0);
122} 122}
123 123
124KABC::Addressee::List OL_access::importOLcontacts() 124KABC::Addressee::List OL_access::importOLcontacts()
125{ 125{
126 KABC::Addressee::List retval; 126 KABC::Addressee::List retval;
127 if ( mErrorInit ) 127 if ( mErrorInit )
128 return retval; 128 return retval;
129 QStringList folderList = getFolderSelection( OL_CONTACT_DATA , i18n("Select Folders to import")); 129 QStringList folderList = getFolderSelection( OL_CONTACT_DATA , i18n("Select Folders to import"));
130 int numFolders = folderList.count()/2; 130 int numFolders = folderList.count()/2;
131 int i; 131 int i;
132 for ( i = 0; i < numFolders; ++i ) { 132 for ( i = 0; i < numFolders; ++i ) {
133 readContactData( getFolderFromID( 0, folderList[(i*2)+1] ) , &retval, false ); 133 readContactData( getFolderFromID( 0, folderList[(i*2)+1] ) , &retval, false );
134 } 134 }
135 KMessageBox::information( 0, i18n("%1 contacts read").arg( retval.count() ) ); 135 KMessageBox::information( 0, i18n("%1 contacts read").arg( retval.count() ) );
136 return retval; 136 return retval;
137} 137}
138void OL_access::readContactData( LPDISPATCH dispItem, KABC::Addressee::List* list, bool syncMode ) 138void OL_access::readContactData( LPDISPATCH dispItem, KABC::Addressee::List* list, bool syncMode )
139{ 139{
140 dispItem->AddRef(); 140 dispItem->AddRef();
141 MAPIFolder mf(dispItem); 141 MAPIFolder mf(dispItem);
142 mf.m_lpDispatch->AddRef(); 142 mf.m_lpDispatch->AddRef();
143 _Items folderItems; 143 _Items folderItems;
144 _variant_t indx((long)0); 144 _variant_t indx((long)0);
145 LPDISPATCH itm; 145 LPDISPATCH itm;
146 int i; 146 int i;
147 folderItems = mf.GetItems(); 147 folderItems = mf.GetItems();
148 QString cap = i18n("Importing contact data"); 148 QString cap = i18n("Importing contact data");
149 if ( syncMode ) { 149 if ( syncMode ) {
150 cap = i18n("Reading contact data..."); 150 cap = i18n("Reading contact data...");
151 } 151 }
152 QProgressDialog bar( cap,i18n("Abort"), folderItems.GetCount(), 0 ); 152 Q3ProgressDialog bar( cap,i18n("Abort"), folderItems.GetCount(), 0 );
153 bar.setCaption (i18n("Accessing OL") ); 153 bar.setCaption (i18n("Accessing OL") );
154 int h = bar.sizeHint().height() ; 154 int h = bar.sizeHint().height() ;
155 int w = 300; 155 int w = 300;
156 int dw = QApplication::desktop()->width(); 156 int dw = QApplication::desktop()->width();
157 int dh = QApplication::desktop()->height(); 157 int dh = QApplication::desktop()->height();
158 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 158 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
159 bar.show(); 159 bar.show();
160 for(i=1; i <= folderItems.GetCount(); ++i) 160 for(i=1; i <= folderItems.GetCount(); ++i)
161 { 161 {
162 qApp->processEvents(); 162 qApp->processEvents();
163 if ( ! bar.isVisible() ) 163 if ( ! bar.isVisible() )
164 return ; 164 return ;
165 bar.setProgress( i ); 165 bar.setProgress( i );
166 indx = (long)i; 166 indx = (long)i;
167 itm = folderItems.Item(indx.Detach()); 167 itm = folderItems.Item(indx.Detach());
168 _ContactItem * pItem = (_ContactItem *)&itm; 168 _ContactItem * pItem = (_ContactItem *)&itm;
169 list->append( ol2kapiContact( pItem, syncMode ) ); 169 list->append( ol2kapiContact( pItem, syncMode ) );
170 itm->Release(); 170 itm->Release();
171 } 171 }
172} 172}
173QStringList OL_access::getFolderSelection( int type , QString caption ) 173QStringList OL_access::getFolderSelection( int type , QString caption )
174{ 174{
175 OLEFolderSelect folder_dialog; 175 OLEFolderSelect folder_dialog;
176 QListView * listView = folder_dialog.listView(); 176 Q3ListView * listView = folder_dialog.listView();
177 MAPIFolder mfInbox; 177 MAPIFolder mfInbox;
178 MAPIFolder mfRoot; 178 MAPIFolder mfRoot;
179 CString szName; 179 CString szName;
180 _NameSpace olNS; 180 _NameSpace olNS;
181 olNS = gOlAppAB.GetNamespace(_T("MAPI")); 181 olNS = gOlAppAB.GetNamespace(_T("MAPI"));
182 mfInbox = olNS.GetDefaultFolder(6); 182 mfInbox = olNS.GetDefaultFolder(6);
183 mfRoot = mfInbox.GetParent(); 183 mfRoot = mfInbox.GetParent();
184 szName = mfRoot.GetName(); 184 szName = mfRoot.GetName();
185 long iType = mfRoot.GetDefaultItemType(); 185 long iType = mfRoot.GetDefaultItemType();
186 QString mes; 186 QString mes;
187 mes = QString::fromUcs2( szName.GetBuffer() ); 187 mes = QString::fromUcs2( szName.GetBuffer() );
188 OLEListViewItem * root = new OLEListViewItem( listView, mes ); 188 OLEListViewItem * root = new OLEListViewItem( listView, mes );
189 mfRoot.m_lpDispatch->AddRef(); 189 mfRoot.m_lpDispatch->AddRef();
190 addFolder( root, mfRoot.m_lpDispatch, type ); 190 addFolder( root, mfRoot.m_lpDispatch, type );
191 root->setOpen( true ); 191 root->setOpen( true );
192 listView->setSortColumn( 0 ); 192 listView->setSortColumn( 0 );
193 listView->sort( ); 193 listView->sort( );
194 folder_dialog.setCaption( caption ); 194 folder_dialog.setCaption( caption );
195 QStringList retval; 195 QStringList retval;
196 folder_dialog.resize( folder_dialog.sizeHint().width()+50, folder_dialog.sizeHint().height()+50 ); 196 folder_dialog.resize( folder_dialog.sizeHint().width()+50, folder_dialog.sizeHint().height()+50 );
197 if ( folder_dialog.exec() ) { 197 if ( folder_dialog.exec() ) {
198 OLEListViewItem* child = (OLEListViewItem*) listView->firstChild(); 198 OLEListViewItem* child = (OLEListViewItem*) listView->firstChild();
199 while ( child ) { 199 while ( child ) {
200 if ( child->isOn() && ! child->firstChild() ) { 200 if ( child->isOn() && ! child->firstChild() ) {
201 retval << child->text( 0 ); 201 retval << child->text( 0 );
202 retval << child->dataID(); 202 retval << child->dataID();
203 } 203 }
204 child = (OLEListViewItem*) child->itemBelow(); 204 child = (OLEListViewItem*) child->itemBelow();
205 } 205 }
206 //KMessageBox::information(0,retval.join(" \n ")); 206 //KMessageBox::information(0,retval.join(" \n "));
207 } 207 }
208 return retval; 208 return retval;
209} 209}
210void OL_access::addFolder(OLEListViewItem* iParent, LPDISPATCH dispParent, long fType) 210void OL_access::addFolder(OLEListViewItem* iParent, LPDISPATCH dispParent, long fType)
211{ 211{
212 MAPIFolder mfParent(dispParent), mfChild; 212 MAPIFolder mfParent(dispParent), mfChild;
213 _Folders folders; 213 _Folders folders;
214 _variant_t fndx((long)0); 214 _variant_t fndx((long)0);
215 CString szName; 215 CString szName;
216 long iType; 216 long iType;
217 OLEListViewItem* hChild; 217 OLEListViewItem* hChild;
218 218
219 folders = mfParent.GetFolders(); 219 folders = mfParent.GetFolders();
220 for(int i=1; i <= folders.GetCount(); ++i) 220 for(int i=1; i <= folders.GetCount(); ++i)
221 { 221 {
222 iParent->setEnabled( true ); 222 iParent->setEnabled( true );
223 fndx = (long)i; 223 fndx = (long)i;
224 mfChild = folders.Item(fndx.Detach()); 224 mfChild = folders.Item(fndx.Detach());
@@ -1090,123 +1090,123 @@ KABC::Addressee OL_access::ol2kapiContact( _ContactItem * aItem , bool syncMode)
1090 additionalInfo += i18n("\nUser4: "); 1090 additionalInfo += i18n("\nUser4: ");
1091 additionalInfo += tempAdd;; 1091 additionalInfo += tempAdd;;
1092 } 1092 }
1093 if (!additionalInfo.isEmpty() && ! syncMode ) { 1093 if (!additionalInfo.isEmpty() && ! syncMode ) {
1094 tempAdd = notesStr; 1094 tempAdd = notesStr;
1095 notesStr = "+++++++++++++++++++++++++++\n"; 1095 notesStr = "+++++++++++++++++++++++++++\n";
1096 notesStr += i18n("Additonal fields created\nby KA/Pi Outlook import:"); 1096 notesStr += i18n("Additonal fields created\nby KA/Pi Outlook import:");
1097 notesStr += additionalInfo; 1097 notesStr += additionalInfo;
1098 notesStr += i18n("\nEnd additonal fields created\nby KA/Pi Outlook import!\n"); 1098 notesStr += i18n("\nEnd additonal fields created\nby KA/Pi Outlook import!\n");
1099 notesStr += "+++++++++++++++++++++++++++\n"; 1099 notesStr += "+++++++++++++++++++++++++++\n";
1100 notesStr += tempAdd; 1100 notesStr += tempAdd;
1101 } 1101 }
1102 addressee.setNote( notesStr ); 1102 addressee.setNote( notesStr );
1103#if 0 1103#if 0
1104 // pending 1104 // pending
1105 - IM address: no clue where to get info about the helper ID 1105 - IM address: no clue where to get info about the helper ID
1106 -custom fields: difficult to implement - not implemented 1106 -custom fields: difficult to implement - not implemented
1107 -keys: makes no sense 1107 -keys: makes no sense
1108#endif 1108#endif
1109 return addressee; 1109 return addressee;
1110} 1110}
1111#if 0 1111#if 0
1112 1112
1113 1113
1114QDateTime mDdate2Qdtr( DATE dt) 1114QDateTime mDdate2Qdtr( DATE dt)
1115{ 1115{
1116 COleDateTime odt; 1116 COleDateTime odt;
1117 SYSTEMTIME st; 1117 SYSTEMTIME st;
1118 odt = dt; 1118 odt = dt;
1119 if ( odt.GetStatus() != 0 ) 1119 if ( odt.GetStatus() != 0 )
1120 return QDateTime(); 1120 return QDateTime();
1121 odt.GetAsSystemTime(st); 1121 odt.GetAsSystemTime(st);
1122 if ( st.wYear > 4000 ) // this program as a year 4000 bug! 1122 if ( st.wYear > 4000 ) // this program as a year 4000 bug!
1123 return QDateTime(); 1123 return QDateTime();
1124 // it seems so, that 1.1.4501 indicates: DATE invalid 1124 // it seems so, that 1.1.4501 indicates: DATE invalid
1125 QDateTime qdt (QDate(st.wYear, st.wMonth,st.wDay ),QTime( st.wHour, st.wMinute,st.wSecond ) ); 1125 QDateTime qdt (QDate(st.wYear, st.wMonth,st.wDay ),QTime( st.wHour, st.wMinute,st.wSecond ) );
1126 return qdt; 1126 return qdt;
1127} 1127}
1128DATE Qdt2date( QDateTime dt ) 1128DATE Qdt2date( QDateTime dt )
1129{ 1129{
1130 DATE ddd; 1130 DATE ddd;
1131 COleDateTime odt; 1131 COleDateTime odt;
1132 odt.SetDateTime(dt.date().year(), dt.date().month(),dt.date().day(), 1132 odt.SetDateTime(dt.date().year(), dt.date().month(),dt.date().day(),
1133 dt.time().hour(), dt.time().minute(), dt.time().second() ); 1133 dt.time().hour(), dt.time().minute(), dt.time().second() );
1134 ddd = odt; 1134 ddd = odt;
1135 return ddd; 1135 return ddd;
1136} 1136}
1137 1137
1138class OLEListViewItem : public QCheckListItem 1138class OLEListViewItem : public Q3CheckListItem
1139{ 1139{
1140 public: 1140 public:
1141 OLEListViewItem( QListView *parent, QString text ) : 1141 OLEListViewItem( Q3ListView *parent, QString text ) :
1142 QCheckListItem( parent, text, QCheckListItem::CheckBox ) { ; }; 1142 Q3CheckListItem( parent, text, Q3CheckListItem::CheckBox ) { ; };
1143 OLEListViewItem( QListViewItem *after, QString text ) : 1143 OLEListViewItem( Q3ListViewItem *after, QString text ) :
1144 QCheckListItem( after, text, QCheckListItem::CheckBox ) { ; }; 1144 Q3CheckListItem( after, text, Q3CheckListItem::CheckBox ) { ; };
1145 ~OLEListViewItem() {}; 1145 ~OLEListViewItem() {};
1146 void setData( DWORD data ) {mData= data; }; 1146 void setData( DWORD data ) {mData= data; };
1147 void setDataID( QString data ){ mDataID = data ;} 1147 void setDataID( QString data ){ mDataID = data ;}
1148 QString dataID() { return mDataID;} 1148 QString dataID() { return mDataID;}
1149 DWORD data() { return mData ;}; 1149 DWORD data() { return mData ;};
1150 private: 1150 private:
1151 DWORD mData; 1151 DWORD mData;
1152 QString mDataID; 1152 QString mDataID;
1153}; 1153};
1154bool KAImportOLdialog::sOLDispatch = false; 1154bool KAImportOLdialog::sOLDispatch = false;
1155 1155
1156KAImportOLdialog::KAImportOLdialog( const QString &caption, 1156KAImportOLdialog::KAImportOLdialog( const QString &caption,
1157 KABC::AddressBook * aBook, QWidget *parent ) : 1157 KABC::AddressBook * aBook, QWidget *parent ) :
1158 KDialogBase( Plain, caption, User1 | Close, Ok, 1158 KDialogBase( Plain, caption, User1 | Close, Ok,
1159 parent, caption, true, false, i18n("Import!") ) 1159 parent, caption, true, false, i18n("Import!") )
1160{ 1160{
1161 mSyncMode = false; 1161 mSyncMode = false;
1162 QHBox * mw = new QHBox( this ); 1162 Q3HBox * mw = new Q3HBox( this );
1163 setMainWidget( mw ); 1163 setMainWidget( mw );
1164 mListView = new QListView( mw ); 1164 mListView = new Q3ListView( mw );
1165 mListView->addColumn(i18n("Select Folder")); 1165 mListView->addColumn(i18n("Select Folder"));
1166 mListView->addColumn(i18n("Content Type")); 1166 mListView->addColumn(i18n("Content Type"));
1167 mABook = aBook; 1167 mABook = aBook;
1168 connect( this, SIGNAL( user1Clicked() ),SLOT ( slotApply())); 1168 connect( this, SIGNAL( user1Clicked() ),SLOT ( slotApply()));
1169 setupFolderView(); 1169 setupFolderView();
1170 resize( sizeHint().width()+50, sizeHint().height()+50 ); 1170 resize( sizeHint().width()+50, sizeHint().height()+50 );
1171} 1171}
1172 1172
1173KAImportOLdialog::~KAImportOLdialog() 1173KAImportOLdialog::~KAImportOLdialog()
1174{ 1174{
1175 1175
1176} 1176}
1177 1177
1178void KAImportOLdialog::setSyncMode() 1178void KAImportOLdialog::setSyncMode()
1179{ 1179{
1180 mSyncMode = true; 1180 mSyncMode = true;
1181 findButton( User1 )->setText( i18n("Synchronize!") ); 1181 findButton( User1 )->setText( i18n("Synchronize!") );
1182} 1182}
1183KABC::Addressee::List KAImportOLdialog::getAddressList() 1183KABC::Addressee::List KAImportOLdialog::getAddressList()
1184{ 1184{
1185 return mAList; 1185 return mAList;
1186} 1186}
1187void KAImportOLdialog::setupFolderView() 1187void KAImportOLdialog::setupFolderView()
1188{ 1188{
1189 SCODE sc = ::OleInitialize(NULL); 1189 SCODE sc = ::OleInitialize(NULL);
1190 if ( FAILED ( sc ) ) { 1190 if ( FAILED ( sc ) ) {
1191 KMessageBox::information(this,"OLE initialisation failed"); 1191 KMessageBox::information(this,"OLE initialisation failed");
1192 return; 1192 return;
1193 } 1193 }
1194 if( ! KAImportOLdialog::sOLDispatch ) { 1194 if( ! KAImportOLdialog::sOLDispatch ) {
1195 if(!gOlAppAB.CreateDispatch(_T("Outlook.Application"),NULL)){ 1195 if(!gOlAppAB.CreateDispatch(_T("Outlook.Application"),NULL)){
1196 KMessageBox::information(this,"Sorry, cannot access Outlook"); 1196 KMessageBox::information(this,"Sorry, cannot access Outlook");
1197 return ; 1197 return ;
1198 } 1198 }
1199 KAImportOLdialog::sOLDispatch = true; 1199 KAImportOLdialog::sOLDispatch = true;
1200 } 1200 }
1201 MAPIFolder mfInbox; 1201 MAPIFolder mfInbox;
1202 MAPIFolder mfRoot; 1202 MAPIFolder mfRoot;
1203 CString szName; 1203 CString szName;
1204 _NameSpace olNS; 1204 _NameSpace olNS;
1205 olNS = gOlAppAB.GetNamespace(_T("MAPI")); 1205 olNS = gOlAppAB.GetNamespace(_T("MAPI"));
1206 mfInbox = olNS.GetDefaultFolder(6); 1206 mfInbox = olNS.GetDefaultFolder(6);
1207 mfRoot = mfInbox.GetParent(); 1207 mfRoot = mfInbox.GetParent();
1208 szName = mfRoot.GetName(); 1208 szName = mfRoot.GetName();
1209 long iType = mfRoot.GetDefaultItemType(); 1209 long iType = mfRoot.GetDefaultItemType();
1210 QString mes; 1210 QString mes;
1211 mes = QString::fromUcs2( szName.GetBuffer() ); 1211 mes = QString::fromUcs2( szName.GetBuffer() );
1212 OLEListViewItem * root = new OLEListViewItem( mListView, mes ); 1212 OLEListViewItem * root = new OLEListViewItem( mListView, mes );
@@ -1258,97 +1258,97 @@ void KAImportOLdialog::addFolder(OLEListViewItem* iParent, LPDISPATCH dispParent
1258 break; 1258 break;
1259 case 5: 1259 case 5:
1260 ts = i18n("Notes"); 1260 ts = i18n("Notes");
1261 break; 1261 break;
1262 default: 1262 default:
1263 ts = i18n("Unknown"); 1263 ts = i18n("Unknown");
1264 } 1264 }
1265 hChild->setText( 1,ts); 1265 hChild->setText( 1,ts);
1266 hChild->setData( (DWORD) mfChild.m_lpDispatch ); 1266 hChild->setData( (DWORD) mfChild.m_lpDispatch );
1267 mfChild.m_lpDispatch->AddRef(); 1267 mfChild.m_lpDispatch->AddRef();
1268 addFolder(hChild, mfChild.m_lpDispatch); 1268 addFolder(hChild, mfChild.m_lpDispatch);
1269 } 1269 }
1270} 1270}
1271 1271
1272void KAImportOLdialog::slotApply() 1272void KAImportOLdialog::slotApply()
1273{ 1273{
1274 importedItems = 0; 1274 importedItems = 0;
1275 OLEListViewItem* child = (OLEListViewItem*) mListView->firstChild(); 1275 OLEListViewItem* child = (OLEListViewItem*) mListView->firstChild();
1276 while ( child ) { 1276 while ( child ) {
1277 if ( child->isOn() ) { 1277 if ( child->isOn() ) {
1278 readContactData( child->data() ); 1278 readContactData( child->data() );
1279 if ( mSyncMode ) { 1279 if ( mSyncMode ) {
1280 mSelectedFolderID = child->dataID(); 1280 mSelectedFolderID = child->dataID();
1281 accept(); 1281 accept();
1282 return; 1282 return;
1283 } 1283 }
1284 } 1284 }
1285 child = (OLEListViewItem*) child->itemBelow(); 1285 child = (OLEListViewItem*) child->itemBelow();
1286 } 1286 }
1287 QString mes = i18n("Importing complete.\n\n%1 items imported.").arg( importedItems); 1287 QString mes = i18n("Importing complete.\n\n%1 items imported.").arg( importedItems);
1288 KMessageBox::information(this,mes); 1288 KMessageBox::information(this,mes);
1289} 1289}
1290void KAImportOLdialog::readContactData( DWORD folder ) 1290void KAImportOLdialog::readContactData( DWORD folder )
1291{ 1291{
1292 1292
1293 LPDISPATCH dispItem = (LPDISPATCH)folder; 1293 LPDISPATCH dispItem = (LPDISPATCH)folder;
1294 dispItem->AddRef(); 1294 dispItem->AddRef();
1295 MAPIFolder mf(dispItem); 1295 MAPIFolder mf(dispItem);
1296 mf.m_lpDispatch->AddRef(); 1296 mf.m_lpDispatch->AddRef();
1297 _Items folderItems; 1297 _Items folderItems;
1298 _variant_t indx((long)0); 1298 _variant_t indx((long)0);
1299 LPDISPATCH itm; 1299 LPDISPATCH itm;
1300 int i; 1300 int i;
1301 folderItems = mf.GetItems(); 1301 folderItems = mf.GetItems();
1302 QString cap = i18n("Importing contact data"); 1302 QString cap = i18n("Importing contact data");
1303 if ( mSyncMode ) { 1303 if ( mSyncMode ) {
1304 cap = i18n("Reading contact data..."); 1304 cap = i18n("Reading contact data...");
1305 } 1305 }
1306 QProgressDialog bar( cap,i18n("Abort"), folderItems.GetCount(),this); 1306 Q3ProgressDialog bar( cap,i18n("Abort"), folderItems.GetCount(),this);
1307 bar.setCaption (i18n("Accessing OL") ); 1307 bar.setCaption (i18n("Accessing OL") );
1308 int h = bar.sizeHint().height() ; 1308 int h = bar.sizeHint().height() ;
1309 int w = 300; 1309 int w = 300;
1310 int dw = QApplication::desktop()->width(); 1310 int dw = QApplication::desktop()->width();
1311 int dh = QApplication::desktop()->height(); 1311 int dh = QApplication::desktop()->height();
1312 //bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 1312 //bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
1313 bar.show(); 1313 bar.show();
1314 for(i=1; i <= folderItems.GetCount(); ++i) 1314 for(i=1; i <= folderItems.GetCount(); ++i)
1315 { 1315 {
1316 qApp->processEvents(); 1316 qApp->processEvents();
1317 if ( ! bar.isVisible() ) 1317 if ( ! bar.isVisible() )
1318 return ; 1318 return ;
1319 bar.setProgress( i ); 1319 bar.setProgress( i );
1320 indx = (long)i; 1320 indx = (long)i;
1321 itm = folderItems.Item(indx.Detach()); 1321 itm = folderItems.Item(indx.Detach());
1322 _ContactItem * pItem = (_ContactItem *)&itm; 1322 _ContactItem * pItem = (_ContactItem *)&itm;
1323 if ( addAddressee( ol2kapiContact( pItem, mSyncMode ) )) 1323 if ( addAddressee( ol2kapiContact( pItem, mSyncMode ) ))
1324 ++importedItems; 1324 ++importedItems;
1325 itm->Release(); 1325 itm->Release();
1326 } 1326 }
1327} 1327}
1328void KAImportOLdialog::slotOk() 1328void KAImportOLdialog::slotOk()
1329{ 1329{
1330 QDialog::accept(); 1330 QDialog::accept();
1331} 1331}
1332 1332
1333KABC::Addressee KAImportOLdialog::ol2kapiContact( _ContactItem * aItem , bool syncMode) 1333KABC::Addressee KAImportOLdialog::ol2kapiContact( _ContactItem * aItem , bool syncMode)
1334{ 1334{
1335 KABC::Addressee addressee; 1335 KABC::Addressee addressee;
1336 1336
1337 addressee.setUid( QString::fromUcs2(aItem->GetEntryID().GetBuffer())); 1337 addressee.setUid( QString::fromUcs2(aItem->GetEntryID().GetBuffer()));
1338 //GetLastModificationTime() 1338 //GetLastModificationTime()
1339 //addressee.setName( const QString &name ); 1339 //addressee.setName( const QString &name );
1340 addressee.setFormattedName( QString::fromUcs2(aItem->GetFileAs().GetBuffer()) ); 1340 addressee.setFormattedName( QString::fromUcs2(aItem->GetFileAs().GetBuffer()) );
1341 addressee.setFamilyName( QString::fromUcs2(aItem->GetLastName().GetBuffer()) ); 1341 addressee.setFamilyName( QString::fromUcs2(aItem->GetLastName().GetBuffer()) );
1342 addressee.setGivenName( QString::fromUcs2(aItem->GetFirstName().GetBuffer()) ); 1342 addressee.setGivenName( QString::fromUcs2(aItem->GetFirstName().GetBuffer()) );
1343 addressee.setAdditionalName( QString::fromUcs2(aItem->GetMiddleName().GetBuffer()) ); 1343 addressee.setAdditionalName( QString::fromUcs2(aItem->GetMiddleName().GetBuffer()) );
1344 addressee.setPrefix(QString::fromUcs2(aItem->GetTitle().GetBuffer()) ); 1344 addressee.setPrefix(QString::fromUcs2(aItem->GetTitle().GetBuffer()) );
1345 addressee.setSuffix( QString::fromUcs2(aItem->GetSuffix().GetBuffer()) ); 1345 addressee.setSuffix( QString::fromUcs2(aItem->GetSuffix().GetBuffer()) );
1346 addressee.setNickName( QString::fromUcs2(aItem->GetNickName().GetBuffer()) ); 1346 addressee.setNickName( QString::fromUcs2(aItem->GetNickName().GetBuffer()) );
1347 QDateTime dtb = mDdate2Qdtr(aItem->GetBirthday()); 1347 QDateTime dtb = mDdate2Qdtr(aItem->GetBirthday());
1348 if ( dtb.isValid() ) 1348 if ( dtb.isValid() )
1349 addressee.setBirthday( mDdate2Qdtr(aItem->GetBirthday())); 1349 addressee.setBirthday( mDdate2Qdtr(aItem->GetBirthday()));
1350 1350
1351 //QString::fromUcs2(aItem->.GetBuffer()) 1351 //QString::fromUcs2(aItem->.GetBuffer())
1352 //addressee.setMailer( const QString &mailer ); 1352 //addressee.setMailer( const QString &mailer );
1353 //addressee.setTimeZone( const TimeZone &timeZone ); 1353 //addressee.setTimeZone( const TimeZone &timeZone );
1354 //addressee.setGeo( const Geo &geo ); 1354 //addressee.setGeo( const Geo &geo );