Subversion Repositories Projects

Rev

Rev 305 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 305 Rev 306
Line 20... Line 20...
20
 
20
 
21
dlg_Map::dlg_Map(QWidget *parent) : QDialog(parent)
21
dlg_Map::dlg_Map(QWidget *parent) : QDialog(parent)
22
{
22
{
Line -... Line 23...
-
 
23
    setupUi(this);
-
 
24
 
-
 
25
    // Kartenwahl ausschalten
-
 
26
    lb_Maps->setVisible(false);
-
 
27
    cb_Maps->setVisible(false);
-
 
28
 
-
 
29
    // Noch nicht eingebaut also Button weg.
-
 
30
    pb_SendWaypoints->setVisible(false);
-
 
31
 
-
 
32
    pb_Add->setEnabled(false);
-
 
33
    pb_Goto->setEnabled(false);
-
 
34
}
-
 
35
 
-
 
36
// Karte erstellen und anzeigen
-
 
37
void dlg_Map::create_Map(cSettings *t_Settings)
-
 
38
{
-
 
39
    o_Settings = t_Settings;
-
 
40
 
-
 
41
    cb_CenterPos->setChecked(o_Settings->Map.GotoPosition);
23
    setupUi(this);
42
    cb_ShowRoute->setChecked(o_Settings->Map.ShowTrack);
24
 
43
 
25
    connect(sl_Zoom,   SIGNAL(valueChanged(int)), this, SLOT(slot_Zoom(int)));
44
    connect(sl_Zoom,   SIGNAL(valueChanged(int)), this, SLOT(slot_Zoom(int)));
-
 
45
    connect(pb_Add,    SIGNAL(clicked()), this, SLOT(slot_AddWayPoint()));
26
    connect(pb_Add,    SIGNAL(clicked()), this, SLOT(slot_AddWP()));
46
    connect(pb_Delete, SIGNAL(clicked()), this, SLOT(slot_DeleteWayPoints()));
-
 
47
    connect(pb_Goto,   SIGNAL(clicked()), this, SLOT(slot_GotoTarget()));
Line 27... Line -...
27
    connect(pb_Delete, SIGNAL(clicked()), this, SLOT(slot_DeleteWP()));
-
 
28
    connect(cb_Maps,   SIGNAL(currentIndexChanged(int)), this, SLOT(slot_ChangeMap(int)));
48
    connect(cb_Maps,   SIGNAL(currentIndexChanged(int)), this, SLOT(slot_ChangeMap(int)));
-
 
49
    connect(this,      SIGNAL(rejected()), this, SLOT(slot_Close()));
-
 
50
 
Line 29... Line 51...
29
 
51
    o_Map = new MapControl(w_Map->size());
30
//    o_Map = new MapControl(QSize(500,300));
-
 
Line 31... Line 52...
31
    o_Map = new MapControl(w_Map->size());
52
    o_Map->enablePersistentCache(o_Settings->DIR.Cache);
32
 
53
    o_Map->showScale(true);
33
    o_Adapter = new OSMMapAdapter();
54
 
Line 49... Line 70...
49
 
70
 
Line 50... Line 71...
50
    l_Map->addWidget(o_Map);
71
    l_Map->addWidget(o_Map);
Line 51... Line -...
51
 
-
 
52
    sl_Zoom->setValue(17);
-
 
53
 
-
 
54
    QDir path = QDir::homePath() + "/.QMK-Cache";
72
 
55
    o_Map->enablePersistentCache(path);
73
    sl_Zoom->setValue(17);
56
 
74
 
57
    Pen[0] = new QPen(QColor(0,0,255,255));
75
    Pen[0] = new QPen(QColor(0,0,255,255));
58
    Pen[0]->setWidth(2);
-
 
59
    Pen[1] = new QPen(QColor(255,0,0,255));
76
    Pen[0]->setWidth(2);
Line -... Line 77...
-
 
77
    Pen[1] = new QPen(QColor(255,0,0,255));
60
    Pen[1]->setWidth(2);
78
    Pen[1]->setWidth(2);
61
 
79
}
-
 
80
 
-
 
81
// Position zum Flug-Track hinzufügen
-
 
82
void dlg_Map::add_Position(double x, double y)
-
 
83
{
-
 
84
    sWayPoint WayPoint;
-
 
85
 
-
 
86
    WayPoint.Longitude = x;
-
 
87
    WayPoint.Latitude = y;
62
}
88
    WayPoint.Time = sb_Time->value();
63
 
89
 
Line 64... Line 90...
64
void dlg_Map::add_Position(double x, double y)
90
    l_WayPoint.append(WayPoint);
Line 85... Line 111...
85
        o_Route->addGeometry(l_RouteFL);
111
        o_Route->addGeometry(l_RouteFL);
86
    }
112
    }
87
    o_Map->updateRequestNew();
113
    o_Map->updateRequestNew();
88
}
114
}
Line -... Line 115...
-
 
115
 
89
 
116
// Zoom der Karte ändern
90
void dlg_Map::slot_Zoom(int i_Zoom)
117
void dlg_Map::slot_Zoom(int t_Zoom)
91
{
118
{
92
    o_Map->setZoom(i_Zoom);
119
    o_Map->setZoom(t_Zoom);
Line -... Line 120...
-
 
120
}
93
}
121
 
94
 
122
// Waypoint zur Liste hinzufügen
95
void dlg_Map::slot_AddWP()
123
void dlg_Map::slot_AddWayPoint()
Line 96... Line 124...
96
{
124
{
97
    o_Route->removeGeometry(l_RouteWP);
125
    o_Route->removeGeometry(l_RouteWP);
Line 98... Line 126...
98
 
126
 
99
    p_RouteWP.append(LastClick);
127
    p_RouteWP.append(LastClick);
100
    l_RouteWP = new LineString(p_RouteWP, "", Pen[0]);
128
    l_RouteWP = new LineString(p_RouteWP, "", Pen[0]);
Line -... Line 129...
-
 
129
 
101
 
130
    o_Route->addGeometry(l_RouteWP);
102
    o_Route->addGeometry(l_RouteWP);
131
    o_Map->updateRequestNew();
103
    o_Map->updateRequestNew();
132
}
104
}
133
 
-
 
134
// Waypoint-Liste löschen
105
 
135
void dlg_Map::slot_DeleteWayPoints()
106
void dlg_Map::slot_DeleteWP()
136
{
Line -... Line 137...
-
 
137
    o_Route->removeGeometry(l_RouteWP);
-
 
138
    p_RouteWP.clear();
-
 
139
    l_WayPoint.clear();
-
 
140
    o_Map->updateRequestNew();
-
 
141
}
-
 
142
 
-
 
143
// Zum Zielpunkt fliegen
-
 
144
void dlg_Map::slot_GotoTarget()
-
 
145
{
-
 
146
    sWayPoint Target;
-
 
147
 
-
 
148
    Target.Longitude = LastClick->longitude();
-
 
149
    Target.Latitude = LastClick->latitude();
107
{
150
    Target.Time = sb_Time->value();
108
    o_Route->removeGeometry(l_RouteWP);
151
 
109
    p_RouteWP.clear();
152
    emit(set_Target(Target));
110
    o_Map->updateRequestNew();
153
}
111
}
154
 
112
 
155
// Click in der Karte
Line -... Line 156...
-
 
156
void dlg_Map::slot_Click(const QMouseEvent* Event, const QPointF Coord)
113
void dlg_Map::slot_Click(const QMouseEvent* Event, const QPointF Coord)
157
{
114
{
158
    if ((Event->type() == QEvent::MouseButtonPress) && ((Event->button() == Qt::RightButton) || (Event->button() == Qt::MidButton)))
115
    if ((Event->type() == QEvent::MouseButtonPress) && ((Event->button() == Qt::RightButton) || (Event->button() == Qt::MidButton)))
159
    {
-
 
160
        sl_Zoom->setValue(o_Adapter->adaptedZoom());
Line -... Line 161...
-
 
161
    }
116
    {
162
 
-
 
163
    // Überwachen ob Karte verschoben wird
-
 
164
    if ((Event->type() == QEvent::MouseButtonPress) && (Event->button() == Qt::LeftButton))
-
 
165
    {
117
        sl_Zoom->setValue(o_Adapter->adaptedZoom());
166
        MapCenter = o_Map->currentCoordinate();
-
 
167
    }
Line 118... Line 168...
118
    }
168
 
Line -... Line 169...
-
 
169
    // Nur wenn nicht Verschoben dann einen Punkt setzen
-
 
170
    if ((Event->type() == QEvent::MouseButtonRelease) && (Event->button() == Qt::LeftButton))
-
 
171
    {
-
 
172
        if (o_Map->currentCoordinate() == MapCenter)
-
 
173
        {
119
 
174
            pb_Add->setEnabled(true);
120
    if ((Event->type() == QEvent::MouseButtonPress) && (Event->button() == Qt::LeftButton))
175
            pb_Goto->setEnabled(true);
-
 
176
 
121
    {
177
            o_Click->removeGeometry(ClickPoint);
-
 
178
 
122
        o_Click->removeGeometry(LastPoint);
179
            ClickPoint = new CirclePoint(Coord.x(), Coord.y(), 6, "P1", Point::Middle, Pen[1]);
-
 
180
//            LastPoint = P;
-
 
181
 
123
 
182
            LastClick = new Point(Coord.x(), Coord.y());
Line -... Line 183...
-
 
183
 
124
        Point* P = new CirclePoint(Coord.x(), Coord.y(), 3, "P1", Point::Middle, Pen[1]);
184
            ClickPoint->setBaselevel(o_Adapter->adaptedZoom());
125
        LastPoint = P;
185
            o_Click->addGeometry(ClickPoint);
126
 
186
        }
127
        LastClick = new Point(Coord.x(), Coord.y());
187
    }
128
 
188
 
Line -... Line 189...
-
 
189
    o_Map->updateRequestNew();
129
        P->setBaselevel(o_Adapter->adaptedZoom());
190
//    qDebug(QString("%1").arg(Coord.x()).toLatin1().data());
130
        o_Click->addGeometry(P);
191
//    qDebug(QString("%1").arg(Coord.y()).toLatin1().data());
131
    }
-
 
132
    o_Map->updateRequestNew();
-
 
133
}
-
 
134
 
-
 
135
void dlg_Map::resizeEvent ( QResizeEvent * event )
192
}
136
{
193
 
137
//    o_Map->resize(event->size());
-
 
138
    o_Map->resize(w_Map->size() - QSize(20,20));
-
 
139
}
-
 
Line 140... Line -...
140
 
-
 
141
void dlg_Map::slot_ChangeMap(int Set)
-
 
142
{
-
 
143
   switch(Set)
-
 
144
   {
-
 
145
       case 0 :
-
 
146
       {
-
 
147
            int zoom = o_Adapter->adaptedZoom();
194
// auf Veränderung der Fenstergröße reagieren
Line -... Line 195...
-
 
195
void dlg_Map::resizeEvent ( QResizeEvent * event )
-
 
196
{
-
 
197
    event = event;
-
 
198
    o_Map->resize(w_Map->size() - QSize(20,20));
-
 
199
}
-
 
200
 
-
 
201
// Karte wechseln
-
 
202
void dlg_Map::slot_ChangeMap(int t_Set)
-
 
203
{
-
 
204
    int zoom = o_Adapter->adaptedZoom();
-
 
205
    QPointF a = o_Map->currentCoordinate();
-
 
206
 
-
 
207
    o_Map->setZoom(0);
-
 
208
 
-
 
209
    switch(t_Set)
-
 
210
    {
-
 
211
        case 0 : // OpenStreetMap
-
 
212
        {
-
 
213
            o_Adapter = new OSMMapAdapter();
148
            o_Map->setZoom(0);
214
        }
149
 
-
 
150
            o_Adapter = new OSMMapAdapter();
-
 
151
            o_Layer->setMapAdapter(o_Adapter);
-
 
152
 
-
 
153
            o_Map->updateRequestNew();
215
        break;
154
            o_Map->setZoom(zoom);
216
        case 1 : // Google Maps
155
       }
217
        {
156
       break;
218
            o_Adapter = new GoogleMapAdapter();
157
       case 1 :
-
 
158
       {
-
 
159
            int zoom = o_Adapter->adaptedZoom();
-
 
160
            o_Map->setZoom(0);
-
 
161
 
-
 
162
            o_Adapter = new YahooMapAdapter();
219
        }
163
            o_Layer->setMapAdapter(o_Adapter);
-
 
164
 
-
 
165
            o_Map->updateRequestNew();
-
 
166
            o_Map->setZoom(zoom);
-
 
167
       }
220
        break;
168
       break;
221
        case 2 : // Google Sat
169
       case 2 :
-
 
170
       {
222
        {
171
            int zoom = o_Adapter->adaptedZoom();
-
 
172
            QPointF a = o_Map->currentCoordinate();
-
 
Line -... Line 223...
-
 
223
            o_Adapter = new GoogleSatMapAdapter();
-
 
224
        }
173
 
225
        break;
Line 174... Line 226...
174
            o_Map->setZoom(0);
226
        case 3 : // Yahoo Maps
175
 
227
        {
-
 
228
            o_Adapter = new YahooMapAdapter();
Line 176... Line 229...
176
            o_Adapter = new YahooMapAdapter("us.maps3.yimg.com", "/aerial.maps.yimg.com/png?v=1.7&t=a&s=256&x=%2&y=%3&z=%1");
229
        }
177
            o_Layer->setMapAdapter(o_Adapter);
230
        break;
178
 
231
        case 4 : // Yahoo Sat
-
 
232
        {
-
 
233
            o_Adapter = new YahooMapAdapter("us.maps3.yimg.com", "/aerial.maps.yimg.com/png?v=1.7&t=a&s=256&x=%2&y=%3&z=%1");
179
            o_Map->updateRequestNew();
234
        }
180
            o_Map->setZoom(zoom);
-
 
181
       }
235
        break;
-
 
236
    }