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 }