File indexing completed on 2024-05-12 15:54:22

0001 /*
0002  * Copyright (C) 2001-2015 Klaralvdalens Datakonsult AB.  All rights reserved.
0003  *
0004  * This file is part of the KGantt library.
0005  *
0006  * This program is free software; you can redistribute it and/or
0007  * modify it under the terms of the GNU General Public License as
0008  * published by the Free Software Foundation; either version 2 of
0009  * the License, or (at your option) any later version.
0010  *
0011  * This program is distributed in the hope that it will be useful,
0012  * but WITHOUT ANY WARRANTY; without even the implied warranty of
0013  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0014  * GNU General Public License for more details.
0015  *
0016  * You should have received a copy of the GNU General Public License
0017  * along with this program.  If not, see <https://www.gnu.org/licenses/>.
0018  */
0019 
0020 #ifndef KGANTTCONSTRAINTGRAPHICSITEM_H
0021 #define KGANTTCONSTRAINTGRAPHICSITEM_H
0022 
0023 #include <QGraphicsItem>
0024 
0025 #include "kganttconstraint.h"
0026 
0027 namespace KGantt {
0028     class GraphicsScene;
0029 
0030 
0031 
0032     /*!\class KGantt::ConstraintGraphicsItem
0033      * \internal
0034      */
0035     class KGANTT_EXPORT ConstraintGraphicsItem : public QGraphicsItem {
0036     public:
0037         enum { Type = UserType + 43 };
0038 
0039         explicit ConstraintGraphicsItem( const Constraint& c,
0040                                          QGraphicsItem* parent = nullptr, GraphicsScene* scene = nullptr );
0041         virtual ~ConstraintGraphicsItem();
0042 
0043         /*reimp*/ int type() const override;
0044         /*reimp (non virtual)*/GraphicsScene* scene() const;
0045 
0046         /*reimp*/ QString ganttToolTip() const;
0047 
0048         /*reimp*/ QRectF boundingRect() const override;
0049         /*reimp*/ void paint( QPainter* painter, const QStyleOptionGraphicsItem* option,
0050                               QWidget* widget = nullptr ) override;
0051 
0052         inline const Constraint& constraint() const { return m_constraint; }
0053         Constraint proxyConstraint() const;
0054 
0055         void setStart( const QPointF& start );
0056         inline QPointF start() const { return m_start; }
0057         void setEnd( const QPointF& end );
0058         inline QPointF end() const { return m_end; }
0059 
0060         void updateItem( const QPointF& start,const QPointF& end );
0061     private:
0062         Constraint m_constraint;
0063         QPointF m_start;
0064         QPointF m_end;
0065     };
0066 }
0067 
0068 #endif /* KGANTTCONSTRAINTGRAPHICSITEM_H */
0069