7 #include "RoutingProfilesWidget.h"
8 #include "ui_RoutingSettingsWidget.h"
11 #include <QStandardItemModel>
13 #include "PluginManager.h"
14 #include "RoutingRunnerPlugin.h"
15 #include "MarbleDebug.h"
16 #include "RoutingProfilesModel.h"
17 #include "RoutingManager.h"
18 #include "RoutingProfileSettingsDialog.h"
23 class Q_DECL_HIDDEN RoutingProfilesWidget::Private
26 Private( MarbleModel *marbleModel, RoutingProfilesWidget *parent );
35 RoutingProfilesWidget *
const q;
36 const PluginManager *
const m_pluginManager;
37 RoutingProfilesModel *
const m_profilesModel;
38 Ui_RoutingSettingsWidget m_ui;
41 RoutingProfilesWidget::Private::Private( MarbleModel *marbleModel, RoutingProfilesWidget *parent ) :
43 m_pluginManager( marbleModel->pluginManager() ),
44 m_profilesModel( marbleModel->routingManager()->profilesModel() )
48 RoutingProfilesWidget::RoutingProfilesWidget( MarbleModel *marbleModel )
50 d( new Private( marbleModel, this ) )
53 d->m_ui.profilesList->setModel( d->m_profilesModel );
55 connect( d->m_ui.addButton, SIGNAL(clicked(
bool)), SLOT(
add()) );
56 connect( d->m_ui.removeButton, SIGNAL(clicked(
bool)), SLOT(
remove()) );
57 connect( d->m_ui.configureButton, SIGNAL(clicked(
bool)), SLOT(
configure()) );
58 connect( d->m_ui.moveUpButton, SIGNAL(clicked(
bool)), SLOT(moveUp()) );
59 connect( d->m_ui.moveDownButton, SIGNAL(clicked(
bool)), SLOT(moveDown()) );
63 connect( d->m_profilesModel, SIGNAL(layoutChanged()), SLOT(updateButtons()) );
66 RoutingProfilesWidget::~RoutingProfilesWidget()
71 void RoutingProfilesWidget::Private::add()
73 m_profilesModel->addProfile( tr(
"New Profile" ) );
75 int profileIndex = m_profilesModel->rowCount() - 1;
78 RoutingProfileSettingsDialog dialog( m_pluginManager, m_profilesModel, q );
79 dialog.editProfile( profileIndex );
82 void RoutingProfilesWidget::Private::remove()
84 if ( m_ui.profilesList->selectionModel()->selectedRows().isEmpty() ) {
87 m_profilesModel->removeRows( m_ui.profilesList->selectionModel()->selectedRows().first().row(), 1 );
90 void RoutingProfilesWidget::Private::configure()
92 if ( m_ui.profilesList->selectionModel()->selectedRows().isEmpty() ) {
96 int profileIndex = m_ui.profilesList->selectionModel()->selectedRows().first().row();
98 RoutingProfileSettingsDialog dialog( m_pluginManager, m_profilesModel, q );
99 dialog.editProfile( profileIndex );
102 void RoutingProfilesWidget::Private::moveUp()
104 if ( m_ui.profilesList->selectionModel()->selectedRows().isEmpty() ) {
107 m_profilesModel->moveUp( m_ui.profilesList->selectionModel()->selectedRows().first().row() );
110 void RoutingProfilesWidget::Private::moveDown()
112 if ( m_ui.profilesList->selectionModel()->selectedRows().isEmpty() ) {
115 m_profilesModel->moveDown( m_ui.profilesList->selectionModel()->selectedRows().first().row() );
118 void RoutingProfilesWidget::Private::updateButtons()
121 if ( !m_ui.profilesList->selectionModel()->selectedRows().isEmpty() ) {
122 current = m_ui.profilesList->selectionModel()->selectedRows().first();
124 m_ui.configureButton->setEnabled( current.
isValid() );
125 m_ui.removeButton->setEnabled( current.
isValid() );
126 m_ui.moveUpButton->setEnabled( current.
isValid() && current.
row() > 0 );
127 m_ui.moveDownButton->setEnabled( current.
isValid() && current.
row()+1 < m_profilesModel->rowCount() );
132 #include "moc_RoutingProfilesWidget.cpp"