added icon to setting sections

This commit is contained in:
Martin Rotter 2023-11-30 12:01:38 +01:00
parent 856cab57e7
commit de8b65bdec
34 changed files with 241 additions and 36 deletions

View File

@ -14,6 +14,7 @@
<file>./graphics/Breeze/actions/32/arrow-up-double.svg</file>
<file>./graphics/Breeze/status/22/audio-volume-muted.svg</file>
<file>./graphics/Breeze/actions/32/call-start.svg</file>
<file>./graphics/Breeze/actions/32/configure-shortcuts.svg</file>
<file>./graphics/Breeze/actions/32/dialog-cancel.svg</file>
<file>./graphics/Breeze/actions/22/dialog-close.svg</file>
<file>./graphics/Breeze/status/64/dialog-error.svg</file>
@ -28,7 +29,9 @@
<file>./graphics/Breeze/actions/32/document-open.svg</file>
<file>./graphics/Breeze/actions/32/document-revert.svg</file>
<file>./graphics/Breeze/actions/22/download.svg</file>
<file>./graphics/Breeze/actions/48/draw-freehand.svg</file>
<file>./graphics/Breeze/actions/22/draw-line.svg</file>
<file>./graphics/Breeze/actions/22/draw-star.svg</file>
<file>./graphics/Breeze/actions/22/edit-clear.svg</file>
<file>./graphics/Breeze/actions/22/edit-copy.svg</file>
<file>./graphics/Breeze/actions/22/edit-cut.svg</file>
@ -41,6 +44,7 @@
<file>./graphics/Breeze/emblems/22/emblem-favorite.svg</file>
<file>./graphics/Breeze/emblems/22/emblem-shared.svg</file>
<file>./graphics/Breeze/places/96/folder.svg</file>
<file>./graphics/Breeze/places/64/folder-database.svg</file>
<file>./graphics/Breeze/actions/22/format-indent-less.svg</file>
<file>./graphics/Breeze/actions/22/format-indent-more.svg</file>
<file>./graphics/Breeze/actions/22/format-justify-fill.svg</file>
@ -65,6 +69,9 @@
<file>./graphics/Breeze/mimetypes/64/image-x-generic.svg</file>
<file>./graphics/Breeze/actions/22/insert-link.svg</file>
<file>./graphics/Breeze/actions/22/insert-page-break.svg</file>
<file>./graphics/Breeze/actions/22/internet-services.svg</file>
<file>./graphics/Breeze/apps/48/kmplayer.svg</file>
<file>./graphics/Breeze/mimetypes/64/libreoffice-database.svg</file>
<file>./graphics/Breeze/actions/22/list-add.svg</file>
<file>./graphics/Breeze/actions/22/list-remove.svg</file>
<file>./graphics/Breeze/actions/32/mail-attachment.svg</file>
@ -81,9 +88,13 @@
<file>./graphics/Breeze/actions/32/media-playback-pause.svg</file>
<file>./graphics/Breeze/actions/32/media-playback-start.svg</file>
<file>./graphics/Breeze/actions/32/media-playback-stop.svg</file>
<file>./graphics/Breeze/actions/22/node.svg</file>
<file>./graphics/Breeze/actions/22/node-join.svg</file>
<file>./graphics/Breeze/actions/22/notifications.svg</file>
<file>./graphics/Breeze/actions/22/player-volume.svg</file>
<file>./graphics/Breeze/actions/22/player-volume-muted.svg</file>
<file>./graphics/Breeze/actions/22/process-stop.svg</file>
<file>./graphics/Breeze/apps/48/smplayer.svg</file>
<file>./graphics/Breeze/actions/22/system-search.svg</file>
<file>./graphics/Breeze/actions/22/system-upgrade.svg</file>
<file>./graphics/Breeze/actions/22/tab-new.svg</file>
@ -91,6 +102,7 @@
<file>./graphics/Breeze/actions/22/tag-new.svg</file>
<file>./graphics/Breeze/actions/22/tag-properties.svg</file>
<file>./graphics/Breeze/mimetypes/64/text-html.svg</file>
<file>./graphics/Breeze/mimetypes/64/text-x-gettext-translation.svg</file>
<file>./graphics/Breeze/places/96/user-trash.svg</file>
<file>./graphics/Breeze/actions/22/view-fullscreen.svg</file>
<file>./graphics/Breeze/actions/22/viewimage.svg</file>
@ -113,6 +125,7 @@
<file>./graphics/Breeze Dark/actions/32/arrow-up-double.svg</file>
<file>./graphics/Breeze Dark/status/22/audio-volume-muted.svg</file>
<file>./graphics/Breeze Dark/actions/32/call-start.svg</file>
<file>./graphics/Breeze Dark/actions/32/configure-shortcuts.svg</file>
<file>./graphics/Breeze Dark/actions/32/dialog-cancel.svg</file>
<file>./graphics/Breeze Dark/actions/22/dialog-close.svg</file>
<file>./graphics/Breeze Dark/status/64/dialog-error.svg</file>
@ -127,7 +140,9 @@
<file>./graphics/Breeze Dark/actions/32/document-open.svg</file>
<file>./graphics/Breeze Dark/actions/32/document-revert.svg</file>
<file>./graphics/Breeze Dark/actions/22/download.svg</file>
<file>./graphics/Breeze Dark/actions/48/draw-freehand.svg</file>
<file>./graphics/Breeze Dark/actions/22/draw-line.svg</file>
<file>./graphics/Breeze Dark/actions/22/draw-star.svg</file>
<file>./graphics/Breeze Dark/actions/22/edit-clear.svg</file>
<file>./graphics/Breeze Dark/actions/22/edit-copy.svg</file>
<file>./graphics/Breeze Dark/actions/22/edit-cut.svg</file>
@ -140,6 +155,7 @@
<file>./graphics/Breeze Dark/emblems/22/emblem-favorite.svg</file>
<file>./graphics/Breeze Dark/emblems/22/emblem-shared.svg</file>
<file>./graphics/Breeze Dark/places/96/folder.svg</file>
<file>./graphics/Breeze Dark/places/64/folder-database.svg</file>
<file>./graphics/Breeze Dark/actions/22/format-indent-less.svg</file>
<file>./graphics/Breeze Dark/actions/22/format-indent-more.svg</file>
<file>./graphics/Breeze Dark/actions/22/format-justify-fill.svg</file>
@ -164,6 +180,9 @@
<file>./graphics/Breeze Dark/mimetypes/64/image-x-generic.svg</file>
<file>./graphics/Breeze Dark/actions/22/insert-link.svg</file>
<file>./graphics/Breeze Dark/actions/22/insert-page-break.svg</file>
<file>./graphics/Breeze Dark/actions/22/internet-services.svg</file>
<file>./graphics/Breeze Dark/apps/48/kmplayer.svg</file>
<file>./graphics/Breeze Dark/mimetypes/64/libreoffice-database.svg</file>
<file>./graphics/Breeze Dark/actions/22/list-add.svg</file>
<file>./graphics/Breeze Dark/actions/22/list-remove.svg</file>
<file>./graphics/Breeze Dark/actions/32/mail-attachment.svg</file>
@ -180,9 +199,13 @@
<file>./graphics/Breeze Dark/actions/32/media-playback-pause.svg</file>
<file>./graphics/Breeze Dark/actions/32/media-playback-start.svg</file>
<file>./graphics/Breeze Dark/actions/32/media-playback-stop.svg</file>
<file>./graphics/Breeze Dark/actions/22/node.svg</file>
<file>./graphics/Breeze Dark/actions/22/node-join.svg</file>
<file>./graphics/Breeze Dark/actions/22/notifications.svg</file>
<file>./graphics/Breeze Dark/actions/22/player-volume.svg</file>
<file>./graphics/Breeze Dark/actions/22/player-volume-muted.svg</file>
<file>./graphics/Breeze Dark/actions/22/process-stop.svg</file>
<file>./graphics/Breeze Dark/apps/48/smplayer.svg</file>
<file>./graphics/Breeze Dark/actions/22/system-search.svg</file>
<file>./graphics/Breeze Dark/actions/22/system-upgrade.svg</file>
<file>./graphics/Breeze Dark/actions/22/tab-new.svg</file>
@ -190,6 +213,7 @@
<file>./graphics/Breeze Dark/actions/22/tag-new.svg</file>
<file>./graphics/Breeze Dark/actions/22/tag-properties.svg</file>
<file>./graphics/Breeze Dark/mimetypes/64/text-html.svg</file>
<file>./graphics/Breeze Dark/mimetypes/64/text-x-gettext-translation.svg</file>
<file>./graphics/Breeze Dark/places/96/user-trash.svg</file>
<file>./graphics/Breeze Dark/actions/22/view-fullscreen.svg</file>
<file>./graphics/Breeze Dark/actions/22/viewimage.svg</file>
@ -254,6 +278,7 @@
<file>./graphics/Faenza/mimetypes/64/image-x-generic.png</file>
<file>./graphics/Faenza/actions/64/insert-link.png</file>
<file>./graphics/Faenza/actions/64/insert-object.png</file>
<file>./graphics/Faenza/devices/64/keyboard.png</file>
<file>./graphics/Faenza/actions/64/list-add.png</file>
<file>./graphics/Faenza/actions/64/list-remove.png</file>
<file>./graphics/Faenza/actions/64/mail-attachment.png</file>
@ -317,6 +342,7 @@
<file>./graphics/Numix/22/actions/document-revert.svg</file>
<file>./graphics/Numix/22/actions/down.svg</file>
<file>./graphics/Numix/22/actions/download.svg</file>
<file>./graphics/Numix/22/actions/draw-freehand.svg</file>
<file>./graphics/Numix/22/actions/edit-clear.svg</file>
<file>./graphics/Numix/22/actions/edit-copy.svg</file>
<file>./graphics/Numix/22/actions/edit-cut.svg</file>
@ -350,6 +376,9 @@
<file>./graphics/Numix/22/mimetypes/image-x-generic.svg</file>
<file>./graphics/Numix/22/actions/insert-link.svg</file>
<file>./graphics/Numix/22/actions/insert-object.svg</file>
<file>./graphics/Numix/22/actions/internet-services.svg</file>
<file>./graphics/Numix/22/status/keyboard.svg</file>
<file>./graphics/Numix/22/mimetypes/libreoffice-database.svg</file>
<file>./graphics/Numix/22/actions/list-add.svg</file>
<file>./graphics/Numix/22/actions/list-remove.svg</file>
<file>./graphics/Numix/22/actions/mail-attachment.svg</file>
@ -366,6 +395,7 @@
<file>./graphics/Numix/22/actions/media-playback-pause.svg</file>
<file>./graphics/Numix/22/actions/media-playback-start.svg</file>
<file>./graphics/Numix/22/actions/media-playback-stop.svg</file>
<file>./graphics/Numix/22/actions/node-join.svg</file>
<file>./graphics/Numix/22/actions/process-stop.svg</file>
<file>./graphics/Numix/22/actions/reload.svg</file>
<file>./graphics/Numix/22/actions/system-search.svg</file>
@ -375,6 +405,7 @@
<file>./graphics/Numix/22/actions/tag-new.svg</file>
<file>./graphics/Numix/22/actions/tag-properties.svg</file>
<file>./graphics/Numix/22/mimetypes/text-html.svg</file>
<file>./graphics/Numix/22/mimetypes/text-x-gettext-translation.svg</file>
<file>./graphics/Numix/22/actions/up.svg</file>
<file>./graphics/Numix/22/places/user-trash.svg</file>
<file>./graphics/Numix/22/actions/view-fullscreen.svg</file>

View File

@ -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);

View File

@ -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 <clocale>
#include <sstream>
@ -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) {

View File

@ -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;

View File

@ -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) {

View File

@ -159,7 +159,7 @@
<item>
<widget class="PlainToolButton" name="m_btnFullscreen">
<property name="toolTip">
<string>Download</string>
<string>Switch fullscreen mode</string>
</property>
</widget>
</item>

View File

@ -2,9 +2,12 @@
#include "gui/mediaplayer/playerbackend.h"
#include "miscellaneous/application.h"
#include <QVBoxLayout>
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});
}

View File

@ -8,6 +8,7 @@
#include <QUrl>
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;

View File

@ -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());

View File

@ -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();

View File

@ -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<MariaDbDriver*>(qApp->database()->driver());
const MariaDbDriver::MariaDbError error_code = driv->testConnection(m_ui->m_txtMysqlHostname->lineEdit()->text(),

View File

@ -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();

View File

@ -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();
}

View File

@ -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();

View File

@ -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();

View File

@ -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();

View File

@ -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

View File

@ -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();

View File

@ -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)

View File

@ -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);

View File

@ -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();

View File

@ -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();

View File

@ -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 <mpv/client.h>
#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();
}

View File

@ -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();

View File

@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>360</width>
<height>148</height>
<width>512</width>
<height>328</height>
</rect>
</property>
<layout class="QFormLayout" name="formLayout">
@ -26,9 +26,47 @@
</widget>
</item>
<item row="2" column="0" colspan="2">
<widget class="QStackedWidget" name="stackedWidget">
<widget class="QStackedWidget" name="m_stackedDetails">
<widget class="QWidget" name="m_pageQtMultimedia"/>
<widget class="QWidget" name="m_pageLibmpv"/>
<widget class="QWidget" name="m_pageLibmpv">
<layout class="QFormLayout" name="formLayout_2">
<item row="0" column="0" colspan="2">
<widget class="QGroupBox" name="m_gbMpvCustomConfigFolder">
<property name="title">
<string>Use custom MPV configuration folder</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLineEdit" name="m_txtMpvConfigFolder"/>
</item>
<item>
<widget class="QPushButton" name="m_btnMpvConfigFolder">
<property name="text">
<string>Browse</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="1" column="0" colspan="2">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<widget class="QWidget" name="m_pageNothing"/>
</widget>
</item>

View File

@ -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);

View File

@ -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();

View File

@ -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();

View File

@ -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();

View File

@ -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;

View File

@ -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());

View File

@ -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();

View File

@ -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";

View File

@ -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;