飞行版本

This commit is contained in:
hm
2022-02-25 15:51:18 +08:00
parent c69af12878
commit 16b55bceb2
17 changed files with 396 additions and 294 deletions
+1 -1
View File
@@ -46,7 +46,7 @@ void MapRipForm::SetPercentage(const int &perc)
}
void MapRipForm::SetProvider(const QString &prov, const int &zoom)
{
ui->mainlabel->setText(QString(tr("Currently ripping from:%1 at Zoom level %2")).arg(prov).arg(zoom));
ui->mainlabel->setText(QString(tr("Currently ripping from:\n%1 at Zoom level %2")).arg(prov).arg(zoom));
}
void MapRipForm::SetNumberOfTiles(const int &total, const int &actual)
{
+32 -54
View File
@@ -6,65 +6,43 @@
<rect>
<x>0</x>
<y>0</y>
<width>506</width>
<height>150</height>
<width>521</width>
<height>155</height>
</rect>
</property>
<property name="windowTitle">
<string>MapRipper</string>
</property>
<widget class="QProgressBar" name="progressBar">
<property name="geometry">
<rect>
<x>20</x>
<y>60</y>
<width>481</width>
<height>23</height>
</rect>
</property>
<property name="value">
<number>0</number>
</property>
</widget>
<widget class="QLabel" name="mainlabel">
<property name="geometry">
<rect>
<x>30</x>
<y>10</y>
<width>481</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>Currently ripping from:</string>
</property>
</widget>
<widget class="QLabel" name="statuslabel">
<property name="geometry">
<rect>
<x>30</x>
<y>40</y>
<width>341</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>Downloading tile</string>
</property>
</widget>
<widget class="QPushButton" name="cancelButton">
<property name="geometry">
<rect>
<x>220</x>
<y>100</y>
<width>75</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>Cancel</string>
</property>
</widget>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QLabel" name="mainlabel">
<property name="text">
<string>Currently ripping from:</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="statuslabel">
<property name="text">
<string>Downloading tile</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QProgressBar" name="progressBar">
<property name="value">
<number>0</number>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QPushButton" name="cancelButton">
<property name="text">
<string>Cancel</string>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
+2
View File
@@ -28,6 +28,8 @@
namespace mapcontrol {
MapRipper::MapRipper(internals::Core *core, const internals::RectLatLng & rect) : sleep(100), cancel(false), progressForm(0), core(core), yesToAll(false)
{
qDebug() << "start to load map" << rect.IsEmpty() << rect.Lat();
if (!rect.IsEmpty()) {
type = core->GetMapType();
progressForm = new MapRipForm;
+87 -114
View File
@@ -100,16 +100,6 @@ OPMapWidget::OPMapWidget(QWidget *parent, Configuration *config) : QGraphicsView
altitudeitem->hide();
/*
AddVirtualMargin(0,virtualmarginmap_red.size(), 50,-50,0);
AddVirtualMargin(0,virtualmarginmap_red.size(), 50, 50,0);
AddVirtualMargin(0,virtualmarginmap_red.size(),-50, 50,0);
AddVirtualMargin(0,virtualmarginmap_red.size(),-50,-50,0);
*/
NoOperationTimer = new QTimer(this);
connect(NoOperationTimer,SIGNAL(timeout()),
this,SLOT(NOPTimeout()));
@@ -201,78 +191,72 @@ void OPMapWidget::NOPTimeout()
}
}
void OPMapWidget::AddVirtualMargin(int type,int index,double lat,double lng,double alt)
void OPMapWidget::AddVirtualMargin(int type,int index,double lat,double lng,double alt,QColor color)
{
qDebug() << "AddVirtualMargin" << type << index;
internals::PointLatLng LatLng;
LatLng.SetLat(lat);
LatLng.SetLng(lng);
if(type == 0)
{
VirtualMargin *vm = new VirtualMargin(index,LatLng,alt,WarningColor,map);
virtualmarginmap_red.insert(index,vm);
QMap<int,VirtualMargin *> virtualmarginmap = VirtualMarginPoints.value(type);
QMap<int,VirtualMarginLine *> virtualmarginlinemap = VirtualMarginlinemapLines.value(type);
foreach (VirtualMarginLine *l, virtualmarginlinemap_red) {
if(l){
disconnect(l,nullptr,nullptr,nullptr);
delete l;
}
VirtualMargin *vm = new VirtualMargin(index,LatLng,alt,color,map);
virtualmarginmap.insert(index,vm);
foreach (VirtualMarginLine *l, virtualmarginlinemap) {
if(l){
disconnect(l,nullptr,nullptr,nullptr);
delete l;
}
virtualmarginlinemap_red.clear();
for(QMap<int,VirtualMargin *>::iterator i = virtualmarginmap_red.begin();i != virtualmarginmap_red.end();++i)
{
VirtualMargin *vv = i.value();
if(vv)
{
if(vv->number > 0)
{
VirtualMarginLine *l = new VirtualMarginLine(virtualmarginmap_red.value(vv->number - 1),vv,map,WarningColor);
l->setOpacity(overlayOpacity);
l->show();
virtualmarginlinemap_red.insert(virtualmarginlinemap_red.size(),l);
}
}
}
CloseVirtualMargin(type);
FlushVirtualMargin(type);
}
else if(type == 1)
virtualmarginlinemap.clear();
for(QMap<int,VirtualMargin *>::iterator i = virtualmarginmap.begin();i != virtualmarginmap.end();++i)
{
VirtualMargin *vm = new VirtualMargin(index,LatLng,alt,NoticeColor,map);
virtualmarginmap_orange.insert(index,vm);
foreach (VirtualMarginLine *l, virtualmarginlinemap_orange) {
if(l){
disconnect(l,nullptr,nullptr,nullptr);
delete l;
}
}
virtualmarginlinemap_orange.clear();
for(QMap<int,VirtualMargin *>::iterator i = virtualmarginmap_orange.begin();i != virtualmarginmap_orange.end();++i)
{
VirtualMargin *vv = i.value();
if(vv)
VirtualMargin *v = i.value();
if(v)
{
if(v->number > 0)
{
if(vv->number > 0)
{
VirtualMarginLine *l = new VirtualMarginLine(virtualmarginmap_orange.value(vv->number - 1),vv,map,NoticeColor);
l->setOpacity(overlayOpacity);
l->show();
VirtualMarginLine *l = new VirtualMarginLine(virtualmarginmap.value(v->number - 1),v,map,color);
l->setOpacity(overlayOpacity);
l->show();
virtualmarginlinemap_orange.insert(virtualmarginlinemap_orange.size(),l);
}
virtualmarginlinemap.insert(virtualmarginlinemap.size(),l);
}
}
CloseVirtualMargin(type);
FlushVirtualMargin(type);
}
}
if(virtualmarginmap.size() >= 2)
{
VirtualMargin *vm_first = virtualmarginmap.first();
VirtualMargin *vm_last = virtualmarginmap.last();
if((vm_first)&&(vm_last))
{
VirtualMarginLine *l = new VirtualMarginLine(vm_first,vm_last,map,color);
l->setOpacity(overlayOpacity);
l->show();
virtualmarginlinemap.insert(virtualmarginlinemap.size(),l);
}
}
VirtualMarginPoints.insert(type,virtualmarginmap);
VirtualMarginlinemapLines.insert(type,virtualmarginlinemap);
//FlushVirtualMargin(type);
foreach (VirtualMargin *v, virtualmarginmap) {
qDebug() << "create a virtual point" << v->number;
}
}
void OPMapWidget::CloseVirtualMargin(int type)
@@ -316,61 +300,43 @@ void OPMapWidget::CloseVirtualMargin(int type)
void OPMapWidget::RemoveVirtualMargin(int type)
{
if(type == 0)
{
//移除虚拟边界
foreach (VirtualMargin *vm, virtualmarginmap_red) {
if(vm)
{
qDebug() << "del vm" << vm->number << vm->coord.Lat() << vm->coord.Lng();
disconnect(vm,nullptr,nullptr,nullptr);
delete vm;
}
}
//从列表删除所有
virtualmarginmap_red.clear();
//移除虚拟边界
foreach (VirtualMarginLine *l, virtualmarginlinemap_red) {
if(l)
{
disconnect(l,nullptr,nullptr,nullptr);
delete l;
}
QMap<int,VirtualMargin*> virtualmarginmap = VirtualMarginPoints.value(type);
QMap<int,VirtualMarginLine *> virtualmarginlinemap = VirtualMarginlinemapLines.value(type);
//移除虚拟边界
foreach (VirtualMargin *vm, virtualmarginmap) {
if(vm)
{
qDebug() << "del vm" << vm->number << vm->coord.Lat() << vm->coord.Lng();
disconnect(vm,nullptr,nullptr,nullptr);
delete vm;
}
//从列表删除所有
virtualmarginlinemap_red.clear();
}
else if(type == 1)
{
//移除虚拟边界
foreach (VirtualMargin *vm, virtualmarginmap_orange) {
if(vm)
{
qDebug() << "del vm" << vm->number << vm->coord.Lat() << vm->coord.Lng();
disconnect(vm,nullptr,nullptr,nullptr);
delete vm;
}
}
//从列表删除所有
virtualmarginmap_orange.clear();
//从列表删除所有
virtualmarginmap.clear();
//移除虚拟边界
foreach (VirtualMarginLine *l, virtualmarginlinemap_orange) {
if(l)
{
disconnect(l,nullptr,nullptr,nullptr);
delete l;
}
//移除虚拟边界
foreach (VirtualMarginLine *l, virtualmarginlinemap) {
if(l)
{
disconnect(l,nullptr,nullptr,nullptr);
delete l;
}
//从列表删除所有
virtualmarginlinemap_orange.clear();
}
//从列表删除所有
virtualmarginlinemap.clear();
VirtualMarginPoints.remove(type);
VirtualMarginlinemapLines.remove(type);
}
void OPMapWidget::FlushVirtualMargin(int type)
{
if(type == 0)
{
for(QMap<int,VirtualMargin *>::iterator i = virtualmarginmap_red.begin();i != virtualmarginmap_red.end();++i)
@@ -722,6 +688,13 @@ void OPMapWidget::mouseDoubleClickEvent(QMouseEvent *event)
<< QThread::currentThreadId();
}
}
else
{
if(event->button() == Qt::LeftButton)
{
RipMap();
}
}
if((event->modifiers() == Qt::ControlModifier) &&(event->button() == Qt::RightButton))
+7 -1
View File
@@ -476,6 +476,10 @@ private:
QTimer *NoOperationTimer = nullptr;
QMap<int,QMap<int,VirtualMargin *>> VirtualMarginPoints;//type index point
QMap<int,QMap<int,VirtualMarginLine *>> VirtualMarginlinemapLines;//type index line
QMap<int,VirtualMargin *> virtualmarginmap_red;
QMap<int,VirtualMarginLine *> virtualmarginlinemap_red;
@@ -485,6 +489,8 @@ private:
QColor WarningColor = QColor("#F64034");
QColor NoticeColor = QColor("#F1B243");
QColor Drop1Color = QColor("#0000FF");
QColor Drop2Color = QColor("#0000FF");
private slots:
@@ -621,7 +627,7 @@ public slots:
void getMapTypes(void);
void setMapTypes(QVariant value);
void AddVirtualMargin(int type, int index, double lat, double lng, double alt);
void AddVirtualMargin(int type, int index, double lat, double lng, double alt, QColor color);
void CloseVirtualMargin(int type);
void RemoveVirtualMargin(int type);
void FlushVirtualMargin(int type);