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
@ -506,7 +509,7 @@ set(UI_FILES
services/tt-rss/gui/ttrssfeeddetails.ui
)
if(ENABLE_MEDIAPLAYER)
if(ENABLE_MEDIAPLAYER)
list(APPEND SOURCES
gui/mediaplayer/playerbackend.cpp
gui/mediaplayer/playerbackend.h

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,20 +97,18 @@ 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,
QMessageBox::Icon::Question,
tr("Critical settings were changed"),
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,
QMessageBox::StandardButton::Yes);
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. "
"\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,
QMessageBox::StandardButton::Yes);
if (clicked_button == QMessageBox::Yes) {
qApp->restart();
@ -132,18 +133,17 @@ 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,
tr("Some settings are changed and will be lost"),
tr("Some settings were changed and by cancelling this dialog, you would lose these changes."),
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::Icon::Critical,
tr("Some settings are changed and will be lost"),
tr("Some settings were changed and by cancelling this dialog, you would lose these changes."),
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) {
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>