aboutsummaryrefslogtreecommitdiff
path: root/src/qmmpui
diff options
context:
space:
mode:
Diffstat (limited to 'src/qmmpui')
-rw-r--r--src/qmmpui/metadataformatter.cpp12
-rw-r--r--src/qmmpui/metadataformatter.h12
-rw-r--r--src/qmmpui/playlisttrack.cpp12
-rw-r--r--src/qmmpui/qmmpuisettings.cpp15
-rw-r--r--src/qmmpui/qmmpuisettings.h7
5 files changed, 39 insertions, 19 deletions
diff --git a/src/qmmpui/metadataformatter.cpp b/src/qmmpui/metadataformatter.cpp
index f1b70eeb0..dbee47323 100644
--- a/src/qmmpui/metadataformatter.cpp
+++ b/src/qmmpui/metadataformatter.cpp
@@ -83,12 +83,12 @@ const QString MetaDataFormatter::pattern() const
return m_pattern;
}
-QString MetaDataFormatter::format(const PlayListTrack *item)
+QString MetaDataFormatter::format(const PlayListTrack *item) const
{
return format(*item, item->length());
}
-QString MetaDataFormatter::format(const QMap<Qmmp::MetaData, QString> &metaData, qint64 length)
+QString MetaDataFormatter::format(const QMap<Qmmp::MetaData, QString> &metaData, qint64 length) const
{
return evalute(&m_nodes, &metaData, length).trimmed();
}
@@ -265,7 +265,7 @@ void MetaDataFormatter::parseText(QList<MetaDataFormatter::Node> *nodes, QString
nodes->append(node);
}
-QString MetaDataFormatter::evalute(QList<Node> *nodes, const QMap<Qmmp::MetaData, QString> *metaData, qint64 length)
+QString MetaDataFormatter::evalute(const QList<Node> *nodes, const QMap<Qmmp::MetaData, QString> *metaData, qint64 length) const
{
QString out;
for(int i = 0; i < nodes->count(); ++i)
@@ -289,7 +289,7 @@ QString MetaDataFormatter::evalute(QList<Node> *nodes, const QMap<Qmmp::MetaData
return out;
}
-QString MetaDataFormatter::printParam(MetaDataFormatter::Param *p, const QMap<Qmmp::MetaData, QString> *metaData, qint64 length)
+QString MetaDataFormatter::printParam(MetaDataFormatter::Param *p, const QMap<Qmmp::MetaData, QString> *metaData, qint64 length) const
{
switch (p->type)
{
@@ -308,7 +308,7 @@ QString MetaDataFormatter::printParam(MetaDataFormatter::Param *p, const QMap<Qm
return QString();
}
-QString MetaDataFormatter::printField(int field, const QMap<Qmmp::MetaData, QString> *metaData, qint64 length)
+QString MetaDataFormatter::printField(int field, const QMap<Qmmp::MetaData, QString> *metaData, qint64 length) const
{
if(field >= Qmmp::TITLE && field <= Qmmp::URL)
{
@@ -339,7 +339,7 @@ QString MetaDataFormatter::printField(int field, const QMap<Qmmp::MetaData, QStr
return QString();
}
-QString MetaDataFormatter::dumpNode(MetaDataFormatter::Node node)
+QString MetaDataFormatter::dumpNode(MetaDataFormatter::Node node) const
{
QString str;
QStringList params;
diff --git a/src/qmmpui/metadataformatter.h b/src/qmmpui/metadataformatter.h
index 39541a379..b44a25b2f 100644
--- a/src/qmmpui/metadataformatter.h
+++ b/src/qmmpui/metadataformatter.h
@@ -62,13 +62,13 @@ public:
/*!
* Converts metadata of item \b item to one string using template.
*/
- QString format(const PlayListTrack *item);
+ QString format(const PlayListTrack *item) const;
/*!
* Converts metadata to one string using template.
* @param metaData Metadata array.
* @param length Length in seconds.
*/
- QString format(const QMap<Qmmp::MetaData, QString> &metaData, qint64 length = 0);
+ QString format(const QMap<Qmmp::MetaData, QString> &metaData, qint64 length = 0) const;
/*!
* Returns formatted length (example: 05:02:03).
* \param length Length in seconds.
@@ -114,11 +114,11 @@ private:
bool parseIf(QList<Node> *nodes, QString::const_iterator *i, QString::const_iterator end);
void parseText(QList<Node> *nodes, QString::const_iterator *i, QString::const_iterator end);
- QString evalute(QList<Node> *nodes, const QMap<Qmmp::MetaData, QString> *metaData, qint64 length);
- QString printParam(Param *p, const QMap<Qmmp::MetaData, QString> *metaData, qint64 length);
- QString printField(int field, const QMap<Qmmp::MetaData, QString> *metaData, qint64 length);
+ QString evalute(const QList<Node> *nodes, const QMap<Qmmp::MetaData, QString> *metaData, qint64 length) const;
+ QString printParam(Param *p, const QMap<Qmmp::MetaData, QString> *metaData, qint64 length) const;
+ QString printField(int field, const QMap<Qmmp::MetaData, QString> *metaData, qint64 length) const;
- QString dumpNode(Node node);
+ QString dumpNode(Node node) const;
QList<MetaDataFormatter::Node> compile(const QString &expr);
QString m_pattern;
diff --git a/src/qmmpui/playlisttrack.cpp b/src/qmmpui/playlisttrack.cpp
index 756dfcaab..b9262c72b 100644
--- a/src/qmmpui/playlisttrack.cpp
+++ b/src/qmmpui/playlisttrack.cpp
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2008-2014 by Ilya Kotov *
+ * Copyright (C) 2008-2015 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -17,9 +17,9 @@
* Free Software Foundation, Inc., *
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
***************************************************************************/
-#include <qmmp/metadatamanager.h>
+
#include <QApplication>
-#include "metadataformatter.h"
+#include <qmmp/metadatamanager.h>
#include "qmmpuisettings.h"
#include "playlisttrack.h"
@@ -166,8 +166,7 @@ const QString PlayListTrack::url() const
void PlayListTrack::formatTitle()
{
- MetaDataFormatter f(m_settings->titleFormat());
- m_formattedTitle = f.format(this);
+ m_formattedTitle = m_settings->titleFormatter()->format(this);
if (m_formattedTitle.isEmpty())
m_formattedTitle = value(Qmmp::URL).section('/',-1);
if (m_formattedTitle.isEmpty())
@@ -185,8 +184,7 @@ void PlayListTrack::formatGroup()
m_group = qApp->translate("PlayListTrack", "Streams");
return;
}
- MetaDataFormatter f(m_settings->groupFormat());
- m_group = f.format(this);
+ m_group = m_settings->groupFormatter()->format(this);
if (m_group.isEmpty())
m_group = qApp->translate("PlayListTrack", "Empty group");
if (m_settings->convertUnderscore())
diff --git a/src/qmmpui/qmmpuisettings.cpp b/src/qmmpui/qmmpuisettings.cpp
index 30b30cec7..c7355ecb3 100644
--- a/src/qmmpui/qmmpuisettings.cpp
+++ b/src/qmmpui/qmmpuisettings.cpp
@@ -59,6 +59,9 @@ QmmpUiSettings::QmmpUiSettings(QObject *parent) : QObject(parent)
m_timer->setInterval(5000);
m_timer->setSingleShot(true);
connect(m_timer, SIGNAL(timeout()), SLOT(sync()));
+
+ m_group_formatter.setPattern(m_group_format);
+ m_title_formatter.setPattern(m_title_format);
}
QmmpUiSettings::~QmmpUiSettings()
@@ -132,6 +135,7 @@ void QmmpUiSettings::setTitleFormat(const QString &titleFormat)
if(titleFormat != m_title_format)
{
m_title_format = titleFormat;
+ m_title_formatter.setPattern(titleFormat);
foreach(PlayListModel *model, PlayListManager::instance()->playLists())
{
model->updateMetaData();
@@ -144,6 +148,7 @@ void QmmpUiSettings::setGroupFormat(const QString &groupFormat)
if(groupFormat != m_group_format)
{
m_group_format = groupFormat;
+ m_group_formatter.setPattern(groupFormat);
foreach(PlayListModel *model, PlayListManager::instance()->playLists())
{
model->rebuildGroups();
@@ -312,3 +317,13 @@ bool QmmpUiSettings::clearPreviousPlayList() const
{
return m_clear_prev_playlist;
}
+
+const MetaDataFormatter *QmmpUiSettings::titleFormatter() const
+{
+ return &m_title_formatter;
+}
+
+const MetaDataFormatter *QmmpUiSettings::groupFormatter() const
+{
+ return &m_group_formatter;
+}
diff --git a/src/qmmpui/qmmpuisettings.h b/src/qmmpui/qmmpuisettings.h
index f9d6fd99b..0380135ca 100644
--- a/src/qmmpui/qmmpuisettings.h
+++ b/src/qmmpui/qmmpuisettings.h
@@ -23,6 +23,7 @@
#include <QObject>
#include <QStringList>
+#include "metadataformatter.h"
class QTimer;
@@ -180,6 +181,10 @@ public:
* otherwise.
*/
bool clearPreviousPlayList() const;
+
+ const MetaDataFormatter* titleFormatter() const;
+ const MetaDataFormatter* groupFormatter() const;
+
/*!
* Returns a pointer to the QmmpUiSettings instance.
*/
@@ -272,6 +277,8 @@ private:
bool m_use_clipboard;
//timer
QTimer *m_timer;
+ //formatters
+ MetaDataFormatter m_group_formatter, m_title_formatter;
};
#endif // QMMPUISETTINGS_H