diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2016-03-21 13:33:06 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2016-03-21 13:33:06 +0000 |
| commit | b152400f80150576756eb43c601efc10db369b7b (patch) | |
| tree | cc9cf4b58b8a3e03bd5cbeec7f2920f7e44033f2 /src | |
| parent | 8040e9cf13fa527c9262b5a4eaa233304485c1c9 (diff) | |
| download | qmmp-b152400f80150576756eb43c601efc10db369b7b.tar.gz qmmp-b152400f80150576756eb43c601efc10db369b7b.tar.bz2 qmmp-b152400f80150576756eb43c601efc10db369b7b.zip | |
qsui: fixed some bugs in the toolbar editor
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@6196 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src')
| -rw-r--r-- | src/plugins/Ui/qsui/actionmanager.cpp | 15 | ||||
| -rw-r--r-- | src/plugins/Ui/qsui/actionmanager.h | 1 | ||||
| -rw-r--r-- | src/plugins/Ui/qsui/mainwindow.cpp | 73 | ||||
| -rw-r--r-- | src/plugins/Ui/qsui/toolbareditor.cpp | 94 | ||||
| -rw-r--r-- | src/plugins/Ui/qsui/toolbareditor.h | 2 |
5 files changed, 102 insertions, 83 deletions
diff --git a/src/plugins/Ui/qsui/actionmanager.cpp b/src/plugins/Ui/qsui/actionmanager.cpp index 3f135865e..6311a5aea 100644 --- a/src/plugins/Ui/qsui/actionmanager.cpp +++ b/src/plugins/Ui/qsui/actionmanager.cpp @@ -236,6 +236,8 @@ QToolBar *ActionManager::createToolBar(ActionManager::ToolBarInfo info, QWidget { QToolBar *toolBar = new QToolBar(info.title, parent); updateToolBar(toolBar, info); + toolBar->setProperty("uid", info.uid); + toolBar->setIconSize(QSize(16,16)); return toolBar; } @@ -273,6 +275,7 @@ ActionManager::ToolBarInfo ActionManager::defaultToolBar() const ActionManager::ToolBarInfo info; info.title = tr("Toolbar"); info.actionNames = names; + info.uid = "{68363a0b-f2cd-462a-87ca-e3089db21561}"; return info; } @@ -287,6 +290,7 @@ QList<ActionManager::ToolBarInfo> ActionManager::readToolBarSettings() const settings.setArrayIndex(i); info.title = settings.value("title").toString(); info.actionNames = settings.value("actions").toStringList(); + info.uid = settings.value("uid").toString(); list.append(info); } settings.endArray(); @@ -297,5 +301,14 @@ QList<ActionManager::ToolBarInfo> ActionManager::readToolBarSettings() const void ActionManager::writeToolBarSettings(QList<ActionManager::ToolBarInfo> l) { - + QSettings settings(Qmmp::configFile(), QSettings::IniFormat); + settings.beginWriteArray("SimpleUiToolbars"); + for(int i = 0; i < l.size(); ++i) + { + settings.setArrayIndex(i); + settings.setValue("title", l[i].title); + settings.setValue("actions", l[i].actionNames); + settings.setValue("uid", l[i].uid); + } + settings.endArray(); } diff --git a/src/plugins/Ui/qsui/actionmanager.h b/src/plugins/Ui/qsui/actionmanager.h index eb57ad106..b14de3470 100644 --- a/src/plugins/Ui/qsui/actionmanager.h +++ b/src/plugins/Ui/qsui/actionmanager.h @@ -115,6 +115,7 @@ public: struct ToolBarInfo { QString title; + QString uid; QStringList actionNames; }; diff --git a/src/plugins/Ui/qsui/mainwindow.cpp b/src/plugins/Ui/qsui/mainwindow.cpp index e872524a1..d48d1c15c 100644 --- a/src/plugins/Ui/qsui/mainwindow.cpp +++ b/src/plugins/Ui/qsui/mainwindow.cpp @@ -700,6 +700,35 @@ void MainWindow::readSettings() QSettings settings(Qmmp::configFile(), QSettings::IniFormat); settings.beginGroup("Simple"); m_titleFormatter.setPattern(settings.value("window_title_format","%if(%p,%p - %t,%t)").toString()); + + //update toolbars + QList<ActionManager::ToolBarInfo> toolBarInfoList = ActionManager::instance()->readToolBarSettings(); + QList<QToolBar *> toolBars = findChildren<QToolBar*>(); + + foreach (ActionManager::ToolBarInfo info, toolBarInfoList) + { + bool found = false; + foreach (QToolBar *toolBar, toolBars) + { + if(toolBar->property("uid").toString() == info.uid) + { + found = true; + toolBars.removeAll(toolBar); + ActionManager::instance()->updateToolBar(toolBar, info); + break; + } + } + + if(!found) + { + addToolBar(ActionManager::instance()->createToolBar(info, this)); + } + } + + foreach (QToolBar *toolBar, toolBars) + toolBar->deleteLater(); + toolBars.clear(); + if(m_update) { for(int i = 0; i < m_ui.tabWidget->count(); ++i) @@ -722,12 +751,6 @@ void MainWindow::readSettings() } else { - foreach (ActionManager::ToolBarInfo info, ActionManager::instance()->readToolBarSettings()) - { - QToolBar *toolBar = ActionManager::instance()->createToolBar(info, this); - toolBar->setIconSize(QSize(16,16)); - addToolBar(toolBar); - } restoreGeometry(settings.value("mw_geometry").toByteArray()); QByteArray wstate = settings.value("mw_state").toByteArray(); if(wstate.isEmpty()) @@ -763,44 +786,6 @@ void MainWindow::readSettings() m_update = true; } - - - - - //load toolbar actions - //m_ui.buttonsToolBar->clear(); - - - - /*QStringList names = ActionManager::instance()->toolBarActionNames(); - names = settings.value("toolbar_actions", names).toStringList(); - foreach (QString name, names) - { - if(name == "position_slider") - { - m_ui.buttonsToolBar->addWidget(m_slider)->setVisible(true); - continue; - } - if(name == "volume_slider") - { - m_ui.buttonsToolBar->addWidget(m_volumeSlider)->setVisible(true); - continue; - } - if(name == "volume_icon") - { - m_ui.buttonsToolBar->addAction(m_volumeAction); - continue; - } - if(name == "separator") - { - m_ui.buttonsToolBar->addSeparator(); - continue; - } - QAction *action = ActionManager::instance()->findChild<QAction *>(name); - if(action) - m_ui.buttonsToolBar->addAction(action); - }*/ - m_hideOnClose = settings.value("hide_on_close", false).toBool(); m_ui.tabWidget->setTabsClosable(settings.value("pl_tabs_closable", false).toBool()); diff --git a/src/plugins/Ui/qsui/toolbareditor.cpp b/src/plugins/Ui/qsui/toolbareditor.cpp index 738fd9272..80da03b0c 100644 --- a/src/plugins/Ui/qsui/toolbareditor.cpp +++ b/src/plugins/Ui/qsui/toolbareditor.cpp @@ -35,10 +35,14 @@ ToolBarEditor::ToolBarEditor(QWidget *parent) : m_ui->downToolButton->setIcon(qApp->style()->standardIcon(QStyle::SP_ArrowDown)); m_ui->addToolButton->setIcon(qApp->style()->standardIcon(QStyle::SP_ArrowRight)); m_ui->removeToolButton->setIcon(qApp->style()->standardIcon(QStyle::SP_ArrowLeft)); + connect(m_ui->actionsListWidget->model(), SIGNAL(rowsAboutToBeRemoved(const QModelIndex &,int,int)), SLOT(onRowsAboutToBeRemoved(const QModelIndex &, int, int))); connect(m_ui->activeActionsListWidget->model(), SIGNAL(rowsAboutToBeRemoved(const QModelIndex &,int,int)), SLOT(onRowsAboutToBeRemoved(const QModelIndex &, int, int))); + + m_toolBarInfoList = ActionManager::instance()->readToolBarSettings(); + populateActionList(); } @@ -49,12 +53,7 @@ ToolBarEditor::~ToolBarEditor() void ToolBarEditor::accept() { - /*QStringList names; - for(int row = 0; row < m_ui->activeActionsListWidget->count(); ++row) - names.append(m_ui->activeActionsListWidget->item(row)->data(Qt::UserRole).toString()); - - QSettings settings (Qmmp::configFile(), QSettings::IniFormat); - settings.setValue("Simple/toolbar_actions", names);*/ + ActionManager::instance()->writeToolBarSettings(m_toolBarInfoList); QDialog::accept(); } @@ -65,7 +64,7 @@ void ToolBarEditor::populateActionList(bool reset) m_ui->activeActionsListWidget->clear(); QStringList actionNames; - foreach (ActionManager::ToolBarInfo info, ActionManager::instance()->readToolBarSettings()) + foreach (ActionManager::ToolBarInfo info, m_toolBarInfoList) { actionNames << info.actionNames; m_ui->toolbarNameComboBox->addItem(info.title); @@ -87,35 +86,7 @@ void ToolBarEditor::populateActionList(bool reset) } m_ui->actionsListWidget->addItem(createExtraItem("-- " + tr("Separator") + " --", "separator")); - - /*foreach (QString name, names) - { - QAction *action = ActionManager::instance()->findChild<QAction *>(name); - if(action) - { - QListWidgetItem *item = new QListWidgetItem(); - item->setIcon(action->icon()); - item->setText(action->text().replace("&", "")); - item->setData(Qt::UserRole, action->objectName()); - m_ui->activeActionsListWidget->addItem(item); - } - else if(name == "position_slider") - { - m_ui->activeActionsListWidget->addItem(createExtraItem(tr("Position Slider"), name)); - } - else if(name == "volume_slider") - { - m_ui->activeActionsListWidget->addItem(createExtraItem(tr("Volume Slider"), name)); - } - else if(name == "volume_icon") - { - m_ui->activeActionsListWidget->addItem(createExtraItem(tr("Volume Icon"), name)); - } - else if(name == "separator") - { - m_ui->activeActionsListWidget->addItem(createExtraItem("-- " + tr("Separator") + " --", name)); - } - }*/ + on_toolbarNameComboBox_activated(m_ui->toolbarNameComboBox->currentIndex()); } QListWidgetItem *ToolBarEditor::createExtraItem(const QString &name, const QString &shortName, const QIcon &icon) @@ -129,51 +100,98 @@ QListWidgetItem *ToolBarEditor::createExtraItem(const QString &name, const QStri void ToolBarEditor::on_addToolButton_clicked() { + int index = m_ui->toolbarNameComboBox->currentIndex(); + if(index < 0) + return; + int row = m_ui->actionsListWidget->currentRow(); if(row > -1) { QListWidgetItem *item = m_ui->actionsListWidget->takeItem(row); m_ui->activeActionsListWidget->addItem(item); + m_toolBarInfoList[index].actionNames.append(item->data(Qt::UserRole).toString()); } } void ToolBarEditor::on_removeToolButton_clicked() { + int index = m_ui->toolbarNameComboBox->currentIndex(); + if(index < 0) + return; + int row = m_ui->activeActionsListWidget->currentRow(); if(row > -1) { QListWidgetItem *item = m_ui->activeActionsListWidget->takeItem(row); m_ui->actionsListWidget->addItem(item); + m_toolBarInfoList[index].actionNames.removeAt(row); } } void ToolBarEditor::on_upToolButton_clicked() { + int index = m_ui->toolbarNameComboBox->currentIndex(); + if(index < 0) + return; + int row = m_ui->activeActionsListWidget->currentRow(); if(row > 0) { 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); } } void ToolBarEditor::on_downToolButton_clicked() { + int index = m_ui->toolbarNameComboBox->currentIndex(); + if(index < 0) + return; + int row = m_ui->activeActionsListWidget->currentRow(); if(row > -1 && row < m_ui->activeActionsListWidget->count()) { 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); } } void ToolBarEditor::on_resetPushButton_clicked() { - m_ui->actionsListWidget->clear(); + /*m_ui->actionsListWidget->clear(); m_ui->activeActionsListWidget->clear(); - populateActionList(true); + populateActionList(true);*/ +} + +void ToolBarEditor::on_toolbarNameComboBox_activated(int index) +{ + m_ui->activeActionsListWidget->clear(); + if(index < 0) + return; + ActionManager::ToolBarInfo info = m_toolBarInfoList.at(index); + + foreach (QString name, info.actionNames) + { + if(name == "separator") + { + m_ui->activeActionsListWidget->addItem(createExtraItem("-- " + tr("Separator") + " --", name)); + continue; + } + + QAction *action = ActionManager::instance()->findChild<QAction *>(name); + if(action) + { + QListWidgetItem *item = new QListWidgetItem(); + item->setIcon(action->icon()); + item->setText(action->text().replace("&", "")); + item->setData(Qt::UserRole, action->objectName()); + m_ui->activeActionsListWidget->addItem(item); + } + } } void ToolBarEditor::onRowsAboutToBeRemoved(const QModelIndex &, int start, int) diff --git a/src/plugins/Ui/qsui/toolbareditor.h b/src/plugins/Ui/qsui/toolbareditor.h index 70502b1c3..80e10b862 100644 --- a/src/plugins/Ui/qsui/toolbareditor.h +++ b/src/plugins/Ui/qsui/toolbareditor.h @@ -52,12 +52,14 @@ private slots: void on_upToolButton_clicked(); void on_downToolButton_clicked(); void on_resetPushButton_clicked(); + void on_toolbarNameComboBox_activated(int index); void onRowsAboutToBeRemoved(const QModelIndex &, int start, int); 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; }; #endif // TOOLBAREDITOR_H |
