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;