diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2018-04-30 09:48:54 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2018-04-30 09:48:54 +0000 |
| commit | ad55f26545292e0dc2ffc66a43f8bd3b74eb32bc (patch) | |
| tree | 6ea1049499c18cc36a01f059450ca6ff5ce38f75 /src/qmmpui | |
| parent | 099c570384563311d03a97fa975319aeafe62adc (diff) | |
| download | qmmp-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')
| -rw-r--r-- | src/qmmpui/metadataformatter.cpp | 29 | ||||
| -rw-r--r-- | src/qmmpui/metadataformatter.h | 6 | ||||
| -rw-r--r-- | src/qmmpui/playlisttrack.cpp | 2 |
3 files changed, 23 insertions, 14 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) { diff --git a/src/qmmpui/metadataformatter.h b/src/qmmpui/metadataformatter.h index 9cbcf1de2..e11fac6fd 100644 --- a/src/qmmpui/metadataformatter.h +++ b/src/qmmpui/metadataformatter.h @@ -84,13 +84,13 @@ public: */ QString format(const TrackInfo *info, int track = 0) const; /*! - * Returns formatted length (example: 05:02:03). - * \param length Length in seconds. + * Returns formatted duration (example: 05:02:03). + * \param duration Duration in milliseconds. * \param hideZero Setting for zero values output. * If \b hideZero is \b true, then the function outputs empty string for zero length, * otherwise outputs "0:00". */ - static QString formatLength(qint64 length, bool hideZero = true); + static QString formatDuration(qint64 duration, bool hideZero = true, bool showMs = false); private: struct Node; diff --git a/src/qmmpui/playlisttrack.cpp b/src/qmmpui/playlisttrack.cpp index d182e9945..76b12f65c 100644 --- a/src/qmmpui/playlisttrack.cpp +++ b/src/qmmpui/playlisttrack.cpp @@ -228,7 +228,7 @@ const QString PlayListTrack::formattedLength() { if(m_length > 0 && m_formattedLength.isEmpty()) { - m_formattedLength = MetaDataFormatter::formatLength(m_length); + m_formattedLength = MetaDataFormatter::formatDuration(m_length); } else if(m_length == 0) m_formattedLength.clear(); |
