File indexing completed on 2024-04-28 03:50:33

0001 // SPDX-License-Identifier: LGPL-2.1-or-later
0002 //
0003 // SPDX-FileCopyrightText: 2012 Dennis Nienhüser <nienhueser@kde.org>
0004 //
0005 
0006 #include "MapQuestPlugin.h"
0007 #include "MapQuestRunner.h"
0008 
0009 #include "ui_MapQuestConfigWidget.h"
0010 
0011 namespace Marble
0012 {
0013 
0014 MapQuestPlugin::MapQuestPlugin( QObject *parent ) :
0015     RoutingRunnerPlugin( parent )
0016 {
0017     setSupportedCelestialBodies(QStringList(QStringLiteral("earth")));
0018     setCanWorkOffline( false );
0019     setStatusMessage( tr ( "This service requires an Internet connection." ) );
0020 }
0021 
0022 QString MapQuestPlugin::name() const
0023 {
0024     return tr( "MapQuest Routing" );
0025 }
0026 
0027 QString MapQuestPlugin::guiString() const
0028 {
0029     return tr( "MapQuest" );
0030 }
0031 
0032 QString MapQuestPlugin::nameId() const
0033 {
0034     return QStringLiteral("mapquest");
0035 }
0036 
0037 QString MapQuestPlugin::version() const
0038 {
0039     return QStringLiteral("1.0");
0040 }
0041 
0042 QString MapQuestPlugin::description() const
0043 {
0044     return tr( "Worldwide routing using mapquest.org" );
0045 }
0046 
0047 QString MapQuestPlugin::copyrightYears() const
0048 {
0049     return QStringLiteral("2012");
0050 }
0051 
0052 QVector<PluginAuthor> MapQuestPlugin::pluginAuthors() const
0053 {
0054     return QVector<PluginAuthor>()
0055             << PluginAuthor(QStringLiteral("Dennis Nienhüser"), QStringLiteral("nienhueser@kde.org"));
0056 }
0057 
0058 RoutingRunner *MapQuestPlugin::newRunner() const
0059 {
0060     return new MapQuestRunner;
0061 }
0062 
0063 class MapQuestConfigWidget : public RoutingRunnerPlugin::ConfigWidget
0064 {
0065     Q_OBJECT
0066 
0067 public:
0068 
0069     MapQuestConfigWidget()
0070         : RoutingRunnerPlugin::ConfigWidget()
0071     {
0072         ui_configWidget = new Ui::MapQuestConfigWidget;
0073         ui_configWidget->setupUi( this );
0074 
0075         ui_configWidget->preference->addItem( tr( "Car (fastest way)" ), "fastest" );
0076         ui_configWidget->preference->addItem( tr( "Car (shortest way)" ), "shortest" );
0077         ui_configWidget->preference->addItem( tr( "Pedestrian" ), "pedestrian" );
0078         ui_configWidget->preference->addItem( tr( "Bicycle" ), "bicycle" );
0079         ui_configWidget->preference->addItem( tr( "Transit (Public Transport)" ), "multimodal" );
0080 
0081         ui_configWidget->ascending->addItem( tr( "Ignore" ), "DEFAULT_STRATEGY" );
0082         ui_configWidget->ascending->addItem( tr( "Avoid" ), "AVOID_UP_HILL" );
0083         ui_configWidget->ascending->addItem( tr( "Favor" ), "FAVOR_UP_HILL" );
0084 
0085         ui_configWidget->descending->addItem( tr( "Ignore" ), "DEFAULT_STRATEGY" );
0086         ui_configWidget->descending->addItem( tr( "Avoid" ), "AVOID_DOWN_HILL" );
0087         ui_configWidget->descending->addItem( tr( "Favor" ), "FAVOR_DOWN_HILL" );
0088     }
0089 
0090     void loadSettings( const QHash<QString, QVariant> &settings_ ) override
0091     {
0092         QHash<QString, QVariant> settings = settings_;
0093 
0094         // Check if all fields are filled and fill them with default values.
0095         if (!settings.contains(QStringLiteral("preference"))) {
0096             settings.insert(QStringLiteral("preference"), QStringLiteral("fastest"));
0097         }
0098         if (!settings.contains(QStringLiteral("ascending"))) {
0099             settings.insert(QStringLiteral("ascending"), QStringLiteral("DEFAULT_STRATEGY"));
0100         }
0101         if (!settings.contains(QStringLiteral("descending"))) {
0102             settings.insert(QStringLiteral("descending"), QStringLiteral("DEFAULT_STRATEGY"));
0103         }
0104         if (!settings.contains(QStringLiteral("appKey"))) {
0105             settings.insert(QStringLiteral("appKey"), QString());
0106         }
0107         ui_configWidget->appKey->setText(settings.value(QStringLiteral("appKey")).toString() );
0108         ui_configWidget->preference->setCurrentIndex(
0109                     ui_configWidget->preference->findData(settings.value(QStringLiteral("preference")).toString()));
0110         ui_configWidget->noMotorways->setCheckState( static_cast<Qt::CheckState>(settings.value(QStringLiteral("noMotorways")).toInt()));
0111         ui_configWidget->noTollways->setCheckState( static_cast<Qt::CheckState>(settings.value(QStringLiteral("noTollways")).toInt()));
0112         ui_configWidget->noFerries->setCheckState( static_cast<Qt::CheckState>(settings.value(QStringLiteral("noFerries")).toInt()));
0113         ui_configWidget->ascending->setCurrentIndex(
0114                     ui_configWidget->ascending->findData(settings.value(QStringLiteral("ascending")).toString()));
0115         ui_configWidget->descending->setCurrentIndex(
0116                     ui_configWidget->descending->findData(settings.value(QStringLiteral("descending")).toString()));
0117     }
0118 
0119     QHash<QString, QVariant> settings() const override
0120     {
0121         QHash<QString,QVariant> settings;
0122         settings.insert(QStringLiteral("appKey"), ui_configWidget->appKey->text());
0123         settings.insert(QStringLiteral("preference"),
0124                          ui_configWidget->preference->itemData( ui_configWidget->preference->currentIndex() ) );
0125         settings.insert(QStringLiteral("noMotorways"), ui_configWidget->noMotorways->checkState());
0126         settings.insert(QStringLiteral("noTollways"), ui_configWidget->noTollways->checkState());
0127         settings.insert(QStringLiteral("noFerries"), ui_configWidget->noFerries->checkState());
0128         settings.insert(QStringLiteral("ascending"),
0129                          ui_configWidget->ascending->itemData( ui_configWidget->ascending->currentIndex() ) );
0130         settings.insert(QStringLiteral("descending"),
0131                          ui_configWidget->descending->itemData( ui_configWidget->descending->currentIndex() ) );
0132         return settings;
0133     }
0134 private:
0135     Ui::MapQuestConfigWidget *ui_configWidget;
0136 };
0137 
0138 RoutingRunnerPlugin::ConfigWidget *MapQuestPlugin::configWidget()
0139 {
0140     return new MapQuestConfigWidget();
0141 }
0142 
0143 
0144 bool MapQuestPlugin::supportsTemplate( RoutingProfilesModel::ProfileTemplate profileTemplate ) const
0145 {
0146     return
0147         (profileTemplate == RoutingProfilesModel::CarFastestTemplate)  ||
0148         (profileTemplate == RoutingProfilesModel::CarShortestTemplate) ||
0149         (profileTemplate == RoutingProfilesModel::BicycleTemplate)     ||
0150         (profileTemplate == RoutingProfilesModel::PedestrianTemplate);
0151 }
0152 
0153 QHash< QString, QVariant > MapQuestPlugin::templateSettings( RoutingProfilesModel::ProfileTemplate profileTemplate ) const
0154 {
0155     QHash<QString, QVariant> result;
0156     switch ( profileTemplate ) {
0157     case RoutingProfilesModel::CarFastestTemplate:
0158         result.insert(QStringLiteral("preference"), QStringLiteral("fastest"));
0159         break;
0160     case RoutingProfilesModel::CarShortestTemplate:
0161         result.insert(QStringLiteral("preference"), QStringLiteral("shortest"));
0162         break;
0163     case RoutingProfilesModel::CarEcologicalTemplate:
0164         break;
0165     case RoutingProfilesModel::BicycleTemplate:
0166         result.insert(QStringLiteral("preference"), QStringLiteral("bicycle"));
0167         break;
0168     case RoutingProfilesModel::PedestrianTemplate:
0169         result.insert(QStringLiteral("preference"), QStringLiteral("pedestrian"));
0170         break;
0171     case RoutingProfilesModel::LastTemplate:
0172         Q_ASSERT( false );
0173         break;
0174     }
0175     return result;
0176 }
0177 
0178 }
0179 
0180 #include "MapQuestPlugin.moc" // needed for Q_OBJECT here in source
0181 
0182 #include "moc_MapQuestPlugin.cpp"