1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2025-02-18 08:54:15 +01:00

GCS/OPMap - Changed several foreach chield methods to signal/slot

This commit is contained in:
PT_Dreamer 2012-08-18 23:04:31 +01:00
parent 2a4c54a073
commit 4b8bfcb997
9 changed files with 60 additions and 51 deletions

View File

@ -74,9 +74,15 @@ namespace mapcontrol
{
if(timer.elapsed()>trailtime*1000)
{
trail->addToGroup(new TrailItem(position,altitude,Qt::green,this));
TrailItem * ob=new TrailItem(position,altitude,Qt::green,map);
trail->addToGroup(ob);
connect(this,SIGNAL(setChildPosition()),ob,SLOT(setPosSLOT()));
if(!lasttrailline.IsEmpty())
trailLine->addToGroup((new TrailLineItem(lasttrailline,position,Qt::green,map)));
{
TrailLineItem * obj=new TrailLineItem(lasttrailline,position,Qt::red,map);
trailLine->addToGroup(obj);
connect(this,SIGNAL(setChildLine()),obj,SLOT(setLineSlot()));
}
lasttrailline=position;
timer.restart();
}
@ -86,10 +92,15 @@ namespace mapcontrol
{
if(qAbs(internals::PureProjection::DistanceBetweenLatLng(lastcoord,position)*1000)>traildistance)
{
trail->addToGroup(new TrailItem(position,altitude,Qt::green,this));
TrailItem * ob=new TrailItem(position,altitude,Qt::green,map);
trail->addToGroup(ob);
connect(this,SIGNAL(setChildPosition()),ob,SLOT(setPosSLOT()));
if(!lasttrailline.IsEmpty())
trailLine->addToGroup((new TrailLineItem(lasttrailline,position,Qt::green,this)));
{
TrailLineItem * obj=new TrailLineItem(lasttrailline,position,Qt::red,map);
trailLine->addToGroup(obj);
connect(this,SIGNAL(setChildLine()),obj,SLOT(setLineSlot()));
}
lasttrailline=position;
lastcoord=position;
}
@ -127,18 +138,8 @@ namespace mapcontrol
{
localposition=map->FromLatLngToLocal(coord);
this->setPos(localposition.X(),localposition.Y());
foreach(QGraphicsItem* i,trail->childItems())
{
TrailItem* w=qgraphicsitem_cast<TrailItem*>(i);
if(w)
w->setPos(map->FromLatLngToLocal(w->coord).X(),map->FromLatLngToLocal(w->coord).Y());
}
foreach(QGraphicsItem* i,trailLine->childItems())
{
TrailLineItem* ww=qgraphicsitem_cast<TrailLineItem*>(i);
if(ww)
ww->setLine(map->FromLatLngToLocal(ww->coord1).X(),map->FromLatLngToLocal(ww->coord1).Y(),map->FromLatLngToLocal(ww->coord2).X(),map->FromLatLngToLocal(ww->coord2).Y());
}
emit setChildPosition();
emit setChildLine();
}

View File

@ -222,6 +222,8 @@ namespace mapcontrol
signals:
void UAVReachedWayPoint(int const& waypointnumber,WayPointItem* waypoint);
void UAVLeftSafetyBouble(internals::PointLatLng const& position);
void setChildPosition();
void setChildLine();
};
}
#endif // GPSITEM_H

View File

@ -98,8 +98,7 @@ namespace mapcontrol
QSize size=boundingRect().size().toSize();
size.setWidth(size.width()*2*zoomdiff);
size.setHeight(size.height()*2*zoomdiff);
temp=QImage(size,
QImage::Format_ARGB32_Premultiplied);
temp=QImage(size,QImage::Format_ARGB32_Premultiplied);
temp.fill(0);
QPainter imagePainter(&temp);
imagePainter.translate(-boundingRect().topLeft());

View File

@ -28,9 +28,8 @@
#include <QDateTime>
namespace mapcontrol
{
TrailItem::TrailItem(internals::PointLatLng const& coord,int const& altitude, QBrush color, QGraphicsItem* parent):QGraphicsItem(parent),coord(coord)
TrailItem::TrailItem(internals::PointLatLng const& coord,int const& altitude, QBrush color, MapGraphicItem *map):QGraphicsItem(map),coord(coord),m_brush(color),m_map(map)
{
m_brush=color;
QDateTime time=QDateTime::currentDateTime();
QString coord_str = " " + QString::number(coord.Lat(), 'f', 6) + " " + QString::number(coord.Lng(), 'f', 6);
setToolTip(QString(tr("Position:")+"%1\n"+tr("Altitude:")+"%2\n"+tr("Time:")+"%3").arg(coord_str).arg(QString::number(altitude)).arg(time.toString()));
@ -52,5 +51,8 @@ namespace mapcontrol
return Type;
}
void TrailItem::setPosSLOT()
{
setPos(m_map->FromLatLngToLocal(this->coord).X(),m_map->FromLatLngToLocal(this->coord).Y());
}
}

View File

@ -32,6 +32,7 @@
#include <QLabel>
#include "../internals/pointlatlng.h"
#include <QObject>
#include "mapgraphicitem.h"
namespace mapcontrol
{
@ -42,7 +43,7 @@ namespace mapcontrol
Q_INTERFACES(QGraphicsItem)
public:
enum { Type = UserType + 3 };
TrailItem(internals::PointLatLng const& coord,int const& altitude, QBrush color, QGraphicsItem* parent);
TrailItem(internals::PointLatLng const& coord,int const& altitude, QBrush color,MapGraphicItem * map);
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
QWidget *widget);
QRectF boundingRect() const;
@ -50,10 +51,9 @@ namespace mapcontrol
internals::PointLatLng coord;
private:
QBrush m_brush;
MapGraphicItem * m_map;
public slots:
void setPosSLOT();
signals:
};

View File

@ -28,9 +28,8 @@
namespace mapcontrol
{
TrailLineItem::TrailLineItem(internals::PointLatLng const& coord1,internals::PointLatLng const& coord2, QBrush color, QGraphicsItem* parent):QGraphicsLineItem(parent),coord1(coord1),coord2(coord2)
TrailLineItem::TrailLineItem(internals::PointLatLng const& coord1,internals::PointLatLng const& coord2, QBrush color, MapGraphicItem * map):QGraphicsLineItem(map),coord1(coord1),coord2(coord2),m_brush(color),m_map(map)
{
m_brush=color;
QPen pen;
pen.setBrush(m_brush);
pen.setWidth(1);
@ -42,5 +41,8 @@ namespace mapcontrol
return Type;
}
void TrailLineItem::setLineSlot()
{
setLine(m_map->FromLatLngToLocal(this->coord1).X(),m_map->FromLatLngToLocal(this->coord1).Y(),m_map->FromLatLngToLocal(this->coord2).X(),m_map->FromLatLngToLocal(this->coord2).Y());
}
}

View File

@ -32,6 +32,7 @@
#include <QLabel>
#include "../internals/pointlatlng.h"
#include <QObject>
#include "mapgraphicitem.h"
namespace mapcontrol
{
@ -42,16 +43,15 @@ namespace mapcontrol
Q_INTERFACES(QGraphicsItem)
public:
enum { Type = UserType + 7 };
TrailLineItem(internals::PointLatLng const& coord1,internals::PointLatLng const& coord2, QBrush color, QGraphicsItem* parent);
TrailLineItem(internals::PointLatLng const& coord1,internals::PointLatLng const& coord2, QBrush color,MapGraphicItem * map);
int type() const;
internals::PointLatLng coord1;
internals::PointLatLng coord2;
private:
QBrush m_brush;
MapGraphicItem * m_map;
public slots:
void setLineSlot();
signals:
};

View File

@ -297,9 +297,15 @@ namespace mapcontrol
{
if(timer.elapsed()>trailtime*1000)
{
trail->addToGroup(new TrailItem(position,altitude,Qt::red,this));
TrailItem * ob=new TrailItem(position,altitude,Qt::green,map);
trail->addToGroup(ob);
connect(this,SIGNAL(setChildPosition()),ob,SLOT(setPosSLOT()));
if(!lasttrailline.IsEmpty())
trailLine->addToGroup((new TrailLineItem(lasttrailline,position,Qt::red,map)));
{
TrailLineItem * obj=new TrailLineItem(lasttrailline,position,Qt::red,map);
trailLine->addToGroup(obj);
connect(this,SIGNAL(setChildLine()),obj,SLOT(setLineSlot()));
}
lasttrailline=position;
timer.restart();
}
@ -309,9 +315,15 @@ namespace mapcontrol
{
if(qAbs(internals::PureProjection::DistanceBetweenLatLng(lastcoord,position)*1000)>traildistance)
{
trail->addToGroup(new TrailItem(position,altitude,Qt::red,this));
TrailItem * ob=new TrailItem(position,altitude,Qt::green,map);
trail->addToGroup(ob);
connect(this,SIGNAL(setChildPosition()),ob,SLOT(setPosSLOT()));
if(!lasttrailline.IsEmpty())
trailLine->addToGroup((new TrailLineItem(lasttrailline,position,Qt::red,map)));
{
TrailLineItem * obj=new TrailLineItem(lasttrailline,position,Qt::red,map);
trailLine->addToGroup(obj);
connect(this,SIGNAL(setChildLine()),obj,SLOT(setLineSlot()));
}
lasttrailline=position;
lastcoord=position;
}
@ -395,19 +407,8 @@ namespace mapcontrol
{
localposition=map->FromLatLngToLocal(coord);
this->setPos(localposition.X(),localposition.Y());
foreach(QGraphicsItem* i,trail->childItems())
{
TrailItem* w=qgraphicsitem_cast<TrailItem*>(i);
if(w)
w->setPos(map->FromLatLngToLocal(w->coord).X(),map->FromLatLngToLocal(w->coord).Y());
}
foreach(QGraphicsItem* i,trailLine->childItems())
{
TrailLineItem* ww=qgraphicsitem_cast<TrailLineItem*>(i);
if(ww)
ww->setLine(map->FromLatLngToLocal(ww->coord1).X(),map->FromLatLngToLocal(ww->coord1).Y(),map->FromLatLngToLocal(ww->coord2).X(),map->FromLatLngToLocal(ww->coord2).Y());
}
emit setChildPosition();
emit setChildLine();
refreshPaint_flag=true;
}

View File

@ -223,6 +223,7 @@ namespace mapcontrol
void generateArrowhead();
MapGraphicItem* map;
OPMapWidget* mapwidget;
QPolygonF arrowHead;
QLineF arrowShaft;
int altitude;
@ -237,7 +238,6 @@ namespace mapcontrol
double yawRate_dps;
QPixmap pic;
core::Point localposition;
OPMapWidget* mapwidget;
QGraphicsItemGroup* trail;
QGraphicsItemGroup * trailLine;
internals::PointLatLng lasttrailline;
@ -265,6 +265,8 @@ namespace mapcontrol
signals:
void UAVReachedWayPoint(int const& waypointnumber,WayPointItem* waypoint);
void UAVLeftSafetyBouble(internals::PointLatLng const& position);
void setChildPosition();
void setChildLine();
};
}
#endif // UAVITEM_H