diff options
author | Christian Kamm <christian.d.kamm@nokia.com> | 2010-02-26 12:22:58 +0100 |
---|---|---|
committer | Christian Kamm <christian.d.kamm@nokia.com> | 2010-02-26 12:22:58 +0100 |
commit | c909475edb3b9bd0538a834be3a4f0a589318862 (patch) | |
tree | 7fe28921a329c978d967c5febf5ecfc9d7c39a8a | |
parent | cef2b1fee913b50167ba26598dcfc7124cc98185 (diff) |
Make the location ui work. Add script interface for it.
-rw-r--r-- | library/components/locationui.cpp | 95 | ||||
-rw-r--r-- | library/components/locationui.h | 51 | ||||
-rw-r--r-- | library/toolbox.cpp | 1 | ||||
-rw-r--r-- | library/toolbox.h | 10 |
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; |