aboutsummaryrefslogtreecommitdiff
path: root/src/qmmpui
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2015-03-09 15:46:36 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2015-03-09 15:46:36 +0000
commit9d0657e0fbaaa938818d48f444ab748ceed7693b (patch)
tree120d3ea5ff977ab38d2e3e7ebae1643512ff288b /src/qmmpui
parent2deb29c63fd28d651ce637dd596cf7009f6a5b8b (diff)
downloadqmmp-9d0657e0fbaaa938818d48f444ab748ceed7693b.tar.gz
qmmp-9d0657e0fbaaa938818d48f444ab748ceed7693b.tar.bz2
qmmp-9d0657e0fbaaa938818d48f444ab748ceed7693b.zip
added column editor
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@4780 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/qmmpui')
-rw-r--r--src/qmmpui/columneditor.cpp112
-rw-r--r--src/qmmpui/columneditor_p.h53
-rw-r--r--src/qmmpui/columnmanager.cpp16
-rw-r--r--src/qmmpui/forms/columneditor.ui117
-rw-r--r--src/qmmpui/metadataformatter.cpp3
-rw-r--r--src/qmmpui/qmmpui.pro9
6 files changed, 307 insertions, 3 deletions
diff --git a/src/qmmpui/columneditor.cpp b/src/qmmpui/columneditor.cpp
new file mode 100644
index 000000000..6717b3a4c
--- /dev/null
+++ b/src/qmmpui/columneditor.cpp
@@ -0,0 +1,112 @@
+/***************************************************************************
+ * Copyright (C) 2015 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 <QMenu>
+#include "columneditor_p.h"
+#include "ui_columneditor.h"
+
+ColumnEditor::ColumnEditor(const QString &name, const QString &patt, QWidget *parent) :
+ QDialog(parent),
+ m_ui(new Ui::ColumnEditor)
+{
+ m_ui->setupUi(this);
+ createMenu();
+ fillTypes();
+
+ //load inital values
+ m_ui->nameLineEdit->setText(name);
+ m_ui->formatLineEdit->setText(patt);
+ int index = m_ui->comboBox->findData(patt);
+ if(index < 0)
+ index = m_ui->comboBox->findData("custom");
+ m_ui->comboBox->setCurrentIndex(index);
+}
+
+ColumnEditor::~ColumnEditor()
+{
+ delete m_ui;
+}
+
+QString ColumnEditor::name() const
+{
+ return m_ui->nameLineEdit->text();
+}
+
+QString ColumnEditor::pattern() const
+{
+ return m_ui->formatLineEdit->text();
+}
+
+void ColumnEditor::insertExpression(QAction *a)
+{
+ if (m_ui->formatLineEdit->cursorPosition () < 1)
+ m_ui->formatLineEdit->insert(a->data().toString());
+ else
+ m_ui->formatLineEdit->insert(" - "+a->data().toString());
+}
+
+void ColumnEditor::on_comboBox_activated(int index)
+{
+ m_ui->formatLineEdit->setText(m_ui->comboBox->itemData(index).toString());
+ m_ui->nameLineEdit->setText(m_ui->comboBox->itemText(index));
+}
+
+void ColumnEditor::createMenu()
+{
+ QMenu *menu = new QMenu(this);
+ menu->addAction(tr("Artist"))->setData("%p");
+ menu->addAction(tr("Album"))->setData("%a");
+ menu->addAction(tr("Album artist"))->setData("%aa");
+ menu->addAction(tr("Title"))->setData("%t");
+ menu->addAction(tr("Track number"))->setData("%n");
+ menu->addAction(tr("Two-digit track number"))->setData("%NN");
+ menu->addAction(tr("Genre"))->setData("%g");
+ menu->addAction(tr("Comment"))->setData("%c");
+ menu->addAction(tr("Composer"))->setData("%C");
+ menu->addAction(tr("Duration"))->setData("%l");
+ menu->addAction(tr("Disc number"))->setData("%D");
+ menu->addAction(tr("File name"))->setData("%f");
+ menu->addAction(tr("File path"))->setData("%F");
+ menu->addAction(tr("Year"))->setData("%y");
+ menu->addAction(tr("Condition"))->setData("%if(%p&%t,%p - %t,%f)");
+ m_ui->formatButton->setMenu(menu);
+ connect(menu, SIGNAL(triggered (QAction *)), SLOT(insertExpression(QAction *)));
+}
+
+void ColumnEditor::fillTypes()
+{
+ m_ui->comboBox->addItem(tr("Artist"),"%p");
+ m_ui->comboBox->addItem(tr("Album"),"%a");
+ m_ui->comboBox->addItem(tr("Artist - Album"),"%if(%p&%a,%p - %a,)");
+ m_ui->comboBox->addItem(tr("Artist - Title"),"%if(%p&%t,%p - %t,%f)");
+ m_ui->comboBox->addItem(tr("Album artist"),"%aa");
+ m_ui->comboBox->addItem(tr("Title"),"%t");
+ m_ui->comboBox->addItem(tr("Track number"),"%n");
+ m_ui->comboBox->addItem(tr("Two-digit track number"),"%NN");
+ m_ui->comboBox->addItem(tr("Genre"),"%g");
+ m_ui->comboBox->addItem(tr("Comment"),"%c");
+ m_ui->comboBox->addItem(tr("Composer"),"%C");
+ m_ui->comboBox->addItem(tr("Duration"),"%l");
+ m_ui->comboBox->addItem(tr("Disc number"),"%D");
+ m_ui->comboBox->addItem(tr("File name"),"%f");
+ m_ui->comboBox->addItem(tr("File path"),"%F");
+ m_ui->comboBox->addItem(tr("Year"),"%y");
+ m_ui->comboBox->addItem(tr("Custom"),"custom");
+}
diff --git a/src/qmmpui/columneditor_p.h b/src/qmmpui/columneditor_p.h
new file mode 100644
index 000000000..4d5dc18e6
--- /dev/null
+++ b/src/qmmpui/columneditor_p.h
@@ -0,0 +1,53 @@
+/***************************************************************************
+ * Copyright (C) 2015 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. *
+ ***************************************************************************/
+
+#ifndef COLUMNEDITOR_P_H
+#define COLUMNEDITOR_P_H
+
+#include <QDialog>
+
+namespace Ui {
+class ColumnEditor;
+}
+
+/*! @internal
+ @author Ilya Kotov <forkotov02@hotmail.ru>
+ */
+class ColumnEditor : public QDialog
+{
+ Q_OBJECT
+public:
+ explicit ColumnEditor(const QString &name, const QString &patt, QWidget *parent = 0);
+ ~ColumnEditor();
+
+ QString name() const;
+ QString pattern() const;
+
+private slots:
+ void insertExpression(QAction *a);
+ void on_comboBox_activated(int index);
+
+private:
+ void createMenu();
+ void fillTypes();
+ Ui::ColumnEditor *m_ui;
+};
+
+#endif // COLUMNEDITOR_P_H
diff --git a/src/qmmpui/columnmanager.cpp b/src/qmmpui/columnmanager.cpp
index 25d28b7c8..8da0e5c0a 100644
--- a/src/qmmpui/columnmanager.cpp
+++ b/src/qmmpui/columnmanager.cpp
@@ -21,6 +21,7 @@
#include <QSettings>
#include <QApplication>
#include <qmmp/qmmp.h>
+#include "columneditor_p.h"
#include "columnmanager.h"
ColumnManager::ColumnManager(QObject *parent) :
@@ -121,8 +122,23 @@ void ColumnManager::move(int from, int to)
void ColumnManager::execEditor(int index, QWidget *parent)
{
+ if(index < 0 || index >= m_columns.size())
+ {
+ qWarning("ColumnManager: index is out of range");
+ return;
+ }
+
if(!parent)
parent = qApp->activeWindow();
+
+ ColumnEditor editor(m_columns[index].name, m_columns[index].pattern, parent);
+ if(editor.exec() == QDialog::Accepted)
+ {
+ m_columns[index].name = editor.name();
+ m_columns[index].pattern = editor.pattern();
+ m_columns[index].titleFormatter->setPattern(editor.pattern());
+ emit changed(index);
+ }
}
int ColumnManager::count()
diff --git a/src/qmmpui/forms/columneditor.ui b/src/qmmpui/forms/columneditor.ui
new file mode 100644
index 000000000..1346b2ec1
--- /dev/null
+++ b/src/qmmpui/forms/columneditor.ui
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>ColumnEditor</class>
+ <widget class="QDialog" name="ColumnEditor">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>440</width>
+ <height>152</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Edit Column</string>
+ </property>
+ <layout class="QFormLayout" name="formLayout">
+ <property name="leftMargin">
+ <number>6</number>
+ </property>
+ <property name="rightMargin">
+ <number>6</number>
+ </property>
+ <property name="bottomMargin">
+ <number>6</number>
+ </property>
+ <item row="1" column="0">
+ <widget class="QLabel" name="label">
+ <property name="text">
+ <string>Name:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QLineEdit" name="nameLineEdit"/>
+ </item>
+ <item row="3" column="0">
+ <widget class="QLabel" name="label_3">
+ <property name="text">
+ <string>Format:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="1">
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QLineEdit" name="formatLineEdit"/>
+ </item>
+ <item>
+ <widget class="QToolButton" name="formatButton">
+ <property name="text">
+ <string>...</string>
+ </property>
+ <property name="popupMode">
+ <enum>QToolButton::InstantPopup</enum>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item row="4" column="0" colspan="2">
+ <widget class="QDialogButtonBox" name="buttonBox">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="standardButtons">
+ <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="0">
+ <widget class="QLabel" name="label_2">
+ <property name="text">
+ <string>Type:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QComboBox" name="comboBox"/>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>accepted()</signal>
+ <receiver>ColumnEditor</receiver>
+ <slot>accept()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>248</x>
+ <y>254</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>157</x>
+ <y>274</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>rejected()</signal>
+ <receiver>ColumnEditor</receiver>
+ <slot>reject()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>316</x>
+ <y>260</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>286</x>
+ <y>274</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
diff --git a/src/qmmpui/metadataformatter.cpp b/src/qmmpui/metadataformatter.cpp
index 05f0d8380..e0fb450a4 100644
--- a/src/qmmpui/metadataformatter.cpp
+++ b/src/qmmpui/metadataformatter.cpp
@@ -65,6 +65,9 @@ MetaDataFormatter::MetaDataFormatter(const QString &pattern)
void MetaDataFormatter::setPattern(const QString &pattern)
{
+ if(pattern == m_pattern)
+ return;
+
m_pattern = pattern;
m_nodes.clear();
diff --git a/src/qmmpui/qmmpui.pro b/src/qmmpui/qmmpui.pro
index a4593030f..c806a576c 100644
--- a/src/qmmpui/qmmpui.pro
+++ b/src/qmmpui/qmmpui.pro
@@ -70,7 +70,8 @@ HEADERS += general.h \
normalcontainer_p.h \
playlisttask_p.h \
metadataformatter.h \
- columnmanager.h
+ columnmanager.h \
+ columneditor_p.h
SOURCES += general.cpp \
playlistparser.cpp \
@@ -105,7 +106,8 @@ SOURCES += general.cpp \
playlistcontainer.cpp \
playlisttask.cpp \
metadataformatter.cpp \
- columnmanager.cpp
+ columnmanager.cpp \
+ columneditor.cpp
FORMS += forms/detailsdialog.ui \
forms/tageditor.ui \
@@ -113,7 +115,8 @@ FORMS += forms/detailsdialog.ui \
forms/jumptotrackdialog.ui \
forms/configdialog.ui \
forms/aboutdialog.ui \
- forms/addurldialog.ui
+ forms/addurldialog.ui \
+ forms/columneditor.ui
unix:DESTDIR = .
RESOURCES += translations/libqmmpui_locales.qrc \