7#include "RoutingProfileSettingsDialog.h"
9#include <QStandardItemModel>
11#include "MarbleGlobal.h"
12#include "MarbleDebug.h"
13#include "RoutingProfilesModel.h"
14#include "PluginManager.h"
16#include "ui_RoutingProfileSettingsDialog.h"
21RoutingProfileSettingsDialog::RoutingProfileSettingsDialog(
const PluginManager *pluginManager, RoutingProfilesModel *profilesModel,
QWidget* parent )
23 m_profilesModel ( profilesModel ), m_dialog( nullptr ), m_dialogLayout( nullptr )
25 m_ui =
new Ui_RoutingProfileSettingsDialog();
26 m_ui->setupUi(
this );
27 bool const smallScreen = MarbleGlobal::getInstance()->profiles() & MarbleGlobal::SmallScreen;
29 setMinimumHeight( 480 );
30 m_ui->services->setMinimumWidth( 280 );
31 m_ui->buttonBox->hide();
35 for( RoutingRunnerPlugin* plugin: allPlugins ) {
37 RoutingRunnerPlugin::ConfigWidget* configWidget = plugin->configWidget();
39 m_configWidgets.
insert( plugin, configWidget );
40 m_ui->settingsStack->addWidget( configWidget );
45 m_ui->services->setModel( m_servicesModel );
49 connect ( m_ui->buttonBox, SIGNAL(accepted()),
this, SLOT(accept()) );
50 connect ( m_ui->buttonBox, SIGNAL(rejected()),
this, SLOT(reject()) );
52 connect( m_ui->configureButton, SIGNAL(clicked()),
this, SLOT(openConfigDialog()) );
55RoutingProfileSettingsDialog::~RoutingProfileSettingsDialog()
57 qDeleteAll( m_configWidgets );
61void RoutingProfileSettingsDialog::updateConfigWidget( )
63 QModelIndex current = m_ui->services->selectionModel()->currentIndex();
66 m_ui->settingsStack->setEnabled(
false );
70 RoutingRunnerPlugin *plugin = m_plugins.at( current.
row() );
71 QWidget* configWidget = m_configWidgets[plugin];
73 bool const smallScreen = MarbleGlobal::getInstance()->profiles() & MarbleGlobal::SmallScreen;
74 m_ui->settingsStack->setCurrentWidget( smallScreen ? m_ui->configurePage : configWidget );
75 m_ui->descriptionLabel->setText( plugin->description() );
76 m_ui->statusLabel->setText( plugin->statusMessage() );
80 m_ui->settingsStack->setEnabled(
false );
81 m_ui->noConfigDescriptionLabel->setText( plugin->description() );
82 m_ui->noConfigStatusLabel->setText( plugin->statusMessage() );
83 m_ui->settingsStack->setCurrentWidget( m_ui->noConfigAvailablePage );
87void RoutingProfileSettingsDialog::editProfile(
int profileIndex )
90 m_ui->name->setText( profiles.
at( profileIndex ).name() );
92 m_servicesModel->
clear();
93 for( RoutingRunnerPlugin *plugin: m_plugins ) {
96 if ( profiles[ profileIndex ].pluginSettings().contains( plugin->nameId() ) ) {
100 if ( m_configWidgets[plugin] ) {
101 m_configWidgets[plugin]->loadSettings( settings );
104 m_servicesModel->invisibleRootItem()->appendRow( item );
106 m_ui->settingsStack->setCurrentWidget( m_ui->selectServicePage );
107 m_ui->settingsStack->setEnabled(
false );
109 bool const smallScreen = MarbleGlobal::getInstance()->profiles() & MarbleGlobal::SmallScreen;
115 m_profilesModel->setProfileName( profileIndex, m_ui->name->text() );
118 for (
int i=0; i < m_servicesModel->invisibleRootItem()->rowCount(); ++i) {
122 if ( m_configWidgets[m_plugins[ i ]] ) {
123 settings = m_configWidgets[m_plugins[ i ]]->settings();
125 mDebug() << i << m_plugins[ i ]->nameId() << settings;
126 pluginSettings.
insert( m_plugins[ i ]->nameId(), settings );
128 pluginSettings.
remove( m_plugins[ i ]->nameId() );
131 m_profilesModel->setProfilePluginSettings( profileIndex, pluginSettings );
134void RoutingProfileSettingsDialog::openConfigDialog()
136 QModelIndex current = m_ui->services->selectionModel()->currentIndex();
138 RoutingRunnerPlugin *plugin = m_plugins.at( current.
row() );
141 m_dialog =
new QDialog(
this );
144 m_dialogLayout->addWidget( m_configWidgets[plugin] );
146 m_dialog->setLayout( m_dialogLayout );
147 m_dialog->setMinimumHeight( 480 );
149 m_dialogLayout->insertWidget( 0, m_configWidgets[plugin] );
152 m_configWidgets[plugin]->show();
153 m_dialog->setWindowTitle( plugin->guiString() );
155 m_configWidgets[plugin]->hide();
156 m_dialogLayout->removeWidget( m_configWidgets[plugin] );
162#include "moc_RoutingProfileSettingsDialog.cpp"
Binds a QML item to a specific geodetic location in screen coordinates.
iterator insert(const Key &key, const T &value)
bool remove(const Key &key)
const_reference at(qsizetype i) const const
iterator insert(const_iterator before, parameter_type value)
bool isValid() const const
Qt::CheckState checkState() const const
QStandardItem * child(int row, int column) const const
void setCheckState(Qt::CheckState state)
void setCheckable(bool checkable)
void setEnabled(bool enabled)
QFuture< ArgsType< Signal > > connect(Sender *sender, Signal signal)