diff --git a/src/incidencedialog.cpp b/src/incidencedialog.cpp --- a/src/incidencedialog.cpp +++ b/src/incidencedialog.cpp @@ -108,6 +108,7 @@ void updateButtonStatus(bool isDirty); void showMessage(const QString &text, KMessageWidget::MessageType type); void slotInvalidCollection(); + void setCalendarCollection(const Akonadi::Collection &collection); /// ItemEditorUi methods bool containsPayloadIdentifiers(const QSet &partIdentifiers) const override; @@ -181,11 +182,10 @@ mIeResource = new IncidenceResource(mIeAttendee, mIeDateTime, mUi); mEditor->combine(mIeResource); + // Select calendar to last collection used, if valid; else select the default collection const qint64 colId = IncidenceEditorNG::IncidenceEditorSettings::self()->lastSelectedFolder(); const Akonadi::Collection col(colId); - if (col.isValid()) { - mCalSelector->setDefaultCollection(col); - } + setCalendarCollection(col); q->connect(mEditor, SIGNAL(showMessage(QString,KMessageWidget::MessageType)), SLOT(showMessage(QString,KMessageWidget::MessageType))); @@ -221,6 +221,23 @@ showMessage(i18n("Select a valid collection first."), KMessageWidget::Warning); } +void IncidenceDialogPrivate::setCalendarCollection(const Akonadi::Collection &collection) +{ + if (collection.isValid()) { + mCalSelector->setDefaultCollection(collection); + } else { + // fallback to default collection + const qint64 defColId = CalendarSupport::KCalPrefs::instance()->defaultCalendarId(); + const Akonadi::Collection defCol(defColId); + if (defCol.isValid()) { + mCalSelector->setDefaultCollection(defCol); + } else { + // Give up and use the first item in the selector + mCalSelector->setCurrentIndex(0); + } + } +} + void IncidenceDialogPrivate::showMessage(const QString &text, KMessageWidget::MessageType type) { mUi->mMessageWidget->setText(text); @@ -774,11 +791,7 @@ void IncidenceDialog::selectCollection(const Akonadi::Collection &collection) { Q_D(IncidenceDialog); - if (collection.isValid()) { - d->mCalSelector->setDefaultCollection(collection); - } else { - d->mCalSelector->setCurrentIndex(0); - } + d->setCalendarCollection(collection); } void IncidenceDialog::setIsCounterProposal(bool isCounterProposal)