summaryrefslogtreecommitdiff
path: root/examples/map3d/camerawidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/map3d/camerawidget.cpp')
-rw-r--r--examples/map3d/camerawidget.cpp114
1 files changed, 114 insertions, 0 deletions
diff --git a/examples/map3d/camerawidget.cpp b/examples/map3d/camerawidget.cpp
new file mode 100644
index 00000000..6b1e0dd2
--- /dev/null
+++ b/examples/map3d/camerawidget.cpp
@@ -0,0 +1,114 @@
+#include "camerawidget.h"
+
+#include <QLabel>
+#include <QLineEdit>
+#include <QPushButton>
+#include <QVBoxLayout>
+#include <QGridLayout>
+
+CameraWidget::CameraWidget(QWidget *parent)
+ : QWidget(parent)
+{
+ setupUi();
+}
+
+void CameraWidget::setupUi()
+{
+ QLabel *latLabel = new QLabel("Latitude");
+ lat_ = new QLineEdit();
+
+ QLabel *lonLabel = new QLabel("Longitude");
+ lon_ = new QLineEdit();
+
+ QLabel *distanceLabel = new QLabel("Distance");
+ distance_ = new QLineEdit();
+
+ QLabel *zoomLevelLabel = new QLabel("Zoom Level");
+ zoomLevel_ = new QLineEdit();
+
+ QLabel *zoomFactorLabel = new QLabel("Zoom Factor");
+ zoomFactor_ = new QLineEdit();
+
+ QLabel *bearingLabel = new QLabel("Bearing");
+ bearing_ = new QLineEdit();
+
+ QLabel *tiltLabel = new QLabel("Tilt");
+ tilt_ = new QLineEdit();
+
+ QLabel *rollLabel = new QLabel("Roll");
+ roll_ = new QLineEdit();
+
+ QGridLayout *grid = new QGridLayout();
+ grid->addWidget(latLabel, 0, 0);
+ grid->addWidget(lat_, 0, 1);
+ grid->addWidget(lonLabel, 1, 0);
+ grid->addWidget(lon_, 1, 1);
+ grid->addWidget(distanceLabel, 2, 0);
+ grid->addWidget(distance_, 2, 1);
+ grid->addWidget(zoomLevelLabel, 3, 0);
+ grid->addWidget(zoomLevel_, 3, 1);
+ grid->addWidget(zoomFactorLabel, 4, 0);
+ grid->addWidget(zoomFactor_, 4, 1);
+ grid->addWidget(bearingLabel, 5, 0);
+ grid->addWidget(bearing_, 5, 1);
+ grid->addWidget(tiltLabel, 6, 0);
+ grid->addWidget(tilt_, 6, 1);
+ grid->addWidget(rollLabel, 7, 0);
+ grid->addWidget(roll_, 7, 1);
+
+ update_ = new QPushButton("Update");
+ connect(update_,
+ SIGNAL(clicked()),
+ this,
+ SLOT(updateCamera()));
+
+ capture_ = new QPushButton("Capture");
+ connect(capture_,
+ SIGNAL(clicked()),
+ this,
+ SIGNAL(capture()));
+
+ QVBoxLayout *layout = new QVBoxLayout();
+ layout->addLayout(grid);
+ layout->addWidget(update_);
+ layout->addWidget(capture_);
+
+ setLayout(layout);
+}
+
+CameraData CameraWidget::camera() const
+{
+ return cam_;
+}
+
+void CameraWidget::setCamera(const CameraData& camera)
+{
+ cam_ = camera;
+
+ lat_->setText(QString::number(cam_.center().latitude(), 'g', 10));
+ lon_->setText(QString::number(cam_.center().longitude(), 'g', 10));
+ distance_->setText(QString::number(cam_.distance(), 'g', 4));
+ zoomLevel_->setText(QString::number(cam_.zoomLevel()));
+ zoomFactor_->setText(QString::number(cam_.zoomFactor()));
+ bearing_->setText(QString::number(cam_.bearing(), 'g', 10));
+ tilt_->setText(QString::number(cam_.tilt(), 'g', 10));
+ roll_->setText(QString::number(cam_.roll(), 'g', 10));
+}
+
+void CameraWidget::updateCamera()
+{
+ double lat = lat_->text().toDouble();
+ double lon = lon_->text().toDouble();
+ cam_.setCenter(QGeoCoordinate(lat, lon));
+ if (!zoomFactor_->text().isEmpty()) {
+ cam_.setZoomFactor(zoomFactor_->text().toDouble());
+ } else {
+ cam_.setZoomLevel(zoomLevel_->text().toInt());
+ cam_.setDistance(distance_->text().toDouble());
+ }
+ cam_.setBearing(bearing_->text().toDouble());
+ cam_.setTilt(tilt_->text().toDouble());
+ cam_.setRoll(roll_->text().toDouble());
+
+ emit updated();
+}