From 9b743e55d1f430a4f75375fa6b0b322ff0478568 Mon Sep 17 00:00:00 2001 From: Jonas Kvinge Date: Thu, 9 Jun 2022 00:46:39 +0200 Subject: [PATCH] ContextView: Update album width from context --- src/context/contextalbum.cpp | 33 +++++++++++++-------------------- src/context/contextalbum.h | 3 +-- src/context/contextview.cpp | 11 +++++------ src/context/contextview.h | 2 -- 4 files changed, 19 insertions(+), 30 deletions(-) diff --git a/src/context/contextalbum.cpp b/src/context/contextalbum.cpp index 8b360999e..bbe7faba2 100644 --- a/src/context/contextalbum.cpp +++ b/src/context/contextalbum.cpp @@ -54,12 +54,11 @@ ContextAlbum::ContextAlbum(QWidget *parent) timeline_fade_(new QTimeLine(kFadeTimeLineMs, this)), image_strawberry_(":/pictures/strawberry.png"), image_original_(image_strawberry_), - pixmap_current_opacity_(1.0), - prev_width_(width()) { + pixmap_current_opacity_(1.0) { setObjectName("context-widget-album"); - setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed); + setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); cover_loader_options_.desired_height_ = width(); cover_loader_options_.pad_output_image_ = true; @@ -96,18 +95,6 @@ QSize ContextAlbum::sizeHint() const { } -void ContextAlbum::resizeEvent(QResizeEvent *e) { - - if (width() != prev_width_) { - ScaleCover(); - ScalePreviousCovers(); - prev_width_ = width(); - } - - QWidget::resizeEvent(e); - -} - void ContextAlbum::paintEvent(QPaintEvent*) { QPainter p(this); @@ -139,6 +126,17 @@ void ContextAlbum::contextMenuEvent(QContextMenuEvent *e) { } +void ContextAlbum::UpdateWidth(const int new_width) { + + if (new_width != cover_loader_options_.desired_height_) { + cover_loader_options_.desired_height_ = new_width; + ScaleCover(); + ScalePreviousCovers(); + updateGeometry(); + } + +} + void ContextAlbum::SetImage(QImage image) { if (image.isNull()) { @@ -237,8 +235,6 @@ void ContextAlbum::FadePreviousCoverFinished(std::shared_ptr prev void ContextAlbum::ScaleCover() { - cover_loader_options_.desired_height_ = width(); - QImage image = ImageUtils::ScaleAndPad(image_original_, cover_loader_options_.scale_output_image_, cover_loader_options_.pad_output_image_, cover_loader_options_.desired_height_); if (image.isNull()) { pixmap_current_ = QPixmap(); @@ -247,14 +243,11 @@ void ContextAlbum::ScaleCover() { pixmap_current_ = QPixmap::fromImage(image); } - updateGeometry(); - } void ContextAlbum::ScalePreviousCovers() { for (std::shared_ptr previous_cover : previous_covers_) { - if (previous_cover->pixmap.width() == width()) continue; QImage image = ImageUtils::ScaleAndPad(previous_cover->image, cover_loader_options_.scale_output_image_, cover_loader_options_.pad_output_image_, cover_loader_options_.desired_height_); if (image.isNull()) { previous_cover->pixmap = QPixmap(); diff --git a/src/context/contextalbum.h b/src/context/contextalbum.h index 5265a80e9..fb68f440d 100644 --- a/src/context/contextalbum.h +++ b/src/context/contextalbum.h @@ -51,10 +51,10 @@ class ContextAlbum : public QWidget { void Init(ContextView *context_view, AlbumCoverChoiceController *album_cover_choice_controller); void SetImage(QImage image = QImage()); + void UpdateWidth(const int width); protected: QSize sizeHint() const override; - void resizeEvent(QResizeEvent *e) override; void paintEvent(QPaintEvent*) override; void mouseDoubleClickEvent(QMouseEvent *e) override; void contextMenuEvent(QContextMenuEvent *e) override; @@ -107,7 +107,6 @@ class ContextAlbum : public QWidget { QPixmap pixmap_current_; qreal pixmap_current_opacity_; std::unique_ptr spinner_animation_; - int prev_width_; }; #endif // CONTEXTALBUM_H diff --git a/src/context/contextview.cpp b/src/context/contextview.cpp index 1b42e2c85..74ae161cc 100644 --- a/src/context/contextview.cpp +++ b/src/context/contextview.cpp @@ -69,7 +69,7 @@ #include "contextview.h" #include "contextalbum.h" -const int ContextView::kWidgetSpacing = 40; +const int ContextView::kWidgetSpacing = 50; ContextView::ContextView(QWidget *parent) : QWidget(parent), @@ -126,8 +126,7 @@ ContextView::ContextView(QWidget *parent) lyrics_tried_(false), lyrics_id_(-1), font_size_headline_(0), - font_size_normal_(0), - prev_width_(width()) { + font_size_normal_(0) { setLayout(layout_container_); @@ -140,6 +139,7 @@ ContextView::ContextView(QWidget *parent) scrollarea_->setWidget(widget_scrollarea_); scrollarea_->setContentsMargins(0, 0, 0, 0); scrollarea_->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + scrollarea_->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); widget_scrollarea_->setObjectName("context-widget-scrollarea"); widget_scrollarea_->setLayout(layout_scrollarea_); @@ -363,9 +363,8 @@ void ContextView::ReloadSettings() { void ContextView::resizeEvent(QResizeEvent *e) { - if (prev_width_ != width()) { - widget_album_->setFixedWidth(width() - kWidgetSpacing); - prev_width_ = width(); + if (e->size().width() != e->oldSize().width()) { + widget_album_->UpdateWidth(width() - kWidgetSpacing); } QWidget::resizeEvent(e); diff --git a/src/context/contextview.h b/src/context/contextview.h index 1cf5c35bc..1c309945d 100644 --- a/src/context/contextview.h +++ b/src/context/contextview.h @@ -180,8 +180,6 @@ class ContextView : public QWidget { QList labels_play_data_; QList labels_play_all_; - int prev_width_; - }; #endif // CONTEXTVIEW_H