diff --git a/src/songinfo/echonestbiographies.cpp b/src/songinfo/echonestbiographies.cpp index f6e2cd72c..5a43570d2 100644 --- a/src/songinfo/echonestbiographies.cpp +++ b/src/songinfo/echonestbiographies.cpp @@ -87,7 +87,7 @@ void EchoNestBiographies::RequestFinished() { data.icon_ = site_icons_[canonical_site]; SongInfoTextView* editor = new SongInfoTextView; - editor->setHtml(bio.text()); + editor->SetHtml(bio.text()); data.contents_ = editor; emit InfoReady(request->id_, data); diff --git a/src/songinfo/lastfmtrackinfoprovider.cpp b/src/songinfo/lastfmtrackinfoprovider.cpp index b34bf1ee0..18984223a 100644 --- a/src/songinfo/lastfmtrackinfoprovider.cpp +++ b/src/songinfo/lastfmtrackinfoprovider.cpp @@ -122,7 +122,7 @@ void LastfmTrackInfoProvider::GetWiki(int id, const lastfm::XmlQuery& q) { SongInfoTextView* widget = new SongInfoTextView; data.contents_ = widget; - widget->setHtml(content); + widget->SetHtml(content); emit InfoReady(id, data); } diff --git a/src/songinfo/songinfotextview.cpp b/src/songinfo/songinfotextview.cpp index 6c8530a7f..7fa8db380 100644 --- a/src/songinfo/songinfotextview.cpp +++ b/src/songinfo/songinfotextview.cpp @@ -20,6 +20,7 @@ #include #include #include +#include const qreal SongInfoTextView::kDefaultFontSize = 8.5; const char* SongInfoTextView::kSettingsGroup = "SongInfo"; @@ -73,3 +74,16 @@ void SongInfoTextView::contextMenuEvent(QContextMenuEvent* e) { menu->popup(e->globalPos()); } + +void SongInfoTextView::SetHtml(const QString& html) { + QString copy(html.trimmed()); + + // Simplify newlines, and convert them to

+ copy.replace(QRegExp("[\\r\\n]+"), "\n"); + copy.replace(QRegExp("([^>])[\\t ]*\\n"), "\\1

"); + + // Strip any newlines from the end + copy.replace(QRegExp("((<\\s*br\\s*/?\\s*>)|(<\\s*/?\\s*p\\s*/?\\s*>))+$"), ""); + + setHtml(copy); +} diff --git a/src/songinfo/songinfotextview.h b/src/songinfo/songinfotextview.h index 4af2bb43d..1e59f8c1b 100644 --- a/src/songinfo/songinfotextview.h +++ b/src/songinfo/songinfotextview.h @@ -32,6 +32,7 @@ public: public slots: void ReloadSettings(); + void SetHtml(const QString& html); signals: void ShowSettingsDialog(); diff --git a/src/songinfo/ultimatelyricsprovider.cpp b/src/songinfo/ultimatelyricsprovider.cpp index 7f806b9aa..b973afffb 100644 --- a/src/songinfo/ultimatelyricsprovider.cpp +++ b/src/songinfo/ultimatelyricsprovider.cpp @@ -122,7 +122,7 @@ void UltimateLyricsProvider::LyricsFetched(quint64 id, QNetworkReply* reply) { data.relevance_ = relevance(); SongInfoTextView* editor = new SongInfoTextView; - editor->setHtml(lyrics); + editor->SetHtml(lyrics); data.contents_ = editor; emit InfoReady(id, data);