File indexing completed on 2025-03-09 04:51:38

0001 /*
0002   This file is part of KOrganizer.
0003   SPDX-FileCopyrightText: 2007 Till Adam <adam@kde.org>
0004 
0005   SPDX-FileCopyrightText: 2010 Klarälvdalens Datakonsult AB, a KDAB Group company <info@kdab.com>
0006   SPDX-FileCopyrightText: 2010 Andras Mantia <andras@kdab.com>
0007   SPDX-FileCopyrightText: 2010 SĂ©rgio Martins <sergio.martins@kdab.com>
0008 
0009   SPDX-License-Identifier: GPL-2.0-or-later WITH Qt-Commercial-exception-1.0
0010 */
0011 
0012 #include "kotimelineview.h"
0013 #include "koeventpopupmenu.h"
0014 #include "prefs/koprefs.h"
0015 
0016 #include <EventViews/TimeLineView>
0017 
0018 #include <QVBoxLayout>
0019 
0020 KOTimelineView::KOTimelineView(QWidget *parent)
0021     : KOEventView(parent)
0022 {
0023     auto vbox = new QVBoxLayout(this);
0024     vbox->setContentsMargins({});
0025     mTimeLineView = new EventViews::TimelineView(KOPrefs::instance()->eventViewsPreferences(), this);
0026     vbox->addWidget(mTimeLineView);
0027     mEventPopup = eventPopup();
0028 
0029     connect(mTimeLineView, &EventViews::TimelineView::showIncidencePopupSignal, mEventPopup, &KOEventPopupMenu::showIncidencePopup);
0030 
0031     connect(mTimeLineView, &EventViews::TimelineView::showNewEventPopupSignal, this, &KOTimelineView::showNewEventPopup);
0032 
0033     connect(mTimeLineView, &EventViews::EventView::datesSelected, this, &KOEventView::datesSelected);
0034 
0035     connect(mTimeLineView, &EventViews::EventView::shiftedEvent, this, &KOEventView::shiftedEvent);
0036 
0037     connect(mTimeLineView, &EventViews::EventView::incidenceSelected, this, &KOrg::BaseView::incidenceSelected);
0038 
0039     connect(mTimeLineView, &EventViews::EventView::showIncidenceSignal, this, &KOrg::BaseView::showIncidenceSignal);
0040 
0041     connect(mTimeLineView, &EventViews::EventView::editIncidenceSignal, this, &KOrg::BaseView::editIncidenceSignal);
0042 
0043     connect(mTimeLineView, &EventViews::EventView::deleteIncidenceSignal, this, &KOrg::BaseView::deleteIncidenceSignal);
0044 
0045     connect(mTimeLineView, &EventViews::EventView::cutIncidenceSignal, this, &KOrg::BaseView::cutIncidenceSignal);
0046 
0047     connect(mTimeLineView, &EventViews::EventView::copyIncidenceSignal, this, &KOrg::BaseView::copyIncidenceSignal);
0048 
0049     connect(mTimeLineView, &EventViews::EventView::pasteIncidenceSignal, this, &KOrg::BaseView::pasteIncidenceSignal);
0050 
0051     connect(mTimeLineView, &EventViews::EventView::toggleAlarmSignal, this, &KOrg::BaseView::toggleAlarmSignal);
0052 
0053     connect(mTimeLineView, &EventViews::EventView::toggleTodoCompletedSignal, this, &KOrg::BaseView::toggleTodoCompletedSignal);
0054 
0055     connect(mTimeLineView, &EventViews::EventView::copyIncidenceToResourceSignal, this, &KOrg::BaseView::copyIncidenceToResourceSignal);
0056 
0057     connect(mTimeLineView, &EventViews::EventView::moveIncidenceToResourceSignal, this, &KOrg::BaseView::moveIncidenceToResourceSignal);
0058 
0059     connect(mTimeLineView, &EventViews::EventView::dissociateOccurrencesSignal, this, &KOrg::BaseView::dissociateOccurrencesSignal);
0060 
0061     connect(mTimeLineView, qOverload<>(&EventViews::TimelineView::newEventSignal), this, qOverload<>(&KOTimelineView::newEventSignal));
0062 
0063     connect(mTimeLineView,
0064             qOverload<const QDate &>(&EventViews::TimelineView::newEventSignal),
0065             this,
0066             qOverload<const QDate &>(&KOTimelineView::newEventSignal));
0067 
0068     connect(mTimeLineView,
0069             qOverload<const QDateTime &>(&EventViews::TimelineView::newEventSignal),
0070             this,
0071             qOverload<const QDateTime &>(&KOTimelineView::newEventSignal));
0072 
0073     connect(mTimeLineView,
0074             qOverload<const QDateTime &, const QDateTime &>(&EventViews::TimelineView::newEventSignal),
0075             this,
0076             qOverload<const QDateTime &, const QDateTime &>(&KOTimelineView::newEventSignal));
0077 
0078     connect(mTimeLineView, &EventViews::EventView::newTodoSignal, this, &KOrg::BaseView::newTodoSignal);
0079 
0080     connect(mTimeLineView, &EventViews::EventView::newSubTodoSignal, this, &KOrg::BaseView::newSubTodoSignal);
0081 
0082     connect(mTimeLineView, &EventViews::EventView::newJournalSignal, this, &KOrg::BaseView::newJournalSignal);
0083 }
0084 
0085 KOTimelineView::~KOTimelineView()
0086 {
0087     delete mEventPopup;
0088 }
0089 
0090 Akonadi::Item::List KOTimelineView::selectedIncidences()
0091 {
0092     return mTimeLineView->selectedIncidences();
0093 }
0094 
0095 KCalendarCore::DateList KOTimelineView::selectedIncidenceDates()
0096 {
0097     return mTimeLineView->selectedIncidenceDates();
0098 }
0099 
0100 int KOTimelineView::currentDateCount() const
0101 {
0102     return mTimeLineView->currentDateCount();
0103 }
0104 
0105 void KOTimelineView::showDates(const QDate &start, const QDate &end, const QDate &)
0106 {
0107     mTimeLineView->showDates(start, end);
0108 }
0109 
0110 void KOTimelineView::showIncidences(const Akonadi::Item::List &incidenceList, const QDate &date)
0111 {
0112     mTimeLineView->showIncidences(incidenceList, date);
0113 }
0114 
0115 void KOTimelineView::updateView()
0116 {
0117     mTimeLineView->updateView();
0118 }
0119 
0120 void KOTimelineView::changeIncidenceDisplay(const Akonadi::Item &incidence, Akonadi::IncidenceChanger::ChangeType changeType)
0121 {
0122     mTimeLineView->changeIncidenceDisplay(incidence, changeType);
0123 }
0124 
0125 bool KOTimelineView::eventDurationHint(QDateTime &startDt, QDateTime &endDt, bool &allDay)
0126 {
0127     return mTimeLineView->eventDurationHint(startDt, endDt, allDay);
0128 }
0129 
0130 CalendarSupport::CalPrinterBase::PrintType KOTimelineView::printType() const
0131 {
0132     // If up to three days are selected, use day style, otherwise week
0133     if (currentDateCount() <= 3) {
0134         return CalendarSupport::CalPrinterBase::Day;
0135     } else {
0136         return CalendarSupport::CalPrinterBase::Week;
0137     }
0138 }
0139 
0140 void KOTimelineView::setIncidenceChanger(Akonadi::IncidenceChanger *changer)
0141 {
0142     mTimeLineView->setIncidenceChanger(changer);
0143 }
0144 
0145 void KOTimelineView::calendarAdded(const Akonadi::CollectionCalendar::Ptr &calendar)
0146 {
0147     mTimeLineView->addCalendar(calendar);
0148 }
0149 
0150 void KOTimelineView::calendarRemoved(const Akonadi::CollectionCalendar::Ptr &calendar)
0151 {
0152     mTimeLineView->removeCalendar(calendar);
0153 }
0154 #include "moc_kotimelineview.cpp"