1//
2// KBlackBox
3//
4// A simple game inspired by an emacs module
5//
6/***************************************************************************
7 * Copyright (c) 1999-2000, Robert Cimrman *
8 * cimrman3@students.zcu.cz *
9 * *
10 * Copyright (c) 2007, Nicolas Roffet *
11 * nicolas-kde@roffet.com *
12 * *
13 * *
14 * This program is free software; you can redistribute it and/or modify *
15 * it under the terms of the GNU General Public License as published by *
16 * the Free Software Foundation; either version 2 of the License, or *
17 * (at your option) any later version. *
18 * *
19 * This program is distributed in the hope that it will be useful, *
20 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
22 * GNU General Public License for more details. *
23 * *
24 * You should have received a copy of the GNU General Public License *
25 * along with this program; if not, write to the *
26 * Free Software Foundation, Inc., *
27 * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA *
28 ***************************************************************************/
29
30#ifndef KBBGRAPHICSITEMONBOX_H
31#define KBBGRAPHICSITEMONBOX_H
32
33
34
35class QGraphicsScene;
36
37
38#include "kbbgraphicsitem.h"
39#include "kbbitemwithposition.h"
40class KBBScalableGraphicWidget;
41class KBBThemeManager;
42
43
44
45/**
46 * @brief Item on the box on the scalable graphic widget
47 *
48 * The item is general and can be a ball or other markers.
49 */
50class KBBGraphicsItemOnBox : public KBBGraphicsItem, public KBBItemWithPosition
51{
52 public:
53 /**
54 * @brief Invalid box position
55 */
56 static const int NO_POSITION = -1;
57
58
59 KBBGraphicsItemOnBox(KBBScalableGraphicWidget::itemType itemType, KBBScalableGraphicWidget* parent, KBBThemeManager* themeManager, const int boxPosition, const int columns, const int rows);
60
61 int position();
62
63
64 protected:
65 virtual void removeInteractionInfos();
66
67 KBBScalableGraphicWidget* m_widget;
68 int m_columns;
69 int m_rows;
70
71
72 private:
73 int boxPosition(qreal x, qreal y);
74 bool isMovable();
75 void mousePressEvent (QGraphicsSceneMouseEvent* event);
76 void mouseReleaseEvent (QGraphicsSceneMouseEvent* event);
77 void setBoxPosition(int boxPosition);
78
79 int m_boxPosition;
80 int m_boxOutsidePosition;
81 qreal m_dragXPos;
82 qreal m_dragYPos;
83 qreal m_dragX;
84 qreal m_dragY;
85 KBBScalableGraphicWidget::itemType m_itemType;
86};
87
88#endif // KBBGRAPHICSITEMONBOX_H
89