解决插入之后序号变化问题
This commit is contained in:
@@ -428,28 +428,38 @@ void OPMapWidget::WPInsert(const int &position)
|
||||
|
||||
if(item_old1)//如果指定的点存在,那么就可以在这之前插入一个点
|
||||
{
|
||||
WayPointItem *item = WPCreate(latlng,item_old1->Altitude());
|
||||
WayPointItem *item = new WayPointItem(latlng, item_old1->Altitude(), map);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
ConnectWP(item);
|
||||
item->SetNumber(position);
|
||||
item->setParentItem(map);
|
||||
setOverlayOpacity(overlayOpacity);
|
||||
|
||||
setSelectedWP(item);
|
||||
item->emitWPProperty();//这个没有执行
|
||||
|
||||
|
||||
foreach(QGraphicsItem * i, map->childItems()) {
|
||||
WayPointItem *w = qgraphicsitem_cast<WayPointItem *>(i);
|
||||
|
||||
if (w) {
|
||||
|
||||
if(w->Number()>position)
|
||||
if(w != item)
|
||||
{
|
||||
w->SetNumber(w->Number() -1);
|
||||
if(w->Number() >= item->Number())
|
||||
{
|
||||
w->SetNumber(w->Number()+1);
|
||||
}
|
||||
}
|
||||
|
||||
qDebug() << "renumber" << w->Number() << w->snumber;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
WayPointItem *w_next = WPFind(item->Number() + 1);
|
||||
if(w_next)
|
||||
{
|
||||
@@ -474,21 +484,18 @@ void OPMapWidget::WPInsert(const int &position)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
foreach(QGraphicsItem * i, map->childItems()) {
|
||||
WayPointItem *w = qgraphicsitem_cast<WayPointItem *>(i);
|
||||
|
||||
if (w) {
|
||||
qDebug() << "all number" << w->Number() << w->snumber;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
void OPMapWidget::WPInsert(WayPointItem *item, const int &position)
|
||||
{
|
||||
item->SetNumber(position);
|
||||
|
||||
@@ -377,7 +377,7 @@ void WayPointItem::SetNumber(const int &value)
|
||||
}
|
||||
|
||||
this->update();
|
||||
emit WPNumberChanged(oldnumber, value, this);
|
||||
//emit WPNumberChanged(oldnumber, value, this);
|
||||
}
|
||||
void WayPointItem::SetReached(const bool &value)
|
||||
{
|
||||
@@ -456,14 +456,21 @@ void WayPointItem::onHomePositionChanged(internals::PointLatLng homepos, float h
|
||||
|
||||
void WayPointItem::WPRenumbered(const int &oldnumber, const int &newnumber, WayPointItem *waypoint)
|
||||
{
|
||||
if (waypoint != this) {
|
||||
if (((oldnumber > property.seq) && (newnumber <= property.seq))) {
|
||||
SetNumber(++property.seq);
|
||||
} else if (((oldnumber < property.seq) && (newnumber > property.seq))) {
|
||||
SetNumber(--property.seq);
|
||||
} else if (newnumber == property.seq) {
|
||||
SetNumber(++property.seq);
|
||||
if (waypoint != this) {//如果wp不是当前点,说明需要重新排序
|
||||
if (((oldnumber > property.seq) && (newnumber <= property.seq)))
|
||||
{
|
||||
int n = property.seq;
|
||||
SetNumber(++n);
|
||||
} else if (((oldnumber < property.seq) && (newnumber > property.seq)))
|
||||
{
|
||||
int n = property.seq;
|
||||
SetNumber(--n);
|
||||
} else if (newnumber == property.seq)
|
||||
{
|
||||
int n = property.seq;
|
||||
SetNumber(++n);
|
||||
}
|
||||
qDebug() << "set property.seq" << property.seq;
|
||||
}
|
||||
}
|
||||
int WayPointItem::type() const
|
||||
|
||||
Reference in New Issue
Block a user