Git commit f3606f835773627036e5e9e0513f2e3cecdb4f52 by Michael Pyne. Committed on 26/04/2016 at 00:58. Pushed by mpyne into branch 'Applications/16.04'.
Ensure Now Playing bar shows text even with hiDPI/big fonts. Note the fix only applies to KDE4-based desktops as JuK is still not ported to KF5. BUG:350460 GUI: FIXED-IN:16.04.1 M +1 -1 main.cpp M +24 -16 nowplaying.cpp M +1 -1 nowplaying.h http://commits.kde.org/juk/f3606f835773627036e5e9e0513f2e3cecdb4f52 diff --git a/main.cpp b/main.cpp index ef3080a..2c3d5e2 100644 --- a/main.cpp +++ b/main.cpp @@ -51,7 +51,7 @@ static const char sho[] = I18N_NOOP("MPRIS2 Interface implementation."); int main(int argc, char *argv[]) { KAboutData aboutData("juk", 0, ki18n("JuK"), - "3.12", ki18n(description), KAboutData::License_GPL, + "3.12.1", ki18n(description), KAboutData::License_GPL, ki18n("© 2002–2014, Scott Wheeler, Michael Pyne, and others"), KLocalizedString(), "http://www.kde.org/applications/multimedia/juk/"); diff --git a/nowplaying.cpp b/nowplaying.cpp index d5bf63b..ec3a51e 100644 --- a/nowplaying.cpp +++ b/nowplaying.cpp @@ -39,6 +39,7 @@ #include <QUrl> #include <QList> #include <QTextDocument> +#include <QFontMetrics> #include "playlistcollection.h" #include "playlistitem.h" @@ -47,11 +48,9 @@ #include "tag.h" #include "collectionlist.h" -static const int imageSize = 64; - -struct Line : public QFrame -{ - Line(QWidget *parent) : QFrame(parent) { setFrameShape(VLine); } +// Anon namespace to hide symbol from outside this translation unit +namespace { + static int g_imageSize = 64; }; //////////////////////////////////////////////////////////////////////////////// @@ -72,11 +71,17 @@ NowPlaying::NowPlaying(QWidget *parent, PlaylistCollection *collection) : layout->setMargin(0); layout->setSpacing(3); - setFixedHeight(imageSize + 2); + + // With HiDPI the text might actually be bigger... try to account for + // that. + QFont defaultLargeFont(KGlobalSettings::largeFont(QLatin1String("XXXXXXX"))); + const QFontMetrics fm(defaultLargeFont, this); + + g_imageSize = qMax(g_imageSize, fm.lineSpacing()); + setFixedHeight(g_imageSize + 2); layout->addWidget(new CoverItem(this), 0); layout->addWidget(new TrackItem(this), 2); - layout->addWidget(new Line(this), 0); hide(); } @@ -120,7 +125,7 @@ CoverItem::CoverItem(NowPlaying *parent) : QLabel(parent), NowPlayingItem(parent) { - setObjectName( QLatin1String("CoverItem" )); + setObjectName(QLatin1String("CoverItem")); setFixedHeight(parent->height() - parent->layout()->margin() * 2); setMargin(1); setAcceptDrops(true); @@ -134,7 +139,7 @@ void CoverItem::update(const FileHandle &file) show(); setPixmap( file.coverInfo()->pixmap(CoverInfo::Thumbnail) - .scaled(imageSize, imageSize, Qt::KeepAspectRatio, Qt::SmoothTransformation)); + .scaled(g_imageSize, g_imageSize, Qt::KeepAspectRatio, Qt::SmoothTransformation)); } else hide(); @@ -237,7 +242,7 @@ TrackItem::TrackItem(NowPlaying *parent) : QWidget(parent), NowPlayingItem(parent) { - setObjectName( QLatin1String("TrackItem" )); + setObjectName(QLatin1String("TrackItem")); setFixedHeight(parent->height() - parent->layout()->margin() * 2); setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed); @@ -249,7 +254,7 @@ TrackItem::TrackItem(NowPlaying *parent) : m_label->setTextInteractionFlags(Qt::LinksAccessibleByMouse|Qt::LinksAccessibleByKeyboard); layout->addStretch(); - layout->addWidget(m_label); + layout->addWidget(m_label, 1); layout->addStretch(); connect(m_label, SIGNAL(linkActivated(QString)), this, @@ -269,7 +274,7 @@ void TrackItem::update(const FileHandle &file) void TrackItem::slotOpenLink(const QString &link) { - PlaylistCollection *collection = NowPlayingItem::parent()->collection(); + PlaylistCollection *collection = parentManager()->collection(); if(link == "artist") collection->showMore(m_file.tag()->artist()); @@ -301,23 +306,26 @@ void TrackItem::slotUpdate() "<br />" "<font size=\"+%3\"><b><a href=\"artist\">%4</a>%5<a href=\"album\">%6</a></b>"; - if(NowPlayingItem::parent()->collection()->showMoreActive()) + if(parentManager()->collection()->showMoreActive()) format.append(QString(" (<a href=\"clear\">%1</a>)").arg(i18n("back to playlist"))); format.append("</font>"); + int parentHeight = parentManager()->contentsRect().height(); + int neededHeight = 0; do { m_label->setText(format.arg(size).arg(title).arg(size - 2) .arg(artist).arg(separator).arg(album)); --size; - } while(m_label->heightForWidth(m_label->width()) > imageSize && size >= 0); + neededHeight = m_label->heightForWidth(m_label->width()); + } while(neededHeight > parentHeight && size >= -1); - m_label->setFixedHeight(qMin(imageSize, m_label->heightForWidth(m_label->width()))); + m_label->setFixedHeight(qMin(neededHeight, parentHeight)); } void TrackItem::slotClearShowMore() { - PlaylistCollection *collection = NowPlayingItem::parent()->collection(); + PlaylistCollection *collection = parentManager()->collection(); Q_ASSERT(collection); collection->clearShowMore(); } diff --git a/nowplaying.h b/nowplaying.h index a671f55..d77a86a 100644 --- a/nowplaying.h +++ b/nowplaying.h @@ -81,7 +81,7 @@ class NowPlayingItem public: virtual ~NowPlayingItem() {} virtual void update(const FileHandle &file) = 0; - NowPlaying *parent() const { return m_parent; } + NowPlaying *parentManager() const { return m_parent; } protected: NowPlayingItem(NowPlaying *parent) : m_parent(parent) { parent->addItem(this); } private: _______________________________________________ kde-doc-english mailing list [email protected] https://mail.kde.org/mailman/listinfo/kde-doc-english
