From 59d29d741258b99e4992d0511cc29da6ec1e19c5 Mon Sep 17 00:00:00 2001 From: David Sansome Date: Sun, 21 Nov 2010 16:28:25 +0000 Subject: [PATCH] Show a loading bubble in the song and artist info views --- src/widgets/widgetfadehelper.cpp | 29 +++++++++++++++++++++++++++++ src/widgets/widgetfadehelper.h | 3 +++ 2 files changed, 32 insertions(+) diff --git a/src/widgets/widgetfadehelper.cpp b/src/widgets/widgetfadehelper.cpp index ec0f03dc0..494d99add 100644 --- a/src/widgets/widgetfadehelper.cpp +++ b/src/widgets/widgetfadehelper.cpp @@ -21,6 +21,9 @@ #include #include +const int WidgetFadeHelper::kLoadingPadding = 9; +const int WidgetFadeHelper::kLoadingBorderRadius = 10; + // Exported by QtGui void qt_blurImage(QPainter *p, QImage &blurImage, qreal radius, bool quality, bool alphaOnly, int transposed = 0); @@ -49,7 +52,33 @@ void WidgetFadeHelper::StartBlur() { blurred.fill(Qt::transparent); QPainter blur_painter(&blurred); + blur_painter.save(); qt_blurImage(&blur_painter, original_image, 10.0, true, false); + blur_painter.restore(); + + // Draw some loading text over the top + QFont loading_font(font()); + loading_font.setBold(true); + QFontMetrics loading_font_metrics(loading_font); + + const QString loading_text = tr("Loading..."); + const QSize loading_size( + kLoadingPadding*2 + loading_font_metrics.width(loading_text), + kLoadingPadding*2 + loading_font_metrics.height()); + const QRect loading_rect((blurred.width() - loading_size.width()) / 2, 100, + loading_size.width(), loading_size.height()); + + blur_painter.setRenderHint(QPainter::Antialiasing); + blur_painter.setRenderHint(QPainter::HighQualityAntialiasing); + + blur_painter.setPen(QColor(200, 200, 200, 255)); + blur_painter.setBrush(QColor(200, 200, 200, 192)); + blur_painter.drawRoundedRect(loading_rect, kLoadingBorderRadius, kLoadingBorderRadius); + + blur_painter.setPen(palette().brush(QPalette::Text).color()); + blur_painter.setFont(loading_font); + blur_painter.drawText(loading_rect, Qt::AlignCenter, loading_text); + blur_painter.end(); blurred_pixmap_ = QPixmap::fromImage(blurred); diff --git a/src/widgets/widgetfadehelper.h b/src/widgets/widgetfadehelper.h index d69a28d63..c0c44fd91 100644 --- a/src/widgets/widgetfadehelper.h +++ b/src/widgets/widgetfadehelper.h @@ -39,6 +39,9 @@ private slots: void FadeFinished(); private: + static const int kLoadingPadding; + static const int kLoadingBorderRadius; + QWidget* parent_; QTimeLine* blur_timeline_; QTimeLine* fade_timeline_;