@@ -47,3 +47,9 @@ void MainWidget::signOut()
}
m_trackingWidget->stopTracking();
}

void MainWidget::onSettingsUpdated()
{
m_trackingWidget->onSettingsUpdated();
m_eventsWidget->onSettingsUpdated();
}
@@ -80,3 +80,23 @@ void Settings::setDescription(const QString &description)
{
m_settings.setValue(DESCRIPTION, description);
}

int Settings::getRadius()
{
return m_settings.value(RADIUS, EVENTS_RADIUS).toInt();
}

void Settings::setRadius(int radius)
{
m_settings.setValue(RADIUS, radius);
}

int Settings::getTrackingPeriod()
{
return m_settings.value(TRACKING_PERIOD, DEFAULT_TRACKING_PERIOD).toInt();
}

void Settings::setTrackingPeriod(int trackingPeriod)
{
m_settings.setValue(TRACKING_PERIOD, trackingPeriod);
}
@@ -2,12 +2,16 @@
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QLabel>

#include <QIntValidator>
SettingsWidget::SettingsWidget(QWidget *parent) :
QWidget(parent)
{
m_description = new QTextEdit(this);
m_serverUrlEdit = new QLineEdit(this);
m_radiusEdit = new QLineEdit(this);
m_radiusEdit->setValidator(new QIntValidator(0, 40000, this));
m_trackingPeriodEdit = new QLineEdit(this);
m_trackingPeriodEdit->setValidator(new QIntValidator(1, 1000, this));
m_okButton = new QPushButton("Ok", this);
m_cancelButton = new QPushButton("Cancel", this);

@@ -27,6 +31,10 @@ void SettingsWidget::initGUI()
mainLayout->addWidget(m_description);
mainLayout->addWidget(new QLabel("Server URL", this));
mainLayout->addWidget(m_serverUrlEdit);
mainLayout->addWidget(new QLabel("Radius of events (km):", this));
mainLayout->addWidget(m_radiusEdit);
mainLayout->addWidget(new QLabel("Tracking period (min):", this));
mainLayout->addWidget(m_trackingPeriodEdit);
QHBoxLayout *btnsLayout = new QHBoxLayout();
btnsLayout->addWidget(m_okButton);
btnsLayout->addWidget(m_cancelButton);
@@ -39,12 +47,16 @@ void SettingsWidget::fill()
{
m_description->setText(m_settings.getDescription());
m_serverUrlEdit->setText(m_settings.getServerUrl());
m_radiusEdit->setText(QString::number(m_settings.getRadius()));
m_trackingPeriodEdit->setText(QString::number(m_settings.getTrackingPeriod()));
}

void SettingsWidget::onOkClicked()
{
m_settings.setDescription(m_description->toPlainText());
m_settings.setServerUrl(m_serverUrlEdit->text());
m_settings.setRadius(m_radiusEdit->text().toInt());
m_settings.setTrackingPeriod(m_trackingPeriodEdit->text().toInt());
emit saved();
}

@@ -48,6 +48,8 @@ void TrackingService::startTracking(QString name, QString password, QString auth
{
qDebug() << "startTracking url: " << serverUrl;

m_period = m_settings.getTrackingPeriod() * 60;

if (m_writeTagQuery != 0)
m_writeTagQuery->deleteLater();

@@ -80,20 +82,26 @@ void TrackingService::sendMark()
m_writeTagQuery->doRequest();
} else {
qDebug() << "invalid geo info, waitin and trying again";
QTimer::singleShot(5 * 1000, this, SLOT(sendMark()));
QTimer::singleShot(m_period * 1000, this, SLOT(sendMark()));
}
}

void TrackingService::onMarkSent()
{
qDebug() << "TrackingService::onMarkSent";
emit markSent(QPointF(m_dataMark->getLatitude(), m_dataMark->getLongitude()));
QTimer::singleShot(5 * 1000, this, SLOT(sendMark()));
QTimer::singleShot(m_period * 1000, this, SLOT(sendMark()));
}

void TrackingService::onError(QString error)
{
qDebug() << "TrackingService::onErrorOccured error: " << error;
emit errorOccured(error);
QTimer::singleShot(5 * 1000, this, SLOT(sendMark()));
QTimer::singleShot(m_period * 1000, this, SLOT(sendMark()));
}

void TrackingService::updateSettings()
{
qDebug() << "Updating TrackingService settings";
m_period = m_settings.getTrackingPeriod();
}
@@ -128,4 +128,11 @@ void TrackingWidget::onError(QString error)
appendToLog(QString("Error: ") + error);
}

void TrackingWidget::onSettingsUpdated()
{
if (isTracking()) {
QMetaObject::invokeMethod(&m_trackingService, "updateSettings", Qt::QueuedConnection);
}
}


@@ -35,6 +35,8 @@ MainWindow::MainWindow(QWidget *parent)
this, SLOT(onSettingsSaved()));
connect(m_settingsWidget, SIGNAL(cancelled()),
this, SLOT(onSettingsCancelled()));
connect(m_settingsWidget, SIGNAL(saved()),
m_mainWidget, SLOT(onSettingsUpdated()));

qDebug() << "MainWindow created";
}
@@ -71,6 +71,8 @@ class FilterRequestJSON : public JsonSerializer
double getAltitude1() const;
double getAltitude2() const;

void setChannel(const QSharedPointer<Channel> &channel);

bool parseJson(const QByteArray&);
}; // class FilterRequestJSON
#endif //_FilterRequestJSON_H_EA76CFDF_BF80_4912_9999_802D12531039_INCLUDED_
@@ -65,6 +65,8 @@ QByteArray FilterCircleRequestJSON::getJson() const
obj.insert("radius", m_radius);
obj.insert("time_from", getTimeFrom().toString("dd MM yyyy HH:mm:ss.zzz"));
obj.insert("time_to", getTimeTo().toString("dd MM yyyy HH:mm:ss.zzz"));
if (m_channelsContainer->size() > 0)
obj.insert("channel", m_channelsContainer->at(0)->getName());
return serializer.serialize(obj);
}

@@ -115,6 +115,12 @@ double FilterRequestJSON::getAltitude1() const
}


void FilterRequestJSON::setChannel(const QSharedPointer<Channel> &channel)
{
m_channelsContainer->push_back(channel);
}


double FilterRequestJSON::getAltitude2() const
{
return m_alt2;
@@ -137,3 +143,5 @@ bool FilterRequestJSON::parseJson(const QByteArray& data)
}
return true;
}