diff --git a/src/librssguard/CMakeLists.txt b/src/librssguard/CMakeLists.txt index 17bb005d9..b4005f9b3 100644 --- a/src/librssguard/CMakeLists.txt +++ b/src/librssguard/CMakeLists.txt @@ -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 diff --git a/src/librssguard/gui/dialogs/formsettings.cpp b/src/librssguard/gui/dialogs/formsettings.cpp index c357c4807..e212927fe 100644 --- a/src/librssguard/gui/dialogs/formsettings.cpp +++ b/src/librssguard/gui/dialogs/formsettings.cpp @@ -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 #include -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(); } } diff --git a/src/librssguard/gui/settings/settingsmediaplayer.cpp b/src/librssguard/gui/settings/settingsmediaplayer.cpp new file mode 100644 index 000000000..b1c207175 --- /dev/null +++ b/src/librssguard/gui/settings/settingsmediaplayer.cpp @@ -0,0 +1,43 @@ +// For license of this file, see /LICENSE.md. + +#include "gui/settings/settingsmediaplayer.h" + +#include "miscellaneous/application.h" +#include "miscellaneous/settings.h" + +#if defined(ENABLE_MEDIAPLAYER_LIBMPV) +#include +#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(); +} diff --git a/src/librssguard/gui/settings/settingsmediaplayer.h b/src/librssguard/gui/settings/settingsmediaplayer.h new file mode 100644 index 000000000..85497b732 --- /dev/null +++ b/src/librssguard/gui/settings/settingsmediaplayer.h @@ -0,0 +1,28 @@ +// For license of this file, see /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 diff --git a/src/librssguard/gui/settings/settingsmediaplayer.ui b/src/librssguard/gui/settings/settingsmediaplayer.ui new file mode 100644 index 000000000..ecf1cf83a --- /dev/null +++ b/src/librssguard/gui/settings/settingsmediaplayer.ui @@ -0,0 +1,50 @@ + + + SettingsMediaPlayer + + + + 0 + 0 + 360 + 148 + + + + + + + Backend + + + + + + + true + + + + + + + + + + + + + + + + + + HelpSpoiler + QWidget +
helpspoiler.h
+ 1 +
+
+ + +