From 5f41652afca33386cb29f2280ad940e4e2a571bd Mon Sep 17 00:00:00 2001 From: Craig Drummond Date: Wed, 14 Feb 2018 17:39:57 +0000 Subject: [PATCH] As well as miking covers take full width, also shrink images if not enough space --- context/albumview.cpp | 12 ++++++------ context/albumview.h | 2 +- context/view.cpp | 2 +- widgets/textbrowser.cpp | 24 +++++++++++++----------- widgets/textbrowser.h | 6 +++--- 5 files changed, 24 insertions(+), 22 deletions(-) diff --git a/context/albumview.cpp b/context/albumview.cpp index 7ff49b2cc..ad3fe33cd 100644 --- a/context/albumview.cpp +++ b/context/albumview.cpp @@ -67,10 +67,10 @@ AlbumView::AlbumView(QWidget *p) { engine=ContextEngine::create(this); refreshAction = ActionCollection::get()->createAction("refreshalbum", tr("Refresh Album Information"), Icons::self()->refreshIcon); - scaleCoverAction = ActionCollection::get()->createAction("scalealbumcover", tr("Scale Album Cover")); - scaleCoverAction->setCheckable(true); + fullWidthCoverAction = new Action(tr("Full Width Cover"), this); + fullWidthCoverAction->setCheckable(true); connect(refreshAction, SIGNAL(triggered()), this, SLOT(refresh())); - connect(scaleCoverAction, SIGNAL(toggled(bool)), this, SLOT(setScaleImage(bool))); + connect(fullWidthCoverAction, SIGNAL(toggled(bool)), this, SLOT(setScaleImage(bool))); connect(engine, SIGNAL(searchResult(QString,QString)), this, SLOT(searchResponse(QString,QString))); connect(Covers::self(), SIGNAL(cover(Song,QImage,QString)), SLOT(coverRetrieved(Song,QImage,QString))); connect(Covers::self(), SIGNAL(coverUpdated(Song,QImage,QString)), SLOT(coverUpdated(Song,QImage,QString))); @@ -87,12 +87,12 @@ AlbumView::AlbumView(QWidget *p) connect(timer, SIGNAL(timeout()), this, SLOT(clearCache())); timer->start((int)((ArtistView::constCacheAge/2.0)*1000*24*60*60)); } - scaleCoverAction->setChecked(Configuration(metaObject()->className()).get("scaleCover", false)); + fullWidthCoverAction->setChecked(Configuration(metaObject()->className()).get("fullWidthCover", false)); } AlbumView::~AlbumView() { - Configuration(metaObject()->className()).set("scaleCover", scaleCoverAction->isChecked()); + Configuration(metaObject()->className()).set("fullWidthCover", fullWidthCoverAction->isChecked()); } void AlbumView::showContextMenu(const QPoint &pos) @@ -104,7 +104,7 @@ void AlbumView::showContextMenu(const QPoint &pos) } else { menu->addAction(refreshAction); } - menu->addAction(scaleCoverAction); + menu->addAction(fullWidthCoverAction); menu->exec(text->mapToGlobal(pos)); delete menu; } diff --git a/context/albumview.h b/context/albumview.h index aa09247b2..36656c282 100644 --- a/context/albumview.h +++ b/context/albumview.h @@ -70,7 +70,7 @@ private: private: QString currentArtist; Action *refreshAction; - Action *scaleCoverAction; + Action *fullWidthCoverAction; ContextEngine *engine; int detailsReceived; QString pic; diff --git a/context/view.cpp b/context/view.cpp index 0740d0a0e..5b2012ac7 100644 --- a/context/view.cpp +++ b/context/view.cpp @@ -292,6 +292,6 @@ void View::abort() void View::setScaleImage(bool s) { for (TextBrowser *t: texts) { - t->setScaleImage(s); + t->setFullWidthImage(s); } } diff --git a/widgets/textbrowser.cpp b/widgets/textbrowser.cpp index 9207873d7..13e8e76ff 100644 --- a/widgets/textbrowser.cpp +++ b/widgets/textbrowser.cpp @@ -32,7 +32,7 @@ TextBrowser::TextBrowser(QWidget *p) : QTextBrowser(p) , timer(nullptr) , lastImageSize(0) - , scaleImg(false) + , fullWidthImg(false) , haveImg(false) { origZoomValue=font().pointSize(); @@ -64,12 +64,12 @@ QVariant TextBrowser::loadResource(int type, const QUrl &name) return QTextBrowser::loadResource(type, name); } -void TextBrowser::setScaleImage(bool s) +void TextBrowser::setFullWidthImage(bool s) { - if (s!=scaleImg) { - scaleImg=s; + if (s!=fullWidthImg) { + fullWidthImg=s; verticalScrollBar()->removeEventFilter(this); - if (scaleImg) { + if (fullWidthImg) { verticalScrollBar()->installEventFilter(this); } if (haveImg) { @@ -106,7 +106,7 @@ void TextBrowser::refreshHtml() void TextBrowser::handleSizeChange() { - if (haveImg && scaleImg) { + if (haveImg) { int imgSize=imageSize().width(); if (imgSize!=lastImageSize) { if (timer) { @@ -124,16 +124,18 @@ void TextBrowser::handleSizeChange() QSize TextBrowser::imageSize() const { - if (!scaleImage()) { - return picSize(); - } + QSize sz; int sbarSpacing = style()->pixelMetric(QStyle::PM_ScrollView_ScrollBarSpacing); if (sbarSpacing<0) { - return size()-QSize(4, 0); + sz=size()-QSize(4, 0); } else { QScrollBar *sb=verticalScrollBar(); int sbarWidth=sb && sb->isVisible() ? 0 : style()->pixelMetric(QStyle::PM_ScrollBarExtent); - return size()-QSize(4 + sbarSpacing + sbarWidth, 0); + sz=size()-QSize(4 + sbarSpacing + sbarWidth, 0); } + if (fullWidthImg || sz.width()<=picSize().width()) { + return sz; + } + return picSize(); } diff --git a/widgets/textbrowser.h b/widgets/textbrowser.h index d418cf53b..450dc7575 100644 --- a/widgets/textbrowser.h +++ b/widgets/textbrowser.h @@ -39,8 +39,8 @@ public: int zoom() const { return font().pointSize()-origZoomValue; } void setPicSize(const QSize &p) { pSize=p; } QSize picSize() const { return pSize; } - void setScaleImage(bool s); - bool scaleImage() const { return scaleImg; } + void setFullWidthImage(bool s); + bool fullWidthImage() const { return fullWidthImg; } void setPal(const QPalette &pal); void setHtml(const QString &s) { haveImg=false; QTextBrowser::setHtml(s); } void setText(const QString &s) { haveImg=false; QTextBrowser::setText(s); } @@ -59,7 +59,7 @@ private: QTimer *timer; int origZoomValue; int lastImageSize; - bool scaleImg; + bool fullWidthImg; bool haveImg; QSize pSize; };