From de8b65bdec5a97a6f97cbd65f72d7d861e7d0ba4 Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Thu, 30 Nov 2023 12:01:38 +0100 Subject: [PATCH] added icon to setting sections --- resources/icons.qrc | 31 +++++++++++++ src/librssguard/gui/dialogs/formsettings.cpp | 7 ++- .../gui/mediaplayer/libmpv/libmpvbackend.cpp | 17 +++++-- .../gui/mediaplayer/libmpv/libmpvbackend.h | 3 +- .../gui/mediaplayer/mediaplayer.cpp | 4 +- .../gui/mediaplayer/mediaplayer.ui | 2 +- .../gui/mediaplayer/playerbackend.cpp | 5 +- .../gui/mediaplayer/playerbackend.h | 6 ++- .../gui/settings/settingsbrowsermail.cpp | 4 ++ .../gui/settings/settingsbrowsermail.h | 1 + .../gui/settings/settingsdatabase.cpp | 5 ++ .../gui/settings/settingsdatabase.h | 3 +- .../gui/settings/settingsdownloads.cpp | 34 +++++++++----- .../gui/settings/settingsdownloads.h | 3 +- .../gui/settings/settingsfeedsmessages.cpp | 4 ++ .../gui/settings/settingsfeedsmessages.h | 3 +- .../gui/settings/settingsgeneral.cpp | 5 ++ .../gui/settings/settingsgeneral.h | 3 +- src/librssguard/gui/settings/settingsgui.cpp | 4 ++ src/librssguard/gui/settings/settingsgui.h | 4 +- .../gui/settings/settingslocalization.cpp | 4 ++ .../gui/settings/settingslocalization.h | 3 +- .../gui/settings/settingsmediaplayer.cpp | 31 +++++++++++++ .../gui/settings/settingsmediaplayer.h | 1 + .../gui/settings/settingsmediaplayer.ui | 46 +++++++++++++++++-- .../gui/settings/settingsnodejs.cpp | 5 ++ src/librssguard/gui/settings/settingsnodejs.h | 3 +- .../gui/settings/settingsnotifications.cpp | 5 ++ .../gui/settings/settingsnotifications.h | 1 + src/librssguard/gui/settings/settingspanel.h | 3 +- .../gui/settings/settingsshortcuts.cpp | 5 ++ .../gui/settings/settingsshortcuts.h | 3 +- src/librssguard/miscellaneous/settings.cpp | 9 ++++ src/librssguard/miscellaneous/settings.h | 10 ++++ 34 files changed, 241 insertions(+), 36 deletions(-) diff --git a/resources/icons.qrc b/resources/icons.qrc index ec6dfadc8..10af738bc 100644 --- a/resources/icons.qrc +++ b/resources/icons.qrc @@ -14,6 +14,7 @@ ./graphics/Breeze/actions/32/arrow-up-double.svg ./graphics/Breeze/status/22/audio-volume-muted.svg ./graphics/Breeze/actions/32/call-start.svg + ./graphics/Breeze/actions/32/configure-shortcuts.svg ./graphics/Breeze/actions/32/dialog-cancel.svg ./graphics/Breeze/actions/22/dialog-close.svg ./graphics/Breeze/status/64/dialog-error.svg @@ -28,7 +29,9 @@ ./graphics/Breeze/actions/32/document-open.svg ./graphics/Breeze/actions/32/document-revert.svg ./graphics/Breeze/actions/22/download.svg + ./graphics/Breeze/actions/48/draw-freehand.svg ./graphics/Breeze/actions/22/draw-line.svg + ./graphics/Breeze/actions/22/draw-star.svg ./graphics/Breeze/actions/22/edit-clear.svg ./graphics/Breeze/actions/22/edit-copy.svg ./graphics/Breeze/actions/22/edit-cut.svg @@ -41,6 +44,7 @@ ./graphics/Breeze/emblems/22/emblem-favorite.svg ./graphics/Breeze/emblems/22/emblem-shared.svg ./graphics/Breeze/places/96/folder.svg + ./graphics/Breeze/places/64/folder-database.svg ./graphics/Breeze/actions/22/format-indent-less.svg ./graphics/Breeze/actions/22/format-indent-more.svg ./graphics/Breeze/actions/22/format-justify-fill.svg @@ -65,6 +69,9 @@ ./graphics/Breeze/mimetypes/64/image-x-generic.svg ./graphics/Breeze/actions/22/insert-link.svg ./graphics/Breeze/actions/22/insert-page-break.svg + ./graphics/Breeze/actions/22/internet-services.svg + ./graphics/Breeze/apps/48/kmplayer.svg + ./graphics/Breeze/mimetypes/64/libreoffice-database.svg ./graphics/Breeze/actions/22/list-add.svg ./graphics/Breeze/actions/22/list-remove.svg ./graphics/Breeze/actions/32/mail-attachment.svg @@ -81,9 +88,13 @@ ./graphics/Breeze/actions/32/media-playback-pause.svg ./graphics/Breeze/actions/32/media-playback-start.svg ./graphics/Breeze/actions/32/media-playback-stop.svg + ./graphics/Breeze/actions/22/node.svg + ./graphics/Breeze/actions/22/node-join.svg + ./graphics/Breeze/actions/22/notifications.svg ./graphics/Breeze/actions/22/player-volume.svg ./graphics/Breeze/actions/22/player-volume-muted.svg ./graphics/Breeze/actions/22/process-stop.svg + ./graphics/Breeze/apps/48/smplayer.svg ./graphics/Breeze/actions/22/system-search.svg ./graphics/Breeze/actions/22/system-upgrade.svg ./graphics/Breeze/actions/22/tab-new.svg @@ -91,6 +102,7 @@ ./graphics/Breeze/actions/22/tag-new.svg ./graphics/Breeze/actions/22/tag-properties.svg ./graphics/Breeze/mimetypes/64/text-html.svg + ./graphics/Breeze/mimetypes/64/text-x-gettext-translation.svg ./graphics/Breeze/places/96/user-trash.svg ./graphics/Breeze/actions/22/view-fullscreen.svg ./graphics/Breeze/actions/22/viewimage.svg @@ -113,6 +125,7 @@ ./graphics/Breeze Dark/actions/32/arrow-up-double.svg ./graphics/Breeze Dark/status/22/audio-volume-muted.svg ./graphics/Breeze Dark/actions/32/call-start.svg + ./graphics/Breeze Dark/actions/32/configure-shortcuts.svg ./graphics/Breeze Dark/actions/32/dialog-cancel.svg ./graphics/Breeze Dark/actions/22/dialog-close.svg ./graphics/Breeze Dark/status/64/dialog-error.svg @@ -127,7 +140,9 @@ ./graphics/Breeze Dark/actions/32/document-open.svg ./graphics/Breeze Dark/actions/32/document-revert.svg ./graphics/Breeze Dark/actions/22/download.svg + ./graphics/Breeze Dark/actions/48/draw-freehand.svg ./graphics/Breeze Dark/actions/22/draw-line.svg + ./graphics/Breeze Dark/actions/22/draw-star.svg ./graphics/Breeze Dark/actions/22/edit-clear.svg ./graphics/Breeze Dark/actions/22/edit-copy.svg ./graphics/Breeze Dark/actions/22/edit-cut.svg @@ -140,6 +155,7 @@ ./graphics/Breeze Dark/emblems/22/emblem-favorite.svg ./graphics/Breeze Dark/emblems/22/emblem-shared.svg ./graphics/Breeze Dark/places/96/folder.svg + ./graphics/Breeze Dark/places/64/folder-database.svg ./graphics/Breeze Dark/actions/22/format-indent-less.svg ./graphics/Breeze Dark/actions/22/format-indent-more.svg ./graphics/Breeze Dark/actions/22/format-justify-fill.svg @@ -164,6 +180,9 @@ ./graphics/Breeze Dark/mimetypes/64/image-x-generic.svg ./graphics/Breeze Dark/actions/22/insert-link.svg ./graphics/Breeze Dark/actions/22/insert-page-break.svg + ./graphics/Breeze Dark/actions/22/internet-services.svg + ./graphics/Breeze Dark/apps/48/kmplayer.svg + ./graphics/Breeze Dark/mimetypes/64/libreoffice-database.svg ./graphics/Breeze Dark/actions/22/list-add.svg ./graphics/Breeze Dark/actions/22/list-remove.svg ./graphics/Breeze Dark/actions/32/mail-attachment.svg @@ -180,9 +199,13 @@ ./graphics/Breeze Dark/actions/32/media-playback-pause.svg ./graphics/Breeze Dark/actions/32/media-playback-start.svg ./graphics/Breeze Dark/actions/32/media-playback-stop.svg + ./graphics/Breeze Dark/actions/22/node.svg + ./graphics/Breeze Dark/actions/22/node-join.svg + ./graphics/Breeze Dark/actions/22/notifications.svg ./graphics/Breeze Dark/actions/22/player-volume.svg ./graphics/Breeze Dark/actions/22/player-volume-muted.svg ./graphics/Breeze Dark/actions/22/process-stop.svg + ./graphics/Breeze Dark/apps/48/smplayer.svg ./graphics/Breeze Dark/actions/22/system-search.svg ./graphics/Breeze Dark/actions/22/system-upgrade.svg ./graphics/Breeze Dark/actions/22/tab-new.svg @@ -190,6 +213,7 @@ ./graphics/Breeze Dark/actions/22/tag-new.svg ./graphics/Breeze Dark/actions/22/tag-properties.svg ./graphics/Breeze Dark/mimetypes/64/text-html.svg + ./graphics/Breeze Dark/mimetypes/64/text-x-gettext-translation.svg ./graphics/Breeze Dark/places/96/user-trash.svg ./graphics/Breeze Dark/actions/22/view-fullscreen.svg ./graphics/Breeze Dark/actions/22/viewimage.svg @@ -254,6 +278,7 @@ ./graphics/Faenza/mimetypes/64/image-x-generic.png ./graphics/Faenza/actions/64/insert-link.png ./graphics/Faenza/actions/64/insert-object.png + ./graphics/Faenza/devices/64/keyboard.png ./graphics/Faenza/actions/64/list-add.png ./graphics/Faenza/actions/64/list-remove.png ./graphics/Faenza/actions/64/mail-attachment.png @@ -317,6 +342,7 @@ ./graphics/Numix/22/actions/document-revert.svg ./graphics/Numix/22/actions/down.svg ./graphics/Numix/22/actions/download.svg + ./graphics/Numix/22/actions/draw-freehand.svg ./graphics/Numix/22/actions/edit-clear.svg ./graphics/Numix/22/actions/edit-copy.svg ./graphics/Numix/22/actions/edit-cut.svg @@ -350,6 +376,9 @@ ./graphics/Numix/22/mimetypes/image-x-generic.svg ./graphics/Numix/22/actions/insert-link.svg ./graphics/Numix/22/actions/insert-object.svg + ./graphics/Numix/22/actions/internet-services.svg + ./graphics/Numix/22/status/keyboard.svg + ./graphics/Numix/22/mimetypes/libreoffice-database.svg ./graphics/Numix/22/actions/list-add.svg ./graphics/Numix/22/actions/list-remove.svg ./graphics/Numix/22/actions/mail-attachment.svg @@ -366,6 +395,7 @@ ./graphics/Numix/22/actions/media-playback-pause.svg ./graphics/Numix/22/actions/media-playback-start.svg ./graphics/Numix/22/actions/media-playback-stop.svg + ./graphics/Numix/22/actions/node-join.svg ./graphics/Numix/22/actions/process-stop.svg ./graphics/Numix/22/actions/reload.svg ./graphics/Numix/22/actions/system-search.svg @@ -375,6 +405,7 @@ ./graphics/Numix/22/actions/tag-new.svg ./graphics/Numix/22/actions/tag-properties.svg ./graphics/Numix/22/mimetypes/text-html.svg + ./graphics/Numix/22/mimetypes/text-x-gettext-translation.svg ./graphics/Numix/22/actions/up.svg ./graphics/Numix/22/places/user-trash.svg ./graphics/Numix/22/actions/view-fullscreen.svg diff --git a/src/librssguard/gui/dialogs/formsettings.cpp b/src/librssguard/gui/dialogs/formsettings.cpp index e212927fe..bed5c7de2 100644 --- a/src/librssguard/gui/dialogs/formsettings.cpp +++ b/src/librssguard/gui/dialogs/formsettings.cpp @@ -150,7 +150,12 @@ void FormSettings::cancelSettings() { } void FormSettings::addSettingsPanel(SettingsPanel* panel) { - m_ui.m_listSettings->addItem(panel->title()); + QListWidgetItem* itm = new QListWidgetItem(m_ui.m_listSettings); + + itm->setText(panel->title()); + itm->setIcon(panel->icon()); + + // m_ui.m_listSettings->addItem(itm); m_panels.append(panel); QScrollArea* scr = new QScrollArea(m_ui.m_stackedSettings); diff --git a/src/librssguard/gui/mediaplayer/libmpv/libmpvbackend.cpp b/src/librssguard/gui/mediaplayer/libmpv/libmpvbackend.cpp index b4d6ba041..1751f04b0 100644 --- a/src/librssguard/gui/mediaplayer/libmpv/libmpvbackend.cpp +++ b/src/librssguard/gui/mediaplayer/libmpv/libmpvbackend.cpp @@ -5,6 +5,7 @@ #include "3rd-party/boolinq/boolinq.h" #include "definitions/definitions.h" #include "gui/mediaplayer/libmpv/qthelper.h" +#include "miscellaneous/settings.h" #include #include @@ -36,9 +37,10 @@ static void wakeup(void* ctx) { emit backend->launchMpvEvents(); } -LibMpvBackend::LibMpvBackend(QWidget* parent) - : PlayerBackend(parent), m_mpvContainer(new QWidget(this)), m_mpvHandle(nullptr) { +LibMpvBackend::LibMpvBackend(Application* app, QWidget* parent) + : PlayerBackend(app, parent), m_mpvContainer(new QWidget(this)), m_mpvHandle(nullptr) { installEventFilter(this); + loadSettings(); m_mpvHandle = mpv_create(); @@ -84,9 +86,12 @@ LibMpvBackend::LibMpvBackend(QWidget* parent) mpv_set_option_string(m_mpvHandle, "terminal", "yes"); #endif + // 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"); - // mpv_set_option_string(m_mpvHandle, "config-dir", "mpv"); + mpv_set_option_string(m_mpvHandle, "config-dir", "mpv"); // mpv_set_option_string(m_mpvHandle, "input-builtin-bindings", "no"); // mpv_set_option_string(m_mpvHandle, "input-test", "yes"); @@ -129,6 +134,8 @@ void LibMpvBackend::destroyHandle() { } } +void LibMpvBackend::loadSettings() {} + LibMpvBackend::~LibMpvBackend() { destroyHandle(); } @@ -469,6 +476,10 @@ bool LibMpvBackend::eventFilter(QObject* watched, QEvent* event) { } void LibMpvBackend::playUrl(const QUrl& url) { + char* str; + + mpv_get_property(m_mpvHandle, "ytdl_path", MPV_FORMAT_STRING, &str); + m_url = url; if (m_mpvHandle != nullptr) { diff --git a/src/librssguard/gui/mediaplayer/libmpv/libmpvbackend.h b/src/librssguard/gui/mediaplayer/libmpv/libmpvbackend.h index 8f4e55b4d..7af3eabb1 100644 --- a/src/librssguard/gui/mediaplayer/libmpv/libmpvbackend.h +++ b/src/librssguard/gui/mediaplayer/libmpv/libmpvbackend.h @@ -11,7 +11,7 @@ class LibMpvBackend : public PlayerBackend { Q_OBJECT public: - explicit LibMpvBackend(QWidget* parent = nullptr); + explicit LibMpvBackend(Application* app, QWidget* parent = nullptr); virtual ~LibMpvBackend(); public: @@ -54,6 +54,7 @@ class LibMpvBackend : public PlayerBackend { QString errorToString(mpv_error error) const; void destroyHandle(); + void loadSettings(); private: QWidget* m_mpvContainer; diff --git a/src/librssguard/gui/mediaplayer/mediaplayer.cpp b/src/librssguard/gui/mediaplayer/mediaplayer.cpp index 128d53e0a..6fde53a1b 100644 --- a/src/librssguard/gui/mediaplayer/mediaplayer.cpp +++ b/src/librssguard/gui/mediaplayer/mediaplayer.cpp @@ -15,9 +15,9 @@ MediaPlayer::MediaPlayer(QWidget* parent) : TabContent(parent), m_backend( #if defined(ENABLE_MEDIAPLAYER_QTMULTIMEDIA) - new QtMultimediaBackend(this) + new QtMultimediaBackend(qApp, this) #else - new LibMpvBackend(this) + new LibMpvBackend(qApp, this) #endif ), m_muted(false) { diff --git a/src/librssguard/gui/mediaplayer/mediaplayer.ui b/src/librssguard/gui/mediaplayer/mediaplayer.ui index 459be3cb3..446eb5f0f 100644 --- a/src/librssguard/gui/mediaplayer/mediaplayer.ui +++ b/src/librssguard/gui/mediaplayer/mediaplayer.ui @@ -159,7 +159,7 @@ - Download + Switch fullscreen mode diff --git a/src/librssguard/gui/mediaplayer/playerbackend.cpp b/src/librssguard/gui/mediaplayer/playerbackend.cpp index bae6d31e8..0f1184bb3 100644 --- a/src/librssguard/gui/mediaplayer/playerbackend.cpp +++ b/src/librssguard/gui/mediaplayer/playerbackend.cpp @@ -2,9 +2,12 @@ #include "gui/mediaplayer/playerbackend.h" +#include "miscellaneous/application.h" + #include -PlayerBackend::PlayerBackend(QWidget* parent) : QWidget(parent), m_mainLayout(new QVBoxLayout(this)) { +PlayerBackend::PlayerBackend(Application* app, QWidget* parent) + : QWidget(parent), m_app(app), m_mainLayout(new QVBoxLayout(this)) { m_mainLayout->setSpacing(0); m_mainLayout->setContentsMargins({0, 0, 0, 0}); } diff --git a/src/librssguard/gui/mediaplayer/playerbackend.h b/src/librssguard/gui/mediaplayer/playerbackend.h index 4df9a5107..334e7305a 100644 --- a/src/librssguard/gui/mediaplayer/playerbackend.h +++ b/src/librssguard/gui/mediaplayer/playerbackend.h @@ -8,6 +8,7 @@ #include class QVBoxLayout; +class Application; class PlayerBackend : public QWidget { Q_OBJECT @@ -19,7 +20,7 @@ class PlayerBackend : public QWidget { PausedState }; - explicit PlayerBackend(QWidget* parent = nullptr); + explicit PlayerBackend(Application* app, QWidget* parent = nullptr); virtual QUrl url() const = 0; virtual int position() const = 0; @@ -53,7 +54,8 @@ class PlayerBackend : public QWidget { virtual void setVolume(int volume) = 0; virtual void setPosition(int position) = 0; - signals: + protected: + Application* m_app; private: QVBoxLayout* m_mainLayout; diff --git a/src/librssguard/gui/settings/settingsbrowsermail.cpp b/src/librssguard/gui/settings/settingsbrowsermail.cpp index 007e9a118..1088465a5 100644 --- a/src/librssguard/gui/settings/settingsbrowsermail.cpp +++ b/src/librssguard/gui/settings/settingsbrowsermail.cpp @@ -95,6 +95,10 @@ SettingsBrowserMail::~SettingsBrowserMail() { delete m_ui; } +QIcon SettingsBrowserMail::icon() const { + return qApp->icons()->fromTheme(QSL("applications-internet"), QSL("internet-services")); +} + void SettingsBrowserMail::changeDefaultBrowserArguments(int index) { if (index != 0) { m_ui->m_txtExternalBrowserArguments->setText(m_ui->m_cmbExternalBrowserPreset->itemData(index).toString()); diff --git a/src/librssguard/gui/settings/settingsbrowsermail.h b/src/librssguard/gui/settings/settingsbrowsermail.h index bb124433d..af8fef47c 100644 --- a/src/librssguard/gui/settings/settingsbrowsermail.h +++ b/src/librssguard/gui/settings/settingsbrowsermail.h @@ -18,6 +18,7 @@ class SettingsBrowserMail : public SettingsPanel { explicit SettingsBrowserMail(Settings* settings, QWidget* parent = nullptr); virtual ~SettingsBrowserMail(); + virtual QIcon icon() const; virtual QString title() const; virtual void loadSettings(); virtual void saveSettings(); diff --git a/src/librssguard/gui/settings/settingsdatabase.cpp b/src/librssguard/gui/settings/settingsdatabase.cpp index 47ad2b3b7..12b7b82ce 100644 --- a/src/librssguard/gui/settings/settingsdatabase.cpp +++ b/src/librssguard/gui/settings/settingsdatabase.cpp @@ -6,6 +6,7 @@ #include "database/mariadbdriver.h" #include "definitions/definitions.h" #include "miscellaneous/application.h" +#include "miscellaneous/iconfactory.h" #include "miscellaneous/settings.h" SettingsDatabase::SettingsDatabase(Settings* settings, QWidget* parent) @@ -88,6 +89,10 @@ SettingsDatabase::~SettingsDatabase() { delete m_ui; } +QIcon SettingsDatabase::icon() const { + return qApp->icons()->fromTheme(QSL("folder-database"), QSL("libreoffice-database")); +} + void SettingsDatabase::mysqlTestConnection() { MariaDbDriver* driv = static_cast(qApp->database()->driver()); const MariaDbDriver::MariaDbError error_code = driv->testConnection(m_ui->m_txtMysqlHostname->lineEdit()->text(), diff --git a/src/librssguard/gui/settings/settingsdatabase.h b/src/librssguard/gui/settings/settingsdatabase.h index a5b655af9..dd74ae663 100644 --- a/src/librssguard/gui/settings/settingsdatabase.h +++ b/src/librssguard/gui/settings/settingsdatabase.h @@ -8,12 +8,13 @@ #include "ui_settingsdatabase.h" class SettingsDatabase : public SettingsPanel { - Q_OBJECT + Q_OBJECT public: explicit SettingsDatabase(Settings* settings, QWidget* parent = nullptr); virtual ~SettingsDatabase(); + virtual QIcon icon() const; virtual QString title() const; virtual void loadSettings(); virtual void saveSettings(); diff --git a/src/librssguard/gui/settings/settingsdownloads.cpp b/src/librssguard/gui/settings/settingsdownloads.cpp index 94ac4d8fc..573ce3c04 100644 --- a/src/librssguard/gui/settings/settingsdownloads.cpp +++ b/src/librssguard/gui/settings/settingsdownloads.cpp @@ -3,6 +3,7 @@ #include "gui/settings/settingsdownloads.h" #include "miscellaneous/application.h" +#include "miscellaneous/iconfactory.h" #include "miscellaneous/settings.h" #include "network-web/downloadmanager.h" @@ -14,18 +15,24 @@ SettingsDownloads::SettingsDownloads(Settings* settings, QWidget* parent) connect(m_ui->m_checkOpenManagerWhenDownloadStarts, &QCheckBox::toggled, this, &SettingsDownloads::dirtifySettings); connect(m_ui->m_txtDownloadsTargetDirectory, &QLineEdit::textChanged, this, &SettingsDownloads::dirtifySettings); connect(m_ui->m_rbDownloadsAskEachFile, &QRadioButton::toggled, this, &SettingsDownloads::dirtifySettings); - connect(m_ui->m_btnDownloadsTargetDirectory, &QPushButton::clicked, this, &SettingsDownloads::selectDownloadsDirectory); + connect(m_ui->m_btnDownloadsTargetDirectory, + &QPushButton::clicked, + this, + &SettingsDownloads::selectDownloadsDirectory); } SettingsDownloads::~SettingsDownloads() { delete m_ui; } +QIcon SettingsDownloads::icon() const { + return qApp->icons()->fromTheme(QSL("browser-downloads"), QSL("download")); +} + void SettingsDownloads::selectDownloadsDirectory() { const QString target_directory = QFileDialog::getExistingDirectory(this, tr("Select downloads target directory"), - m_ui->m_txtDownloadsTargetDirectory->text() - ); + m_ui->m_txtDownloadsTargetDirectory->text()); if (!target_directory.isEmpty()) { m_ui->m_txtDownloadsTargetDirectory->setText(QDir::toNativeSeparators(target_directory)); @@ -34,21 +41,26 @@ void SettingsDownloads::selectDownloadsDirectory() { void SettingsDownloads::loadSettings() { onBeginLoadSettings(); - m_ui->m_checkOpenManagerWhenDownloadStarts->setChecked(settings()->value(GROUP(Downloads), - SETTING(Downloads::ShowDownloadsWhenNewDownloadStarts)).toBool()); - m_ui->m_txtDownloadsTargetDirectory->setText(QDir::toNativeSeparators(settings()->value(GROUP(Downloads), - SETTING(Downloads::TargetDirectory)).toString())); - m_ui->m_rbDownloadsAskEachFile->setChecked(settings()->value(GROUP(Downloads), - SETTING(Downloads::AlwaysPromptForFilename)).toBool()); + m_ui->m_checkOpenManagerWhenDownloadStarts + ->setChecked(settings()->value(GROUP(Downloads), SETTING(Downloads::ShowDownloadsWhenNewDownloadStarts)).toBool()); + m_ui->m_txtDownloadsTargetDirectory->setText(QDir::toNativeSeparators(settings() + ->value(GROUP(Downloads), + SETTING(Downloads::TargetDirectory)) + .toString())); + m_ui->m_rbDownloadsAskEachFile + ->setChecked(settings()->value(GROUP(Downloads), SETTING(Downloads::AlwaysPromptForFilename)).toBool()); onEndLoadSettings(); } void SettingsDownloads::saveSettings() { onBeginSaveSettings(); - settings()->setValue(GROUP(Downloads), Downloads::ShowDownloadsWhenNewDownloadStarts, + settings()->setValue(GROUP(Downloads), + Downloads::ShowDownloadsWhenNewDownloadStarts, m_ui->m_checkOpenManagerWhenDownloadStarts->isChecked()); settings()->setValue(GROUP(Downloads), Downloads::TargetDirectory, m_ui->m_txtDownloadsTargetDirectory->text()); - settings()->setValue(GROUP(Downloads), Downloads::AlwaysPromptForFilename, m_ui->m_rbDownloadsAskEachFile->isChecked()); + settings()->setValue(GROUP(Downloads), + Downloads::AlwaysPromptForFilename, + m_ui->m_rbDownloadsAskEachFile->isChecked()); qApp->downloadManager()->setDownloadDirectory(m_ui->m_txtDownloadsTargetDirectory->text()); onEndSaveSettings(); } diff --git a/src/librssguard/gui/settings/settingsdownloads.h b/src/librssguard/gui/settings/settingsdownloads.h index a40ee5c3a..dc7d07bec 100644 --- a/src/librssguard/gui/settings/settingsdownloads.h +++ b/src/librssguard/gui/settings/settingsdownloads.h @@ -8,12 +8,13 @@ #include "ui_settingsdownloads.h" class SettingsDownloads : public SettingsPanel { - Q_OBJECT + Q_OBJECT public: explicit SettingsDownloads(Settings* settings, QWidget* parent = nullptr); virtual ~SettingsDownloads(); + virtual QIcon icon() const; virtual QString title() const; virtual void loadSettings(); virtual void saveSettings(); diff --git a/src/librssguard/gui/settings/settingsfeedsmessages.cpp b/src/librssguard/gui/settings/settingsfeedsmessages.cpp index f271cffac..626f15b5d 100644 --- a/src/librssguard/gui/settings/settingsfeedsmessages.cpp +++ b/src/librssguard/gui/settings/settingsfeedsmessages.cpp @@ -212,6 +212,10 @@ SettingsFeedsMessages::~SettingsFeedsMessages() { delete m_ui; } +QIcon SettingsFeedsMessages::icon() const { + return qApp->icons()->fromTheme(QSL("mail-mark-read")); +} + void SettingsFeedsMessages::initializeMessageDateFormats() { QStringList patterns = TextFactory::dateTimePatterns(); diff --git a/src/librssguard/gui/settings/settingsfeedsmessages.h b/src/librssguard/gui/settings/settingsfeedsmessages.h index ed2338121..468064f77 100644 --- a/src/librssguard/gui/settings/settingsfeedsmessages.h +++ b/src/librssguard/gui/settings/settingsfeedsmessages.h @@ -8,12 +8,13 @@ #include "ui_settingsfeedsmessages.h" class SettingsFeedsMessages : public SettingsPanel { - Q_OBJECT + Q_OBJECT public: explicit SettingsFeedsMessages(Settings* settings, QWidget* parent = nullptr); virtual ~SettingsFeedsMessages(); + virtual QIcon icon() const; virtual QString title() const; virtual void loadSettings(); virtual void saveSettings(); diff --git a/src/librssguard/gui/settings/settingsgeneral.cpp b/src/librssguard/gui/settings/settingsgeneral.cpp index ec1a91f7e..91bddc0de 100644 --- a/src/librssguard/gui/settings/settingsgeneral.cpp +++ b/src/librssguard/gui/settings/settingsgeneral.cpp @@ -3,6 +3,7 @@ #include "gui/settings/settingsgeneral.h" #include "miscellaneous/application.h" +#include "miscellaneous/iconfactory.h" #include "miscellaneous/settings.h" #include "miscellaneous/systemfactory.h" @@ -24,6 +25,10 @@ SettingsGeneral::~SettingsGeneral() { delete m_ui; } +QIcon SettingsGeneral::icon() const { + return qApp->icons()->fromTheme(QSL("applications-system"), QSL("emblem-system")); +} + void SettingsGeneral::loadSettings() { onBeginLoadSettings(); m_ui->m_checkForUpdatesOnStart diff --git a/src/librssguard/gui/settings/settingsgeneral.h b/src/librssguard/gui/settings/settingsgeneral.h index 9f24bae6c..c32d07db3 100644 --- a/src/librssguard/gui/settings/settingsgeneral.h +++ b/src/librssguard/gui/settings/settingsgeneral.h @@ -8,12 +8,13 @@ #include "ui_settingsgeneral.h" class SettingsGeneral : public SettingsPanel { - Q_OBJECT + Q_OBJECT public: explicit SettingsGeneral(Settings* settings, QWidget* parent = nullptr); virtual ~SettingsGeneral(); + virtual QIcon icon() const; virtual QString title() const; virtual void loadSettings(); virtual void saveSettings(); diff --git a/src/librssguard/gui/settings/settingsgui.cpp b/src/librssguard/gui/settings/settingsgui.cpp index 9167e0739..da266b449 100644 --- a/src/librssguard/gui/settings/settingsgui.cpp +++ b/src/librssguard/gui/settings/settingsgui.cpp @@ -110,6 +110,10 @@ SettingsGui::~SettingsGui() { delete m_ui; } +QIcon SettingsGui::icon() const { + return qApp->icons()->fromTheme(QSL("draw-freehand"), QSL("draw-star")); +} + bool SettingsGui::eventFilter(QObject* obj, QEvent* e) { Q_UNUSED(obj) diff --git a/src/librssguard/gui/settings/settingsgui.h b/src/librssguard/gui/settings/settingsgui.h index 9d0aa88ed..de6a2f278 100644 --- a/src/librssguard/gui/settings/settingsgui.h +++ b/src/librssguard/gui/settings/settingsgui.h @@ -8,18 +8,18 @@ #include "ui_settingsgui.h" class SettingsGui : public SettingsPanel { - Q_OBJECT + Q_OBJECT public: explicit SettingsGui(Settings* settings, QWidget* parent = nullptr); virtual ~SettingsGui(); + virtual QIcon icon() const; virtual QString title() const; virtual void loadSettings(); virtual void saveSettings(); protected: - // Does check of controls before dialog can be submitted. bool eventFilter(QObject* obj, QEvent* e); diff --git a/src/librssguard/gui/settings/settingslocalization.cpp b/src/librssguard/gui/settings/settingslocalization.cpp index 0bc3fc2c1..c7d3ebb08 100644 --- a/src/librssguard/gui/settings/settingslocalization.cpp +++ b/src/librssguard/gui/settings/settingslocalization.cpp @@ -40,6 +40,10 @@ SettingsLocalization::~SettingsLocalization() { delete m_ui; } +QIcon SettingsLocalization::icon() const { + return qApp->icons()->fromTheme(QSL("text-x-gettext-translation")); +} + void SettingsLocalization::loadSettings() { onBeginLoadSettings(); diff --git a/src/librssguard/gui/settings/settingslocalization.h b/src/librssguard/gui/settings/settingslocalization.h index f98d8b773..b25af215a 100644 --- a/src/librssguard/gui/settings/settingslocalization.h +++ b/src/librssguard/gui/settings/settingslocalization.h @@ -8,12 +8,13 @@ #include "ui_settingslocalization.h" class SettingsLocalization : public SettingsPanel { - Q_OBJECT + Q_OBJECT public: explicit SettingsLocalization(Settings* settings, QWidget* parent = nullptr); virtual ~SettingsLocalization(); + virtual QIcon icon() const; virtual QString title() const; virtual void loadSettings(); virtual void saveSettings(); diff --git a/src/librssguard/gui/settings/settingsmediaplayer.cpp b/src/librssguard/gui/settings/settingsmediaplayer.cpp index 511ff4f71..c9f9377b7 100644 --- a/src/librssguard/gui/settings/settingsmediaplayer.cpp +++ b/src/librssguard/gui/settings/settingsmediaplayer.cpp @@ -3,9 +3,12 @@ #include "gui/settings/settingsmediaplayer.h" #include "miscellaneous/application.h" +#include "miscellaneous/iconfactory.h" #include "miscellaneous/settings.h" #if defined(ENABLE_MEDIAPLAYER_LIBMPV) +#include "gui/mediaplayer/libmpv/libmpvbackend.h" + #include #endif @@ -13,7 +16,14 @@ SettingsMediaPlayer::SettingsMediaPlayer(Settings* settings, QWidget* parent) : m_ui.setupUi(this); } +QIcon SettingsMediaPlayer::icon() const { + return qApp->icons()->fromTheme(QSL("kmplayer"), QSL("smplayer")); +} + void SettingsMediaPlayer::loadSettings() { + connect(m_ui.m_gbMpvCustomConfigFolder, &QGroupBox::toggled, this, &SettingsMediaPlayer::dirtifySettings); + connect(m_ui.m_txtMpvConfigFolder, &QLineEdit::textChanged, this, &SettingsMediaPlayer::dirtifySettings); + onBeginLoadSettings(); #if defined(ENABLE_MEDIAPLAYER_LIBMPV) @@ -21,11 +31,18 @@ void SettingsMediaPlayer::loadSettings() { m_ui.m_helpInfo->setHelpText(tr("You use modern libmpv-based media player backend with API version %1.") .arg(mpv_client_api_version()), false); + m_ui.m_stackedDetails->setCurrentWidget(m_ui.m_pageLibmpv); + + 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()); #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 " "play, then you likely need to install some codecs."), false); + m_ui.m_stackedDetails->setCurrentWidget(m_ui.m_pageQtMultimedia); #else m_ui.m_txtBackend->setText(tr("no backend installed")); m_ui.m_helpInfo->setHelpText(tr("You do not have any media player available. Media player is only supported on " @@ -33,6 +50,7 @@ void SettingsMediaPlayer::loadSettings() { "%1 to be able to use media player.") .arg(QSL(APP_NAME)), true); + m_ui.m_stackedDetails->setCurrentWidget(m_ui.m_pageNothing); #endif onEndLoadSettings(); @@ -41,5 +59,18 @@ void SettingsMediaPlayer::loadSettings() { void SettingsMediaPlayer::saveSettings() { onBeginSaveSettings(); +#if defined(ENABLE_MEDIAPLAYER_LIBMPV) + settings()->setValue(GROUP(VideoPlayer), + VideoPlayer::MpvUseCustomConfigFolder, + m_ui.m_gbMpvCustomConfigFolder->isChecked()); + settings()->setValue(GROUP(VideoPlayer), VideoPlayer::MpvCustomConfigFolder, m_ui.m_txtMpvConfigFolder->text()); + + // LibMpvBackend::installCustomConfig() +#elif defined(ENABLE_MEDIAPLAYER_QTMULTIMEDIA) + +#else + +#endif + onEndSaveSettings(); } diff --git a/src/librssguard/gui/settings/settingsmediaplayer.h b/src/librssguard/gui/settings/settingsmediaplayer.h index 85497b732..7208b9424 100644 --- a/src/librssguard/gui/settings/settingsmediaplayer.h +++ b/src/librssguard/gui/settings/settingsmediaplayer.h @@ -13,6 +13,7 @@ class SettingsMediaPlayer : public SettingsPanel { public: explicit SettingsMediaPlayer(Settings* settings, QWidget* parent = nullptr); + virtual QIcon icon() const; virtual QString title() const; virtual void loadSettings(); virtual void saveSettings(); diff --git a/src/librssguard/gui/settings/settingsmediaplayer.ui b/src/librssguard/gui/settings/settingsmediaplayer.ui index ecf1cf83a..98a084841 100644 --- a/src/librssguard/gui/settings/settingsmediaplayer.ui +++ b/src/librssguard/gui/settings/settingsmediaplayer.ui @@ -6,8 +6,8 @@ 0 0 - 360 - 148 + 512 + 328 @@ -26,9 +26,47 @@ - + - + + + + + + Use custom MPV configuration folder + + + true + + + + + + + + + Browse + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + diff --git a/src/librssguard/gui/settings/settingsnodejs.cpp b/src/librssguard/gui/settings/settingsnodejs.cpp index 6c5ad5cc3..f34aadbff 100644 --- a/src/librssguard/gui/settings/settingsnodejs.cpp +++ b/src/librssguard/gui/settings/settingsnodejs.cpp @@ -5,6 +5,7 @@ #include "definitions/definitions.h" #include "exceptions/applicationexception.h" #include "miscellaneous/application.h" +#include "miscellaneous/iconfactory.h" #include "miscellaneous/nodejs.h" #include "network-web/webfactory.h" @@ -54,6 +55,10 @@ SettingsNodejs::SettingsNodejs(Settings* settings, QWidget* parent) : SettingsPa }); } +QIcon SettingsNodejs::icon() const { + return qApp->icons()->fromTheme(QSL("node-join"), QSL("node")); +} + void SettingsNodejs::changeFileFolder(LineEditWithStatus* tb, bool directory_select, const QString& file_filter) { QFileDialog d(this); diff --git a/src/librssguard/gui/settings/settingsnodejs.h b/src/librssguard/gui/settings/settingsnodejs.h index 7747841b6..d0609a860 100644 --- a/src/librssguard/gui/settings/settingsnodejs.h +++ b/src/librssguard/gui/settings/settingsnodejs.h @@ -8,11 +8,12 @@ #include "ui_settingsnodejs.h" class SettingsNodejs : public SettingsPanel { - Q_OBJECT + Q_OBJECT public: explicit SettingsNodejs(Settings* settings, QWidget* parent = nullptr); + virtual QIcon icon() const; virtual QString title() const; virtual void loadSettings(); virtual void saveSettings(); diff --git a/src/librssguard/gui/settings/settingsnotifications.cpp b/src/librssguard/gui/settings/settingsnotifications.cpp index 3ffed29e0..a4a50568b 100644 --- a/src/librssguard/gui/settings/settingsnotifications.cpp +++ b/src/librssguard/gui/settings/settingsnotifications.cpp @@ -4,6 +4,7 @@ #include "gui/notifications/notificationseditor.h" #include "miscellaneous/application.h" +#include "miscellaneous/iconfactory.h" #include "miscellaneous/notificationfactory.h" #include "miscellaneous/settings.h" @@ -40,6 +41,10 @@ SettingsNotifications::SettingsNotifications(Settings* settings, QWidget* parent &SettingsNotifications::dirtifySettings); } +QIcon SettingsNotifications::icon() const { + return qApp->icons()->fromTheme(QSL("notifications"), QSL("dialog-information")); +} + void SettingsNotifications::loadSettings() { onBeginLoadSettings(); diff --git a/src/librssguard/gui/settings/settingsnotifications.h b/src/librssguard/gui/settings/settingsnotifications.h index 8c306377f..7d92a4a19 100644 --- a/src/librssguard/gui/settings/settingsnotifications.h +++ b/src/librssguard/gui/settings/settingsnotifications.h @@ -15,6 +15,7 @@ class SettingsNotifications : public SettingsPanel { public: explicit SettingsNotifications(Settings* settings, QWidget* parent = nullptr); + virtual QIcon icon() const; virtual QString title() const; virtual void loadSettings(); virtual void saveSettings(); diff --git a/src/librssguard/gui/settings/settingspanel.h b/src/librssguard/gui/settings/settingspanel.h index b40728e28..e027f7239 100644 --- a/src/librssguard/gui/settings/settingspanel.h +++ b/src/librssguard/gui/settings/settingspanel.h @@ -8,12 +8,13 @@ class Settings; class SettingsPanel : public QWidget { - Q_OBJECT + Q_OBJECT public: explicit SettingsPanel(Settings* settings, QWidget* parent = nullptr); virtual QString title() const = 0; + virtual QIcon icon() const = 0; virtual void loadSettings() = 0; virtual void saveSettings() = 0; diff --git a/src/librssguard/gui/settings/settingsshortcuts.cpp b/src/librssguard/gui/settings/settingsshortcuts.cpp index 754ffa47b..b4f166c34 100644 --- a/src/librssguard/gui/settings/settingsshortcuts.cpp +++ b/src/librssguard/gui/settings/settingsshortcuts.cpp @@ -4,6 +4,7 @@ #include "dynamic-shortcuts/dynamicshortcuts.h" #include "miscellaneous/application.h" +#include "miscellaneous/iconfactory.h" SettingsShortcuts::SettingsShortcuts(Settings* settings, QWidget* parent) : SettingsPanel(settings, parent), m_ui(new Ui::SettingsShortcuts) { @@ -15,6 +16,10 @@ SettingsShortcuts::~SettingsShortcuts() { delete m_ui; } +QIcon SettingsShortcuts::icon() const { + return qApp->icons()->fromTheme(QSL("configure-shortcuts"), QSL("keyboard")); +} + void SettingsShortcuts::loadSettings() { onBeginLoadSettings(); m_ui->m_shortcuts->populate(qApp->userActions()); diff --git a/src/librssguard/gui/settings/settingsshortcuts.h b/src/librssguard/gui/settings/settingsshortcuts.h index 299beb69a..2173252ee 100644 --- a/src/librssguard/gui/settings/settingsshortcuts.h +++ b/src/librssguard/gui/settings/settingsshortcuts.h @@ -8,12 +8,13 @@ #include "ui_settingsshortcuts.h" class SettingsShortcuts : public SettingsPanel { - Q_OBJECT + Q_OBJECT public: explicit SettingsShortcuts(Settings* settings, QWidget* parent = nullptr); virtual ~SettingsShortcuts(); + virtual QIcon icon() const; virtual QString title() const; virtual void loadSettings(); virtual void saveSettings(); diff --git a/src/librssguard/miscellaneous/settings.cpp b/src/librssguard/miscellaneous/settings.cpp index 9b1bdea52..dab730fa9 100644 --- a/src/librssguard/miscellaneous/settings.cpp +++ b/src/librssguard/miscellaneous/settings.cpp @@ -15,6 +15,15 @@ DKEY WebEngineAttributes::ID = "web_engine_attributes"; #endif +// Media player. +KEY VideoPlayer::ID = "media_player"; + +DKEY VideoPlayer::MpvUseCustomConfigFolder = "mpv_use_custom_config_folder"; +DVALUE(bool) VideoPlayer::MpvUseCustomConfigFolderDef = true; + +DKEY VideoPlayer::MpvCustomConfigFolder = "mpv_config_folder"; +DVALUE(QString) VideoPlayer::MpvCustomConfigFolderDef = "%data%/mpv"; + // Node.js. DKEY Node::ID = "nodejs"; diff --git a/src/librssguard/miscellaneous/settings.h b/src/librssguard/miscellaneous/settings.h index 398a2f220..cb33223e8 100644 --- a/src/librssguard/miscellaneous/settings.h +++ b/src/librssguard/miscellaneous/settings.h @@ -52,6 +52,16 @@ namespace Node { VALUE(QString) PackageFolderDef; } // namespace Node +namespace VideoPlayer { + KEY ID; + + KEY MpvUseCustomConfigFolder; + VALUE(bool) MpvUseCustomConfigFolderDef; + + KEY MpvCustomConfigFolder; + VALUE(QString) MpvCustomConfigFolderDef; +} // namespace VideoPlayer + namespace AdBlock { KEY ID;