diff --git a/gui/infopage.cpp b/gui/infopage.cpp
index 49c52c019..51185aff5 100644
--- a/gui/infopage.cpp
+++ b/gui/infopage.cpp
@@ -92,7 +92,7 @@ void InfoPage::update(const Song &s, bool force)
if (currentSong.isEmpty()) {
text->setText(QString());
} else {
- text->setHtml("Retrieving...");
+ text->setHtml("Retrieving...", true);
Song s;
s.albumartist=currentSong.artist;
diff --git a/lyrics/lyricspage.cpp b/lyrics/lyricspage.cpp
index 767e24f6d..6fd36fac2 100644
--- a/lyrics/lyricspage.cpp
+++ b/lyrics/lyricspage.cpp
@@ -378,10 +378,10 @@ void LyricsPage::getLyrics()
UltimateLyricsProvider *prov=UltimateLyrics::self()->getNext(currentProvider);
if (prov) {
text->setText(i18nc("
by \nFetching lyrics via ", "%1 by %2\nFetching lyrics via %3")
- .arg(currentSong.title).arg(currentSong.artist, prov->getName()));
+ .arg(currentSong.title).arg(currentSong.artist, prov->getName()), true);
prov->fetchInfo(currentRequest, currentSong);
} else {
- text->setText(i18nc(" by \nFailed\n", "%1 by %2\nFailed to fetch lyrics").arg(currentSong.title).arg(currentSong.artist));
+ text->setText(i18nc(" by \nFailed\n", "%1 by %2\nFailed to fetch lyrics").arg(currentSong.title).arg(currentSong.artist), true);
currentProvider=-1;
// Set lyrics file anyway - so that editing is enabled!
lyricsFile=Settings::self()->storeLyricsInMpdDir()
diff --git a/widgets/textbrowser.cpp b/widgets/textbrowser.cpp
index 8d4e55b4e..de781a130 100644
--- a/widgets/textbrowser.cpp
+++ b/widgets/textbrowser.cpp
@@ -22,6 +22,7 @@
*/
#include "textbrowser.h"
+#include "spinner.h"
#include
#include
@@ -108,6 +109,7 @@ static void toGray(QImage &img)
TextBrowser::TextBrowser(QWidget *p)
: QTextBrowser(p)
, drawImage(false)
+ , spinner(0)
{
orig=font().pointSize();
if (-1==minSize) {
@@ -168,3 +170,41 @@ void TextBrowser::paintEvent(QPaintEvent *e)
QTextBrowser::paintEvent(e);
}
+
+void TextBrowser::setHtml(const QString &txt, bool showSpin)
+{
+ QTextBrowser::setHtml(txt);
+ if (showSpin) {
+ showSpiner();
+ } else {
+ hideSpinner();
+ }
+}
+
+void TextBrowser::setText(const QString &txt, bool showSpin)
+{
+ QTextBrowser::setText(txt);
+ if (showSpin) {
+ showSpiner();
+ } else {
+ hideSpinner();
+ }
+}
+
+void TextBrowser::showSpiner()
+{
+ if (!spinner) {
+ spinner=new Spinner(this);
+ spinner->setWidget(this);
+ }
+ if (!spinner->isActive()) {
+ spinner->start();
+ }
+}
+
+void TextBrowser::hideSpinner()
+{
+ if (spinner) {
+ spinner->stop();
+ }
+}
diff --git a/widgets/textbrowser.h b/widgets/textbrowser.h
index ea392f942..8b7322251 100644
--- a/widgets/textbrowser.h
+++ b/widgets/textbrowser.h
@@ -27,6 +27,7 @@
#include
#include
#include
+class Spinner;
class TextBrowser : public QTextBrowser
{
@@ -40,11 +41,16 @@ public:
void enableImage(bool e);
bool imageEnabled() { return drawImage; }
void paintEvent(QPaintEvent *e);
+ void setHtml(const QString &txt, bool showSpin=false);
+ void setText(const QString &txt, bool showSpin=false);
+ void showSpiner();
+ void hideSpinner();
private:
int orig;
QImage image;
bool drawImage;
+ Spinner *spinner;
};
#endif