File: bubble.h

package info (click to toggle)
boats 201307-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 1,424 kB
  • ctags: 1,486
  • sloc: cpp: 10,139; makefile: 13; xml: 10
file content (89 lines) | stat: -rw-r--r-- 2,595 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
//
// C++ Interface: BubbleGraphicsItem
//
// Description:
//
//
// Author: Thibaut GRIDEL <tgridel@free.fr>
//
// Copyright (c) 2009-2010 Thibaut GRIDEL
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.
//
//
#ifndef BUBBLE_H
#define BUBBLE_H

#include <QGraphicsItem>
#include <QObject>

#include "boats.h"

class PositionModel;

/**
    \class BubbleGraphicsItem

    \brief the QGraphicsItem for a bubble

    The class represents the Item according to the Graphics View Framework.

    It inherits QGraphicsItem for Item framework and QObject for slot and
    signal framework. It displays the text representation of a PositionModel on a
    SituationView.

    \sa SituationView, SituationScene, SituationModel, BoatModel

*/

class BubbleGraphicsItem : public QGraphicsTextItem {
        Q_OBJECT
    public:
        BubbleGraphicsItem(PositionModel *model, QGraphicsItem *parent = 0);
        virtual ~BubbleGraphicsItem();

        PositionModel* model() const { return m_model; }

        QRectF boundingRect() const;
        void paint(QPainter *painter,
                   const QStyleOptionGraphicsItem *option,
                   QWidget *widget);
        void setVisible(bool visible);

    public slots:
        void updateText(QString value);
        void setText();
        void setPosition(QPointF position);
        void setTail();

    protected:
        virtual void mousePressEvent(QGraphicsSceneMouseEvent *event);
        virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
        virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
        virtual void focusOutEvent (QFocusEvent *event);

    private:
        /// \a m_model holds the PositionModel being represented
        PositionModel *m_model;

        /// \a m_fromPosition holds the position of the mousePress
        QPointF m_fromPosition;

        /// \a m_tail holds the leader line to the boat
        QGraphicsPolygonItem *m_tail;

        QTime m_clickTime;
};

#endif // BUBBLE_H