From kde-commits Sat Sep 30 21:33:50 2017 From: Michael Pyne Date: Sat, 30 Sep 2017 21:33:50 +0000 To: kde-commits Subject: [juk/frameworks] /: Port status label away from KHBox. Message-Id: X-MARC-Message: https://marc.info/?l=kde-commits&m=150680818127414 Git commit 87cf04a1be5624004394a6c8afca611356be4e4a by Michael Pyne. Committed on 30/09/2017 at 21:07. Pushed by mpyne into branch 'frameworks'. Port status label away from KHBox. M +51 -43 statuslabel.cpp M +6 -10 statuslabel.h https://commits.kde.org/juk/87cf04a1be5624004394a6c8afca611356be4e4a diff --git a/statuslabel.cpp b/statuslabel.cpp index d364f32..e05337c 100644 --- a/statuslabel.cpp +++ b/statuslabel.cpp @@ -16,11 +16,11 @@ = #include "statuslabel.h" = -#include #include #include #include = +#include #include #include #include @@ -41,20 +41,23 @@ using namespace ActionCollection; //////////////////////////////////////////////////////////////////////////= ////// = StatusLabel::StatusLabel(PlaylistInterface *playlist, QWidget *parent) : - KHBox(parent), + QWidget(parent), PlaylistObserver(playlist), m_showTimeRemaining(false) { + auto hboxLayout =3D new QHBoxLayout(this); + QFrame *trackAndPlaylist =3D new QFrame(this); - trackAndPlaylist->setFrameStyle(Box | Sunken); + hboxLayout->addWidget(trackAndPlaylist); + trackAndPlaylist->setFrameStyle(QFrame::Box | QFrame::Sunken); trackAndPlaylist->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::E= xpanding); = // Make sure that we have enough of a margin to suffice for the border= s, // hence the "lineWidth() * 2" - QHBoxLayout *trackAndPlaylistLayout =3D new QHBoxLayout( trackAndPlayl= ist ); - trackAndPlaylistLayout->setMargin( trackAndPlaylist->lineWidth() * 2 ); - trackAndPlaylistLayout->setSpacing( 5 ); - trackAndPlaylistLayout->setObjectName( QLatin1String( "trackAndPlaylis= tLayout" )); + QHBoxLayout *trackAndPlaylistLayout =3D new QHBoxLayout(trackAndPlayli= st); + trackAndPlaylistLayout->setMargin(trackAndPlaylist->lineWidth() * 2); + trackAndPlaylistLayout->setSpacing(5); + trackAndPlaylistLayout->setObjectName(QLatin1String("trackAndPlaylistL= ayout")); trackAndPlaylistLayout->addSpacing(5); = m_playlistLabel =3D new KSqueezedTextLabel(trackAndPlaylist); @@ -72,25 +75,30 @@ StatusLabel::StatusLabel(PlaylistInterface *playlist, Q= Widget *parent) : trackAndPlaylistLayout->addSpacing(5); = m_itemTimeLabel =3D new QLabel(this); + hboxLayout->addWidget(m_itemTimeLabel); QFontMetrics fontMetrics(font()); m_itemTimeLabel->setAlignment(Qt::AlignCenter); m_itemTimeLabel->setMinimumWidth(fontMetrics.boundingRect("000:00 / 00= 0:00").width()); m_itemTimeLabel->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Ex= panding); - m_itemTimeLabel->setFrameStyle(Box | Sunken); + m_itemTimeLabel->setFrameStyle(QFrame::Box | QFrame::Sunken); m_itemTimeLabel->installEventFilter(this); = setItemTotalTime(0); setItemCurrentTime(0); = - KHBox *jumpBox =3D new KHBox(this); - jumpBox->setFrameStyle(Box | Sunken); + auto jumpBox =3D new QFrame(this); + hboxLayout->addWidget(jumpBox); + jumpBox->setFrameStyle(QFrame::Box | QFrame::Sunken); jumpBox->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Minimum); = + auto jumpBoxHLayout =3D new QHBoxLayout(jumpBox); + QPushButton *jumpButton =3D new QPushButton(jumpBox); + jumpBoxHLayout->addWidget(jumpButton); jumpButton->setIcon(SmallIcon("go-up")); jumpButton->setFlat(true); = - jumpButton->setToolTip( i18n("Jump to the currently playing item")); + jumpButton->setToolTip(i18n("Jump to the currently playing item")); connect(jumpButton, SIGNAL(clicked()), action("showPlaying"), SLOT(tri= gger())); = installEventFilter(this); @@ -98,24 +106,21 @@ StatusLabel::StatusLabel(PlaylistInterface *playlist, = QWidget *parent) : updateData(); } = -StatusLabel::~StatusLabel() -{ - -} - void StatusLabel::updateCurrent() { - if(playlist()->playing()) { - FileHandle file =3D playlist()->currentFile(); + if(!playlist()->playing()) { + return; + } = - QString mid =3D file.tag()->artist().isEmpty() || file.tag()->tit= le().isEmpty() - ? QString::null : QString(" - "); //krazy:exclude=3Dnullstrass= ign for old broken gcc + FileHandle file =3D playlist()->currentFile(); = - QString text =3D file.tag()->artist() + mid + file.tag()->title(); + QString mid =3D file.tag()->artist().isEmpty() || file.tag()->title()= .isEmpty() + ? QString::null : QString(" - "); //krazy:exclude=3Dnullstrassign = for old broken gcc = - m_trackLabel->setText(text); - m_playlistLabel->setText(playlist()->name().simplified()); - } + QString text =3D file.tag()->artist() + mid + file.tag()->title(); + + m_trackLabel->setText(text); + m_playlistLabel->setText(playlist()->name().simplified()); } = void StatusLabel::updateData() @@ -123,31 +128,33 @@ void StatusLabel::updateData() updateCurrent(); = if(!playlist()->playing()) { - setItemTotalTime(0); - setItemCurrentTime(0); - - int time =3D playlist()->time(); + return; + } = - int days =3D time / (60 * 60 * 24); - int hours =3D time / (60 * 60) % 24; - int minutes =3D time / 60 % 60; - int seconds =3D time % 60; + setItemTotalTime(0); + setItemCurrentTime(0); = - QString timeString; + int time =3D playlist()->time(); = - if(days > 0) { - timeString =3D i18np("1 day", "%1 days", days); - timeString.append(" "); - } + int days =3D time / (60 * 60 * 24); + int hours =3D time / (60 * 60) % 24; + int minutes =3D time / 60 % 60; + int seconds =3D time % 60; = - if(days > 0 || hours > 0) - timeString.append(QString().sprintf("%1d:%02d:%02d", hours, mi= nutes, seconds)); - else - timeString.append(QString().sprintf("%1d:%02d", minutes, secon= ds)); + QString timeString; = - m_playlistLabel->setText(playlist()->name()); - m_trackLabel->setText(i18np("1 item", "%1 items", playlist()->coun= t()) + " - " + timeString); + if(days > 0) { + timeString =3D i18np("1 day", "%1 days", days); + timeString.append(" "); } + + if(days > 0 || hours > 0) + timeString.append(QString().sprintf("%1d:%02d:%02d", hours, minute= s, 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); } = //////////////////////////////////////////////////////////////////////////= ////// @@ -197,6 +204,7 @@ 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 =3D QString::number(minutes); diff --git a/statuslabel.h b/statuslabel.h index c52b695..649e5b6 100644 --- a/statuslabel.h +++ b/statuslabel.h @@ -14,27 +14,23 @@ * this program. If not, see . */ = -#ifndef STATUSLABEL_H -#define STATUSLABEL_H +#ifndef JUK_STATUSLABEL_H +#define JUK_STATUSLABEL_H = #include "playlistinterface.h" = -#include -//Added by qt3to4: -#include -#include +#include = +class QEvent; class QLabel; class KSqueezedTextLabel; = - -class StatusLabel : public KHBox, public PlaylistObserver +class StatusLabel : public QWidget, public PlaylistObserver { Q_OBJECT = public: - explicit StatusLabel(PlaylistInterface *playlist, QWidget *parent =3D = 0); - virtual ~StatusLabel(); + explicit StatusLabel(PlaylistInterface *playlist, QWidget *parent =3D = nullptr); virtual void updateCurrent(); = public slots: