summaryrefslogtreecommitdiffabout
path: root/korganizer
authorzautrix <zautrix>2005-07-26 19:03:31 (UTC)
committer zautrix <zautrix>2005-07-26 19:03:31 (UTC)
commitc7b8804b49e463d42f0bd5aec4b638187190417a (patch) (unidiff)
tree2941cd5b9df04c96cc18800acf5df9d320c167d8 /korganizer
parentd0fe94073aa3209532952c944b41bccfb4341a8d (diff)
downloadkdepimpi-c7b8804b49e463d42f0bd5aec4b638187190417a.zip
kdepimpi-c7b8804b49e463d42f0bd5aec4b638187190417a.tar.gz
kdepimpi-c7b8804b49e463d42f0bd5aec4b638187190417a.tar.bz2
ol fix
Diffstat (limited to 'korganizer') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/koimportoldialog.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/korganizer/koimportoldialog.cpp b/korganizer/koimportoldialog.cpp
index 2af436c..79b97e8 100644
--- a/korganizer/koimportoldialog.cpp
+++ b/korganizer/koimportoldialog.cpp
@@ -1,488 +1,488 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23 23
24#include <qtooltip.h> 24#include <qtooltip.h>
25#include <qframe.h> 25#include <qframe.h>
26#include <qpixmap.h> 26#include <qpixmap.h>
27#include <qlayout.h> 27#include <qlayout.h>
28#include <qprogressbar.h> 28#include <qprogressbar.h>
29#include <qprogressdialog.h> 29#include <qprogressdialog.h>
30#include <qwidgetstack.h> 30#include <qwidgetstack.h>
31#include <qdatetime.h> 31#include <qdatetime.h>
32#include <qdir.h> 32#include <qdir.h>
33#include <qapplication.h> 33#include <qapplication.h>
34#include <qhbox.h> 34#include <qhbox.h>
35#include <qregexp.h> 35#include <qregexp.h>
36#include <qheader.h> 36#include <qheader.h>
37#include <qdatetime.h> 37#include <qdatetime.h>
38#include <qlistview.h> 38#include <qlistview.h>
39 39
40#include <kdebug.h> 40#include <kdebug.h>
41#include <klocale.h> 41#include <klocale.h>
42#include <kstandarddirs.h> 42#include <kstandarddirs.h>
43#include <kmessagebox.h> 43#include <kmessagebox.h>
44#include <kfiledialog.h> 44#include <kfiledialog.h>
45 45
46#include <libkdepim/categoryselectdialog.h> 46#include <libkdepim/categoryselectdialog.h>
47#include <libkdepim/kinputdialog.h> 47#include <libkdepim/kinputdialog.h>
48 48
49#include <libkcal/calendarlocal.h> 49#include <libkcal/calendarlocal.h>
50#include <libkcal/icalformat.h> 50#include <libkcal/icalformat.h>
51#include <kabc/stdaddressbook.h> 51#include <kabc/stdaddressbook.h>
52 52
53#include "koprefs.h" 53#include "koprefs.h"
54#include "koglobals.h" 54#include "koglobals.h"
55 55
56#include "koimportoldialog.h" 56#include "koimportoldialog.h"
57 57
58#include "../outport/msoutl9.h" 58#include "../outport/msoutl9.h"
59#include <ole2.h> 59#include <ole2.h>
60#include <comutil.h> 60#include <comutil.h>
61_Application gOlApp; 61_Application gOlApp;
62 62
63QDateTime mDdate2Qdtr( DATE dt) 63QDateTime mDdate2Qdtr( DATE dt)
64{ 64{
65 COleDateTime odt; 65 COleDateTime odt;
66 SYSTEMTIME st; 66 SYSTEMTIME st;
67 odt = dt; 67 odt = dt;
68 odt.GetAsSystemTime(st); 68 odt.GetAsSystemTime(st);
69 QDateTime qdt (QDate(st.wYear, st.wMonth,st.wDay ),QTime( st.wHour, st.wMinute,st.wSecond ) ); 69 QDateTime qdt (QDate(st.wYear, st.wMonth,st.wDay ),QTime( st.wHour, st.wMinute,st.wSecond ) );
70 return qdt; 70 return qdt;
71} 71}
72 72
73class OLEListViewItem : public QCheckListItem 73class OLEListViewItem : public QCheckListItem
74{ 74{
75 public: 75 public:
76 OLEListViewItem( QListView *parent, QString text ) : 76 OLEListViewItem( QListView *parent, QString text ) :
77 QCheckListItem( parent, text, QCheckListItem::CheckBox ) { mData = 0; }; 77 QCheckListItem( parent, text, QCheckListItem::CheckBox ) { mData = 0; };
78 OLEListViewItem( QListViewItem *after, QString text ) : 78 OLEListViewItem( QListViewItem *after, QString text ) :
79 QCheckListItem( after, text, QCheckListItem::CheckBox ) { mData = 0; }; 79 QCheckListItem( after, text, QCheckListItem::CheckBox ) { mData = 0; };
80 ~OLEListViewItem() {}; 80 ~OLEListViewItem() {};
81 void setData( DWORD data ) {mData= data; }; 81 void setData( DWORD data ) {mData= data; };
82 DWORD data() { return mData ;}; 82 DWORD data() { return mData ;};
83 private: 83 private:
84 DWORD mData; 84 DWORD mData;
85}; 85};
86 86
87KOImportOLdialog::KOImportOLdialog( const QString &caption, 87KOImportOLdialog::KOImportOLdialog( const QString &caption,
88 Calendar *calendar, QWidget *parent ) : 88 Calendar *calendar, QWidget *parent ) :
89 KDialogBase( Plain, caption, User1 | Close, Ok, 89 KDialogBase( Plain, caption, User1 | Close, Ok,
90 parent, caption, true, false, i18n("Import!") ) 90 parent, caption, true, false, i18n("Import!") )
91{ 91{
92 QHBox * mw = new QHBox( this ); 92 QHBox * mw = new QHBox( this );
93 setMainWidget( mw ); 93 setMainWidget( mw );
94 mListView = new QListView( mw ); 94 mListView = new QListView( mw );
95 mListView->addColumn(i18n("Select Folder to import")); 95 mListView->addColumn(i18n("Select Folder to import"));
96 mListView->addColumn(i18n("Content Type")); 96 mListView->addColumn(i18n("Content Type"));
97 mCalendar = calendar; 97 mCalendar = calendar;
98 connect( this, SIGNAL( user1Clicked() ),SLOT ( slotApply())); 98 connect( this, SIGNAL( user1Clicked() ),SLOT ( slotApply()));
99 setupFolderView(); 99 setupFolderView();
100 resize( sizeHint().width()+50, sizeHint().height()+50 ); 100 resize( sizeHint().width()+50, sizeHint().height()+50 );
101} 101}
102 102
103KOImportOLdialog::~KOImportOLdialog() 103KOImportOLdialog::~KOImportOLdialog()
104{ 104{
105 105
106} 106}
107 107
108 108
109void KOImportOLdialog::setupFolderView() 109void KOImportOLdialog::setupFolderView()
110{ 110{
111 SCODE sc = ::OleInitialize(NULL); 111 SCODE sc = ::OleInitialize(NULL);
112 if ( FAILED ( sc ) ) { 112 if ( FAILED ( sc ) ) {
113 KMessageBox::information(this,"OLE initialisation failed"); 113 KMessageBox::information(this,"OLE initialisation failed");
114 return; 114 return;
115 } 115 }
116 116
117 if(!gOlApp.CreateDispatch(_T("Outlook.Application"),NULL)){ 117 if(!gOlApp.CreateDispatch(_T("Outlook.Application"),NULL)){
118 KMessageBox::information(this,"Sorry, cannot access Outlook"); 118 KMessageBox::information(this,"Sorry, cannot access Outlook");
119 return ; 119 return ;
120 } 120 }
121 MAPIFolder mfInbox; 121 MAPIFolder mfInbox;
122 MAPIFolder mfRoot; 122 MAPIFolder mfRoot;
123 CString szName; 123 CString szName;
124 _NameSpace olNS; 124 _NameSpace olNS;
125 olNS = gOlApp.GetNamespace(_T("MAPI")); 125 olNS = gOlApp.GetNamespace(_T("MAPI"));
126 mfInbox = olNS.GetDefaultFolder(6); 126 mfInbox = olNS.GetDefaultFolder(6);
127 mfRoot = mfInbox.GetParent(); 127 mfRoot = mfInbox.GetParent();
128 szName = mfRoot.GetName(); 128 szName = mfRoot.GetName();
129 long iType = mfRoot.GetDefaultItemType(); 129 long iType = mfRoot.GetDefaultItemType();
130 QString mes; 130 QString mes;
131 mes = QString::fromUcs2( szName.GetBuffer() ); 131 mes = QString::fromUcs2( szName.GetBuffer() );
132 OLEListViewItem * root = new OLEListViewItem( mListView, mes ); 132 OLEListViewItem * root = new OLEListViewItem( mListView, mes );
133 mfRoot.m_lpDispatch->AddRef(); 133 mfRoot.m_lpDispatch->AddRef();
134 addFolder( root, mfRoot.m_lpDispatch ); 134 addFolder( root, mfRoot.m_lpDispatch );
135 root->setOpen( true ); 135 root->setOpen( true );
136 mListView->setSortColumn( 0 ); 136 mListView->setSortColumn( 0 );
137 mListView->sort( ); 137 mListView->sort( );
138} 138}
139 139
140 140
141void KOImportOLdialog::addFolder(OLEListViewItem* iParent, LPDISPATCH dispParent) 141void KOImportOLdialog::addFolder(OLEListViewItem* iParent, LPDISPATCH dispParent)
142{ 142{
143 MAPIFolder mfParent(dispParent), mfChild; 143 MAPIFolder mfParent(dispParent), mfChild;
144 _Folders folders; 144 _Folders folders;
145 _variant_t fndx((long)0); 145 _variant_t fndx((long)0);
146 CString szName; 146 CString szName;
147 long iType; 147 long iType;
148 OLEListViewItem* hChild; 148 OLEListViewItem* hChild;
149 149
150 folders = mfParent.GetFolders(); 150 folders = mfParent.GetFolders();
151 for(int i=1; i <= folders.GetCount(); ++i) 151 for(int i=1; i <= folders.GetCount(); ++i)
152 { 152 {
153 fndx = (long)i; 153 fndx = (long)i;
154 mfChild = folders.Item(fndx.Detach()); 154 mfChild = folders.Item(fndx.Detach());
155 mfChild.m_lpDispatch->AddRef(); 155 mfChild.m_lpDispatch->AddRef();
156 szName = mfChild.GetName(); 156 szName = mfChild.GetName();
157 iType = mfChild.GetDefaultItemType(); 157 iType = mfChild.GetDefaultItemType();
158 hChild = new OLEListViewItem( iParent , QString::fromUcs2( szName.GetBuffer() ) ); 158 hChild = new OLEListViewItem( iParent , QString::fromUcs2( szName.GetBuffer() ) );
159 if ( iType != 1) 159 if ( iType != 1)
160 hChild->setEnabled( false ); 160 hChild->setEnabled( false );
161 QString ts; 161 QString ts;
162 switch( iType ) { 162 switch( iType ) {
163 case 0: 163 case 0:
164 ts = i18n("Mail"); 164 ts = i18n("Mail");
165 break; 165 break;
166 case 1: 166 case 1:
167 ts = i18n("Calendar"); 167 ts = i18n("Calendar");
168 break; 168 break;
169 case 2: 169 case 2:
170 ts = i18n("Contacts"); 170 ts = i18n("Contacts");
171 break; 171 break;
172 case 3: 172 case 3:
173 ts = i18n("Todos"); 173 ts = i18n("Todos");
174 break; 174 break;
175 case 4: 175 case 4:
176 ts = i18n("Journals"); 176 ts = i18n("Journals");
177 break; 177 break;
178 case 5: 178 case 5:
179 ts = i18n("Notes"); 179 ts = i18n("Notes");
180 break; 180 break;
181 default: 181 default:
182 ts = i18n("Unknown"); 182 ts = i18n("Unknown");
183 } 183 }
184 hChild->setText( 1,ts); 184 hChild->setText( 1,ts);
185 hChild->setData( (DWORD) mfChild.m_lpDispatch ); 185 hChild->setData( (DWORD) mfChild.m_lpDispatch );
186 mfChild.m_lpDispatch->AddRef(); 186 mfChild.m_lpDispatch->AddRef();
187 addFolder(hChild, mfChild.m_lpDispatch); 187 addFolder(hChild, mfChild.m_lpDispatch);
188 } 188 }
189} 189}
190 190
191void KOImportOLdialog::slotApply() 191void KOImportOLdialog::slotApply()
192{ 192{
193 importedItems = 0; 193 importedItems = 0;
194 OLEListViewItem* child = (OLEListViewItem*) mListView->firstChild(); 194 OLEListViewItem* child = (OLEListViewItem*) mListView->firstChild();
195 while ( child ) { 195 while ( child ) {
196 if ( child->isOn()&& child->data() ) 196 if ( child->isOn()&& child->data() )
197 readCalendarData( child->data() ); 197 readCalendarData( child->data() );
198 child = (OLEListViewItem*) child->itemBelow(); 198 child = (OLEListViewItem*) child->itemBelow();
199 } 199 }
200 QString mes = i18n("Importing complete.\n\n%1 items imported.").arg( importedItems); 200 QString mes = i18n("Importing complete.\n\n%1 items imported.").arg( importedItems);
201 KMessageBox::information(this,mes); 201 KMessageBox::information(this,mes);
202} 202}
203void KOImportOLdialog::readCalendarData( DWORD folder ) 203void KOImportOLdialog::readCalendarData( DWORD folder )
204{ 204{
205 205
206 LPDISPATCH dispItem = (LPDISPATCH)folder; 206 LPDISPATCH dispItem = (LPDISPATCH)folder;
207 dispItem->AddRef(); 207 dispItem->AddRef();
208 MAPIFolder mf(dispItem); 208 MAPIFolder mf(dispItem);
209 mf.m_lpDispatch->AddRef(); 209 mf.m_lpDispatch->AddRef();
210 _Items folderItems; 210 _Items folderItems;
211 _variant_t indx((long)0); 211 _variant_t indx((long)0);
212 LPDISPATCH itm; 212 LPDISPATCH itm;
213 int i; 213 int i;
214 folderItems = mf.GetItems(); 214 folderItems = mf.GetItems();
215 QProgressDialog bar( i18n("Importing calendar data"),i18n("Abort"), folderItems.GetCount(),this ); 215 QProgressDialog bar( i18n("Importing calendar data"),i18n("Abort"), folderItems.GetCount(),this );
216 bar.setCaption (i18n("Importing!") ); 216 bar.setCaption (i18n("Importing!") );
217 int h = bar.sizeHint().height() ; 217 int h = bar.sizeHint().height() ;
218 int w = 300; 218 int w = 300;
219 int dw = QApplication::desktop()->width(); 219 int dw = QApplication::desktop()->width();
220 int dh = QApplication::desktop()->height(); 220 int dh = QApplication::desktop()->height();
221 //bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 221 //bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
222 bar.show(); 222 bar.show();
223 for(i=1; i <= folderItems.GetCount(); ++i) 223 for(i=1; i <= folderItems.GetCount(); ++i)
224 { 224 {
225 qApp->processEvents(); 225 qApp->processEvents();
226 if ( ! bar.isVisible() ) 226 if ( ! bar.isVisible() )
227 return ; 227 return ;
228 bar.setProgress( i ); 228 bar.setProgress( i );
229 bar.raise(); 229 bar.raise();
230 indx = (long)i; 230 indx = (long)i;
231 itm = folderItems.Item(indx.Detach()); 231 itm = folderItems.Item(indx.Detach());
232 _AppointmentItem * pItem = (_AppointmentItem *)&itm; 232 _AppointmentItem * pItem = (_AppointmentItem *)&itm;
233 ol2kopiCalendar( pItem ); 233 ol2kopiCalendar( pItem );
234 itm->Release(); 234 itm->Release();
235 } 235 }
236} 236}
237void KOImportOLdialog::slotOk() 237void KOImportOLdialog::slotOk()
238{ 238{
239 QDialog::accept(); 239 QDialog::accept();
240} 240}
241 241
242void KOImportOLdialog::ol2kopiCalendar( _AppointmentItem * aItem, bool computeRecurrence ) 242void KOImportOLdialog::ol2kopiCalendar( _AppointmentItem * aItem, bool computeRecurrence )
243{ 243{
244 KCal::Event* event = new KCal::Event(); 244 KCal::Event* event = new KCal::Event();
245 if ( aItem->GetAllDayEvent() ){ 245 if ( aItem->GetAllDayEvent() ){
246 event->setDtStart( QDateTime( mDdate2Qdtr( aItem->GetStart()).date(),QTime(0,0,0 ) )); 246 event->setDtStart( QDateTime( mDdate2Qdtr( aItem->GetStart()).date(),QTime(0,0,0 ) ));
247 event->setDtEnd( QDateTime( mDdate2Qdtr( aItem->GetEnd()) .date(),QTime(0,0,0 )).addDays(-1)); 247 event->setDtEnd( QDateTime( mDdate2Qdtr( aItem->GetEnd()) .date(),QTime(0,0,0 )).addDays(-1));
248 event->setFloats( true ); 248 event->setFloats( true );
249 } else { 249 } else {
250 event->setDtStart( mDdate2Qdtr( aItem->GetStart()) ); 250 event->setDtStart( mDdate2Qdtr( aItem->GetStart()) );
251 event->setDtEnd( mDdate2Qdtr( aItem->GetEnd()) ); 251 event->setDtEnd( mDdate2Qdtr( aItem->GetEnd()) );
252 event->setFloats( false ); 252 event->setFloats( false );
253 } 253 }
254 event->setSummary( QString::fromUcs2( aItem->GetSubject().GetBuffer()) ); 254 event->setSummary( QString::fromUcs2( aItem->GetSubject().GetBuffer()).stripWhiteSpace() );
255 event->setLocation( QString::fromUcs2( aItem->GetLocation().GetBuffer()) ); 255 event->setLocation( QString::fromUcs2( aItem->GetLocation().GetBuffer()).stripWhiteSpace() );
256 event->setDescription( QString::fromUcs2( aItem->GetBody().GetBuffer()).replace( QRegExp("\\r"), "") ); 256 event->setDescription( QString::fromUcs2( aItem->GetBody().GetBuffer()).replace( QRegExp("\\r"), "").stripWhiteSpace() );
257 QString cat = QString::fromUcs2( aItem->GetCategories().GetBuffer()).replace( QRegExp("; "), ";"); 257 QString cat = QString::fromUcs2( aItem->GetCategories().GetBuffer()).replace( QRegExp("; "), ";");
258 event->setCategories( QStringList::split( ";", cat ) ); 258 event->setCategories( QStringList::split( ";", cat ) );
259 if ( aItem->GetReminderSet() ) { 259 if ( aItem->GetReminderSet() ) {
260 event->clearAlarms(); 260 event->clearAlarms();
261 Alarm* alarm = event->newAlarm(); 261 Alarm* alarm = event->newAlarm();
262 alarm->setStartOffset( -aItem->GetReminderMinutesBeforeStart()*60 ); 262 alarm->setStartOffset( -aItem->GetReminderMinutesBeforeStart()*60 );
263 alarm->setEnabled( true ); 263 alarm->setEnabled( true );
264 if ( aItem->GetReminderPlaySound() ) { 264 if ( aItem->GetReminderPlaySound() ) {
265 alarm->setType( Alarm::Audio ); 265 alarm->setType( Alarm::Audio );
266 alarm->setAudioFile( QString::fromUcs2( aItem->GetReminderSoundFile().GetBuffer())); 266 alarm->setAudioFile( QString::fromUcs2( aItem->GetReminderSoundFile().GetBuffer()));
267 } 267 }
268 else 268 else
269 alarm->setType( Alarm::Display ); 269 alarm->setType( Alarm::Display );
270 alarm->setRepeatCount( aItem->GetReplyTime() ); 270 alarm->setRepeatCount( aItem->GetReplyTime() );
271 } 271 }
272 // OL :pub 0 - pers 1 - priv 2 - conf 3 272 // OL :pub 0 - pers 1 - priv 2 - conf 3
273 // KO : pub 0 - priv 1 - conf 2 273 // KO : pub 0 - priv 1 - conf 2
274 int sec = aItem->GetSensitivity() ; 274 int sec = aItem->GetSensitivity() ;
275 if ( sec > 1 )// mapping pers -> private 275 if ( sec > 1 )// mapping pers -> private
276 --sec; 276 --sec;
277 event->setSecrecy( sec ); 277 event->setSecrecy( sec );
278 if ( aItem->GetBusyStatus() == 0 ) 278 if ( aItem->GetBusyStatus() == 0 )
279 event->setTransparency( Event::Transparent);// OL free 279 event->setTransparency( Event::Transparent);// OL free
280 else 280 else
281 event->setTransparency( Event::Opaque);//OL all other 281 event->setTransparency( Event::Opaque);//OL all other
282 282
283 if ( aItem->GetIsRecurring() && computeRecurrence ) { //recur 283 if ( aItem->GetIsRecurring() && computeRecurrence ) { //recur
284 284
285 RecurrencePattern recpat = aItem->GetRecurrencePattern(); 285 RecurrencePattern recpat = aItem->GetRecurrencePattern();
286 286
287 QDate startDate = mDdate2Qdtr(recpat.GetPatternStartDate()).date(); 287 QDate startDate = mDdate2Qdtr(recpat.GetPatternStartDate()).date();
288 int freq = recpat.GetInterval(); 288 int freq = recpat.GetInterval();
289 289 if ( freq == 0 ) freq = 1;
290 bool hasEndDate = !recpat.GetNoEndDate(); 290 bool hasEndDate = !recpat.GetNoEndDate();
291 QDate endDate = mDdate2Qdtr(recpat.GetPatternEndDate()).date(); 291 QDate endDate = mDdate2Qdtr(recpat.GetPatternEndDate()).date();
292 QBitArray weekDays( 7 ); 292 QBitArray weekDays( 7 );
293 weekDays.fill(false ); 293 weekDays.fill(false );
294 uint weekDaysNum = recpat.GetDayOfWeekMask(); 294 uint weekDaysNum = recpat.GetDayOfWeekMask();
295 int i; 295 int i;
296 int bb = 2; 296 int bb = 2;
297 for( i = 1; i <= 6; ++i ) { 297 for( i = 1; i <= 6; ++i ) {
298 weekDays.setBit( i - 1, ( bb & weekDaysNum )); 298 weekDays.setBit( i - 1, ( bb & weekDaysNum ));
299 bb = 4 << (i-1); 299 bb = 4 << (i-1);
300 //qDebug(" %d bit %d ",i-1,weekDays.at(i-1) ); 300 //qDebug(" %d bit %d ",i-1,weekDays.at(i-1) );
301 } 301 }
302 if ( 1 & weekDaysNum) 302 if ( 1 & weekDaysNum)
303 weekDays.setBit( 6 ); 303 weekDays.setBit( 6 );
304 // int pos = 1;// pending 304 // int pos = 1;// pending
305 305
306 Recurrence *r = event->recurrence(); 306 Recurrence *r = event->recurrence();
307 int rtype = recpat.GetRecurrenceType(); 307 int rtype = recpat.GetRecurrenceType();
308 //recurrence types are: 308 //recurrence types are:
309 /* 309 /*
310 olRecursDaily(0) 310 olRecursDaily(0)
311 olRecursWeekly(1) 311 olRecursWeekly(1)
312 olRecursMonthly(2) 312 olRecursMonthly(2)
313 olRecursMonthNth(3) 313 olRecursMonthNth(3)
314 olRecursYearly(5) 314 olRecursYearly(5)
315 olRecursYearNth(6) 315 olRecursYearNth(6)
316 */ 316 */
317 317
318 int duration = recpat.GetOccurrences(); 318 int duration = recpat.GetOccurrences();
319 if ( !hasEndDate ) 319 if ( !hasEndDate )
320 duration = -1; 320 duration = -1;
321 321
322 //LPDISPATCH RecurrencePattern::GetExceptions() 322 //LPDISPATCH RecurrencePattern::GetExceptions()
323 //long RecurrencePattern::GetMonthOfYear() 323 //long RecurrencePattern::GetMonthOfYear()
324 if ( rtype == 0 ) { 324 if ( rtype == 0 ) {
325 if ( hasEndDate ) r->setDaily( freq, endDate ); 325 if ( hasEndDate ) r->setDaily( freq, endDate );
326 else r->setDaily( freq, duration ); 326 else r->setDaily( freq, duration );
327 } else if ( rtype == 1 ) { 327 } else if ( rtype == 1 ) {
328 if ( hasEndDate ) r->setWeekly( freq, weekDays, endDate ); 328 if ( hasEndDate ) r->setWeekly( freq, weekDays, endDate );
329 else r->setWeekly( freq, weekDays, duration ); 329 else r->setWeekly( freq, weekDays, duration );
330 } else if ( rtype == 2 ) { 330 } else if ( rtype == 2 ) {
331 if ( hasEndDate ) 331 if ( hasEndDate )
332 r->setMonthly( Recurrence::rMonthlyDay, freq, endDate ); 332 r->setMonthly( Recurrence::rMonthlyDay, freq, endDate );
333 else 333 else
334 r->setMonthly( Recurrence::rMonthlyDay, freq, duration ); 334 r->setMonthly( Recurrence::rMonthlyDay, freq, duration );
335 //r->addMonthlyDay( startDate.day() ); 335 //r->addMonthlyDay( startDate.day() );
336 r->addMonthlyDay( recpat.GetDayOfMonth() ); 336 r->addMonthlyDay( recpat.GetDayOfMonth() );
337 } else if ( rtype == 3 ) { 337 } else if ( rtype == 3 ) {
338 if ( hasEndDate ) 338 if ( hasEndDate )
339 r->setMonthly( Recurrence::rMonthlyPos, freq, endDate ); 339 r->setMonthly( Recurrence::rMonthlyPos, freq, endDate );
340 else 340 else
341 r->setMonthly( Recurrence::rMonthlyPos, freq, duration ); 341 r->setMonthly( Recurrence::rMonthlyPos, freq, duration );
342 QBitArray days( 7 ); 342 QBitArray days( 7 );
343 days.fill( false ); 343 days.fill( false );
344 days.setBit( startDate.dayOfWeek() - 1 ); 344 days.setBit( startDate.dayOfWeek() - 1 );
345 int pos = (startDate.day()/7)+1; 345 int pos = (startDate.day()/7)+1;
346 r->addMonthlyPos( pos, days ); 346 r->addMonthlyPos( pos, days );
347 //QString mes = i18n("Importing monthlypos.\n\npos: %1 , day: %2").arg( pos).arg( startDate.dayOfWeek() - 1); 347 //QString mes = i18n("Importing monthlypos.\n\npos: %1 , day: %2").arg( pos).arg( startDate.dayOfWeek() - 1);
348 //KMessageBox::information(this,mes); 348 //KMessageBox::information(this,mes);
349 } else if ( rtype == 5 ) { 349 } else if ( rtype == 5 ) {
350 freq = 1; 350 freq = 1;
351 if ( hasEndDate ) 351 if ( hasEndDate )
352 r->setYearly( Recurrence::rYearlyMonth, freq, endDate ); 352 r->setYearly( Recurrence::rYearlyMonth, freq, endDate );
353 else 353 else
354 r->setYearly( Recurrence::rYearlyMonth, freq, duration ); 354 r->setYearly( Recurrence::rYearlyMonth, freq, duration );
355 r->addYearlyNum( startDate.month() ); 355 r->addYearlyNum( startDate.month() );
356 } else if ( true /*rtype == 6*/ ) { 356 } else if ( true /*rtype == 6*/ ) {
357 // KOganizer cannot handle this in the GUI 357 // KOganizer cannot handle this in the GUI
358 // we are mapping this to monthly - every 12. month 358 // we are mapping this to monthly - every 12. month
359 freq = 12; 359 freq = 12;
360 if ( hasEndDate ) 360 if ( hasEndDate )
361 r->setMonthly( Recurrence::rMonthlyPos, freq, endDate ); 361 r->setMonthly( Recurrence::rMonthlyPos, freq, endDate );
362 else 362 else
363 r->setMonthly( Recurrence::rMonthlyPos, freq, duration ); 363 r->setMonthly( Recurrence::rMonthlyPos, freq, duration );
364 QBitArray days( 7 ); 364 QBitArray days( 7 );
365 days.fill( false ); 365 days.fill( false );
366 days.setBit( startDate.dayOfWeek() - 1 ); 366 days.setBit( startDate.dayOfWeek() - 1 );
367 int pos = (startDate.day()/7)+1; 367 int pos = (startDate.day()/7)+1;
368 r->addMonthlyPos( pos, days ); 368 r->addMonthlyPos( pos, days );
369 } 369 }
370 // recurrence exceptions 370 // recurrence exceptions
371 LPDISPATCH dispItem = recpat.GetExceptions(); 371 LPDISPATCH dispItem = recpat.GetExceptions();
372 dispItem->AddRef(); 372 dispItem->AddRef();
373 Exceptions ex(dispItem); 373 Exceptions ex(dispItem);
374 _variant_t indx((long)0); 374 _variant_t indx((long)0);
375 LPDISPATCH itm; 375 LPDISPATCH itm;
376 for(i=1; i <= ex.GetCount(); ++i) { 376 for(i=1; i <= ex.GetCount(); ++i) {
377 indx = (long)i; 377 indx = (long)i;
378 itm = ex.Item( indx.Detach() ); 378 itm = ex.Item( indx.Detach() );
379 ::Exception * pItem = (::Exception *)&itm; 379 ::Exception * pItem = (::Exception *)&itm;
380 event->addExDate( QDateTime( mDdate2Qdtr( pItem->GetOriginalDate())).date() ); 380 event->addExDate( QDateTime( mDdate2Qdtr( pItem->GetOriginalDate())).date() );
381 if ( !pItem->GetDeleted() ) { 381 if ( !pItem->GetDeleted() ) {
382 LPDISPATCH appIt = pItem->GetAppointmentItem(); 382 LPDISPATCH appIt = pItem->GetAppointmentItem();
383 _AppointmentItem * paItem = (_AppointmentItem *)&appIt; 383 _AppointmentItem * paItem = (_AppointmentItem *)&appIt;
384 ol2kopiCalendar( paItem, false ); 384 ol2kopiCalendar( paItem, false );
385 } 385 }
386 itm->Release(); 386 itm->Release();
387 } 387 }
388 } 388 }
389 // recurrence ENTE 389 // recurrence ENTE
390 event->setOrganizer( QString::fromUcs2( aItem->GetOrganizer().GetBuffer())); 390 event->setOrganizer( QString::fromUcs2( aItem->GetOrganizer().GetBuffer()));
391 391
392 //GetOptionalAttendees() 392 //GetOptionalAttendees()
393 //GetRequiredAttendees() 393 //GetRequiredAttendees()
394 LPDISPATCH dispItem = aItem->GetRecipients(); 394 LPDISPATCH dispItem = aItem->GetRecipients();
395 dispItem->AddRef(); 395 dispItem->AddRef();
396 _Folders mf(dispItem); 396 _Folders mf(dispItem);
397 mf.m_lpDispatch->AddRef(); 397 mf.m_lpDispatch->AddRef();
398 _variant_t indx((long)0); 398 _variant_t indx((long)0);
399 LPDISPATCH itm; 399 LPDISPATCH itm;
400 int i; 400 int i;
401 QString optAtt = QString::fromUcs2( aItem->GetOptionalAttendees().GetBuffer()); 401 QString optAtt = QString::fromUcs2( aItem->GetOptionalAttendees().GetBuffer());
402 QString reqAtt = QString::fromUcs2( aItem->GetRequiredAttendees().GetBuffer()); 402 QString reqAtt = QString::fromUcs2( aItem->GetRequiredAttendees().GetBuffer());
403 //GetRequiredAttendees() 403 //GetRequiredAttendees()
404 for(i=1; i <= mf.GetCount(); ++i) { 404 for(i=1; i <= mf.GetCount(); ++i) {
405 indx = (long)i; 405 indx = (long)i;
406 itm = mf.Item( indx.Detach() ); 406 itm = mf.Item( indx.Detach() );
407 Recipient * pItem = (Recipient *)&itm; 407 Recipient * pItem = (Recipient *)&itm;
408 408
409 //a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ; 409 //a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ;
410 QString name = QString::fromUcs2( pItem->GetName().GetBuffer()); 410 QString name = QString::fromUcs2( pItem->GetName().GetBuffer());
411 KCal::Attendee::PartStat stat; 411 KCal::Attendee::PartStat stat;
412 bool rsvp = false; 412 bool rsvp = false;
413 switch ( pItem->GetMeetingResponseStatus() ) { 413 switch ( pItem->GetMeetingResponseStatus() ) {
414 case 0: //not answered 414 case 0: //not answered
415 rsvp = true; 415 rsvp = true;
416 case 5: //not answered 416 case 5: //not answered
417 stat = Attendee::NeedsAction; 417 stat = Attendee::NeedsAction;
418 break; 418 break;
419 case 1: //organizer 419 case 1: //organizer
420 stat = Attendee::Delegated ; 420 stat = Attendee::Delegated ;
421 break; 421 break;
422 case 2: //tentative 422 case 2: //tentative
423 stat = Attendee::Tentative ; 423 stat = Attendee::Tentative ;
424 break; 424 break;
425 case 3: //accepted 425 case 3: //accepted
426 stat = Attendee::Accepted; 426 stat = Attendee::Accepted;
427 break; 427 break;
428 case 4: //declined 428 case 4: //declined
429 stat =Attendee::Declined ; 429 stat =Attendee::Declined ;
430 break; 430 break;
431 default: 431 default:
432 stat = Attendee::NeedsAction ; 432 stat = Attendee::NeedsAction ;
433 433
434 } 434 }
435 KCal::Attendee::Role role; 435 KCal::Attendee::Role role;
436 if ( event->organizer() == name ) 436 if ( event->organizer() == name )
437 role = KCal::Attendee::Chair; 437 role = KCal::Attendee::Chair;
438 else if ( reqAtt.find( name ) >= 0 ) 438 else if ( reqAtt.find( name ) >= 0 )
439 role = KCal::Attendee::ReqParticipant; 439 role = KCal::Attendee::ReqParticipant;
440 else if ( optAtt.find( name ) >= 0 ) 440 else if ( optAtt.find( name ) >= 0 )
441 role = KCal::Attendee::OptParticipant; 441 role = KCal::Attendee::OptParticipant;
442 else 442 else
443 role = KCal::Attendee::NonParticipant; 443 role = KCal::Attendee::NonParticipant;
444 QString mail = QString::fromUcs2(pItem->GetAddress().GetBuffer()); 444 QString mail = QString::fromUcs2(pItem->GetAddress().GetBuffer());
445 if( mail.isEmpty() && name.find("@") > 0 ) { 445 if( mail.isEmpty() && name.find("@") > 0 ) {
446 int kl = name.find("<"); 446 int kl = name.find("<");
447 int gr = name.find(">"); 447 int gr = name.find(">");
448 if ( kl >= 0 && gr >= 0) { 448 if ( kl >= 0 && gr >= 0) {
449 mail = name.mid (kl+1, gr - kl -1); 449 mail = name.mid (kl+1, gr - kl -1);
450 name = name.left( kl ); 450 name = name.left( kl );
451 } 451 }
452 else 452 else
453 mail = name; 453 mail = name;
454 } 454 }
455 mail = mail.stripWhiteSpace(); 455 mail = mail.stripWhiteSpace();
456 456
457 QString uid = getUidByEmail( mail ); 457 QString uid = getUidByEmail( mail );
458 //uid = QString::fromUcs2( pItem->GetEntryID().GetBuffer()); 458 //uid = QString::fromUcs2( pItem->GetEntryID().GetBuffer());
459 KCal::Attendee * a = new KCal::Attendee( name, mail,rsvp,stat,role,uid) ; 459 KCal::Attendee * a = new KCal::Attendee( name, mail,rsvp,stat,role,uid) ;
460 event->addAttendee( a , false ); 460 event->addAttendee( a , false );
461 itm->Release(); 461 itm->Release();
462 } 462 }
463 463
464 464
465 if ( !mCalendar->addEventNoDup( event )) 465 if ( !mCalendar->addEventNoDup( event ))
466 delete event; 466 delete event;
467 else { 467 else {
468 // QString mes = i18n("Importing %1.\n date: %2 date: %3").arg( event->summary()).arg( event->dtStart().toString()).arg( event->dtEnd().toString()); 468 // QString mes = i18n("Importing %1.\n date: %2 date: %3").arg( event->summary()).arg( event->dtStart().toString()).arg( event->dtEnd().toString());
469 //KMessageBox::information(this,mes); 469 //KMessageBox::information(this,mes);
470 ++importedItems; 470 ++importedItems;
471 } 471 }
472} 472}
473void KOImportOLdialog::slotCancel() 473void KOImportOLdialog::slotCancel()
474{ 474{
475 reject(); 475 reject();
476} 476}
477 477
478QString KOImportOLdialog::getUidByEmail( QString email ) 478QString KOImportOLdialog::getUidByEmail( QString email )
479{ 479{
480 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true ); 480 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true );
481 KABC::AddressBook::Iterator it; 481 KABC::AddressBook::Iterator it;
482 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) { 482 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) {
483 QStringList em = (*it).emails(); 483 QStringList em = (*it).emails();
484 if ( em.contains( email )) 484 if ( em.contains( email ))
485 return (*it).uid(); 485 return (*it).uid();
486 } 486 }
487 return email; 487 return email;
488} 488}