1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2025-02-20 10:54:14 +01:00

OP-37 GCS/MapPlugin Core done, started widget part.

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@667 ebee16cc-31ac-478f-84a7-5cbb03baadba
This commit is contained in:
zedamota 2010-05-26 16:19:34 +00:00 committed by zedamota
parent 80956a2766
commit ac80771774
10 changed files with 189 additions and 23 deletions

View File

@ -1,8 +1,9 @@
TEMPLATE = subdirs
SUBDIRS = core
SUBDIRS += internals
SUBDIRS += mapwidget
CONFIG += ordered
SUBDIRS +=teste
SUBDIRS +=gettilestest
SUBDIRS +=widgettest

View File

@ -4,7 +4,7 @@ Core::Core():currentPosition(0,0),currentPositionPixel(0,0),LastLocationInBounds
,minOfTiles(0,0),maxOfTiles(0,0),started(false),isDragging(false),TooltipTextPadding(10,10),MouseWheelZooming(false),loaderLimit(5)
{
mousewheelzoomtype=MouseWheelZoomType::MousePositionAndCenter;
this->setAutoDelete(false);
}
void Core::run()
{
@ -19,7 +19,7 @@ void Core::run()
task = tileLoadQueue.dequeue();
{
last = tileLoadQueue.count() == 0;
//Debug.WriteLine("TileLoadQueue: " + tileLoadQueue.Count);
qDebug()<<"TileLoadQueue: " << tileLoadQueue.count();
}
}
}
@ -69,7 +69,10 @@ void Core::run()
{
qDebug()<<"ProcessLoadTask: " << task.ToString()<< " -> empty tile, retry " << retry;
{
//QThread::usleep(1111);
QWaitCondition wait;
QMutex m;
m.lock();
wait.wait(&m,1111);
}
}
}
@ -476,33 +479,79 @@ void Core::CancelAsyncTasks()
}
}
void Core::UpdateBounds()
{
MtileDrawingList.lock();
{
MtileDrawingList.lock();
{
//FindTilesAround(tileDrawingList);
FindTilesAround(tileDrawingList);
qDebug()<<"OnTileLoadStart: " << tileDrawingList.count() << " tiles to load at zoom " << Zoom() << ", time: " << QDateTime::currentDateTime().date();
qDebug()<<"OnTileLoadStart: " << tileDrawingList.count() << " tiles to load at zoom " << Zoom() << ", time: " << QDateTime::currentDateTime().date();
emit OnTileLoadStart();
emit OnTileLoadStart();
foreach(Point p,tileDrawingList)
{
LoadTask task = LoadTask(p, Zoom());
{
foreach(Point p,tileDrawingList)
{
LoadTask task = LoadTask(p, Zoom());
{
MtileLoadQueue.lock();
{
if(!tileLoadQueue.contains(task))
{
tileLoadQueue.enqueue(task);
//this->.QueueUserWorkItem(ProcessLoadTaskCallback);
}
if(!tileLoadQueue.contains(task))
{
tileLoadQueue.enqueue(task);
ProcessLoadTaskCallback.start(this);
}
}
MtileLoadQueue.unlock();
}
}
}
}
//UpdateGroundResolution();
}
}
MtileDrawingList.unlock();
UpdateGroundResolution();
}
void Core::FindTilesAround(QList<Point> &list)
{
list.clear();;
for(int i = -sizeOfMapArea.Width(); i <= sizeOfMapArea.Width(); i++)
{
for(int j = -sizeOfMapArea.Height(); j <= sizeOfMapArea.Height(); j++)
{
Point p = centerTileXYLocation;
p.SetX(p.X() + i);
p.SetY(p.Y() + j);
//if(p.X < minOfTiles.Width)
//{
// p.X += (maxOfTiles.Width + 1);
//}
//if(p.X > maxOfTiles.Width)
//{
// p.X -= (maxOfTiles.Width + 1);
//}
if(p.X() >= minOfTiles.Width() && p.Y() >= minOfTiles.Height() && p.X() <= maxOfTiles.Width() && p.Y() <= maxOfTiles.Height())
{
if(!list.contains(p))
{
list.append(p);
}
}
}
}
// if(GMaps::Instance()->ShuffleTilesOnLoad)
// {
// Stuff.Shuffle<Point>(list);
// }
}
void Core::UpdateGroundResolution()
{
double rez = Projection()->GetGroundResolution(Zoom(), CurrentPosition().Lat());
pxRes100m = (int) (100.0 / rez); // 100 meters
pxRes1000m = (int) (1000.0 / rez); // 1km
pxRes10km = (int) (10000.0 / rez); // 10km
pxRes100km = (int) (100000.0 / rez); // 100km
pxRes1000km = (int) (1000000.0 / rez); // 1000km
pxRes5000km = (int) (5000000.0 / rez); // 5000km
}

View File

@ -140,6 +140,9 @@ public:
void CancelAsyncTasks();
void FindTilesAround(QList<Point> &list);
void UpdateGroundResolution();
signals:
void OnCurrentPositionChanged(PointLatLng point);
void OnTileLoadComplete();
@ -196,6 +199,8 @@ private:
QSemaphore loaderLimit;
QThreadPool ProcessLoadTaskCallback;
protected:
bool started;

View File

@ -0,0 +1,6 @@
include (../common.pri)
SOURCES += opmapcontrol.cpp
LIBS += -L../build \
-lcore \
-linternals
HEADERS += opmapcontrol.h

View File

@ -0,0 +1,27 @@
#include "opmapcontrol.h"
OPMapControl::OPMapControl(QWidget *parent):QWidget(parent)
{
}
void OPMapControl::paintEvent(QPaintEvent* evnt)
{
QWidget::paintEvent(evnt);
QPainter painter(this);
painter.drawText(10,10,"TESTE");
}
void OPMapControl::mousePressEvent ( QMouseEvent* evnt )
{
}
void OPMapControl::mouseReleaseEvent ( QMouseEvent* evnt )
{
}
void OPMapControl::mouseMoveEvent ( QMouseEvent* evnt )
{
}

View File

@ -0,0 +1,24 @@
#ifndef OPMAPCONTROL_H
#define OPMAPCONTROL_H
#include "../internals/core.h"
#include <QtGui>
#include <QWidget>
class OPMapControl:public QWidget
{
Q_OBJECT
public:
OPMapControl(QWidget *parent=0);
protected:
void paintEvent ( QPaintEvent* evnt );
void mousePressEvent ( QMouseEvent* evnt );
void mouseReleaseEvent ( QMouseEvent* evnt );
void mouseMoveEvent ( QMouseEvent* evnt );
private:
Core core;
};
#endif // OPMAPCONTROL_H

View File

@ -0,0 +1,15 @@
#include <QApplication>
#include "map.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
map * mw = new map();
mw->resize(400,590);
mw->setWindowTitle("Map");
mw->show();
return app.exec();
}

View File

@ -0,0 +1,12 @@
#include "map.h"
map::map(QWidget* parent)
{
mc= new OPMapControl();
QVBoxLayout* layout = new QVBoxLayout;
layout->addWidget(mc);
QWidget* w = new QWidget();
w->setLayout(layout);
setCentralWidget(w);
}

View File

@ -0,0 +1,13 @@
#ifndef MAP_H
#define MAP_H
#include "../mapwidget/opmapcontrol.h"
#include <QtGui>
class map:public QMainWindow
{Q_OBJECT
public:
map(QWidget* parent = 0);
private:
OPMapControl* mc;
};
#endif // MAP_H

View File

@ -0,0 +1,14 @@
DESTDIR = ../build
PROJECT = gettilestest
TEMPLATE = app
QT += network
QT += sql
CONFIG += console
CONFIG -= app_bundle
DEPENDPATH += .
INCLUDEPATH += ../core
SOURCES += main.cpp \
map.cpp
LIBS += -L../build \
-lmapwidget -lcore -linternals
HEADERS += map.h