#include "geoFenceitem.h" #include #include namespace mapcontrol { geoFenceitem::geoFenceitem(int group, bool inclusion, int version, internals::PointLatLng const & coord, QBrush color, MapGraphicItem *map, bool dashed, int width) : QGraphicsPolygonItem(map), number(0) , coord(coord), m_brush(color), m_map(map), dashed(dashed), lineWidth(width) { this->setZValue(3); connect(map, SIGNAL(childRefreshPosition()), this, SLOT(RefreshPos())); m_version = version; m_inclusion = inclusion; //m_Vertex = count;//1 m_group = group; //2 m_latitude = coord.Lat();//5 m_longitide = coord.Lng();//6 RefreshPos(); } void geoFenceitem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { Q_UNUSED(option); Q_UNUSED(widget); painter->setOpacity(0.4); QPen myPen = painter->pen(); myPen.setWidth(lineWidth); myPen.setColor(m_brush.color()); painter->setPen(myPen); if (dashed) { QVector dashes; dashes << 4 << 8; myPen.setDashPattern(dashes); } if(m_inclusion) { painter->setBrush(m_brush); } else { painter->setBrush(Qt::NoBrush); } painter->drawPoint(0, 0); painter->drawPolygon(polygon()); } int geoFenceitem::type() const { return Type; } void geoFenceitem::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) { if (event->button() == Qt::LeftButton) { } } void geoFenceitem::mousePressEvent(QGraphicsSceneMouseEvent *event) { if (event->button() == Qt::LeftButton) { isDragging = true; } QGraphicsItem::mousePressEvent(event); update(); } void geoFenceitem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { if (event->button() == Qt::LeftButton) { isDragging = false; } QGraphicsItem::mouseReleaseEvent(event); update(); } void geoFenceitem::mouseMoveEvent(QGraphicsSceneMouseEvent *event) { if (isDragging) { //ElevationTrig(); emit localPositionChanged(this->pos(), this); } QGraphicsItem::mouseMoveEvent(event); update(); } void geoFenceitem::hoverEnterEvent(QGraphicsSceneHoverEvent *event) { Q_UNUSED(event) update(); } void geoFenceitem::hoverLeaveEvent(QGraphicsSceneHoverEvent *event) { Q_UNUSED(event) update(); } void geoFenceitem::setPosSLOT() { //qDebug() << "virtual set pos"; QPolygonF polygon; for(internals::PointLatLng LatLng:points) { QPointF pf; pf.setX(m_map->FromLatLngToLocal(LatLng).X() - m_map->FromLatLngToLocal(this->coord).X()); pf.setY(m_map->FromLatLngToLocal(LatLng).Y() - m_map->FromLatLngToLocal(this->coord).Y()); polygon.append(pf); } setPolygon(polygon); setPos(m_map->FromLatLngToLocal(this->coord).X(), m_map->FromLatLngToLocal(this->coord).Y()); emit localPositionChanged(this->pos(),this); update(); } void geoFenceitem::RefreshPos() { setPosSLOT(); } void geoFenceitem::setPoints(QList p) { points = p; m_Vertex = p.size(); RefreshPos(); } }