6 #include "RoutingProfilesModel.h"
8 #include "PluginManager.h"
9 #include "RoutingRunnerPlugin.h"
14 RoutingProfilesModel::RoutingProfilesModel(
const PluginManager* pluginManager,
QObject *parent )
23 if ( index.
row() >= m_profiles.count() ) {
return QVariant(); }
25 return m_profiles.at( index.
row() ).name();
30 int RoutingProfilesModel::rowCount(
const QModelIndex& parent )
const
32 if ( parent.
isValid() ) {
return 0; }
33 return m_profiles.count();
36 bool RoutingProfilesModel::removeRows(
int row,
int count,
const QModelIndex& parent )
38 if ( parent.
isValid() ) {
return false; }
39 if ( row + count > m_profiles.count()) {
return false; }
40 beginRemoveRows( parent, row, row + count );
41 for (
int i = 0; i < count; ++i) {
42 m_profiles.removeAt( row+i );
51 m_profiles = profiles;
60 void RoutingProfilesModel::addProfile(
const QString& name )
62 beginInsertRows(
QModelIndex(), m_profiles.count(), m_profiles.count() );
63 m_profiles << RoutingProfile( name );
67 bool RoutingProfilesModel::moveUp(
int row )
69 if ( row < 1 ) {
return false; }
70 if ( row >= m_profiles.count() ) {
return false; }
75 #if QT_VERSION >= QT_VERSION_CHECK(5, 13, 0)
76 m_profiles.swapItemsAt( row, row-1 );
78 m_profiles.swap( row, row-1 );
84 bool RoutingProfilesModel::moveDown(
int row )
86 return moveUp( row + 1 );
89 bool RoutingProfilesModel::setProfileName(
int row,
const QString& name)
91 if ( row < 0 ) {
return false; }
92 if ( row >= m_profiles.count() ) {
return false; }
93 m_profiles[row].setName( name );
94 emit dataChanged( index( row, 0 ), index( row, 0 ) );
100 if ( row < 0 ) {
return false; }
101 if ( row >= m_profiles.count() ) {
return false; }
102 m_profiles[row].pluginSettings() = pluginSettings;
106 QString templateName( RoutingProfilesModel::ProfileTemplate profileTemplate )
108 switch ( profileTemplate ) {
109 case RoutingProfilesModel::CarFastestTemplate:
110 return RoutingProfilesModel::tr(
"Car (fastest)" );
111 case RoutingProfilesModel::CarShortestTemplate:
112 return RoutingProfilesModel::tr(
"Car (shortest)" );
113 case RoutingProfilesModel::CarEcologicalTemplate:
114 return RoutingProfilesModel::tr(
"Car (ecological)" );
115 case RoutingProfilesModel::BicycleTemplate:
116 return RoutingProfilesModel::tr(
"Bicycle" );
117 case RoutingProfilesModel::PedestrianTemplate:
118 return RoutingProfilesModel::tr(
"Pedestrian" );
119 case RoutingProfilesModel::LastTemplate:
122 return RoutingProfilesModel::tr(
"Unknown" );
125 void RoutingProfilesModel::loadDefaultProfiles()
127 beginInsertRows(
QModelIndex(), m_profiles.count(), m_profiles.count() +
int( LastTemplate ) - 1 );
128 for (
int i=0; i < LastTemplate; ++i) {
129 ProfileTemplate tpl =
static_cast<ProfileTemplate
>( i );
130 RoutingProfile profile( templateName( tpl ) );
131 bool profileSupportedByAtLeastOnePlugin =
false;
132 for( RoutingRunnerPlugin* plugin: m_pluginManager->routingRunnerPlugins() ) {
133 if ( plugin->supportsTemplate( tpl ) ) {
134 profileSupportedByAtLeastOnePlugin =
true;
138 if ( !profileSupportedByAtLeastOnePlugin ) {
141 for( RoutingRunnerPlugin* plugin: m_pluginManager->routingRunnerPlugins() ) {
142 if ( plugin->supportsTemplate( tpl ) ) {
143 profile.pluginSettings()[plugin->nameId()] = plugin->templateSettings( tpl );
148 case CarFastestTemplate:
149 case CarShortestTemplate:
150 case CarEcologicalTemplate:
151 profile.setTransportType( RoutingProfile::Motorcar );
153 case BicycleTemplate:
154 profile.setTransportType( RoutingProfile::Bicycle );
156 case PedestrianTemplate:
157 profile.setTransportType( RoutingProfile::Pedestrian );
160 Q_ASSERT(
false &&
"LastTemplate is an internal enum not to be used as a profile template" );
164 m_profiles << profile;
171 #include "moc_RoutingProfilesModel.cpp"