Changeset View
Changeset View
Standalone View
Standalone View
src/plugins/runner/yours/YoursPlugin.cpp
1 | // | 1 | // | ||
---|---|---|---|---|---|
2 | // This file is part of the Marble Virtual Globe. | 2 | // This file is part of the Marble Virtual Globe. | ||
3 | // | 3 | // | ||
4 | // This program is free software licensed under the GNU LGPL. You can | 4 | // This program is free software licensed under the GNU LGPL. You can | ||
5 | // find a copy of this license in LICENSE.txt in the top directory of | 5 | // find a copy of this license in LICENSE.txt in the top directory of | ||
6 | // the source code. | 6 | // the source code. | ||
7 | // | 7 | // | ||
8 | // Copyright 2010 Dennis Nienhüser <nienhueser@kde.org> | 8 | // Copyright 2010 Dennis Nienhüser <nienhueser@kde.org> | ||
9 | // Copyright 2016 Piotr Wójcik <chocimier@tlen.pl> | ||||
9 | // | 10 | // | ||
10 | 11 | | |||
11 | #include "YoursPlugin.h" | 12 | #include "YoursPlugin.h" | ||
12 | #include "YoursRunner.h" | 13 | #include "YoursRunner.h" | ||
13 | 14 | | |||
15 | #include "ui_YoursConfigWidget.h" | ||||
16 | | ||||
14 | namespace Marble | 17 | namespace Marble | ||
15 | { | 18 | { | ||
16 | 19 | | |||
17 | YoursPlugin::YoursPlugin( QObject *parent ) : | 20 | YoursPlugin::YoursPlugin( QObject *parent ) : | ||
18 | RoutingRunnerPlugin( parent ) | 21 | RoutingRunnerPlugin( parent ) | ||
19 | { | 22 | { | ||
20 | setSupportedCelestialBodies(QStringList(QStringLiteral("earth"))); | 23 | setSupportedCelestialBodies(QStringList(QStringLiteral("earth"))); | ||
21 | setCanWorkOffline( false ); | 24 | setCanWorkOffline( false ); | ||
Show All 12 Lines | |||||
34 | 37 | | |||
35 | QString YoursPlugin::nameId() const | 38 | QString YoursPlugin::nameId() const | ||
36 | { | 39 | { | ||
37 | return QStringLiteral("yours"); | 40 | return QStringLiteral("yours"); | ||
38 | } | 41 | } | ||
39 | 42 | | |||
40 | QString YoursPlugin::version() const | 43 | QString YoursPlugin::version() const | ||
41 | { | 44 | { | ||
42 | return QStringLiteral("1.0"); | 45 | return QStringLiteral("1.1"); | ||
43 | } | 46 | } | ||
44 | 47 | | |||
45 | QString YoursPlugin::description() const | 48 | QString YoursPlugin::description() const | ||
46 | { | 49 | { | ||
47 | return tr( "Worldwide routing using a YOURS server" ); | 50 | return tr( "Worldwide routing using a YOURS server" ); | ||
48 | } | 51 | } | ||
49 | 52 | | |||
50 | QString YoursPlugin::copyrightYears() const | 53 | QString YoursPlugin::copyrightYears() const | ||
51 | { | 54 | { | ||
52 | return QStringLiteral("2010"); | 55 | return QStringLiteral("2010, 2016"); | ||
53 | } | 56 | } | ||
54 | 57 | | |||
55 | QVector<PluginAuthor> YoursPlugin::pluginAuthors() const | 58 | QVector<PluginAuthor> YoursPlugin::pluginAuthors() const | ||
56 | { | 59 | { | ||
57 | return QVector<PluginAuthor>() | 60 | return QVector<PluginAuthor>() | ||
58 | << PluginAuthor(QStringLiteral("Dennis Nienhüser"), QStringLiteral("nienhueser@kde.org")); | 61 | << PluginAuthor(QStringLiteral("Dennis Nienhüser"), QStringLiteral("nienhueser@kde.org")) | ||
62 | << PluginAuthor(QStringLiteral("Piotr Wójcik"), QStringLiteral("chocimier@tlen.pl")); | ||||
59 | } | 63 | } | ||
60 | 64 | | |||
61 | RoutingRunner *YoursPlugin::newRunner() const | 65 | RoutingRunner *YoursPlugin::newRunner() const | ||
62 | { | 66 | { | ||
63 | return new YoursRunner; | 67 | return new YoursRunner; | ||
64 | } | 68 | } | ||
65 | 69 | | |||
70 | class YoursConfigWidget : public RoutingRunnerPlugin::ConfigWidget | ||||
71 | { | ||||
72 | public: | ||||
73 | YoursConfigWidget() | ||||
74 | : RoutingRunnerPlugin::ConfigWidget() | ||||
75 | { | ||||
76 | ui_configWidget = new Ui::YoursConfigWidget; | ||||
77 | ui_configWidget->setupUi( this ); | ||||
78 | //TODO: read from profiles.xml | ||||
79 | ui_configWidget->transport->addItem( tr( "Foot" ), "foot" ); | ||||
80 | ui_configWidget->transport->addItem( tr( "Bicycle" ), "bicycle" ); | ||||
nienhueser: Should be doable with something like this:
```
QMap<QString, QString> transports… | |||||
81 | ui_configWidget->transport->addItem( tr( "Motorcar" ), "motorcar" ); | ||||
82 | } | ||||
83 | virtual ~YoursConfigWidget() | ||||
84 | { | ||||
85 | delete ui_configWidget; | ||||
86 | } | ||||
87 | virtual void loadSettings( const QHash<QString, QVariant> &settings_ ) | ||||
88 | { | ||||
89 | QHash<QString, QVariant> settings = settings_; | ||||
90 | | ||||
91 | // Check if all fields are filled and fill them with default values. | ||||
92 | if (!settings.contains(QStringLiteral("transport"))) { | ||||
93 | settings.insert(QStringLiteral("transport"), QStringLiteral("motorcar")); | ||||
94 | } | ||||
95 | ui_configWidget->transport->setCurrentIndex( | ||||
96 | ui_configWidget->transport->findData(settings.value(QStringLiteral("transport")).toString())); | ||||
97 | if (settings.value(QStringLiteral("method")).toString() == QLatin1String("shortest")) { | ||||
98 | ui_configWidget->shortest->setChecked( true ); | ||||
99 | } else { | ||||
100 | ui_configWidget->fastest->setChecked( true ); | ||||
101 | } | ||||
102 | } | ||||
103 | | ||||
104 | virtual QHash<QString, QVariant> settings() const | ||||
105 | { | ||||
106 | QHash<QString,QVariant> settings; | ||||
107 | settings.insert(QStringLiteral("transport"), | ||||
108 | ui_configWidget->transport->itemData( ui_configWidget->transport->currentIndex() ) ); | ||||
109 | | ||||
110 | if ( ui_configWidget->shortest->isChecked() ) { | ||||
111 | settings.insert(QStringLiteral("method"), QStringLiteral("shortest")); | ||||
112 | } else { | ||||
113 | settings.insert(QStringLiteral("method"), QStringLiteral("fastest")); | ||||
114 | } | ||||
115 | return settings; | ||||
116 | } | ||||
117 | private: | ||||
118 | Ui::YoursConfigWidget *ui_configWidget; | ||||
119 | }; | ||||
120 | | ||||
121 | RoutingRunnerPlugin::ConfigWidget *YoursPlugin::configWidget() | ||||
122 | { | ||||
123 | return new YoursConfigWidget(); | ||||
124 | } | ||||
125 | | ||||
66 | bool YoursPlugin::supportsTemplate( RoutingProfilesModel::ProfileTemplate profileTemplate ) const | 126 | bool YoursPlugin::supportsTemplate( RoutingProfilesModel::ProfileTemplate profileTemplate ) const | ||
67 | { | 127 | { | ||
68 | return profileTemplate == RoutingProfilesModel::CarFastestTemplate; | 128 | QSet<RoutingProfilesModel::ProfileTemplate> availableTemplates; | ||
129 | availableTemplates.insert( RoutingProfilesModel::CarFastestTemplate ); | ||||
130 | availableTemplates.insert( RoutingProfilesModel::CarShortestTemplate ); | ||||
131 | availableTemplates.insert( RoutingProfilesModel::BicycleTemplate ); | ||||
132 | availableTemplates.insert( RoutingProfilesModel::PedestrianTemplate ); | ||||
133 | return availableTemplates.contains( profileTemplate ); | ||||
134 | } | ||||
135 | | ||||
136 | QHash< QString, QVariant > YoursPlugin::templateSettings(RoutingProfilesModel::ProfileTemplate profileTemplate) const | ||||
137 | { | ||||
138 | QHash<QString, QVariant> result; | ||||
139 | switch ( profileTemplate ) { | ||||
140 | case RoutingProfilesModel::CarFastestTemplate: | ||||
141 | result.insert(QStringLiteral("transport"), QStringLiteral("motorcar")); | ||||
142 | result.insert(QStringLiteral("method"), QStringLiteral("fastest")); | ||||
143 | break; | ||||
144 | case RoutingProfilesModel::CarShortestTemplate: | ||||
145 | result.insert(QStringLiteral("transport"), QStringLiteral("motorcar")); | ||||
146 | result.insert(QStringLiteral("method"), QStringLiteral("shortest")); | ||||
147 | break; | ||||
148 | case RoutingProfilesModel::CarEcologicalTemplate: | ||||
149 | break; | ||||
150 | case RoutingProfilesModel::BicycleTemplate: | ||||
151 | result.insert(QStringLiteral("transport"), QStringLiteral("bicycle")); | ||||
152 | result.insert(QStringLiteral("method"), QStringLiteral("shortest")); | ||||
153 | break; | ||||
154 | case RoutingProfilesModel::PedestrianTemplate: | ||||
155 | result.insert(QStringLiteral("transport"), QStringLiteral("foot")); | ||||
156 | result.insert(QStringLiteral("method"), QStringLiteral("shortest")); | ||||
157 | break; | ||||
158 | case RoutingProfilesModel::LastTemplate: | ||||
159 | Q_ASSERT( false ); | ||||
160 | break; | ||||
161 | } | ||||
162 | return result; | ||||
69 | } | 163 | } | ||
70 | 164 | | |||
71 | } | 165 | } | ||
72 | 166 | | |||
73 | #include "moc_YoursPlugin.cpp" | 167 | #include "moc_YoursPlugin.cpp" |
Should be doable with something like this: