settings for media player

This commit is contained in:
Martin Rotter 2023-11-28 09:51:04 +01:00
parent 6e463cb4e2
commit 37bd200cde
5 changed files with 154 additions and 30 deletions

View File

@ -171,6 +171,8 @@ set(SOURCES
gui/settings/settingsfeedsmessages.h
gui/settings/settingsgeneral.cpp
gui/settings/settingsgeneral.h
gui/settings/settingsmediaplayer.cpp
gui/settings/settingsmediaplayer.h
gui/settings/settingsgui.cpp
gui/settings/settingsgui.h
gui/settings/settingslocalization.cpp
@ -478,6 +480,7 @@ set(UI_FILES
gui/settings/settingsnodejs.ui
gui/settings/settingsnotifications.ui
gui/settings/settingsshortcuts.ui
gui/settings/settingsmediaplayer.ui
gui/toolbars/toolbareditor.ui
network-web/adblock/adblockdialog.ui
network-web/downloaditem.ui

View File

@ -16,6 +16,7 @@
#include "gui/settings/settingsgeneral.h"
#include "gui/settings/settingsgui.h"
#include "gui/settings/settingslocalization.h"
#include "gui/settings/settingsmediaplayer.h"
#include "gui/settings/settingsnodejs.h"
#include "gui/settings/settingsnotifications.h"
#include "gui/settings/settingsshortcuts.h"
@ -24,12 +25,12 @@
#include <QScrollArea>
#include <QScrollBar>
FormSettings::FormSettings(QWidget& parent)
: QDialog(&parent), m_settings(*qApp->settings()) {
FormSettings::FormSettings(QWidget& parent) : QDialog(&parent), m_settings(*qApp->settings()) {
m_ui.setupUi(this);
// Set flags and attributes.
GuiUtilities::applyDialogProperties(*this, qApp->icons()->fromTheme(QSL("emblem-system"), QSL("applications-system")));
GuiUtilities::applyDialogProperties(*this,
qApp->icons()->fromTheme(QSL("emblem-system"), QSL("applications-system")));
m_btnApply = m_ui.m_buttonBox->button(QDialogButtonBox::StandardButton::Apply);
@ -49,10 +50,12 @@ FormSettings::FormSettings(QWidget& parent)
addSettingsPanel(new SettingsShortcuts(&m_settings, this));
addSettingsPanel(new SettingsBrowserMail(&m_settings, this));
addSettingsPanel(new SettingsNodejs(&m_settings, this));
addSettingsPanel(new SettingsMediaPlayer(&m_settings, this));
addSettingsPanel(new SettingsDownloads(&m_settings, this));
addSettingsPanel(new SettingsFeedsMessages(&m_settings, this));
m_ui.m_listSettings->setMaximumWidth(m_ui.m_listSettings->sizeHintForColumn(0) + 6 * m_ui.m_listSettings->frameWidth());
m_ui.m_listSettings->setMaximumWidth(m_ui.m_listSettings->sizeHintForColumn(0) +
6 * m_ui.m_listSettings->frameWidth());
m_ui.m_listSettings->setCurrentRow(0);
resize(qApp->settings()->value(GROUP(GUI), GUI::SettingsWindowInitialSize, size()).toSize());
@ -63,7 +66,7 @@ FormSettings::~FormSettings() {
}
void FormSettings::openSettingsCategory(int category) {
if (category >=0 && category < m_panels.size()) {
if (category >= 0 && category < m_panels.size()) {
if (!m_panels.at(category)->isLoaded()) {
m_panels.at(category)->loadSettings();
}
@ -94,19 +97,17 @@ void FormSettings::applySettings() {
}
if (!panels_for_restart.isEmpty()) {
const QStringList changed_settings_description = panels_for_restart.replaceInStrings(QRegularExpression(QSL("^")),
QString::fromUtf8(QByteArray("")));
const QMessageBox::StandardButton clicked_button = MsgBox::show(this,
const QStringList changed_settings_description =
panels_for_restart.replaceInStrings(QRegularExpression(QSL("^")), QString::fromUtf8(QByteArray("")));
const QMessageBox::StandardButton clicked_button =
MsgBox::show(this,
QMessageBox::Icon::Question,
tr("Critical settings were changed"),
tr(
"Some critical settings were changed and will be applied after the application gets restarted. "
tr("Some critical settings were changed and will be applied after the application gets restarted. "
"\n\nYou have to restart manually."),
tr("Do you want to restart now?"),
tr("Changed categories of settings:\n%1.").arg(
changed_settings_description.join(QSL(",\n"))),
QMessageBox::StandardButton::Yes |
QMessageBox::StandardButton::No,
tr("Changed categories of settings:\n%1.").arg(changed_settings_description.join(QSL(",\n"))),
QMessageBox::StandardButton::Yes | QMessageBox::StandardButton::No,
QMessageBox::StandardButton::Yes);
if (clicked_button == QMessageBox::Yes) {
@ -132,8 +133,8 @@ void FormSettings::cancelSettings() {
reject();
}
else {
const QStringList changed_settings_description = changed_panels.replaceInStrings(QRegularExpression(QSL("^")),
QString::fromUtf8(QByteArray("")));
const QStringList changed_settings_description =
changed_panels.replaceInStrings(QRegularExpression(QSL("^")), QString::fromUtf8(QByteArray("")));
if (MsgBox::show(this,
QMessageBox::Icon::Critical,
@ -142,8 +143,7 @@ void FormSettings::cancelSettings() {
tr("Do you really want to close this dialog without saving any settings?"),
tr("Changed categories of settings:\n%1.").arg(changed_settings_description.join(QSL(",\n"))),
QMessageBox::StandardButton::Yes | QMessageBox::StandardButton::No,
QMessageBox::StandardButton::Yes) ==
QMessageBox::StandardButton::Yes) {
QMessageBox::StandardButton::Yes) == QMessageBox::StandardButton::Yes) {
reject();
}
}

View File

@ -0,0 +1,43 @@
// For license of this file, see <project-root-folder>/LICENSE.md.
#include "gui/settings/settingsmediaplayer.h"
#include "miscellaneous/application.h"
#include "miscellaneous/settings.h"
#if defined(ENABLE_MEDIAPLAYER_LIBMPV)
#include <mpv/client.h>
#endif
SettingsMediaPlayer::SettingsMediaPlayer(Settings* settings, QWidget* parent) : SettingsPanel(settings, parent) {
m_ui.setupUi(this);
}
void SettingsMediaPlayer::loadSettings() {
onBeginLoadSettings();
#if defined(ENABLE_MEDIAPLAYER_LIBMPV)
m_ui.m_txtBackend->setText(QSL("QtMultimedia"));
m_ui.m_helpInfo->setHelpText(tr("You use modern libmpv-based media player backend with API version %1.")
.arg(mpv_client_api_version()),
false);
#elif defined(ENABLE_MEDIAPLAYER_QTMULTIMEDIA)
m_ui.m_txtBackend->setText(QSL("libmpv"));
m_ui.m_helpInfo->setHelpText(tr("You use lightweight QtMultimedia-based media player backend."), false);
#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 "
"modern platforms where needed libraries are available. You must manually recompile "
"%1 to be able to use media player.")
.arg(QSL(APP_NAME)),
true);
#endif
onEndLoadSettings();
}
void SettingsMediaPlayer::saveSettings() {
onBeginSaveSettings();
onEndSaveSettings();
}

View File

@ -0,0 +1,28 @@
// For license of this file, see <project-root-folder>/LICENSE.md.
#ifndef SETTINGSMEDIAPLAYER_H
#define SETTINGSMEDIAPLAYER_H
#include "gui/settings/settingspanel.h"
#include "ui_settingsmediaplayer.h"
class SettingsMediaPlayer : public SettingsPanel {
Q_OBJECT
public:
explicit SettingsMediaPlayer(Settings* settings, QWidget* parent = nullptr);
virtual QString title() const;
virtual void loadSettings();
virtual void saveSettings();
private:
Ui::SettingsMediaPlayer m_ui;
};
inline QString SettingsMediaPlayer::title() const {
return tr("Media player");
}
#endif // SETTINGSMEDIAPLAYER_H

View File

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>SettingsMediaPlayer</class>
<widget class="QWidget" name="SettingsMediaPlayer">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>360</width>
<height>148</height>
</rect>
</property>
<layout class="QFormLayout" name="formLayout">
<item row="0" column="0">
<widget class="QLabel" name="m_lblBackend">
<property name="text">
<string>Backend</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="m_txtBackend">
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item row="2" column="0" colspan="2">
<widget class="QStackedWidget" name="stackedWidget">
<widget class="QWidget" name="m_pageQtMultimedia"/>
<widget class="QWidget" name="m_pageLibmpv"/>
<widget class="QWidget" name="m_pageNothing"/>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="HelpSpoiler" name="m_helpInfo" native="true"/>
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>HelpSpoiler</class>
<extends>QWidget</extends>
<header>helpspoiler.h</header>
<container>1</container>
</customwidget>
</customwidgets>
<resources/>
<connections/>
</ui>