From 6fc0bdd9887469c041ea70ff820dab2b6b72a414 Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Mon, 4 Dec 2023 07:49:35 +0100 Subject: [PATCH] add automatic downscaling to prevent horizontal scrollbar for no-web-engine article viewer --- README.md | 2 +- .../gui/mediaplayer/libmpv/libmpvbackend.cpp | 5 +++- .../gui/settings/settingsmediaplayer.cpp | 6 +++-- .../qtextbrowser/textbrowserviewer.cpp | 23 +++++++++++++++---- 4 files changed, 27 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 6af312076..d8629a908 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ RSS Guard is a simple RSS/ATOM feed reader for Windows, Linux, BSD, OS/2 or macO * [Nextcloud News](https://apps.nextcloud.com/apps/news) * [Tiny Tiny RSS](https://tt-rss.org) -RSS Guard is also podcast player as it can play everything via its built-in `mpv-based` media player. +RSS Guard is also podcast player as it can play everything via its built-in `mpv`-based (or `ffmpeg`-based) media player. ![RSS Guard](resources/graphics/official_pictures/main-window-linux.png) diff --git a/src/librssguard/gui/mediaplayer/libmpv/libmpvbackend.cpp b/src/librssguard/gui/mediaplayer/libmpv/libmpvbackend.cpp index 2680b62a6..4226b2426 100644 --- a/src/librssguard/gui/mediaplayer/libmpv/libmpvbackend.cpp +++ b/src/librssguard/gui/mediaplayer/libmpv/libmpvbackend.cpp @@ -85,11 +85,14 @@ LibMpvBackend::LibMpvBackend(Application* app, QWidget* parent) mpv_set_option_string(m_mpvHandle, "save-position-on-quit", "no"); mpv_set_option_string(m_mpvHandle, "no-resume-playback", "yes"); +#if !defined(NDEBUG) + mpv_set_option_string(m_mpvHandle, "terminal", "yes"); +#endif + // // NOTE: Just random options for testing here. // // mpv_set_option_string(m_mpvHandle, "keep-open", "no"); - // mpv_set_option_string(m_mpvHandle, "terminal", "yes"); // mpv_set_option_string(m_mpvHandle, "osd-italic", "yes"); // mpv_set_option_string(m_mpvHandle, "osd-color", "1.0/0.0/0.0"); // mpv_set_option_string(m_mpvHandle, "watch-later-dir", "mpv"); diff --git a/src/librssguard/gui/settings/settingsmediaplayer.cpp b/src/librssguard/gui/settings/settingsmediaplayer.cpp index 5529078ce..f41371bff 100644 --- a/src/librssguard/gui/settings/settingsmediaplayer.cpp +++ b/src/librssguard/gui/settings/settingsmediaplayer.cpp @@ -35,8 +35,10 @@ void SettingsMediaPlayer::loadSettings() { m_ui.m_gbMpvCustomConfigFolder ->setChecked(settings()->value(GROUP(VideoPlayer), SETTING(VideoPlayer::MpvUseCustomConfigFolder)).toBool()); - m_ui.m_txtMpvConfigFolder - ->setText(settings()->value(GROUP(VideoPlayer), SETTING(VideoPlayer::MpvCustomConfigFolder)).toString()); + m_ui.m_txtMpvConfigFolder->setText(QDir::toNativeSeparators(settings() + ->value(GROUP(VideoPlayer), + SETTING(VideoPlayer::MpvCustomConfigFolder)) + .toString())); #elif defined(ENABLE_MEDIAPLAYER_QTMULTIMEDIA) m_ui.m_txtBackend->setText(QSL("QtMultimedia")); m_ui.m_helpInfo->setHelpText(tr("You use lightweight QtMultimedia-based media player backend. If some videos do not " diff --git a/src/librssguard/gui/webviewers/qtextbrowser/textbrowserviewer.cpp b/src/librssguard/gui/webviewers/qtextbrowser/textbrowserviewer.cpp index e140662f0..808f019b3 100644 --- a/src/librssguard/gui/webviewers/qtextbrowser/textbrowserviewer.cpp +++ b/src/librssguard/gui/webviewers/qtextbrowser/textbrowserviewer.cpp @@ -69,13 +69,25 @@ QVariant TextBrowserViewer::loadOneResource(int type, const QUrl& name) { // Resources are enabled and we already have the resource. QByteArray resource_data = m_loadedResources.value(resolved_name); + QImage img; if (resource_data.isEmpty()) { - return m_placeholderImageError; + img = m_placeholderImageError.toImage(); } else { - return QImage::fromData(m_loadedResources.value(resolved_name)); + img = QImage::fromData(m_loadedResources.value(resolved_name)); } + + int acceptable_width = int(width() * 0.9); + + if (img.width() > acceptable_width) { + qWarningNN << LOGSEC_GUI << "Picture" << QUOTE_W_SPACE(name) + << "is too wide, down-scaling to prevent horizontal scrollbars."; + + img = img.scaledToWidth(acceptable_width); + } + + return img; } void TextBrowserViewer::bindToBrowser(WebBrowser* browser) { @@ -202,6 +214,9 @@ void TextBrowserViewer::loadMessages(const QList& messages, RootItem* r int found_width = exp_match.captured(1).toInt(); if (found_width > acceptable_width) { + qWarningNN << LOGSEC_GUI << "Element" << QUOTE_W_SPACE(exp_match.captured()) + << "is too wide, setting smaller value to prevent horizontal scrollbars."; + html_messages.m_html = html_messages.m_html.replace(exp_match.capturedStart(1), exp_match.capturedLength(1), QString::number(acceptable_width)); @@ -215,11 +230,9 @@ void TextBrowserViewer::loadMessages(const QList& messages, RootItem* r html_messages.m_html = html_messages.m_html.replace(exp_symbols, QString()); - /* #if !defined(NDEBUG) - IOFactory::writeFile("aaa.html", html_messages.m_html.toUtf8()); + // IOFactory::writeFile("aaa.html", html_messages.m_html.toUtf8()); #endif - */ setHtml(html_messages.m_html, html_messages.m_baseUrl);