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

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 KGANTTGRAPHICSVIEW_P_H
0010 #define KGANTTGRAPHICSVIEW_P_H
0011 
0012 #include "kganttgraphicsview.h"
0013 #include "kganttgraphicsscene.h"
0014 #include "kganttdatetimegrid.h"
0015 
0016 #include <QPointer>
0017 
0018 namespace KGantt {
0019     class HeaderWidget : public QWidget {
0020         Q_OBJECT
0021     public:
0022         explicit HeaderWidget( GraphicsView* parent );
0023         ~HeaderWidget() override;
0024 
0025         GraphicsView* view() const { return qobject_cast<GraphicsView*>( parent() );}
0026 
0027     public Q_SLOTS:
0028         void scrollTo( int );
0029     protected:
0030         /*reimp*/ bool event( QEvent* ev ) override;
0031         /*reimp*/ void paintEvent( QPaintEvent* ev ) override;
0032         /*reimp*/ void mousePressEvent(QMouseEvent *event) override;
0033         /*reimp*/ void mouseReleaseEvent(QMouseEvent *event) override;
0034         /*reimp*/ void mouseMoveEvent(QMouseEvent *event) override;
0035         /*reimp*/ void wheelEvent(QWheelEvent *event) override;
0036         /*reimp*/ void contextMenuEvent( QContextMenuEvent* ev ) override;
0037     private:
0038         qreal m_offset;
0039         DateTimeGrid::HeaderType m_headerType;
0040         int m_mousePosX;
0041     };
0042 
0043     class Q_DECL_HIDDEN GraphicsView::Private {
0044         Q_DISABLE_COPY( Private )
0045     public:
0046         explicit Private(GraphicsView* _q);
0047         ~Private();
0048 
0049         void updateHeaderGeometry();
0050 
0051         void slotGridChanged();
0052         void slotHorizontalScrollValueChanged( int val );
0053 
0054         /* slots for QAbstractItemModel signals */
0055         void slotColumnsInserted( const QModelIndex& parent,  int start, int end );
0056         void slotColumnsRemoved( const QModelIndex& parent,  int start, int end );
0057         void slotDataChanged( const QModelIndex& topLeft, const QModelIndex& bottomRight );
0058         void slotLayoutChanged();
0059         void slotModelReset();
0060         void slotRowsInserted( const QModelIndex& parent,  int start, int end );
0061         void slotRowsAboutToBeRemoved( const QModelIndex& parent,  int start, int end );
0062         void slotRowsRemoved( const QModelIndex& parent,  int start, int end );
0063 
0064         void slotItemClicked( const QModelIndex& idx );
0065         void slotItemDoubleClicked( const QModelIndex& idx );
0066 
0067         void slotHeaderContextMenuRequested( const QPoint& pt );
0068 
0069         void removeConstraintsRecursive( QAbstractProxyModel *summaryModel, const QModelIndex& index );
0070 
0071         GraphicsView* q;
0072         AbstractRowController* rowcontroller;
0073         HeaderWidget headerwidget;
0074         GraphicsScene scene;
0075     };
0076 }
0077 
0078 #endif /* KGANTTGRAPHICSVIEW_P_H */
0079