File indexing completed on 2024-05-26 05:15:30

0001 /*
0002   SPDX-FileCopyrightText: 2010 Klarälvdalens Datakonsult AB, a KDAB Group company <info@kdab.com>
0003   SPDX-FileCopyrightText: 2010 SĂ©rgio Martins <sergio.martins@kdab.com>
0004 
0005   SPDX-License-Identifier: GPL-2.0-or-later WITH Qt-Commercial-exception-1.0
0006 */
0007 #pragma once
0008 
0009 #include "timelineview.h"
0010 
0011 #include <Akonadi/Collection>
0012 #include <Akonadi/Item>
0013 
0014 #include <QMap>
0015 #include <QModelIndex>
0016 #include <QObject>
0017 
0018 class QStandardItem;
0019 class QTreeWidget;
0020 
0021 namespace KGantt
0022 {
0023 class GraphicsView;
0024 }
0025 
0026 namespace EventViews
0027 {
0028 class TimelineItem;
0029 class RowController;
0030 
0031 class TimelineViewPrivate : public QObject
0032 {
0033     Q_OBJECT
0034 public:
0035     explicit TimelineViewPrivate(TimelineView *parent = nullptr);
0036     ~TimelineViewPrivate() override;
0037 
0038     TimelineItem *calendarItemForIncidence(const Akonadi::Item &incidence) const;
0039     void insertIncidence(const Akonadi::CollectionCalendar::Ptr &calendar, const Akonadi::Item &incidence);
0040     void insertIncidence(const Akonadi::CollectionCalendar::Ptr &calendar, const Akonadi::Item &incidence, QDate day);
0041     void removeIncidence(const Akonadi::Item &incidence);
0042 
0043 public Q_SLOTS:
0044     // void overscale( KDGantt::View::Scale scale );
0045     void itemSelected(const QModelIndex &index);
0046     void itemDoubleClicked(const QModelIndex &index);
0047     void itemChanged(QStandardItem *item);
0048     void contextMenuRequested(QPoint point);
0049     void newEventWithHint(const QDateTime &);
0050 
0051 public:
0052     Akonadi::Item::List mSelectedItemList;
0053     KGantt::GraphicsView *mGantt = nullptr;
0054     QTreeWidget *mLeftView = nullptr;
0055     RowController *mRowController = nullptr;
0056     QMap<Akonadi::Collection::Id, TimelineItem *> mCalendarItemMap;
0057     QDate mStartDate, mEndDate;
0058     QDateTime mHintDate;
0059 
0060 private:
0061     TimelineView *const q;
0062 };
0063 } // namespace EventViews