101 lines
4.2 KiB
C++
101 lines
4.2 KiB
C++
// For license of this file, see <project-root-folder>/LICENSE.md.
|
|
|
|
#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>
|
|
|
|
#include <QFileDialog>
|
|
#endif
|
|
|
|
SettingsMediaPlayer::SettingsMediaPlayer(Settings* settings, QWidget* parent) : SettingsPanel(settings, 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)
|
|
m_ui.m_txtBackend->setText(QSL("libmpv"));
|
|
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(QDir::toNativeSeparators(settings()
|
|
->value(GROUP(VideoPlayer),
|
|
SETTING(VideoPlayer::MpvCustomConfigFolder))
|
|
.toString()));
|
|
|
|
connect(m_ui.m_btnMpvConfigFolder, &QPushButton::clicked, this, &SettingsMediaPlayer::selectMpvConfigFolder);
|
|
#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 "
|
|
"modern platforms where needed libraries are available. You must manually recompile "
|
|
"%1 to be able to use media player.")
|
|
.arg(QSL(APP_NAME)),
|
|
true);
|
|
m_ui.m_stackedDetails->setCurrentWidget(m_ui.m_pageNothing);
|
|
#endif
|
|
|
|
onEndLoadSettings();
|
|
}
|
|
|
|
#if defined(ENABLE_MEDIAPLAYER_LIBMPV)
|
|
void SettingsMediaPlayer::selectMpvConfigFolder() {
|
|
QString real_path = qApp->replaceUserDataFolderPlaceholder(m_ui.m_txtMpvConfigFolder->text());
|
|
QFileDialog dialog(this, tr("Select folder for your MPV configuration"), real_path);
|
|
|
|
dialog.setFileMode(QFileDialog::FileMode::Directory);
|
|
dialog.setWindowIcon(icon());
|
|
dialog.setOptions(QFileDialog::Option::DontUseNativeDialog | QFileDialog::Option::ShowDirsOnly |
|
|
QFileDialog::Option::HideNameFilterDetails);
|
|
dialog.setViewMode(QFileDialog::ViewMode::Detail);
|
|
|
|
if (dialog.exec() == QDialog::DialogCode::Accepted && !dialog.selectedFiles().isEmpty()) {
|
|
m_ui.m_txtMpvConfigFolder->setText(QDir::toNativeSeparators(dialog.selectedFiles().at(0)));
|
|
}
|
|
}
|
|
#endif
|
|
|
|
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());
|
|
|
|
if (m_ui.m_gbMpvCustomConfigFolder->isChecked()) {
|
|
LibMpvBackend::installCustomConfig(m_ui.m_txtMpvConfigFolder->text());
|
|
}
|
|
#elif defined(ENABLE_MEDIAPLAYER_QTMULTIMEDIA)
|
|
|
|
#else
|
|
|
|
#endif
|
|
|
|
onEndSaveSettings();
|
|
}
|