File indexing completed on 2024-04-28 05:11:32

0001 /*
0002   SPDX-FileCopyrightText: 2010 Kevin Ottens <ervin@kde.org>
0003 
0004   SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "groupwareuidelegate.h"
0008 #include "incidencedialog.h"
0009 #include "incidencedialogfactory.h"
0010 #include "incidenceeditor_debug.h"
0011 
0012 #include <Akonadi/CalendarUtils>
0013 #include <Akonadi/Item>
0014 using namespace IncidenceEditorNG;
0015 
0016 void GroupwareUiDelegate::requestIncidenceEditor(const Akonadi::Item &item)
0017 {
0018     // TODO_KDE5:
0019     // The GroupwareUiDelegate interface should be a QObject. Right now we have no way of emitting a
0020     // finished signal, so we have to use dialog->exec();
0021 
0022     const KCalendarCore::Incidence::Ptr incidence = Akonadi::CalendarUtils::incidence(item);
0023     if (!incidence) {
0024         qCWarning(INCIDENCEEDITOR_LOG) << "Incidence is null, won't open the editor";
0025         return;
0026     }
0027 
0028     IncidenceDialog *dialog = IncidenceDialogFactory::create(/*needs initial saving=*/false, incidence->type(), nullptr);
0029     dialog->setAttribute(Qt::WA_DeleteOnClose, false);
0030     dialog->setIsCounterProposal(true);
0031     dialog->load(item, QDate::currentDate());
0032     dialog->exec();
0033     dialog->deleteLater();
0034     Akonadi::Item newItem = dialog->item();
0035     if (newItem.hasPayload<KCalendarCore::Incidence::Ptr>()) {
0036         KCalendarCore::IncidenceBase::Ptr newIncidence = newItem.payload<KCalendarCore::Incidence::Ptr>();
0037         *incidence.staticCast<KCalendarCore::IncidenceBase>() = *newIncidence;
0038     }
0039 }
0040 
0041 void GroupwareUiDelegate::setCalendar(const Akonadi::ETMCalendar::Ptr &calendar)
0042 {
0043     // We don't need a calendar.
0044     Q_UNUSED(calendar)
0045 }
0046 
0047 void GroupwareUiDelegate::createCalendar()
0048 {
0049     // We don't need a calendar
0050 }