diff --git a/autotests/testindividualmaildialog.cpp b/autotests/testindividualmaildialog.cpp --- a/autotests/testindividualmaildialog.cpp +++ b/autotests/testindividualmaildialog.cpp @@ -51,7 +51,7 @@ QCOMPARE(dialog.updateAttendees().count(), 3); // Just make sure, that the QCombobox is sorted like we think - QComboBox *first = dialog.mAttendeeDecision[attendees[0]]; + QComboBox *first = dialog.mAttendeeDecision[0].second; QCOMPARE((IndividualMailDialog::Decisions)first->itemData(0, Qt::UserRole).toInt(), IndividualMailDialog::Update); QCOMPARE((IndividualMailDialog::Decisions)first->itemData(1, Qt::UserRole).toInt(), diff --git a/src/individualmaildialog.h b/src/individualmaildialog.h --- a/src/individualmaildialog.h +++ b/src/individualmaildialog.h @@ -55,7 +55,7 @@ private: void updateButtonState(); - QHash mAttendeeDecision; + std::vector> mAttendeeDecision; QDialogButtonBox *m_buttons = nullptr; QWidget *m_detailsWidget = nullptr; }; diff --git a/src/individualmaildialog.cpp b/src/individualmaildialog.cpp --- a/src/individualmaildialog.cpp +++ b/src/individualmaildialog.cpp @@ -39,6 +39,7 @@ setWindowTitle(i18nc("@title:window", "Group Scheduling Email")); m_detailsWidget = new QWidget(); QGridLayout *layout = new QGridLayout(m_detailsWidget); + mAttendeeDecision.reserve(attendees.size()); int row = 0; for (const KCalCore::Attendee::Ptr &attendee : attendees) { QComboBox *options = new QComboBox(); @@ -52,7 +53,7 @@ "Options for this particular attendee.")); options->setToolTip(i18nc("@info:tooltip", "Choose an option for this attendee.")); - mAttendeeDecision[attendee] = options; + mAttendeeDecision.push_back(std::make_pair(attendee, options)); layout->addWidget(new QLabel(attendee->fullName()), row, 0); layout->addWidget(options, row, 1); @@ -103,9 +104,9 @@ { KCalCore::Attendee::List edit; for (auto it = mAttendeeDecision.cbegin(), end = mAttendeeDecision.cend(); it != end; ++it) { - int index = it.value()->currentIndex(); - if (it.value()->itemData(index, Qt::UserRole) == Edit) { - edit.append(it.key()); + const int index = (*it).second->currentIndex(); + if ((*it).second->itemData(index, Qt::UserRole) == Edit) { + edit.append((*it).first); } } return edit; @@ -115,9 +116,9 @@ { KCalCore::Attendee::List update; for (auto it = mAttendeeDecision.cbegin(), end = mAttendeeDecision.cend(); it != end; ++it) { - int index = it.value()->currentIndex(); - if (it.value()->itemData(index, Qt::UserRole) == Update) { - update.append(it.key()); + const int index = (*it).second->currentIndex(); + if ((*it).second->itemData(index, Qt::UserRole) == Update) { + update.append((*it).first); } } return update;