From ad55f26545292e0dc2ffc66a43f8bd3b74eb32bc Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Mon, 30 Apr 2018 09:48:54 +0000 Subject: fixed duration formatting git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@7938 90c681e8-e032-0410-971d-27865f9a5e38 --- src/plugins/Ui/qsui/mainwindow.cpp | 8 ++++---- src/plugins/Ui/qsui/positionslider.cpp | 2 +- src/plugins/Ui/skinned/display.cpp | 2 +- src/qmmpui/metadataformatter.cpp | 29 +++++++++++++++++++---------- src/qmmpui/metadataformatter.h | 6 +++--- src/qmmpui/playlisttrack.cpp | 2 +- 6 files changed, 29 insertions(+), 20 deletions(-) (limited to 'src') diff --git a/src/plugins/Ui/qsui/mainwindow.cpp b/src/plugins/Ui/qsui/mainwindow.cpp index a482aff4e..7b5b209c9 100644 --- a/src/plugins/Ui/qsui/mainwindow.cpp +++ b/src/plugins/Ui/qsui/mainwindow.cpp @@ -203,11 +203,11 @@ void MainWindow::updatePosition(qint64 pos) if(!m_positionSlider->isSliderDown()) m_positionSlider->setValue(pos/1000); - QString text = MetaDataFormatter::formatLength(pos/1000, false); + QString text = MetaDataFormatter::formatDuration(pos, false); if(m_core->duration() > 1000) { text.append("/"); - text.append(MetaDataFormatter::formatLength(m_core->duration()/1000)); + text.append(MetaDataFormatter::formatDuration(m_core->duration())); } m_timeLabel->setText(text); } @@ -377,7 +377,7 @@ void MainWindow::updateStatus() .arg(ap.channels()) .arg(ap.sampleRate()) .arg(tracks) - .arg(MetaDataFormatter::formatLength(length, false)) + .arg(MetaDataFormatter::formatDuration(length * 1000, false)) //TODO use milliseconds .arg(m_core->bitrate())); } else if(m_core->state() == Qmmp::Stopped) @@ -385,7 +385,7 @@ void MainWindow::updateStatus() m_statusLabel->setText(tr("%1|tracks: %2|total time: %3|") .arg(tr("Stopped")) .arg(tracks) - .arg(MetaDataFormatter::formatLength(length))); + .arg(MetaDataFormatter::formatDuration(length * 1000))); //TODO use milliseconds } else m_statusLabel->clear(); diff --git a/src/plugins/Ui/qsui/positionslider.cpp b/src/plugins/Ui/qsui/positionslider.cpp index aebe6d734..bfd0a682d 100644 --- a/src/plugins/Ui/qsui/positionslider.cpp +++ b/src/plugins/Ui/qsui/positionslider.cpp @@ -83,5 +83,5 @@ void PositionSlider::onSliderMoved(int pos) initStyleOption(&opt); QRect rect = style()->subControlRect(QStyle::CC_Slider, &opt, QStyle::SC_SliderHandle, this); rect.moveTo(rect.x() - 10 , rect.y() - 45); - QToolTip::showText(mapToGlobal(rect.topLeft()), MetaDataFormatter::formatLength(pos), this, QRect()); + QToolTip::showText(mapToGlobal(rect.topLeft()), MetaDataFormatter::formatDuration(pos * 1000), this, QRect()); } diff --git a/src/plugins/Ui/skinned/display.cpp b/src/plugins/Ui/skinned/display.cpp index 45b3ec70f..ef12f595e 100644 --- a/src/plugins/Ui/skinned/display.cpp +++ b/src/plugins/Ui/skinned/display.cpp @@ -307,7 +307,7 @@ void MainDisplay::displayVolume() void MainDisplay::showPosition() { - m_text->setText(tr("Seek to: %1").arg(MetaDataFormatter::formatLength(m_posbar->value() / 1000, false))); + m_text->setText(tr("Seek to: %1").arg(MetaDataFormatter::formatDuration(m_posbar->value(), false))); } void MainDisplay::updatePosition() 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 *nodes, QString::const_iterator *i, QString::const_iterator end) @@ -481,7 +490,7 @@ QString MetaDataFormatter::printField(int field, const QMap 0 && m_formattedLength.isEmpty()) { - m_formattedLength = MetaDataFormatter::formatLength(m_length); + m_formattedLength = MetaDataFormatter::formatDuration(m_length); } else if(m_length == 0) m_formattedLength.clear(); -- cgit v1.2.3-13-gbd6f