summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOlli Werwolff <qt-info@nokia.com>2010-04-14 12:33:30 +0200
committerOlli Werwolff <qt-info@nokia.com>2010-04-14 15:06:24 +0200
commitbcbcf924e6ca8857ffafe3007e54a56498e8ddc5 (patch)
tree809a177612e84db1011c292f84f086a3f8fb7fea
parent504f79046293407e0fb509a21d74d165ed68dd2e (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.cpp55
-rw-r--r--library/components/locationui.h9
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);