File: dataItemView.C

package info (click to toggle)
ball 1.4.3~beta1-3
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 318,984 kB
  • sloc: cpp: 346,579; ansic: 4,097; python: 2,664; yacc: 1,778; lex: 1,099; xml: 964; sh: 688; sql: 316; awk: 118; makefile: 108
file content (84 lines) | stat: -rw-r--r-- 1,691 bytes parent folder | download | duplicates (2)
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
#include <dataItemView.h>
#include <edge.h>
#include <dataItem.h>
#include <mainWindow.h>

#include <QtGui/QWheelEvent>
#include <QtGui/QMenu>

#include <cmath>

namespace BALL
{
	namespace VIEW
	{

		DataItemView::DataItemView(DataItemScene* scene, MainWindow* mw):
			timer_id_(0)
		 {
			setScene(scene); 
			data_scene = scene;
			setRenderHint(QPainter::Antialiasing);
			setResizeAnchor(AnchorUnderMouse);
			setFocusPolicy(Qt::ClickFocus);
			setAlignment(Qt::AlignLeft | Qt::AlignTop);
			scene->setItemIndexMethod(QGraphicsScene::NoIndex);
			
			scene->setMainWindow(mw);
			scene->view = this;
			
			setAcceptDrops(true);
			setInteractive (true);
		 }

		 void DataItemView::wheelEvent(QWheelEvent* event)
		 {
			if (name == "view")
			{
				centerOn(event->x(),event->y());
				scaleView(pow((double)2, -event->delta() / 240.0));
			}
		 }


		void DataItemView::scaleView(qreal scaleFactor)
		{
			qreal factor = matrix().scale(scaleFactor, scaleFactor).mapRect(QRectF(0, 0, 1, 1)).width();
			if (factor < 0.07 || factor > 100)
			{		
				return;
			}
				 scale(scaleFactor, scaleFactor);
		}


		void DataItemView::keyPressEvent(QKeyEvent *event)
		{
			DataItem* item = static_cast<DataItem*>(scene()->focusItem());

				if (!item)
			{
				return;
			}

			switch (event->key()) 
			{
     			case Qt::Key_Up:
         			item->moveBy(0, -10);
         			break;
     			case Qt::Key_Down:
         			item->moveBy(0, 10);
        			break;
     			case Qt::Key_Left:
         			item->moveBy(-10, 0);
         			break;
     			case Qt::Key_Right:
         			item->moveBy(10, 0);
         			break;

			default: 
				QGraphicsView::keyPressEvent(event);
			}
		}
	}
}