diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2016-03-30 13:20:05 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2016-03-30 13:20:05 +0000 |
| commit | bfc8e21f641767728e510626f8e762e5bcf297fc (patch) | |
| tree | 9b8479f64d551f17a73e42926919a74531b0bd33 | |
| parent | ced72baf1634217ddef752a7cf43fd68dd0b1812 (diff) | |
| download | qmmp-bfc8e21f641767728e510626f8e762e5bcf297fc.tar.gz qmmp-bfc8e21f641767728e510626f8e762e5bcf297fc.tar.bz2 qmmp-bfc8e21f641767728e510626f8e762e5bcf297fc.zip | |
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
| -rw-r--r-- | src/plugins/Ui/qsui/toolbareditor.cpp | 73 | ||||
| -rw-r--r-- | src/plugins/Ui/qsui/toolbareditor.h | 4 |
2 files changed, 73 insertions, 4 deletions
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 <QApplication> #include <QSettings> #include <QToolBar> +#include <QMenu> #include <QWidgetAction> +#include <QUuid> +#include <QInputDialog> #include <qmmp/qmmp.h> #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<ActionManager::ToolBarInfo> m_toolBarInfoList; + int m_previousIndex; }; #endif // TOOLBAREDITOR_H |
