Diffstat (limited to 'korganizer/koeditordetails.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | korganizer/koeditordetails.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/korganizer/koeditordetails.cpp b/korganizer/koeditordetails.cpp index 2e1ae6e..66f6977 100644 --- a/korganizer/koeditordetails.cpp +++ b/korganizer/koeditordetails.cpp @@ -174,259 +174,265 @@ KOEditorDetails::KOEditorDetails (int spacing,QWidget* parent,const char* name) topLayout->addMultiCellWidget(mRoleCombo,5,5,1,2); topLayout->addWidget(statusLabel,5,3); topLayout->addMultiCellWidget(mStatusCombo,5,5,4,5); topLayout->addMultiCellWidget(mAddressBookButton,2,2,4,5); topLayout->addMultiCellWidget(mRsvpButton,2,2,0,1); topLayout->addMultiCellWidget(buttonBox,3,4,5,5); topLayout->setRowStretch(1,5); topLayout->setColStretch(0,0); } // #if 0 // topLayout->setColStretch(2,1); // topLayout->addWidget(statusLabel,3,3); // topLayout->addWidget(mStatusCombo,3,4); // #else // topLayout->addWidget(statusLabel,4,3); // // topLayout->addWidget(mStatusCombo,4,3); // topLayout->addMultiCellWidget(mStatusCombo,4,4,4,5); // #endif // // topLayout->setRowStretch(5,1); // topLayout->addMultiCellWidget(mRsvpButton,5,5,0,1); // topLayout->addMultiCellWidget(buttonBox,2,3,5,5); // topLayout->setRowStretch(1,5); // topLayout->setColStretch(0,0); #ifdef KORG_NOKABC mAddressBookButton->hide(); #endif updateAttendeeInput(); #ifndef DESKTOP_VERSION //US listen for arriving address resultsets connect(ExternalAppHandler::instance(), SIGNAL(receivedNameEmailUidListEvent(const QString&, const QStringList&, const QStringList&, const QStringList&)), this, SLOT(insertAttendees(const QString&, const QStringList&, const QStringList&, const QStringList&))); #endif } KOEditorDetails::~KOEditorDetails() { } void KOEditorDetails::removeAttendee() { AttendeeListItem *aItem = (AttendeeListItem *)mListView->selectedItem(); if (!aItem) return; Attendee *delA = new Attendee(aItem->data()->name(),aItem->data()->email(), aItem->data()->RSVP(),aItem->data()->status(),aItem->data()->role(), aItem->data()->uid()); mdelAttendees.append(delA); delete aItem; updateAttendeeInput(); } void KOEditorDetails::openAddressBook() { #ifndef KORG_NOKABC #ifdef DESKTOP_VERSION KABC::Addressee::List list = KABC::AddresseeDialog::getAddressees(this); uint i=0; for (i=0; i < list.count(); i++) { insertAttendee( new Attendee( list[i].realName(), list[i].preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,list[i].uid()) ); } #else bool res = ExternalAppHandler::instance()->requestNameEmailUidListFromKAPI("QPE/Application/kopi", this->name() /* name is here the unique uid*/); // the result should now arrive through method insertAttendees #endif #if 0 KABC::Addressee a = KABC::AddresseeDialog::getAddressee(this); if (!a.isEmpty()) { insertAttendee( new Attendee( a.realName(), a.preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,a.uid()) ); } #endif #endif } void KOEditorDetails::addNewAttendee() { #if 0 // this is cool. If they didn't enter an email address, // try to look it up in the address book and fill it in for them. if (QString(mEmailEdit->text()).stripWhiteSpace().isEmpty()) { KabAPI addrBook; QString name; std::list<AddressBook::Entry> entries; name = mNameEdit->text(); if (addrBook.init() == AddressBook::NoError) { if (addrBook.getEntryByName(name, entries, 1) == AddressBook::NoError) { kdDebug() << "positive match" << endl; // take first email address if (!entries.front().emails.isEmpty() && entries.front().emails.first().length()>0) mEmailEdit->setText(entries.front().emails.first()); } } } #endif Attendee *a = new Attendee(i18n("(EmptyName)"),i18n("(EmptyEmail)")); insertAttendee(a); } //the map includes name/email pairs, that comes from Ka/Pi void KOEditorDetails::insertAttendees(const QString& uid,const QStringList& nameList,const QStringList& emailList,const QStringList& uidList) { if (uid == this->name()) { for ( int i = 0; i < nameList.count(); i++) { QString _name = nameList[i]; QString _email = emailList[i]; QString _uid = uidList[i]; Attendee *a = new Attendee(_name,_email,false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant, _uid); insertAttendee(a); } } } - void KOEditorDetails::insertAttendee(Attendee *a) { + AttendeeListItem *first = (AttendeeListItem*) mListView->firstChild(); + while (first) { + if ( first->data()->name() == a->name() && first->data()->email() == a->email() ) + return; + first = (AttendeeListItem*) first->nextSibling(); + } + AttendeeListItem *item = new AttendeeListItem(a,mListView); mListView->setSelected( item, true ); } void KOEditorDetails::setDefaults() { mRsvpButton->setChecked(true); mListView->clear(); mdelAttendees.clear(); clearAttendeeInput(); mOrganizerLabel->setText(i18n("Organizer: %1").arg(KOPrefs::instance()->email())); mNameEdit->setText(""); mUidEdit->setText(""); mEmailEdit->setText(""); mRoleCombo->setCurrentItem( 0 ); mStatusCombo->setCurrentItem( 0 ); } void KOEditorDetails::readEvent(Incidence *event) { setDefaults(); //mListView->clear(); //mdelAttendees.clear(); QPtrList<Attendee> tmpAList = event->attendees(); Attendee *a; for (a = tmpAList.first(); a; a = tmpAList.next()) insertAttendee(new Attendee(*a)); mListView->setSelected( mListView->firstChild(), true ); mOrganizerLabel->setText(i18n("Organizer: %1").arg(event->organizer())); } void KOEditorDetails::writeEvent(Incidence *event) { event->clearAttendees(); QListViewItem *item; AttendeeListItem *a; for (item = mListView->firstChild(); item; item = item->nextSibling()) { a = (AttendeeListItem *)item; event->addAttendee(new Attendee(*(a->data()))); } event->setOrganizer(KOPrefs::instance()->email()); } void KOEditorDetails::cancelAttendeeEvent(Incidence *event) { event->clearAttendees(); Attendee * att; for (att=mdelAttendees.first();att;att=mdelAttendees.next()) { event->addAttendee(new Attendee(*att)); } mdelAttendees.clear(); } bool KOEditorDetails::validateInput() { return true; } void KOEditorDetails::updateAttendeeInput() { QListViewItem *item = mListView->selectedItem(); AttendeeListItem *aItem = static_cast<AttendeeListItem *>( item ); if (aItem) { fillAttendeeInput( aItem ); } else { clearAttendeeInput(); } } void KOEditorDetails::clearAttendeeInput() { mNameEdit->setText(""); mUidEdit->setText(""); mEmailEdit->setText(""); mRoleCombo->setCurrentItem(0); mStatusCombo->setCurrentItem(0); mRsvpButton->setChecked(true); setEnabledAttendeeInput( false ); } void KOEditorDetails::fillAttendeeInput( AttendeeListItem *aItem ) { Attendee *a = aItem->data(); mDisableItemUpdate = true; mNameEdit->setText(a->name()); mUidEdit->setText(a->uid()); mEmailEdit->setText(a->email()); mRoleCombo->setCurrentItem(a->role()); mStatusCombo->setCurrentItem(a->status()); mRsvpButton->setChecked(a->RSVP()); mDisableItemUpdate = false; setEnabledAttendeeInput( true ); } void KOEditorDetails::setEnabledAttendeeInput( bool enabled ) { mNameEdit->setEnabled( enabled ); mEmailEdit->setEnabled( enabled ); mRoleCombo->setEnabled( enabled ); mStatusCombo->setEnabled( enabled ); mRsvpButton->setEnabled( enabled ); mRemoveButton->setEnabled( enabled ); } void KOEditorDetails::updateAttendeeItem() { if (mDisableItemUpdate) return; QListViewItem *item = mListView->selectedItem(); AttendeeListItem *aItem = static_cast<AttendeeListItem *>( item ); if ( !aItem ) return; Attendee *a = aItem->data(); a->setName( mNameEdit->text() ); a->setUid( mUidEdit->text() ); a->setEmail( mEmailEdit->text() ); a->setRole( Attendee::Role( mRoleCombo->currentItem() ) ); a->setStatus( Attendee::PartStat( mStatusCombo->currentItem() ) ); a->setRSVP( mRsvpButton->isChecked() ); aItem->updateItem(); |