diff --git a/src/plugins/runner/yours/CMakeLists.txt b/src/plugins/runner/yours/CMakeLists.txt
--- a/src/plugins/runner/yours/CMakeLists.txt
+++ b/src/plugins/runner/yours/CMakeLists.txt
@@ -7,4 +7,8 @@
set( yours_SRCS YoursRunner.cpp YoursPlugin.cpp )
+set( yours_UI YoursConfigWidget.ui )
+
+qt_wrap_ui( yours_SRCS ${yours_UI} )
+
marble_add_plugin( YoursPlugin ${yours_SRCS} )
diff --git a/src/plugins/runner/yours/YoursConfigWidget.ui b/src/plugins/runner/yours/YoursConfigWidget.ui
new file mode 100644
--- /dev/null
+++ b/src/plugins/runner/yours/YoursConfigWidget.ui
@@ -0,0 +1,51 @@
+
+
+ YoursConfigWidget
+
+
+
+ 0
+ 0
+ 273
+ 196
+
+
+
+ -
+
+
+ Transport:
+
+
+
+ -
+
+
+ -
+
+
+ Method
+
+
+
-
+
+
+ Fastest
+
+
+
+ -
+
+
+ Shortest
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/plugins/runner/yours/YoursPlugin.h b/src/plugins/runner/yours/YoursPlugin.h
--- a/src/plugins/runner/yours/YoursPlugin.h
+++ b/src/plugins/runner/yours/YoursPlugin.h
@@ -6,6 +6,7 @@
// the source code.
//
// Copyright 2010 Dennis Nienhüser
+// Copyright 2016 Piotr Wójcik
//
@@ -42,7 +43,11 @@
virtual RoutingRunner *newRunner() const;
+ ConfigWidget* configWidget();
+
virtual bool supportsTemplate(RoutingProfilesModel::ProfileTemplate profileTemplate) const;
+
+ QHash< QString, QVariant > templateSettings(RoutingProfilesModel::ProfileTemplate profileTemplate) const;
};
}
diff --git a/src/plugins/runner/yours/YoursPlugin.cpp b/src/plugins/runner/yours/YoursPlugin.cpp
--- a/src/plugins/runner/yours/YoursPlugin.cpp
+++ b/src/plugins/runner/yours/YoursPlugin.cpp
@@ -6,11 +6,14 @@
// the source code.
//
// Copyright 2010 Dennis Nienhüser
+// Copyright 2016 Piotr Wójcik
//
#include "YoursPlugin.h"
#include "YoursRunner.h"
+#include "ui_YoursConfigWidget.h"
+
namespace Marble
{
@@ -39,7 +42,7 @@
QString YoursPlugin::version() const
{
- return QStringLiteral("1.0");
+ return QStringLiteral("1.1");
}
QString YoursPlugin::description() const
@@ -49,23 +52,114 @@
QString YoursPlugin::copyrightYears() const
{
- return QStringLiteral("2010");
+ return QStringLiteral("2010, 2016");
}
QVector YoursPlugin::pluginAuthors() const
{
return QVector()
- << PluginAuthor(QStringLiteral("Dennis Nienhüser"), QStringLiteral("nienhueser@kde.org"));
+ << PluginAuthor(QStringLiteral("Dennis Nienhüser"), QStringLiteral("nienhueser@kde.org"))
+ << PluginAuthor(QStringLiteral("Piotr Wójcik"), QStringLiteral("chocimier@tlen.pl"));
}
RoutingRunner *YoursPlugin::newRunner() const
{
return new YoursRunner;
}
+class YoursConfigWidget : public RoutingRunnerPlugin::ConfigWidget
+{
+public:
+ YoursConfigWidget()
+ : RoutingRunnerPlugin::ConfigWidget()
+ {
+ ui_configWidget = new Ui::YoursConfigWidget;
+ ui_configWidget->setupUi( this );
+ //TODO: read from profiles.xml
+ ui_configWidget->transport->addItem( tr( "Foot" ), "foot" );
+ ui_configWidget->transport->addItem( tr( "Bicycle" ), "bicycle" );
+ ui_configWidget->transport->addItem( tr( "Motorcar" ), "motorcar" );
+ }
+ virtual ~YoursConfigWidget()
+ {
+ delete ui_configWidget;
+ }
+ virtual void loadSettings( const QHash &settings_ )
+ {
+ QHash settings = settings_;
+
+ // Check if all fields are filled and fill them with default values.
+ if (!settings.contains(QStringLiteral("transport"))) {
+ settings.insert(QStringLiteral("transport"), QStringLiteral("motorcar"));
+ }
+ ui_configWidget->transport->setCurrentIndex(
+ ui_configWidget->transport->findData(settings.value(QStringLiteral("transport")).toString()));
+ if (settings.value(QStringLiteral("method")).toString() == QLatin1String("shortest")) {
+ ui_configWidget->shortest->setChecked( true );
+ } else {
+ ui_configWidget->fastest->setChecked( true );
+ }
+ }
+
+ virtual QHash settings() const
+ {
+ QHash settings;
+ settings.insert(QStringLiteral("transport"),
+ ui_configWidget->transport->itemData( ui_configWidget->transport->currentIndex() ) );
+
+ if ( ui_configWidget->shortest->isChecked() ) {
+ settings.insert(QStringLiteral("method"), QStringLiteral("shortest"));
+ } else {
+ settings.insert(QStringLiteral("method"), QStringLiteral("fastest"));
+ }
+ return settings;
+ }
+private:
+ Ui::YoursConfigWidget *ui_configWidget;
+};
+
+RoutingRunnerPlugin::ConfigWidget *YoursPlugin::configWidget()
+{
+ return new YoursConfigWidget();
+}
+
bool YoursPlugin::supportsTemplate( RoutingProfilesModel::ProfileTemplate profileTemplate ) const
{
- return profileTemplate == RoutingProfilesModel::CarFastestTemplate;
+ QSet availableTemplates;
+ availableTemplates.insert( RoutingProfilesModel::CarFastestTemplate );
+ availableTemplates.insert( RoutingProfilesModel::CarShortestTemplate );
+ availableTemplates.insert( RoutingProfilesModel::BicycleTemplate );
+ availableTemplates.insert( RoutingProfilesModel::PedestrianTemplate );
+ return availableTemplates.contains( profileTemplate );
+}
+
+QHash< QString, QVariant > YoursPlugin::templateSettings(RoutingProfilesModel::ProfileTemplate profileTemplate) const
+{
+ QHash result;
+ switch ( profileTemplate ) {
+ case RoutingProfilesModel::CarFastestTemplate:
+ result.insert(QStringLiteral("transport"), QStringLiteral("motorcar"));
+ result.insert(QStringLiteral("method"), QStringLiteral("fastest"));
+ break;
+ case RoutingProfilesModel::CarShortestTemplate:
+ result.insert(QStringLiteral("transport"), QStringLiteral("motorcar"));
+ result.insert(QStringLiteral("method"), QStringLiteral("shortest"));
+ break;
+ case RoutingProfilesModel::CarEcologicalTemplate:
+ break;
+ case RoutingProfilesModel::BicycleTemplate:
+ result.insert(QStringLiteral("transport"), QStringLiteral("bicycle"));
+ result.insert(QStringLiteral("method"), QStringLiteral("shortest"));
+ break;
+ case RoutingProfilesModel::PedestrianTemplate:
+ result.insert(QStringLiteral("transport"), QStringLiteral("foot"));
+ result.insert(QStringLiteral("method"), QStringLiteral("shortest"));
+ break;
+ case RoutingProfilesModel::LastTemplate:
+ Q_ASSERT( false );
+ break;
+ }
+ return result;
}
}
diff --git a/src/plugins/runner/yours/YoursRunner.h b/src/plugins/runner/yours/YoursRunner.h
--- a/src/plugins/runner/yours/YoursRunner.h
+++ b/src/plugins/runner/yours/YoursRunner.h
@@ -6,6 +6,7 @@
// the source code.
//
// Copyright 2010 Dennis Nienhüser
+// Copyright 2016 Piotr Wójcik
//
diff --git a/src/plugins/runner/yours/YoursRunner.cpp b/src/plugins/runner/yours/YoursRunner.cpp
--- a/src/plugins/runner/yours/YoursRunner.cpp
+++ b/src/plugins/runner/yours/YoursRunner.cpp
@@ -6,6 +6,7 @@
// the source code.
//
// Copyright 2010 Dennis Nienhüser
+// Copyright 2016 Piotr Wójcik
//
#include "YoursRunner.h"
@@ -61,11 +62,24 @@
//QString base = "http://nroets.dev.openstreetmap.org/demo/gosmore.php";
QString args = "?flat=%1&flon=%2&tlat=%3&tlon=%4";
args = args.arg( fLat, 0, 'f', 6 ).arg( fLon, 0, 'f', 6 ).arg( tLat, 0, 'f', 6 ).arg( tLon, 0, 'f', 6 );
- QString preferences = "&v=motorcar&fast=1&layer=mapnik";
+
+ QHash settings = route->routingProfile().pluginSettings()[QStringLiteral("yours")];
+ QString transport = settings[QStringLiteral("transport")].toString();
+ QString fast;
+
+ if (settings[QStringLiteral("method")] == QLatin1String("shortest")) {
+ fast = "0";
+ } else {
+ fast = "1";
+ }
+
+ QString preferences = "&v=%1&fast=%2&layer=mapnik;";
+ preferences = preferences.arg(transport).arg(fast);
QString request = base + args + preferences;
// mDebug() << "GET: " << request;
m_request = QNetworkRequest( QUrl( request ) );
+ m_request.setRawHeader( "X-Yours-client", "Marble" );
QEventLoop eventLoop;