aboutsummaryrefslogtreecommitdiff
path: root/src/qmmpui/metadataformatter.cpp
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2015-06-25 18:53:41 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2015-06-25 18:53:41 +0000
commit33317ad580fd2f5981f53e866b8d1795132f32bb (patch)
tree52f862c45fbd58b79912a555dbfaca73b22c2ee2 /src/qmmpui/metadataformatter.cpp
parentaf4b2444f18a4902d380313f9fc10b91e060692c (diff)
downloadqmmp-33317ad580fd2f5981f53e866b8d1795132f32bb.tar.gz
qmmp-33317ad580fd2f5981f53e866b8d1795132f32bb.tar.bz2
qmmp-33317ad580fd2f5981f53e866b8d1795132f32bb.zip
formatter: added track number field
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@5184 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/qmmpui/metadataformatter.cpp')
-rw-r--r--src/qmmpui/metadataformatter.cpp38
1 files changed, 22 insertions, 16 deletions
diff --git a/src/qmmpui/metadataformatter.cpp b/src/qmmpui/metadataformatter.cpp
index aa24eb387..16e4336bc 100644
--- a/src/qmmpui/metadataformatter.cpp
+++ b/src/qmmpui/metadataformatter.cpp
@@ -27,6 +27,7 @@ Syntax:
%t - title,
%n - track number,
%NN - 2-digit track number,
+%I - track index,
%g - genre,
%c - comment,
%C - composer,
@@ -58,6 +59,7 @@ MetaDataFormatter::MetaDataFormatter(const QString &pattern)
m_fieldNames.insert("NN", Param::TWO_DIGIT_TRACK);
m_fieldNames.insert("l", Param::DURATION);
m_fieldNames.insert("f", Param::FILE_NAME);
+ m_fieldNames.insert("I", Param::TRACK_INDEX);
if(!pattern.isEmpty())
setPattern(pattern);
@@ -88,12 +90,12 @@ const QString MetaDataFormatter::pattern() const
QString MetaDataFormatter::format(const PlayListTrack *item) const
{
- return format(*item, item->length());
+ return format(*item, item->length(), item->trackNumber());
}
-QString MetaDataFormatter::format(const QMap<Qmmp::MetaData, QString> &metaData, qint64 length) const
+QString MetaDataFormatter::format(const QMap<Qmmp::MetaData, QString> &metaData, qint64 length, int track) const
{
- return evalute(&m_nodes, &metaData, length).trimmed();
+ return evalute(&m_nodes, &metaData, length, track).trimmed();
}
QString MetaDataFormatter::formatLength(qint64 length)
@@ -298,7 +300,7 @@ void MetaDataFormatter::parseEscape(QList<MetaDataFormatter::Node> *nodes, QStri
nodes->append(node);
}
-QString MetaDataFormatter::evalute(const QList<Node> *nodes, const QMap<Qmmp::MetaData, QString> *metaData, qint64 length) const
+QString MetaDataFormatter::evalute(const QList<Node> *nodes, const QMap<Qmmp::MetaData, QString> *metaData, qint64 length, int track) const
{
QString out;
for(int i = 0; i < nodes->count(); ++i)
@@ -307,32 +309,32 @@ QString MetaDataFormatter::evalute(const QList<Node> *nodes, const QMap<Qmmp::Me
if(node.command == Node::PRINT_TEXT)
{
Param p = node.params.first();
- out.append(printParam(&p, metaData, length));
+ out.append(printParam(&p, metaData, length, track));
}
else if(node.command == Node::IF_KEYWORD)
{
- QString var1 = printParam(&node.params[0], metaData, length);
+ QString var1 = printParam(&node.params[0], metaData, length, track);
if(var1.isEmpty() || var1 == "0")
- out.append(printParam(&node.params[2], metaData, length));
+ out.append(printParam(&node.params[2], metaData, length, track));
else
- out.append(printParam(&node.params[1], metaData, length));
+ out.append(printParam(&node.params[1], metaData, length, track));
}
else if(node.command == Node::AND_OPERATOR)
{
- QString var1 = printParam(&node.params[0], metaData, length);
- QString var2 = printParam(&node.params[1], metaData, length);
+ QString var1 = printParam(&node.params[0], metaData, length, track);
+ QString var2 = printParam(&node.params[1], metaData, length, track);
if(!var1.isEmpty() && !var2.isEmpty())
out.append("1");
}
else if(node.command == Node::OR_OPERATOR)
{
- QString var1 = printParam(&node.params[0], metaData, length);
+ QString var1 = printParam(&node.params[0], metaData, length, track);
if(!var1.isEmpty())
out.append("1");
else
{
- QString var2 = printParam(&node.params[1], metaData, length);
+ QString var2 = printParam(&node.params[1], metaData, length, track);
if(!var2.isEmpty())
out.append("1");
}
@@ -341,18 +343,18 @@ QString MetaDataFormatter::evalute(const QList<Node> *nodes, const QMap<Qmmp::Me
return out;
}
-QString MetaDataFormatter::printParam(MetaDataFormatter::Param *p, const QMap<Qmmp::MetaData, QString> *metaData, qint64 length) const
+QString MetaDataFormatter::printParam(MetaDataFormatter::Param *p, const QMap<Qmmp::MetaData, QString> *metaData, qint64 length, int track) const
{
switch (p->type)
{
case Param::FIELD:
- return printField(p->field, metaData, length);
+ return printField(p->field, metaData, length, track);
break;
case Param::TEXT:
return p->text;
break;
case Param::NODES:
- return evalute(&p->children, metaData, length);
+ return evalute(&p->children, metaData, length, track);
break;
default:
break;
@@ -360,7 +362,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) const
+QString MetaDataFormatter::printField(int field, const QMap<Qmmp::MetaData, QString> *metaData, qint64 length, int track) const
{
if(field >= Qmmp::TITLE && field <= Qmmp::URL)
{
@@ -392,6 +394,10 @@ QString MetaDataFormatter::printField(int field, const QMap<Qmmp::MetaData, QStr
{
return metaData->value(Qmmp::URL).section('/',-1);
}
+ else if(field == Param::TRACK_INDEX)
+ {
+ return QString::number(track + 1);
+ }
return QString();
}