Members of the KDE Community are recommended to subscribe to the kde-community mailing list at https://mail.kde.org/mailman/listinfo/kde-community to allow them to participate in important discussions and receive other important announcements

Commit 230b5b8f authored by Michael Pyne's avatar Michael Pyne

Use KFormat for time duration and other status label code cleanups.

parent 956fb348
......@@ -16,9 +16,10 @@
#include "statuslabel.h"
#include <kiconloader.h>
#include <ksqueezedtextlabel.h>
#include <KIconLoader>
#include <KSqueezedTextLabel>
#include <KLocalizedString>
#include <KFormat>
#include <QAction>
#include <QMouseEvent>
......@@ -36,14 +37,23 @@
using namespace ActionCollection;
////////////////////////////////////////////////////////////////////////////////
// static helpers
////////////////////////////////////////////////////////////////////////////////
static QString formatTime(int seconds)
{
static const KFormat fmt;
return fmt.formatDuration(seconds * 1000);
}
////////////////////////////////////////////////////////////////////////////////
// public methods
////////////////////////////////////////////////////////////////////////////////
StatusLabel::StatusLabel(PlaylistInterface *playlist, QWidget *parent) :
QWidget(parent),
PlaylistObserver(playlist),
m_showTimeRemaining(false)
PlaylistObserver(playlist)
{
auto hboxLayout = new QHBoxLayout(this);
......@@ -99,7 +109,7 @@ StatusLabel::StatusLabel(PlaylistInterface *playlist, QWidget *parent) :
jumpButton->setFlat(true);
jumpButton->setToolTip(i18n("Jump to the currently playing item"));
connect(jumpButton, SIGNAL(clicked()), action("showPlaying"), SLOT(trigger()));
connect(jumpButton, &QPushButton::clicked, action("showPlaying"), &QAction::trigger);
installEventFilter(this);
......@@ -112,14 +122,13 @@ void StatusLabel::playingItemHasChanged()
return;
}
FileHandle file = playlist()->currentFile();
const FileHandle file = playlist()->currentFile();
const Tag *tag = file.tag();
const QString mid = (tag->artist().isEmpty() || tag->title().isEmpty())
? QString()
: QStringLiteral(" - ");
QString mid = file.tag()->artist().isEmpty() || file.tag()->title().isEmpty()
? QString::null : QString(" - "); //krazy:exclude=nullstrassign for old broken gcc
QString text = file.tag()->artist() + mid + file.tag()->title();
m_trackLabel->setText(text);
m_trackLabel->setText(tag->artist() + mid + tag->title());
m_playlistLabel->setText(playlist()->name().simplified());
}
......@@ -127,34 +136,21 @@ void StatusLabel::playlistItemDataHasChanged()
{
playingItemHasChanged();
if(!playlist()->playing()) {
const auto plist = playlist();
if(!plist->playing()) {
return;
}
setItemTotalTime(0);
setItemCurrentTime(0);
int time = playlist()->time();
int days = time / (60 * 60 * 24);
int hours = time / (60 * 60) % 24;
int minutes = time / 60 % 60;
int seconds = time % 60;
QString timeString;
if(days > 0) {
timeString = i18np("1 day", "%1 days", days);
timeString.append(" ");
}
if(days > 0 || hours > 0)
timeString.append(QString().sprintf("%1d:%02d:%02d", hours, minutes, seconds));
else
timeString.append(QString().sprintf("%1d:%02d", minutes, seconds));
m_playlistLabel->setText(playlist()->name());
m_trackLabel->setText(i18np("1 item", "%1 items", playlist()->count()) + " - " + timeString);
m_playlistLabel->setText(plist->name());
m_trackLabel->setText(
i18np("1 item", "%1 items", plist->count()) +
QStringLiteral(" - ") +
formatTime(plist->time())
);
}
////////////////////////////////////////////////////////////////////////////////
......@@ -163,23 +159,12 @@ void StatusLabel::playlistItemDataHasChanged()
void StatusLabel::updateTime()
{
int minutes;
int seconds;
const int seconds = m_showTimeRemaining
? m_itemTotalTime - m_itemCurrentTime
: m_itemCurrentTime;
const QString timeString = formatTime(seconds) + QStringLiteral(" / ") +
formatTime(m_itemTotalTime);
if(m_showTimeRemaining) {
minutes = int((m_itemTotalTime - m_itemCurrentTime) / 60);
seconds = (m_itemTotalTime - m_itemCurrentTime) % 60;
}
else {
minutes = int(m_itemCurrentTime / 60);
seconds = m_itemCurrentTime % 60;
}
int totalMinutes = int(m_itemTotalTime / 60);
int totalSeconds = m_itemTotalTime % 60;
QString timeString = formatTime(minutes, seconds) + " / " +
formatTime(totalMinutes, totalSeconds);
m_itemTimeLabel->setText(timeString);
}
......@@ -204,16 +189,4 @@ bool StatusLabel::eventFilter(QObject *o, QEvent *e)
return false;
}
// TODO: Look at QLocale or KCoreAddons::format for showing time durations
QString StatusLabel::formatTime(int minutes, int seconds) // static
{
QString m = QString::number(minutes);
if(m.length() == 1)
m = '0' + m;
QString s = QString::number(seconds);
if(s.length() == 1)
s = '0' + s;
return m + ':' + s;
}
// vim: set et sw=4 tw=0 sta:
......@@ -42,22 +42,17 @@ public slots:
void setItemCurrentTime(int time) { m_itemCurrentTime = time; updateTime(); }
virtual void playlistItemDataHasChanged() Q_DECL_FINAL;
signals:
void jumpButtonClicked();
private:
void updateTime();
virtual bool eventFilter(QObject *o, QEvent *e);
static QString formatTime(int minutes, int seconds);
int m_itemTotalTime;
int m_itemCurrentTime;
bool m_showTimeRemaining;
KSqueezedTextLabel *m_playlistLabel = nullptr;
KSqueezedTextLabel *m_trackLabel = nullptr;
QLabel *m_itemTimeLabel = nullptr;
KSqueezedTextLabel *m_playlistLabel;
KSqueezedTextLabel *m_trackLabel;
QLabel *m_itemTimeLabel;
int m_itemTotalTime = 0;
int m_itemCurrentTime = 0;
bool m_showTimeRemaining = false;
};
#endif
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment