aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/plugins/Ui/qsui/actionmanager.cpp15
-rw-r--r--src/plugins/Ui/qsui/actionmanager.h1
-rw-r--r--src/plugins/Ui/qsui/mainwindow.cpp73
-rw-r--r--src/plugins/Ui/qsui/toolbareditor.cpp94
-rw-r--r--src/plugins/Ui/qsui/toolbareditor.h2
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