diff options
author | Olli Werwolff <qt-info@nokia.com> | 2010-04-14 12:33:30 +0200 |
---|---|---|
committer | Olli Werwolff <qt-info@nokia.com> | 2010-04-14 15:06:24 +0200 |
commit | bcbcf924e6ca8857ffafe3007e54a56498e8ddc5 (patch) | |
tree | 809a177612e84db1011c292f84f086a3f8fb7fea | |
parent | 504f79046293407e0fb509a21d74d165ed68dd2e (diff) |
Changed way to set the location's timestamp
In order to be able to use the current time without clicking "Now"
constantly, we added the possibility to specify that the current time
shall be used. If this is the fact, LocationData.useCurrentTime is true
and LocationData.timestamp can be ignored.
Reviewed-by: ckamm
-rw-r--r-- | library/components/locationui.cpp | 55 | ||||
-rw-r--r-- | library/components/locationui.h | 9 |
2 files changed, 49 insertions, 15 deletions
diff --git a/library/components/locationui.cpp b/library/components/locationui.cpp index 5a17cbb..d658ab1 100644 --- a/library/components/locationui.cpp +++ b/library/components/locationui.cpp @@ -34,7 +34,7 @@ #include <QtGui/QLineEdit> #include <QtGui/QDoubleValidator> -#include <QtGui/QPushButton> +#include <QtGui/QRadioButton> #include <QtGui/QBoxLayout> #include <QtGui/QDateTimeEdit> @@ -72,21 +72,25 @@ LocationUi::LocationUi(QWidget *parent) item->setTags(tags); optionsList << item; + QHBoxLayout *radioLayout = new QHBoxLayout(); + mCurrentRadio = new QRadioButton(tr("Current")); + mCurrentRadio->setChecked(true); + mOverrideRadio = new QRadioButton(tr("Override")); + radioLayout->addWidget(mCurrentRadio); + radioLayout->addWidget(mOverrideRadio); mTimeEdit = new QDateTimeEdit(); - QPushButton *locationTimeButton = new QPushButton(tr("Now")); - QHBoxLayout *hLayout = new QHBoxLayout(); - hLayout->setContentsMargins(0, 0, 0, 0); + mTimeEdit->setDisabled(true); QVBoxLayout *vLayout = new QVBoxLayout(); + vLayout->setContentsMargins(0, 0, 0, 0); + vLayout->addLayout(radioLayout); vLayout->addWidget(mTimeEdit); - vLayout->addWidget(locationTimeButton); - hLayout->addLayout(vLayout); QWidget *tmp = new QWidget(); - tmp->setLayout(hLayout); - connect(mTimeEdit, SIGNAL(dateTimeChanged(const QDateTime &)), SLOT(emitLocationChange())); - connect(locationTimeButton, SIGNAL(clicked()), this, SLOT(updateLocationTime())); + tmp->setLayout(vLayout); item = new OptionsItem(tr("Timestamp"), tmp); - item->setTags(tags); + item->setTags(tags << tr("Current") << tr("Override")); optionsList << item; + connect(mCurrentRadio, SIGNAL(toggled(bool)), SLOT(updateTimeEditDisabled())); + connect(mTimeEdit, SIGNAL(dateTimeChanged(const QDateTime &)), SLOT(emitLocationChange())); setOptions(optionsList); setTitle(tr("Location")); @@ -108,6 +112,7 @@ LocationUi::LocationData LocationUi::locationData() const location.longitude = mScriptInterface->longitude(); location.altitude = mScriptInterface->altitude(); location.timestamp = mScriptInterface->timestamp(); + location.useCurrentTime = mCurrentRadio->isChecked(); return location; } @@ -128,6 +133,7 @@ void LocationUi::setDisplayedLocation(const LocationData &location) mLongitudeEdit->setText(QString::number(location.longitude, 'f', 8)); mAltitudeEdit->setText(QString::number(location.altitude, 'f', 8)); mTimeEdit->setDateTime(location.timestamp); + mCurrentRadio->setChecked(location.useCurrentTime); } void LocationUi::emitLocationChange() const @@ -135,6 +141,12 @@ void LocationUi::emitLocationChange() const emit locationChanged(locationData()); } +void LocationUi::updateTimeEditDisabled() +{ + mTimeEdit->setDisabled(mCurrentRadio->isChecked()); + emitLocationChange(); +} + LocationScriptInterface::LocationScriptInterface(LocationUi *ui) : QObject(ui) , ui(ui) @@ -184,15 +196,28 @@ void LocationScriptInterface::setAltitude(double a) } } -QDateTime LocationScriptInterface::timestamp() const +void LocationScriptInterface::setUseCurrentTimestamp(bool t) { - return ui->mTimeEdit->dateTime(); + if (ui->mCurrentRadio->isChecked() != t) { + ui->mCurrentRadio->setChecked(t); + ui->emitLocationChange(); + } } -void LocationScriptInterface::setTimestamp(const QDateTime &dt) +bool LocationScriptInterface::useCurrentTimestamp() const { - if (timestamp() != dt) { - ui->mTimeEdit->setDateTime(dt); + return ui->mCurrentRadio->isChecked(); +} + +void LocationScriptInterface::setTimestamp(const QDateTime &t) +{ + if (ui->mTimeEdit->dateTime() != t) { + ui->mTimeEdit->setDateTime(t); ui->emitLocationChange(); } } + +QDateTime LocationScriptInterface::timestamp() const +{ + return ui->mTimeEdit->dateTime(); +} diff --git a/library/components/locationui.h b/library/components/locationui.h index 06a00d0..2423f45 100644 --- a/library/components/locationui.h +++ b/library/components/locationui.h @@ -38,6 +38,7 @@ class LocationScriptInterface; class QLineEdit; class QDateTimeEdit; +class QRadioButton; class REMOTECONTROLWIDGETSHARED_EXPORT LocationUi : public ToolBoxPage { @@ -49,6 +50,7 @@ public: double longitude; double altitude; QDateTime timestamp; + bool useCurrentTime; }; public: @@ -68,12 +70,15 @@ signals: private slots: void updateLocationTime(); + void updateTimeEditDisabled(); void emitLocationChange() const; private: QLineEdit *mLatitudeEdit; QLineEdit *mLongitudeEdit; QLineEdit *mAltitudeEdit; + QRadioButton *mCurrentRadio; + QRadioButton *mOverrideRadio; QDateTimeEdit *mTimeEdit; friend class LocationScriptInterface; @@ -90,6 +95,7 @@ public: 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(bool useCurrentTimestamp READ useCurrentTimestamp WRITE setUseCurrentTimestamp) Q_PROPERTY(QDateTime timestamp READ timestamp WRITE setTimestamp) double latitude() const; @@ -101,6 +107,9 @@ public: double altitude() const; void setAltitude(double); + bool useCurrentTimestamp() const; + void setUseCurrentTimestamp(bool); + QDateTime timestamp() const; void setTimestamp(const QDateTime &dt); |