Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef KDGANTTGRAPHICSSCENE_H
00024 #define KDGANTTGRAPHICSSCENE_H
00025
00026 #include <QDateTime>
00027 #include <QList>
00028 #include <QGraphicsScene>
00029 #include <QModelIndex>
00030
00031 #include "kdganttglobal.h"
00032
00033 class QAbstractProxyModel;
00034 class QItemSelectionModel;
00035 class QPrinter;
00036
00037 namespace KDGantt {
00038 class AbstractGrid;
00039 class AbstractRowController;
00040 class GraphicsItem;
00041 class Constraint;
00042 class ConstraintModel;
00043 class ConstraintGraphicsItem;
00044 class ItemDelegate;
00045
00046 class KDCHART_EXPORT GraphicsScene : public QGraphicsScene {
00047 Q_OBJECT
00048 KDGANTT_DECLARE_PRIVATE_BASE_POLYMORPHIC( GraphicsScene )
00049 public:
00050 explicit GraphicsScene( QObject* parent=0 );
00051 virtual ~GraphicsScene();
00052
00053
00054
00055
00056 static QModelIndex mainIndex( const QModelIndex& idx );
00057 static QModelIndex dataIndex( const QModelIndex& idx );
00058
00059 QAbstractItemModel* model() const;
00060 QAbstractProxyModel* summaryHandlingModel() const;
00061 QModelIndex rootIndex() const;
00062 ConstraintModel* constraintModel() const;
00063 QItemSelectionModel* selectionModel() const;
00064
00065 void insertItem( const QPersistentModelIndex&, GraphicsItem* );
00066 void removeItem( const QModelIndex& );
00067 using QGraphicsScene::removeItem;
00068 GraphicsItem* findItem( const QModelIndex& ) const;
00069 GraphicsItem* findItem( const QPersistentModelIndex& ) const;
00070
00071 void updateItems();
00072 void clearItems();
00073 void deleteSubtree( const QModelIndex& );
00074
00075 ConstraintGraphicsItem* findConstraintItem( const Constraint& ) const;
00076 QList<ConstraintGraphicsItem*> findConstraintItems( const QModelIndex& idx ) const;
00077 void clearConstraintItems();
00078
00079 void setItemDelegate( ItemDelegate* );
00080 ItemDelegate* itemDelegate() const;
00081
00082 void setRowController( AbstractRowController* rc );
00083 AbstractRowController* rowController() const;
00084
00085 void setGrid( AbstractGrid* grid );
00086 AbstractGrid* grid() const;
00087
00088 bool isReadOnly() const;
00089
00090 void updateRow( const QModelIndex& idx );
00091 GraphicsItem* createItem( ItemType type ) const;
00092
00093
00094 void itemEntered( const QModelIndex& );
00095 void itemPressed( const QModelIndex& );
00096 void itemClicked( const QModelIndex& );
00097 void itemDoubleClicked( const QModelIndex& );
00098 void setDragSource( GraphicsItem* item );
00099 GraphicsItem* dragSource() const;
00100
00101
00102 void print( QPrinter* printer, bool drawRowLabels = true );
00103 void print( QPrinter* printer, qreal start, qreal end, bool drawRowLabels = true );
00104 void print( QPainter* painter, const QRectF& target = QRectF(), bool drawRowLabels=true );
00105 void print( QPainter* painter, qreal start, qreal end, const QRectF& target = QRectF(), bool drawRowLabels=true );
00106
00107 Q_SIGNALS:
00108 void gridChanged();
00109
00110 void clicked( const QModelIndex & index );
00111 void doubleClicked( const QModelIndex & index );
00112 void entered( const QModelIndex & index );
00113 void pressed( const QModelIndex & index );
00114
00115 protected:
00116 void helpEvent( QGraphicsSceneHelpEvent *helpEvent );
00117 void drawBackground( QPainter* painter, const QRectF& rect );
00118 void drawForeground( QPainter* painter, const QRectF& rect );
00119
00120 public Q_SLOTS:
00121 void setModel( QAbstractItemModel* );
00122 void setSummaryHandlingModel( QAbstractProxyModel* );
00123 void setConstraintModel( ConstraintModel* );
00124 void setRootIndex( const QModelIndex& idx );
00125 void setSelectionModel( QItemSelectionModel* selectionmodel );
00126 void setReadOnly( bool );
00127
00128 private Q_SLOTS:
00129
00130 void slotConstraintAdded( const KDGantt::Constraint& );
00131 void slotConstraintRemoved( const KDGantt::Constraint& );
00132 void slotGridChanged();
00133 private:
00134 void doPrint( QPainter* painter, const QRectF& targetRect,
00135 qreal start, qreal end,
00136 QPrinter* printer, bool drawRowLabels );
00137 };
00138 }
00139
00140 #endif