From cf89ef31a42793769d7d5ce94b8bef7737e78f3f Mon Sep 17 00:00:00 2001 From: =?utf8?q?Sami=20R=C3=A4m=C3=B6?= Date: Fri, 9 Apr 2010 13:35:04 +0300 Subject: [PATCH] Added signals and slots for view location updates --- doc/map/map_class_diagram.dia | Bin 3692 -> 3683 bytes src/map/mapengine.cpp | 5 +++++ src/map/mapengine.h | 15 +++++++++++++++ src/map/mapview.cpp | 11 ----------- src/map/mapview.h | 6 +++--- src/ui/mapviewscreen.cpp | 13 ++++++++++--- 6 files changed, 33 insertions(+), 17 deletions(-) diff --git a/doc/map/map_class_diagram.dia b/doc/map/map_class_diagram.dia index 71985e32fcf4df0cac9820627721d4a1658e78c0..cd035d6d6503e03e616e676e13c5cb403616b788 100644 GIT binary patch literal 3683 zcmaLac{CJmqX+O(cA}C!G}a=G?0a@H7-j5=u{EMhc0!D7*^_9DCCk{!GGUNq?90Sh zvdn0*W$gP;!qvUE^PY3xbKmE4&i8!J_mAiA=iz@tcka)jy0B(v_x4BqwczZ>8hhpo zF%X;Tg+%8djNID+5s368aVqitwkCZZjcc5dJ3)0-D3&1`R)z@ZX)sb{>o7$5xGHXIrQa>em?re6d-ba zFJ5eLmPm}NasM^Awl+5>NWWCv^CKdnEiQk1KNP^!S$@kqXlLIDz0(w)+oOFlx&1KN z*#MaCTzxerrU}bMcS;b8aUI@tF?F*VO6*WrR*BwRUo1WPv9#!GHMpj$N=wO#P39GP z@bXsW6j(jW0!=9fVM76yGOdSWp6%2|OC3&2YYZ=mxjyXPMYr z!+v{^;|@qMWnF_7pU`ul+UVq)e|Hy3$}=yfn;gGTn)%-3Ne&>V?6gzELb*k)0O9T& zFIc;C*@mfP4PC0$j45xxs?ewpIx7<){7zOc=YMVJq?^N9f6R?VEBovwq}coWZ$3*E zD_)S|beTJGH6qp(1y>aBM+q>~WpEr!95S3p@n=s2!b2mU_#e7Qk zGk|W5y%<3-andCt3>;(VxA<>HTeIbr;IfPwB zr8#I^bnCnN2tF|b8Nu0{-6XS&ILQ&n5Sbp?{YJDj}>Bkmo>42 z;;&)@oIl5iW1Sb7-N2`oGi z({9K{f)QSTJdn*XG^eFBa!IcBMorKIj=@5Lb|EZuFUm~WtSq{&XLL1}nbI2qaUT^~ zE4g6y$zU)n4UfcR1%Ys8p-μFXcCv;1#RFfUn{wQlpT_sydg-j@4XT=Bl>0og?O z2L~sp%#;(coRsvDUQZ+#@pVvfGKaZU?$9iT;4#`HeW1a~r}xc_$ylprehKuP=cA=! zlEbMQ33af8S2}=RiP*s+4R|}3&HjnCFPKzuwTYFuUEZhqI&Kow}<_9oewkDs^W35N(>u3S)w6L@x zSG~4ueXxP+yJXKQl|s{bl-12ACuo78jXr1Vq})1vJ<6inFxU6yETs zutxc1luMn<*7D{O<=c?b72Ehg^QqQl-fg_-7TNDjx;f8Xg7E8E!#W}D*~`ItyVr;P z{;eF;XwN40hnKeBUPrfRIzKb91hI@Lb~Z>a$1jbZ^C@-~?O(o~fRvzHP?vH6o-yW@ zK5b8LOAom2xR_tnX1&@N>~Wc^2BzIriyau_Opw~q2fbGeP>Gz5P_`og0!{Q`U-R#a z=5alwb%EmcOtwg|OZjl@vh2(S}Ep_RK28&oOVctfiZco5Ats-H1MoFfD+0rJK z27j!kHr>jKpPx$C0lu*npXf3*w4bVsfkhb#M!!w7XLk5sUw%f|DtOUHvi{*J+4h?} zW9N?mhX1AD58mNZF5PNFbn+>@ofy)xT$|T;{ovIu2njAcX9smt^{;}}+(M~5nfDm3 zCnlg=vBaQ^!?~2yFW;U=9sB;j@pv-?do*Kb?Gkg!XR{#?ptT+H4$1JS!Mg`}KZ?Cy zNA!lmKnhFt~bY#}Q!yQ9~rm6htSu|{wmQlxRZMvr5`SaOPUkZ1SW`}?uS^nMlZJ&}w z$9D;H-660&4do{#$&Q2C5qr2+Nn zg`)4Ir@?5^%uKE9TaF1K7pqKMjo|N`mS5G|Nv>12^Y4r#)n5BO2L+8f5h3mIkybL_HBxqF_&y-%mQ*}0S#yVdeY8((w z(Dg02CxPx4gG;RkK{xV|yJ_mrt`=B<$-1hbmx-LvxYs4s!j8Io=G1H&2Oz z``32zQYw_eUqvL9ZAU}~Djp31Ds=fErWRD)ji7|i&rW#{719nL@b+KmraBY;!+S8Z z&#bUvA8_KP7sP|B*-;Usk=n@=q`@0pz(ViV5nO{}!BDndNJ-k$q&;dS!qd@=A~*wm z^?mwOmn->_S0(7q6wxqlU(FCV642t%j+E&paSGDx3`lxKPxO;3lqeX&=D3rnvH(M*o>wOa3!08{e{9?-%xBtfzYaARDG z6>JR(+PK#MppLXKNK?rzddK0D;}CM5d(mnxk6Q?7%`M?vph@XpoEL*Q@MK5!7=6^m z=((em$=4#ozc;yxA7zTlplhuvw({<}cep?Z4m&feczvFr+e)ivkDmx8MlSZd5>A#q zRY?vvIy56+|7*B&vqMg;Ep8eoEhf(E+1#+f)ba`*JL88*Mi14|AK3biEpP1alEPlF z=O*Zs&bKNT6j5|bpUMBZBxvhy+1R~E)g%k6Y^JC3sP|)=evPRU#vu@xxw(Mc9dKaW zRhK2N7{gjhmC-arC%S-!JUSdyn_tuGVjE9cF=<$NzL{}mE{tec3YFhRQDUL1z;O> zsb+O-l$Bc^^(Jv?OU|m;?od#P|!weReow zc6i+7u7tD!0>Vu4iC`AOe@Hxj=^OJ8MbP6u;)rL$wEx{joLuolodk3WwBkKL@AqCm zb&Jo7Z4Ey=jVlB_cSpzTnlo$yA6R_FW_IqKCQUkKzWhZxaQ+a&mdx3E@jTx}f7b6B zuW0|hyjk5d_*7v0WkR8oUT|@QA5&zGetbj9Z!O?JVnG18-@g2LPwBW^raG38&3_S_ zyf_*t%+UHce3zh1PE1~ABdIrq`k!u|kdHf#q7GO#`2P;Ffu~U{F^(J|eHFRKN%g-n zIb3nU!>%~8Q@x=gSAr>&1Ddm6r^gV3W$5*$U&%-X_W4izh!~G-j_AxOIQGjC6E1Y9 zK`5r)l!{$1ek8MD&dV8fVXn^{(#UKaSF?-a^oxL+f+hZ2nRuaPp_bS|nXrz%l3+8< z)~Yba&zqJtuWpNtUt2O2U;A=FhmoXR`cQ%)mO6GU6&iq)=~Wf)v~FVQv=w U&C>>*eeu-mak>IB{^!sA7jo%3n*aa+ literal 3692 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 diff --git a/src/map/mapengine.cpp b/src/map/mapengine.cpp index 0cb6a85..01641be 100644 --- a/src/map/mapengine.cpp +++ b/src/map/mapengine.cpp @@ -99,3 +99,8 @@ QGraphicsScene* MapEngine::scene() { return dynamic_cast(m_mapScene); } + +void MapEngine::setLocation(QPointF sceneCoordinate) +{ + emit locationChanged(sceneCoordinate); +} diff --git a/src/map/mapengine.h b/src/map/mapengine.h index b833981..58fd052 100644 --- a/src/map/mapengine.h +++ b/src/map/mapengine.h @@ -139,8 +139,23 @@ private slots: */ void mapImageReceived(const QUrl &url, const QPixmap &pixmap); + /** + * @brief Slot for setting current view location + * + * Emits locationChanged signal. + * @param sceneCoordinate Scene coordinates for new position + */ + void setLocation(QPointF sceneCoordinate); + signals: /** + * @brief Signal for view location change + * + * @param sceneCoordinate New scene coordinates + */ + void locationChanged(QPointF sceneCoordinate); + + /** * @brief Signal for zoom level change * * @param newZoomLevel New zoom level diff --git a/src/map/mapview.cpp b/src/map/mapview.cpp index e936417..1b84e23 100644 --- a/src/map/mapview.cpp +++ b/src/map/mapview.cpp @@ -61,9 +61,6 @@ void MapView::mouseMoveEvent(QMouseEvent *event) emit viewScrolled(m_scenePosition); - /// @todo REMOVE AFTER UPDATING ENGINE - centerToSceneCoordinates(m_scenePosition); - m_mousePosition = mapToScene(event->pos()); } @@ -78,11 +75,3 @@ void MapView::centerToSceneCoordinates(QPointF sceneCoordinate) { centerOn(sceneCoordinate); } - -//bool MapView::event(QEvent *event) -//{ -// qDebug() << __PRETTY_FUNCTION__ << "event type:" << event->type(); -// event->ignore(); -// QObject::event(event); -// return false; -//} diff --git a/src/map/mapview.h b/src/map/mapview.h index c1c79e1..4531231 100644 --- a/src/map/mapview.h +++ b/src/map/mapview.h @@ -50,9 +50,9 @@ private slots: /** * @brief Slot for mouse move events * - * Does calculate mouse movement delta from last event position and save - * current event position for next round. Calls centerToSceneCoordinates - * to actually make the dragging. + * Does calculate mouse movement delta from last event position and new view center + * based on that delta. Saves current event position for next round. Emits viewScrolled + * signal and doesn't actually scroll the view. * @param event Mouse event */ void mouseMoveEvent(QMouseEvent *event); diff --git a/src/ui/mapviewscreen.cpp b/src/ui/mapviewscreen.cpp index 82b89dc..7f99866 100644 --- a/src/ui/mapviewscreen.cpp +++ b/src/ui/mapviewscreen.cpp @@ -26,12 +26,19 @@ MapViewScreen::MapViewScreen(QWidget *parent) : QWidget(parent) { - QHBoxLayout *mapViewLayout = new QHBoxLayout; + MapView *mapView = new MapView(this); - mapViewLayout->addWidget(mapView); - setLayout(mapViewLayout); MapEngine *mapEngine = new MapEngine(this); mapView->setScene(mapEngine->scene()); + + connect(mapView, SIGNAL(viewScrolled(QPointF)), mapEngine, SLOT(setLocation(QPointF))); + connect(mapEngine, SIGNAL(locationChanged(QPointF)), + mapView, SLOT(centerToSceneCoordinates(QPointF))); connect(mapEngine, SIGNAL(zoomLevelChanged(int)), mapView, SLOT(setZoomLevel(int))); + + QHBoxLayout *mapViewLayout = new QHBoxLayout; + mapViewLayout->addWidget(mapView); + setLayout(mapViewLayout); + mapEngine->setViewLocation(QPointF(25.5000, 65.0000)); } -- 1.7.9.5