summaryrefslogtreecommitdiffabout
path: root/korganizer/koimportoldialog.cpp
Side-by-side diff
Diffstat (limited to 'korganizer/koimportoldialog.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/koimportoldialog.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/korganizer/koimportoldialog.cpp b/korganizer/koimportoldialog.cpp
index 16f2eca..0a3c2d5 100644
--- a/korganizer/koimportoldialog.cpp
+++ b/korganizer/koimportoldialog.cpp
@@ -394,84 +394,92 @@ void KOImportOLdialog::ol2kopiCalendar( _AppointmentItem * aItem, bool computeRe
mf.m_lpDispatch->AddRef();
_variant_t indx((long)0);
LPDISPATCH itm;
int i;
QString optAtt = QString::fromUcs2( aItem->GetOptionalAttendees().GetBuffer());
QString reqAtt = QString::fromUcs2( aItem->GetRequiredAttendees().GetBuffer());
//GetRequiredAttendees()
for(i=1; i <= mf.GetCount(); ++i) {
indx = (long)i;
itm = mf.Item( indx.Detach() );
Recipient * pItem = (Recipient *)&itm;
//a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ;
QString name = QString::fromUcs2( pItem->GetName().GetBuffer());
KCal::Attendee::PartStat stat;
bool rsvp = false;
switch ( pItem->GetMeetingResponseStatus() ) {
case 0: //not answered
rsvp = true;
case 5: //not answered
stat = Attendee::NeedsAction;
break;
case 1: //organizer
stat = Attendee::Delegated ;
break;
case 2: //tentative
stat = Attendee::Tentative ;
break;
case 3: //accepted
stat = Attendee::Accepted;
break;
case 4: //declined
stat =Attendee::Declined ;
break;
default:
stat = Attendee::NeedsAction ;
}
KCal::Attendee::Role role;
if ( event->organizer() == name )
role = KCal::Attendee::Chair;
else if ( reqAtt.find( name ) >= 0 )
role = KCal::Attendee::ReqParticipant;
else if ( optAtt.find( name ) >= 0 )
role = KCal::Attendee::OptParticipant;
else
role = KCal::Attendee::NonParticipant;
QString mail = QString::fromUcs2(pItem->GetAddress().GetBuffer());
- if( mail.isEmpty() && name.find("@") > 0 )
- mail = name;
+ if( mail.isEmpty() && name.find("@") > 0 ) {
+ int kl = name.find("<");
+ int gr = name.find(">");
+ if ( kl >= 0 && gr >= 0) {
+ mail = name.mid (kl+1, gr - kl -1);
+ name = name.left( kl );
+ }
+ else
+ mail = name;
+ }
mail = mail.stripWhiteSpace();
QString uid = getUidByEmail( mail );
//uid = QString::fromUcs2( pItem->GetEntryID().GetBuffer());
KCal::Attendee * a = new KCal::Attendee( name, mail,rsvp,stat,role,uid) ;
event->addAttendee( a , false );
itm->Release();
}
if ( !mCalendar->addEventNoDup( event ))
delete event;
else {
// QString mes = i18n("Importing %1.\n date: %2 date: %3").arg( event->summary()).arg( event->dtStart().toString()).arg( event->dtEnd().toString());
//KMessageBox::information(this,mes);
++importedItems;
}
}
void KOImportOLdialog::slotCancel()
{
reject();
}
QString KOImportOLdialog::getUidByEmail( QString email )
{
KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true );
KABC::AddressBook::Iterator it;
for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) {
QStringList em = (*it).emails();
if ( em.contains( email ))
return (*it).uid();
}
return "";
}