From bfc8e21f641767728e510626f8e762e5bcf297fc Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Wed, 30 Mar 2016 13:20:05 +0000 Subject: qsui: added feature to create multiple panels git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@6202 90c681e8-e032-0410-971d-27865f9a5e38 --- src/plugins/Ui/qsui/toolbareditor.cpp | 73 +++++++++++++++++++++++++++++++++-- src/plugins/Ui/qsui/toolbareditor.h | 4 ++ 2 files changed, 73 insertions(+), 4 deletions(-) (limited to 'src/plugins/Ui/qsui') diff --git a/src/plugins/Ui/qsui/toolbareditor.cpp b/src/plugins/Ui/qsui/toolbareditor.cpp index 80da03b0c..58a2f61a7 100644 --- a/src/plugins/Ui/qsui/toolbareditor.cpp +++ b/src/plugins/Ui/qsui/toolbareditor.cpp @@ -21,7 +21,10 @@ #include #include #include +#include #include +#include +#include #include #include "toolbareditor.h" #include "ui_toolbareditor.h" @@ -43,7 +46,15 @@ ToolBarEditor::ToolBarEditor(QWidget *parent) : m_toolBarInfoList = ActionManager::instance()->readToolBarSettings(); + m_previousIndex = -1; populateActionList(); + + QMenu *menu = new QMenu(this); + menu->addAction(tr("Create"), this, SLOT(createToolBar())); + menu->addAction(tr("Rename"), this, SLOT(renameToolBar())); + menu->addSeparator(); + menu->addAction(tr("Remove"), this, SLOT(removeToolBar())); + m_ui->toolBarMenuButton->setMenu(menu); } ToolBarEditor::~ToolBarEditor() @@ -53,6 +64,7 @@ ToolBarEditor::~ToolBarEditor() void ToolBarEditor::accept() { + on_toolbarNameComboBox_activated(m_ui->toolbarNameComboBox->currentIndex()); ActionManager::instance()->writeToolBarSettings(m_toolBarInfoList); QDialog::accept(); } @@ -109,7 +121,6 @@ void ToolBarEditor::on_addToolButton_clicked() { QListWidgetItem *item = m_ui->actionsListWidget->takeItem(row); m_ui->activeActionsListWidget->addItem(item); - m_toolBarInfoList[index].actionNames.append(item->data(Qt::UserRole).toString()); } } @@ -124,7 +135,6 @@ void ToolBarEditor::on_removeToolButton_clicked() { QListWidgetItem *item = m_ui->activeActionsListWidget->takeItem(row); m_ui->actionsListWidget->addItem(item); - m_toolBarInfoList[index].actionNames.removeAt(row); } } @@ -140,7 +150,6 @@ void ToolBarEditor::on_upToolButton_clicked() QListWidgetItem *item = m_ui->activeActionsListWidget->takeItem(row); m_ui->activeActionsListWidget->insertItem(row - 1, item); m_ui->activeActionsListWidget->setCurrentItem(item); - m_toolBarInfoList[index].actionNames.move(row, row - 1); } } @@ -156,7 +165,6 @@ void ToolBarEditor::on_downToolButton_clicked() QListWidgetItem *item = m_ui->activeActionsListWidget->takeItem(row); m_ui->activeActionsListWidget->insertItem(row + 1, item); m_ui->activeActionsListWidget->setCurrentItem(item); - m_toolBarInfoList[index].actionNames.move(row, row + 1); } } @@ -169,7 +177,18 @@ void ToolBarEditor::on_resetPushButton_clicked() void ToolBarEditor::on_toolbarNameComboBox_activated(int index) { + if(m_previousIndex >= 0 && m_previousIndex < m_toolBarInfoList.count()) + { + m_toolBarInfoList[m_previousIndex].actionNames.clear(); + for(int i = 0; i < m_ui->activeActionsListWidget->count(); ++i) + { + QListWidgetItem *item = m_ui->activeActionsListWidget->item(i); + m_toolBarInfoList[m_previousIndex].actionNames << item->data(Qt::UserRole).toString(); + } + } m_ui->activeActionsListWidget->clear(); + m_previousIndex = index; + if(index < 0) return; ActionManager::ToolBarInfo info = m_toolBarInfoList.at(index); @@ -222,3 +241,49 @@ void ToolBarEditor::onRowsAboutToBeRemoved(const QModelIndex &, int start, int) } } } + +void ToolBarEditor::createToolBar() +{ + ActionManager::ToolBarInfo info; + int i = 0; + //generate unique toolbar name + QString title = tr("Toolbar"); + while (m_ui->toolbarNameComboBox->findText(title) >= 0) + title = tr("Toolbar %1").arg(++i); + + info.title = title; + info.uid = QUuid::createUuid().toString(); + m_toolBarInfoList.append(info); + m_ui->toolbarNameComboBox->addItem(info.title); +} + +void ToolBarEditor::renameToolBar() +{ + int index = m_ui->toolbarNameComboBox->currentIndex(); + if(index >= 0) + { + QString title = m_toolBarInfoList[index].title; + title = QInputDialog::getText(this, tr("Rename Toolbar"), tr("Toolbar name:"), + QLineEdit::Normal, title); + if(!title.isEmpty()) + { + m_toolBarInfoList[index].title = title; + m_ui->toolbarNameComboBox->setItemText(index, title); + } + } +} + +void ToolBarEditor::removeToolBar() +{ + if(m_ui->toolbarNameComboBox->count() == 1) + return; + + int index = m_ui->toolbarNameComboBox->currentIndex(); + if(index >= 0) + { + m_ui->toolbarNameComboBox->removeItem(index); + m_toolBarInfoList.removeAt(index); + } + + populateActionList(); +} diff --git a/src/plugins/Ui/qsui/toolbareditor.h b/src/plugins/Ui/qsui/toolbareditor.h index 80e10b862..03f7453ff 100644 --- a/src/plugins/Ui/qsui/toolbareditor.h +++ b/src/plugins/Ui/qsui/toolbareditor.h @@ -54,12 +54,16 @@ private slots: void on_resetPushButton_clicked(); void on_toolbarNameComboBox_activated(int index); void onRowsAboutToBeRemoved(const QModelIndex &, int start, int); + void createToolBar(); + void renameToolBar(); + void removeToolBar(); private: void populateActionList(bool reset = false); QListWidgetItem *createExtraItem(const QString &name, const QString &shortName, const QIcon &icon = QIcon()); Ui::ToolBarEditor *m_ui; QList m_toolBarInfoList; + int m_previousIndex; }; #endif // TOOLBAREDITOR_H -- cgit v1.2.3-13-gbd6f