File indexing completed on 2024-05-12 04:20:45

0001 /*
0002  * SPDX-FileCopyrightText: 2001-2015 Klaralvdalens Datakonsult AB. All rights reserved.
0003  *
0004  * This file is part of the KGantt library.
0005  *
0006  * SPDX-License-Identifier: GPL-2.0-or-later
0007  */
0008 
0009 #ifndef KGANTTVIEW_P_H
0010 #define KGANTTVIEW_P_H
0011 
0012 #include "kganttview.h"
0013 #include "kganttgraphicsscene.h"
0014 #include "kgantttreeviewrowcontroller.h"
0015 #include "kganttconstraintmodel.h"
0016 #include "kganttconstraintproxy.h"
0017 
0018 #include "kganttgraphicsview.h"
0019 #include "kganttdatetimegrid.h"
0020 
0021 #include "kganttproxymodel.h"
0022 
0023 #include <QSplitter>
0024 #include <QTreeView>
0025 #include <QGraphicsView>
0026 #include <QModelIndex>
0027 #include <QPointer>
0028 
0029 QT_BEGIN_NAMESPACE
0030 class QAbstractProxyModel;
0031 class QGraphicsView;
0032 class QGraphicsScene;
0033 class QGraphicsRectItem;
0034 QT_END_NAMESPACE
0035 
0036 namespace KGantt {
0037     class GraphicsItem;
0038     class KGanttTreeView;
0039 
0040     /*! \internal */
0041     class KGanttTreeView : public QTreeView {
0042         Q_OBJECT
0043     public:
0044         explicit KGanttTreeView( QAbstractProxyModel* proxy, QWidget* parent = nullptr );
0045         ~KGanttTreeView() override;
0046 
0047         AbstractRowController* rowController() { return &m_controller; }
0048 
0049     public Q_SLOTS:
0050         void expandAll(QModelIndex index = QModelIndex());
0051         void collapseAll(QModelIndex index = QModelIndex());
0052 
0053     private:
0054         TreeViewRowController m_controller;
0055     };
0056 
0057     /*! \internal */
0058     class Q_DECL_HIDDEN View::Private {
0059     public:
0060         explicit Private(View*);
0061         virtual ~Private();
0062 
0063         void init();
0064 
0065         GraphicsItem* createItem( ItemType type ) const;
0066 
0067         void updateScene();
0068 
0069         void setupGraphicsView();
0070 
0071         // slots
0072         void slotCollapsed(const QModelIndex&);
0073         void slotExpanded(const QModelIndex&);
0074         void slotVerticalScrollValueChanged( int );
0075         void slotLeftWidgetVerticalRangeChanged( int, int );
0076         void slotGfxViewVerticalRangeChanged( int, int );
0077 
0078         View* q;
0079 
0080         QSplitter splitter;
0081 
0082         /* TODO: Refine/subclass */
0083         //KGanttTreeView treeview;
0084         QPointer<QAbstractItemView> leftWidget;
0085         AbstractRowController* rowController;
0086         QPointer<GraphicsView> gfxview;
0087         //KGanttHeaderWidget headerwidget;
0088 
0089         QPointer<QAbstractItemModel> model;
0090         ProxyModel ganttProxyModel;
0091         //KGanttTreeViewRowController rowController;
0092         ConstraintModel mappedConstraintModel;
0093         ConstraintProxy constraintProxy;
0094     };
0095 
0096 }
0097 #endif /* KGANTTVIEW_P_H */
0098