diff --git a/src/gui/toolbareditor.cpp b/src/gui/toolbareditor.cpp index eb66f7145..007d8fb16 100755 --- a/src/gui/toolbareditor.cpp +++ b/src/gui/toolbareditor.cpp @@ -28,6 +28,17 @@ ToolBarEditor::ToolBarEditor(QWidget *parent) // Create connections. connect(m_ui->m_btnInsertSeparator, SIGNAL(clicked()), this, SLOT(insertSeparator())); connect(m_ui->m_btnInsertSpacer, SIGNAL(clicked()), this, SLOT(insertSpacer())); + + connect(m_ui->m_btnAddSelectedAction, SIGNAL(clicked()), this, SLOT(addSelectedAction())); + connect(m_ui->m_btnDeleteAllActions, SIGNAL(clicked()), this, SLOT(deleteAllActions())); + connect(m_ui->m_btnDeleteSelectedAction, SIGNAL(clicked()), this, SLOT(deleteSelectedAction())); + connect(m_ui->m_btnMoveActionUp, SIGNAL(clicked()), this, SLOT(moveActionUp())); + connect(m_ui->m_btnMoveActionDown, SIGNAL(clicked()), this, SLOT(moveActionDown())); + + connect(m_ui->m_listAvailableActions, SIGNAL(itemSelectionChanged()), + this, SLOT(updateActionsAvailability())); + connect(m_ui->m_listActivatedActions, SIGNAL(itemSelectionChanged()), + this, SLOT(updateActionsAvailability())); } ToolBarEditor::~ToolBarEditor() { @@ -85,6 +96,8 @@ void ToolBarEditor::loadFromToolBar(BaseToolBar *tool_bar) { } } } + + updateActionsAvailability(); } void ToolBarEditor::saveToolBar() { @@ -97,6 +110,16 @@ void ToolBarEditor::saveToolBar() { m_toolBar->saveChangeableActions(action_names); } +void ToolBarEditor::updateActionsAvailability() { + m_ui->m_btnDeleteAllActions->setEnabled(m_ui->m_listActivatedActions->count() > 0); + m_ui->m_btnDeleteSelectedAction->setEnabled(m_ui->m_listActivatedActions->selectedItems().size() == 1); + m_ui->m_btnMoveActionUp->setEnabled(m_ui->m_listActivatedActions->selectedItems().size() == 1 && + m_ui->m_listActivatedActions->currentRow() > 0); + m_ui->m_btnMoveActionDown->setEnabled(m_ui->m_listActivatedActions->selectedItems().size() == 1 && + m_ui->m_listActivatedActions->currentRow() < m_ui->m_listActivatedActions->count() - 1); + m_ui->m_btnAddSelectedAction->setEnabled(m_ui->m_listAvailableActions->selectedItems().size() > 0); +} + void ToolBarEditor::insertSpacer() { int current_row = m_ui->m_listActivatedActions->currentRow(); @@ -110,6 +133,8 @@ void ToolBarEditor::insertSpacer() { else { m_ui->m_listActivatedActions->addItem(item); } + + updateActionsAvailability(); } void ToolBarEditor::insertSeparator() { @@ -126,4 +151,62 @@ void ToolBarEditor::insertSeparator() { else { m_ui->m_listActivatedActions->addItem(item); } + + updateActionsAvailability(); +} + +void ToolBarEditor::moveActionDown() { + QList items = m_ui->m_listActivatedActions->selectedItems(); + + if (items.size() == 1 && m_ui->m_listActivatedActions->currentRow() < m_ui->m_listActivatedActions->count() - 1) { + QListWidgetItem *selected_item = items.at(0); + int row = m_ui->m_listActivatedActions->row(selected_item); + + m_ui->m_listActivatedActions->takeItem(row++); + m_ui->m_listActivatedActions->insertItem(row, selected_item); + m_ui->m_listActivatedActions->setCurrentRow(row); + } +} + +void ToolBarEditor::moveActionUp() { + QList items = m_ui->m_listActivatedActions->selectedItems(); + + if (items.size() == 1 && m_ui->m_listActivatedActions->currentRow() > 0) { + QListWidgetItem *selected_item = items.at(0); + int row = m_ui->m_listActivatedActions->row(selected_item); + + m_ui->m_listActivatedActions->takeItem(row--); + m_ui->m_listActivatedActions->insertItem(row, selected_item); + m_ui->m_listActivatedActions->setCurrentRow(row); + } +} + +void ToolBarEditor::addSelectedAction() { + QList items = m_ui->m_listAvailableActions->selectedItems(); + + if (items.size() == 1) { + QListWidgetItem *selected_item = items.at(0); + + m_ui->m_listActivatedActions->insertItem( + m_ui->m_listActivatedActions->currentRow() + 1, + m_ui->m_listAvailableActions->takeItem(m_ui->m_listAvailableActions->row(selected_item))); + m_ui->m_listActivatedActions->setCurrentRow(m_ui->m_listActivatedActions->currentRow() + 1); + } +} + +void ToolBarEditor::deleteSelectedAction() { + QList items = m_ui->m_listActivatedActions->selectedItems(); + + if (items.size() == 1) { + QListWidgetItem *selected_item = items.at(0); + + m_ui->m_listAvailableActions->insertItem( + m_ui->m_listAvailableActions->currentRow() + 1, + m_ui->m_listActivatedActions->takeItem(m_ui->m_listActivatedActions->row(selected_item))); + m_ui->m_listAvailableActions->setCurrentRow(m_ui->m_listAvailableActions->currentRow() + 1); + } +} + +void ToolBarEditor::deleteAllActions() { + } diff --git a/src/gui/toolbareditor.h b/src/gui/toolbareditor.h index a13b17aea..78aa60a2c 100644 --- a/src/gui/toolbareditor.h +++ b/src/gui/toolbareditor.h @@ -50,10 +50,19 @@ class ToolBarEditor : public QWidget { } private slots: + void updateActionsAvailability(); + // Insert common controls. void insertSpacer(); void insertSeparator(); + void moveActionDown(); + void moveActionUp(); + + void addSelectedAction(); + void deleteSelectedAction(); + void deleteAllActions(); + private: Ui::ToolBarEditor *m_ui; BaseToolBar *m_toolBar; diff --git a/src/gui/toolbareditor.ui b/src/gui/toolbareditor.ui index 89d08a46c..d05f0601e 100644 --- a/src/gui/toolbareditor.ui +++ b/src/gui/toolbareditor.ui @@ -27,14 +27,14 @@ 0 - + Activated actions - + Available actions @@ -48,18 +48,6 @@ QAbstractItemView::NoEditTriggers - - false - - - true - - - QAbstractItemView::DragDrop - - - Qt::MoveAction - QAbstractItemView::SelectRows @@ -76,6 +64,27 @@ + + + + Move action up + + + + + + + Move action down + + + + + + + Qt::Horizontal + + + @@ -90,6 +99,34 @@ + + + + Add selected action + + + + + + + Qt::Horizontal + + + + + + + Delete selected action + + + + + + + Delete all actions + + + @@ -113,18 +150,6 @@ QAbstractItemView::NoEditTriggers - - true - - - true - - - QAbstractItemView::DragDrop - - - Qt::MoveAction - QAbstractItemView::SelectRows