[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [juk/frameworks] /: Port status label away from KHBox.
From:       Michael Pyne <null () kde ! org>
Date:       2017-09-30 21:33:50
Message-ID: E1dyPOQ-0007iK-41 () code ! kde ! org
[Download RAW message or body]

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 <QAction>
 #include <kiconloader.h>
 #include <ksqueezedtextlabel.h>
 #include <klocale.h>
 
+#include <QAction>
 #include <QMouseEvent>
 #include <QLabel>
 #include <QFrame>
@@ -41,20 +41,23 @@ using namespace ActionCollection;
 ////////////////////////////////////////////////////////////////////////////////
 
 StatusLabel::StatusLabel(PlaylistInterface *playlist, QWidget *parent) :
-    KHBox(parent),
+    QWidget(parent),
     PlaylistObserver(playlist),
     m_showTimeRemaining(false)
 {
+    auto hboxLayout = new QHBoxLayout(this);
+
     QFrame *trackAndPlaylist = new QFrame(this);
-    trackAndPlaylist->setFrameStyle(Box | Sunken);
+    hboxLayout->addWidget(trackAndPlaylist);
+    trackAndPlaylist->setFrameStyle(QFrame::Box | QFrame::Sunken);
     trackAndPlaylist->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
 
     // Make sure that we have enough of a margin to suffice for the borders,
     // hence the "lineWidth() * 2"
-    QHBoxLayout *trackAndPlaylistLayout = new QHBoxLayout( trackAndPlaylist );
-    trackAndPlaylistLayout->setMargin( trackAndPlaylist->lineWidth() * 2 );
-    trackAndPlaylistLayout->setSpacing( 5 );
-    trackAndPlaylistLayout->setObjectName( QLatin1String( "trackAndPlaylistLayout" ));
+    QHBoxLayout *trackAndPlaylistLayout = new QHBoxLayout(trackAndPlaylist);
+    trackAndPlaylistLayout->setMargin(trackAndPlaylist->lineWidth() * 2);
+    trackAndPlaylistLayout->setSpacing(5);
+    trackAndPlaylistLayout->setObjectName(QLatin1String("trackAndPlaylistLayout"));
     trackAndPlaylistLayout->addSpacing(5);
 
     m_playlistLabel = new KSqueezedTextLabel(trackAndPlaylist);
@@ -72,25 +75,30 @@ StatusLabel::StatusLabel(PlaylistInterface *playlist, QWidget *parent) :
     trackAndPlaylistLayout->addSpacing(5);
 
     m_itemTimeLabel = new QLabel(this);
+    hboxLayout->addWidget(m_itemTimeLabel);
     QFontMetrics fontMetrics(font());
     m_itemTimeLabel->setAlignment(Qt::AlignCenter);
     m_itemTimeLabel->setMinimumWidth(fontMetrics.boundingRect("000:00 / 000:00").width());
     m_itemTimeLabel->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding);
-    m_itemTimeLabel->setFrameStyle(Box | Sunken);
+    m_itemTimeLabel->setFrameStyle(QFrame::Box | QFrame::Sunken);
     m_itemTimeLabel->installEventFilter(this);
 
     setItemTotalTime(0);
     setItemCurrentTime(0);
 
-    KHBox *jumpBox = new KHBox(this);
-    jumpBox->setFrameStyle(Box | Sunken);
+    auto jumpBox = new QFrame(this);
+    hboxLayout->addWidget(jumpBox);
+    jumpBox->setFrameStyle(QFrame::Box | QFrame::Sunken);
     jumpBox->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Minimum);
 
+    auto jumpBoxHLayout = new QHBoxLayout(jumpBox);
+
     QPushButton *jumpButton = 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(trigger()));
 
     installEventFilter(this);
@@ -98,24 +106,21 @@ StatusLabel::StatusLabel(PlaylistInterface *playlist, QWidget *parent) :
     updateData();
 }
 
-StatusLabel::~StatusLabel()
-{
-
-}
-
 void StatusLabel::updateCurrent()
 {
-    if(playlist()->playing()) {
-        FileHandle file = playlist()->currentFile();
+    if(!playlist()->playing()) {
+        return;
+    }
 
-        QString mid =  file.tag()->artist().isEmpty() || file.tag()->title().isEmpty()
-            ? QString::null : QString(" - ");	//krazy:exclude=nullstrassign for old broken gcc
+    FileHandle file = playlist()->currentFile();
 
-        QString text = file.tag()->artist() + mid + file.tag()->title();
+    QString mid =  file.tag()->artist().isEmpty() || file.tag()->title().isEmpty()
+        ? QString::null : QString(" - ");	//krazy:exclude=nullstrassign for old broken gcc
 
-        m_trackLabel->setText(text);
-        m_playlistLabel->setText(playlist()->name().simplified());
-    }
+    QString text = 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 = playlist()->time();
+        return;
+    }
 
-        int days = time / (60 * 60 * 24);
-        int hours = time / (60 * 60) % 24;
-        int minutes = time / 60 % 60;
-        int seconds = time % 60;
+    setItemTotalTime(0);
+    setItemCurrentTime(0);
 
-        QString timeString;
+    int time = playlist()->time();
 
-        if(days > 0) {
-            timeString = i18np("1 day", "%1 days", days);
-            timeString.append(" ");
-        }
+    int days = time / (60 * 60 * 24);
+    int hours = time / (60 * 60) % 24;
+    int minutes = time / 60 % 60;
+    int seconds = time % 60;
 
-        if(days > 0 || hours > 0)
-            timeString.append(QString().sprintf("%1d:%02d:%02d", hours, minutes, seconds));
-        else
-            timeString.append(QString().sprintf("%1d:%02d", minutes, seconds));
+    QString timeString;
 
-        m_playlistLabel->setText(playlist()->name());
-        m_trackLabel->setText(i18np("1 item", "%1 items", playlist()->count()) + " - " + 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);
 }
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -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 = 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 <http://www.gnu.org/licenses/>.
  */
 
-#ifndef STATUSLABEL_H
-#define STATUSLABEL_H
+#ifndef JUK_STATUSLABEL_H
+#define JUK_STATUSLABEL_H
 
 #include "playlistinterface.h"
 
-#include <khbox.h>
-//Added by qt3to4:
-#include <QLabel>
-#include <QEvent>
+#include <QWidget>
 
+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 = 0);
-    virtual ~StatusLabel();
+    explicit StatusLabel(PlaylistInterface *playlist, QWidget *parent = nullptr);
     virtual void updateCurrent();
 
 public slots:

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic