aboutsummaryrefslogtreecommitdiff
path: root/src/qmmpui/metadataformatter.cpp
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2018-04-30 09:48:54 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2018-04-30 09:48:54 +0000
commitad55f26545292e0dc2ffc66a43f8bd3b74eb32bc (patch)
tree6ea1049499c18cc36a01f059450ca6ff5ce38f75 /src/qmmpui/metadataformatter.cpp
parent099c570384563311d03a97fa975319aeafe62adc (diff)
downloadqmmp-ad55f26545292e0dc2ffc66a43f8bd3b74eb32bc.tar.gz
qmmp-ad55f26545292e0dc2ffc66a43f8bd3b74eb32bc.tar.bz2
qmmp-ad55f26545292e0dc2ffc66a43f8bd3b74eb32bc.zip
fixed duration formatting
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@7938 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/qmmpui/metadataformatter.cpp')
-rw-r--r--src/qmmpui/metadataformatter.cpp29
1 files changed, 19 insertions, 10 deletions
diff --git a/src/qmmpui/metadataformatter.cpp b/src/qmmpui/metadataformatter.cpp
index cd030dfc1..de5159e80 100644
--- a/src/qmmpui/metadataformatter.cpp
+++ b/src/qmmpui/metadataformatter.cpp
@@ -111,17 +111,26 @@ QString MetaDataFormatter::format(const TrackInfo *info, int track) const
return format(info->metaData(), info->duration(), track);
}
-QString MetaDataFormatter::formatLength(qint64 length, bool hideZero)
+QString MetaDataFormatter::formatDuration(qint64 duration, bool hideZero, bool showMs)
{
- if(length <= 0)
- return hideZero ? QString() : "0:00";
- QString str;
- if(length >= 3600)
- str = QString("%1:%2").arg(length/3600).arg(length%3600/60, 2, 10, QChar('0'));
+ if(duration <= 0)
+ {
+ if(hideZero)
+ return QString();
+ else
+ return showMs ? QLatin1String("0:00.000") : QLatin1String("0:00");
+ }
+
+ QString out;
+ qint64 durationInSeconds = duration / 1000;
+ if(durationInSeconds >= 3600)
+ out = QString("%1:%2").arg(durationInSeconds / 3600).arg(duration % 3600 / 60, 2, 10, QChar('0'));
else
- str = QString("%1").arg(length%3600/60);
- str += QString(":%1").arg(length%60, 2, 10, QChar('0'));
- return str;
+ out = QString("%1").arg(durationInSeconds % 3600 / 60);
+ out += QString(":%1").arg(durationInSeconds % 60, 2, 10, QChar('0'));
+ if(showMs)
+ out += QString(".%1").arg(duration % 1000, 3, 10, QChar('0'));
+ return out;
}
bool MetaDataFormatter::parseField(QList<Node> *nodes, QString::const_iterator *i, QString::const_iterator end)
@@ -481,7 +490,7 @@ QString MetaDataFormatter::printField(int field, const QMap<Qmmp::MetaData, QStr
}
else if(field == Param::DURATION)
{
- return formatLength(length);
+ return formatDuration(length);
}
else if(field == Param::FILE_NAME)
{