• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdeedu API Reference
  • KDE Home
  • Contact Us
 

marble

  • sources
  • kde-4.14
  • kdeedu
  • marble
  • src
  • plugins
  • runner
  • routino
RoutinoPlugin.cpp
Go to the documentation of this file.
1 //
2 // This file is part of the Marble Virtual Globe.
3 //
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
6 // the source code.
7 //
8 // Copyright 2010 Dennis Nienhüser <earthwings@gentoo.org>
9 //
10 
11 #include "RoutinoPlugin.h"
12 #include "RoutinoRunner.h"
13 #include "MarbleDirs.h"
14 
15 #include "ui_RoutinoConfigWidget.h"
16 
17 namespace Marble
18 {
19 
20 RoutinoPlugin::RoutinoPlugin( QObject *parent ) :
21  RoutingRunnerPlugin( parent )
22 {
23  setSupportedCelestialBodies( QStringList() << "earth" );
24  setCanWorkOffline( true );
25 }
26 
27 QString RoutinoPlugin::name() const
28 {
29  return tr( "Routino Routing" );
30 }
31 
32 QString RoutinoPlugin::guiString() const
33 {
34  return tr( "Routino" );
35 }
36 
37 QString RoutinoPlugin::nameId() const
38 {
39  return "routino";
40 }
41 
42 QString RoutinoPlugin::version() const
43 {
44  return "1.0";
45 }
46 
47 QString RoutinoPlugin::description() const
48 {
49  return tr( "Retrieves routes from routino" );
50 }
51 
52 QString RoutinoPlugin::copyrightYears() const
53 {
54  return "2010";
55 }
56 
57 QList<PluginAuthor> RoutinoPlugin::pluginAuthors() const
58 {
59  return QList<PluginAuthor>()
60  << PluginAuthor( QString::fromUtf8( "Dennis Nienhüser" ), "earthwings@gentoo.org" );
61 }
62 
63 RoutingRunner *RoutinoPlugin::newRunner() const
64 {
65  return new RoutinoRunner;
66 }
67 
68 class RoutinoConfigWidget : public RoutingRunnerPlugin::ConfigWidget
69 {
70 public:
71  RoutinoConfigWidget()
72  : RoutingRunnerPlugin::ConfigWidget()
73  {
74  ui_configWidget = new Ui::RoutinoConfigWidget;
75  ui_configWidget->setupUi( this );
76  QStringList transports;
77  //TODO: read from profiles.xml
78  //TODO: translate
79  transports << "foot" << "horse" << "wheelchair" << "bicycle" << "moped" << "motorbike" << "motorcar" << "goods" << "hgv" << "psv";
80  foreach ( const QString &transport, transports) {
81  ui_configWidget->transport->addItem(transport, transport);
82  }
83  }
84  virtual ~RoutinoConfigWidget()
85  {
86  delete ui_configWidget;
87  }
88  virtual void loadSettings( const QHash<QString, QVariant> &settings_ )
89  {
90  QHash<QString, QVariant> settings = settings_;
91 
92  // Check if all fields are filled and fill them with default values.
93  if ( !settings.contains( "transport" ) ) {
94  settings.insert( "transport", "motorcar" );
95  }
96  ui_configWidget->transport->setCurrentIndex(
97  ui_configWidget->transport->findData( settings.value( "transport" ).toString() ) );
98  if ( settings.value( "method" ).toString() == "shortest" ) {
99  ui_configWidget->shortest->setChecked( true );
100  } else {
101  ui_configWidget->fastest->setChecked( true );
102  }
103  }
104 
105  virtual QHash<QString, QVariant> settings() const
106  {
107  QHash<QString,QVariant> settings;
108  settings.insert( "transport",
109  ui_configWidget->transport->itemData( ui_configWidget->transport->currentIndex() ) );
110 
111  if ( ui_configWidget->shortest->isChecked() ) {
112  settings.insert( "method", "shortest" );
113  } else {
114  settings.insert( "method", "fastest" );
115  }
116  return settings;
117  }
118 private:
119  Ui::RoutinoConfigWidget *ui_configWidget;
120 };
121 
122 RoutingRunnerPlugin::ConfigWidget *RoutinoPlugin::configWidget()
123 {
124  return new RoutinoConfigWidget();
125 }
126 
127 bool RoutinoPlugin::supportsTemplate(RoutingProfilesModel::ProfileTemplate profileTemplate) const
128 {
129  QSet<RoutingProfilesModel::ProfileTemplate> availableTemplates;
130  availableTemplates.insert( RoutingProfilesModel::CarFastestTemplate );
131  availableTemplates.insert( RoutingProfilesModel::CarShortestTemplate );
132  availableTemplates.insert( RoutingProfilesModel::BicycleTemplate );
133  availableTemplates.insert( RoutingProfilesModel::PedestrianTemplate );
134  return availableTemplates.contains( profileTemplate );
135 }
136 
137 QHash< QString, QVariant > RoutinoPlugin::templateSettings(RoutingProfilesModel::ProfileTemplate profileTemplate) const
138 {
139  QHash<QString, QVariant> result;
140  switch ( profileTemplate ) {
141  case RoutingProfilesModel::CarFastestTemplate:
142  result["transport"] = "motorcar";
143  result["method"] = "fastest";
144  break;
145  case RoutingProfilesModel::CarShortestTemplate:
146  result["transport"] = "motorcar";
147  result["method"] = "shortest";
148  break;
149  case RoutingProfilesModel::CarEcologicalTemplate:
150  break;
151  case RoutingProfilesModel::BicycleTemplate:
152  result["transport"] = "bicycle";
153  result["method"] = "shortest";
154  break;
155  case RoutingProfilesModel::PedestrianTemplate:
156  result["transport"] = "foot";
157  result["method"] = "shortest";
158  break;
159  case RoutingProfilesModel::LastTemplate:
160  Q_ASSERT( false );
161  break;
162  }
163  return result;
164 }
165 
166 bool RoutinoPlugin::canWork() const
167 {
168  QDir mapDir = QDir( MarbleDirs::localPath() + "/maps/earth/routino/" );
169  return mapDir.exists();
170 }
171 
172 }
173 
174 Q_EXPORT_PLUGIN2( RoutinoPlugin, Marble::RoutinoPlugin )
175 
176 #include "RoutinoPlugin.moc"
Marble::RoutinoPlugin::description
QString description() const
Returns a user description of the plugin.
Definition: RoutinoPlugin.cpp:47
Marble::RoutinoPlugin::supportsTemplate
bool supportsTemplate(RoutingProfilesModel::ProfileTemplate profileTemplate) const
True if the plugin supports the given routing profile template.
Definition: RoutinoPlugin.cpp:127
QHash::insert
iterator insert(const Key &key, const T &value)
Marble::RoutingProfilesModel::CarEcologicalTemplate
Definition: RoutingProfilesModel.h:38
Marble::RoutinoPlugin::guiString
QString guiString() const
Returns the string that should appear in the user interface.
Definition: RoutinoPlugin.cpp:32
Marble::PluginAuthor
Definition: PluginInterface.h:28
Marble::MarbleDirs::localPath
static QString localPath()
Definition: MarbleDirs.cpp:223
QSet::insert
const_iterator insert(const T &value)
Marble::RoutinoPlugin::templateSettings
QHash< QString, QVariant > templateSettings(RoutingProfilesModel::ProfileTemplate profileTemplate) const
Settings for the given routing profile template.
Definition: RoutinoPlugin.cpp:137
Marble::RoutinoPlugin::pluginAuthors
QList< PluginAuthor > pluginAuthors() const
Definition: RoutinoPlugin.cpp:57
QObject::tr
QString tr(const char *sourceText, const char *disambiguation, int n)
Marble::RoutingRunnerPlugin::ConfigWidget
Definition: RoutingRunnerPlugin.h:77
Marble::RoutinoPlugin::canWork
virtual bool canWork() const
Returns.
Definition: RoutinoPlugin.cpp:166
QDir::exists
bool exists() const
QString::fromUtf8
QString fromUtf8(const char *str, int size)
QHash< QString, QVariant >
Marble::RoutinoPlugin::nameId
QString nameId() const
Returns the unique name of the plugin.
Definition: RoutinoPlugin.cpp:37
Marble::RoutinoPlugin::RoutinoPlugin
RoutinoPlugin(QObject *parent=0)
Definition: RoutinoPlugin.cpp:20
QObject
MarbleDirs.h
RoutinoPlugin.h
Marble::RoutingProfilesModel::CarShortestTemplate
Definition: RoutingProfilesModel.h:37
QSet
QString
QList
QStringList
Q_EXPORT_PLUGIN2
#define Q_EXPORT_PLUGIN2(a, b)
Definition: marble_export.h:34
Marble::RoutingProfilesModel::CarFastestTemplate
Definition: RoutingProfilesModel.h:36
QHash::value
const T value(const Key &key) const
Marble::RoutinoRunner
Definition: RoutinoRunner.h:22
QSet::contains
bool contains(const T &value) const
Marble::RoutinoPlugin::newRunner
virtual RoutingRunner * newRunner() const
Plugin factory method to create a new runner instance.
Definition: RoutinoPlugin.cpp:63
Marble::RoutingProfilesModel::LastTemplate
Definition: RoutingProfilesModel.h:42
QDir
Marble::RoutingProfilesModel::ProfileTemplate
ProfileTemplate
Definition: RoutingProfilesModel.h:35
Marble::RoutinoPlugin::copyrightYears
QString copyrightYears() const
Definition: RoutinoPlugin.cpp:52
Marble::RoutingRunnerPlugin::setSupportedCelestialBodies
void setSupportedCelestialBodies(const QStringList &celestialBodies)
Definition: RoutingRunnerPlugin.cpp:61
Marble::RoutingRunnerPlugin::setCanWorkOffline
void setCanWorkOffline(bool canWorkOffline)
Definition: RoutingRunnerPlugin.cpp:66
Marble::RoutingProfilesModel::BicycleTemplate
Definition: RoutingProfilesModel.h:39
Marble::RoutingRunner
Definition: RoutingRunner.h:28
Marble::RoutingRunnerPlugin
A plugin for Marble to execute a routing task.
Definition: RoutingRunnerPlugin.h:33
QHash::contains
bool contains(const Key &key) const
RoutinoRunner.h
Marble::RoutinoPlugin::version
QString version() const
Definition: RoutinoPlugin.cpp:42
Marble::RoutinoPlugin
Definition: RoutinoPlugin.h:23
Marble::RoutinoPlugin::name
QString name() const
Returns the user-visible name of the plugin.
Definition: RoutinoPlugin.cpp:27
Marble::RoutingProfilesModel::PedestrianTemplate
Definition: RoutingProfilesModel.h:40
Marble::RoutinoPlugin::configWidget
ConfigWidget * configWidget()
Method for getting a pointer to the configuration widget of the plugin.
Definition: RoutinoPlugin.cpp:122
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:13:41 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

marble

Skip menu "marble"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdeedu API Reference

Skip menu "kdeedu API Reference"
  • Analitza
  •     lib
  • kalgebra
  • kalzium
  •   libscience
  • kanagram
  • kig
  •   lib
  • klettres
  • marble
  • parley
  • rocs
  •   App
  •   RocsCore
  •   VisualEditor
  •   stepcore

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal