aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Ui/qsui/toolbareditor.cpp
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2015-08-11 09:08:12 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2015-08-11 09:08:12 +0000
commit017d2d27bfbcd97ada407212e925b280ff3482b5 (patch)
tree2a832873a52ee7c8546b6262be58f41d1bdd480e /src/plugins/Ui/qsui/toolbareditor.cpp
parent22cf3c55368be9361b43eb002e7a2fb7f2868ac2 (diff)
downloadqmmp-017d2d27bfbcd97ada407212e925b280ff3482b5.tar.gz
qmmp-017d2d27bfbcd97ada407212e925b280ff3482b5.tar.bz2
qmmp-017d2d27bfbcd97ada407212e925b280ff3482b5.zip
added qsui plugin
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@5367 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Ui/qsui/toolbareditor.cpp')
-rw-r--r--src/plugins/Ui/qsui/toolbareditor.cpp185
1 files changed, 185 insertions, 0 deletions
diff --git a/src/plugins/Ui/qsui/toolbareditor.cpp b/src/plugins/Ui/qsui/toolbareditor.cpp
new file mode 100644
index 000000000..7abfc6710
--- /dev/null
+++ b/src/plugins/Ui/qsui/toolbareditor.cpp
@@ -0,0 +1,185 @@
+/***************************************************************************
+ * Copyright (C) 2013 by Ilya Kotov *
+ * forkotov02@hotmail.ru *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
+ ***************************************************************************/
+
+#include <QApplication>
+#include <QSettings>
+#include <qmmp/qmmp.h>
+#include "toolbareditor.h"
+#include "ui_toolbareditor.h"
+
+ToolBarEditor::ToolBarEditor(QWidget *parent) :
+ QDialog(parent),
+ m_ui(new Ui::ToolBarEditor)
+{
+ m_ui->setupUi(this);
+ m_ui->upToolButton->setIcon(qApp->style()->standardIcon(QStyle::SP_ArrowUp));
+ 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)));
+ populateActionList();
+}
+
+ToolBarEditor::~ToolBarEditor()
+{
+ delete m_ui;
+}
+
+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);
+ QDialog::accept();
+}
+
+void ToolBarEditor::populateActionList(bool reset)
+{
+ QStringList names = ActionManager::instance()->toolBarActionNames();
+ if(!reset)
+ {
+ QSettings settings (Qmmp::configFile(), QSettings::IniFormat);
+ names = settings.value("Simple/toolbar_actions", names).toStringList();
+ }
+
+ for(int id = ActionManager::PLAY; id <= ActionManager::QUIT; ++id)
+ {
+ QAction *action = ACTION(id);
+ if(action->icon().isNull())
+ continue;
+ QListWidgetItem *item = new QListWidgetItem();
+ item->setIcon(action->icon());
+ item->setText(action->text().replace("&", ""));
+ item->setData(Qt::UserRole, action->objectName());
+ if(!names.contains(action->objectName()))
+ m_ui->actionsListWidget->addItem(item);
+ }
+
+ {
+ QListWidgetItem *item = new QListWidgetItem();
+ item->setText("-- " + tr("Separator") + " --");
+ item->setData(Qt::UserRole, "separator");
+ m_ui->actionsListWidget->addItem(item);
+ }
+
+ 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 == "separator")
+ {
+ QListWidgetItem *item = new QListWidgetItem();
+ item->setText("-- " + tr("Separator") + " --");
+ item->setData(Qt::UserRole, "separator");
+ m_ui->activeActionsListWidget->addItem(item);
+ }
+ }
+}
+
+void ToolBarEditor::on_addToolButton_clicked()
+{
+ int row = m_ui->actionsListWidget->currentRow();
+ if(row > -1)
+ {
+ QListWidgetItem *item = m_ui->actionsListWidget->takeItem(row);
+ m_ui->activeActionsListWidget->addItem(item);
+ }
+}
+
+void ToolBarEditor::on_removeToolButton_clicked()
+{
+ int row = m_ui->activeActionsListWidget->currentRow();
+ if(row > -1)
+ {
+ QListWidgetItem *item = m_ui->activeActionsListWidget->takeItem(row);
+ m_ui->actionsListWidget->addItem(item);
+ }
+}
+
+void ToolBarEditor::on_upToolButton_clicked()
+{
+ 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);
+ }
+}
+
+void ToolBarEditor::on_downToolButton_clicked()
+{
+ 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);
+ }
+}
+
+void ToolBarEditor::on_resetPushButton_clicked()
+{
+ m_ui->actionsListWidget->clear();
+ m_ui->activeActionsListWidget->clear();
+ populateActionList(true);
+}
+
+void ToolBarEditor::onRowsAboutToBeRemoved(const QModelIndex &, int start, int)
+{
+ if(sender() == m_ui->actionsListWidget->model())
+ {
+ //recreate separator
+ QListWidgetItem *item = m_ui->actionsListWidget->item(start);
+ if(item && item->data(Qt::UserRole).toString() == "separator")
+ m_ui->actionsListWidget->addItem(item->clone());
+ }
+ else if(sender() == m_ui->activeActionsListWidget->model())
+ {
+ //remove separator
+ QListWidgetItem *item = m_ui->activeActionsListWidget->item(start);
+ if(item && item->data(Qt::UserRole).toString() == "separator")
+ {
+ for(int i = 0; i < m_ui->actionsListWidget->count(); ++i)
+ {
+ if(m_ui->actionsListWidget->item(i)->data(Qt::UserRole).toString() == "separator")
+ {
+ m_ui->actionsListWidget->model()->blockSignals(true);
+ delete m_ui->actionsListWidget->takeItem(i);
+ m_ui->actionsListWidget->model()->blockSignals(false);
+ break;
+ }
+ }
+ }
+ }
+}