summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Kamm <christian.d.kamm@nokia.com>2010-02-26 12:22:58 +0100
committerChristian Kamm <christian.d.kamm@nokia.com>2010-02-26 12:22:58 +0100
commitc909475edb3b9bd0538a834be3a4f0a589318862 (patch)
tree7fe28921a329c978d967c5febf5ecfc9d7c39a8a
parentcef2b1fee913b50167ba26598dcfc7124cc98185 (diff)
Make the location ui work. Add script interface for it.
-rw-r--r--library/components/locationui.cpp95
-rw-r--r--library/components/locationui.h51
-rw-r--r--library/toolbox.cpp1
-rw-r--r--library/toolbox.h10
4 files changed, 142 insertions, 15 deletions
diff --git a/library/components/locationui.cpp b/library/components/locationui.cpp
index b0a08e7..79d550f 100644
--- a/library/components/locationui.cpp
+++ b/library/components/locationui.cpp
@@ -15,7 +15,10 @@ LocationUi::LocationUi(QWidget *parent)
, mLongitudeEdit(0)
, mAltitudeEdit(0)
, mTimeEdit(0)
+ , mScriptInterface(0)
{
+ mScriptInterface = new LocationScriptInterface(this);
+
QStringList tags;
QList<OptionsItem *> optionsList;
@@ -60,18 +63,96 @@ LocationUi::LocationUi(QWidget *parent)
setTitle(tr("Location"));
}
+LocationUi::~LocationUi()
+{
+}
+
+LocationScriptInterface *LocationUi::scriptInterface() const
+{
+ return mScriptInterface;
+}
+
void LocationUi::updateLocationTime()
{
mTimeEdit->setDateTime(QDateTime::currentDateTime());
}
-void LocationUi::setLocation()
+void LocationUi::setDisplayedLocation(const LocationData &location)
+{
+ mLatitudeEdit->setText(QString::number(location.latitude, 'f', 8));
+ mLongitudeEdit->setText(QString::number(location.longitude, 'f', 8));
+ mAltitudeEdit->setText(QString::number(location.altitude, 'f', 8));
+ mTimeEdit->setDateTime(location.timestamp);
+}
+
+void LocationUi::emitLocationChange() const
{
- /*
- mLatitudeEdit->setText(QString::number(mLocation->latitude(), 'f', 8));
- mLongitudeEdit->setText(QString::number(mLocation->longitude(), 'f', 8));
- mAltitudeEdit->setText(QString::number(mLocation->altitude(), 'f', 8));
- mTimeEdit->setDateTime(mLocation->dateTime());
- */
+ LocationData location;
+ location.latitude = mScriptInterface->latitude();
+ location.longitude = mScriptInterface->longitude();
+ location.altitude = mScriptInterface->altitude();
+ location.timestamp = mScriptInterface->timestamp();
+ emit locationChanged(location);
}
+LocationScriptInterface::LocationScriptInterface(LocationUi *ui)
+ : QObject(ui)
+ , ui(ui)
+{
+}
+
+LocationScriptInterface::~LocationScriptInterface()
+{
+}
+
+double LocationScriptInterface::latitude() const
+{
+ return ui->mLatitudeEdit->text().toDouble();
+}
+
+void LocationScriptInterface::setLatitude(double l)
+{
+ if (latitude() != l) {
+ ui->mLatitudeEdit->setText(QString::number(l, 'f', 8));
+ ui->emitLocationChange();
+ }
+}
+
+double LocationScriptInterface::longitude() const
+{
+ return ui->mLongitudeEdit->text().toDouble();
+}
+
+void LocationScriptInterface::setLongitude(double l)
+{
+ if (longitude() != l) {
+ ui->mLongitudeEdit->setText(QString::number(l, 'f', 8));
+ ui->emitLocationChange();
+ }
+}
+
+double LocationScriptInterface::altitude() const
+{
+ return ui->mAltitudeEdit->text().toDouble();
+}
+
+void LocationScriptInterface::setAltitude(double a)
+{
+ if (altitude() != a) {
+ ui->mAltitudeEdit->setText(QString::number(a, 'f', 8));
+ ui->emitLocationChange();
+ }
+}
+
+QDateTime LocationScriptInterface::timestamp() const
+{
+ return ui->mTimeEdit->dateTime();
+}
+
+void LocationScriptInterface::setTimestamp(const QDateTime &dt)
+{
+ if (timestamp() != dt) {
+ ui->mTimeEdit->setDateTime(dt);
+ ui->emitLocationChange();
+ }
+}
diff --git a/library/components/locationui.h b/library/components/locationui.h
index e40581f..34444b5 100644
--- a/library/components/locationui.h
+++ b/library/components/locationui.h
@@ -4,6 +4,9 @@
#include "remotecontrolwidget_global.h"
#include "toolbox.h"
+#include <QtCore/QDateTime>
+
+class LocationScriptInterface;
class QLineEdit;
class QDateTimeEdit;
@@ -11,22 +14,66 @@ class REMOTECONTROLWIDGETSHARED_EXPORT LocationUi : public ToolBoxPage
{
Q_OBJECT
public:
+ struct LocationData
+ {
+ double latitude;
+ double longitude;
+ double altitude;
+ QDateTime timestamp;
+ };
+
+public:
explicit LocationUi(QWidget *parent = 0);
+ virtual ~LocationUi();
+
+ LocationScriptInterface *scriptInterface() const;
public slots:
- void setLocation(/* LocationData */);
+ void setDisplayedLocation(const LocationData &location);
signals:
- void locationChanged(/* LocationData */);
+ void locationChanged(const LocationData &location) const;
private slots:
void updateLocationTime();
+ void emitLocationChange() const;
private:
QLineEdit *mLatitudeEdit;
QLineEdit *mLongitudeEdit;
QLineEdit *mAltitudeEdit;
QDateTimeEdit *mTimeEdit;
+
+ friend class LocationScriptInterface;
+ LocationScriptInterface *mScriptInterface;
+};
+
+class LocationScriptInterface : public QObject
+{
+ Q_OBJECT
+public:
+ LocationScriptInterface(LocationUi *ui);
+ virtual ~LocationScriptInterface();
+
+ Q_PROPERTY(double latitude READ latitude WRITE setLatitude)
+ Q_PROPERTY(double longitude READ longitude WRITE setLongitude)
+ Q_PROPERTY(double altitude READ altitude WRITE setAltitude)
+ Q_PROPERTY(QDateTime timestamp READ timestamp WRITE setTimestamp)
+
+ double latitude() const;
+ void setLatitude(double);
+
+ double longitude() const;
+ void setLongitude(double);
+
+ double altitude() const;
+ void setAltitude(double);
+
+ QDateTime timestamp() const;
+ void setTimestamp(const QDateTime &dt);
+
+private:
+ LocationUi *ui;
};
#endif // LOCATIONUI_H
diff --git a/library/toolbox.cpp b/library/toolbox.cpp
index e919745..5d3d0e8 100644
--- a/library/toolbox.cpp
+++ b/library/toolbox.cpp
@@ -152,6 +152,7 @@ ToolBoxPage::~ToolBoxPage()
void ToolBoxPage::setOptions(const QList<OptionsItem *> &options)
{
+ // ### TODO: Make this work once it's already in a toolbox.
mOptions = options;
}
diff --git a/library/toolbox.h b/library/toolbox.h
index 340ea60..02ea53b 100644
--- a/library/toolbox.h
+++ b/library/toolbox.h
@@ -52,15 +52,13 @@ public:
explicit ToolBoxPage(QWidget *parent = 0);
virtual ~ToolBoxPage();
-public slots:
- unsigned int filtersChanged(const QStringList &filters);
- void advancedToggled(OptionsItem *item);
-
-protected:
- // must be set before page is added to tool box
void setOptions(const QList<OptionsItem *> &options);
void setTitle(const QString &title);
+private slots:
+ unsigned int filtersChanged(const QStringList &filters);
+ void advancedToggled(OptionsItem *item);
+
private:
QToolButton *mButton;
QWidget *mPage;