Disable fading when alsa device is selected

This commit is contained in:
Jonas Kvinge 2019-01-09 20:02:40 +01:00
parent 1d35923f0c
commit 513aafca16
12 changed files with 216 additions and 477 deletions

View File

@ -210,7 +210,6 @@ set(SOURCES
settings/behavioursettingspage.cpp
settings/collectionsettingspage.cpp
settings/backendsettingspage.cpp
settings/playbacksettingspage.cpp
settings/playlistsettingspage.cpp
settings/networkproxysettingspage.cpp
settings/appearancesettingspage.cpp
@ -385,7 +384,6 @@ set(HEADERS
settings/behavioursettingspage.h
settings/collectionsettingspage.h
settings/backendsettingspage.h
settings/playbacksettingspage.h
settings/playlistsettingspage.h
settings/networkproxysettingspage.h
settings/appearancesettingspage.h
@ -477,7 +475,6 @@ set(UI
settings/behavioursettingspage.ui
settings/collectionsettingspage.ui
settings/backendsettingspage.ui
settings/playbacksettingspage.ui
settings/playlistsettingspage.ui
settings/networkproxysettingspage.ui
settings/appearancesettingspage.ui

View File

@ -131,7 +131,6 @@
#include "transcoder/transcodedialog.h"
#include "settings/settingsdialog.h"
#include "settings/behavioursettingspage.h"
#include "settings/playbacksettingspage.h"
#include "settings/playlistsettingspage.h"
#ifdef HAVE_STREAM_TIDAL
# include "settings/tidalsettingspage.h"

View File

@ -71,7 +71,6 @@
#include "equalizer/equalizer.h"
#include "analyzer/analyzercontainer.h"
#include "settings/backendsettingspage.h"
#include "settings/playbacksettingspage.h"
#include "settings/behavioursettingspage.h"
#include "settings/playlistsettingspage.h"
#include "internet/internetservices.h"

View File

@ -34,7 +34,6 @@
#include "engine_fwd.h"
#include "enginebase.h"
#include "settings/backendsettingspage.h"
#include "settings/playbacksettingspage.h"
Engine::Base::Base()
: volume_(50),
@ -100,18 +99,18 @@ void Engine::Base::ReloadSettings() {
QSettings s;
s.beginGroup(BackendSettingsPage::kSettingsGroup);
output_ = s.value("output").toString();
device_ = s.value("device");
buffer_duration_nanosec_ = s.value("bufferduration", 4000).toLongLong() * kNsecPerMsec;
buffer_min_fill_ = s.value("bufferminfill", 33).toInt();
rg_enabled_ = s.value("rgenabled", false).toBool();
rg_mode_ = s.value("rgmode", 0).toInt();
rg_preamp_ = s.value("rgpreamp", 0.0).toDouble();
rg_compression_ = s.value("rgcompression", true).toBool();
buffer_duration_nanosec_ = s.value("bufferduration", 4000).toLongLong() * kNsecPerMsec;
buffer_min_fill_ = s.value("bufferminfill", 33).toInt();
mono_playback_ = s.value("monoplayback", false).toBool();
s.endGroup();
s.beginGroup(PlaybackSettingsPage::kSettingsGroup);
fadeout_enabled_ = s.value("FadeoutEnabled", false).toBool();
crossfade_enabled_ = s.value("CrossfadeEnabled", false).toBool();
autocrossfade_enabled_ = s.value("AutoCrossfadeEnabled", false).toBool();
@ -121,6 +120,9 @@ void Engine::Base::ReloadSettings() {
fadeout_duration_nanosec_ = (fadeout_duration_ * kNsecPerMsec);
fadeout_pause_duration_ = s.value("FadeoutPauseDuration", 250).toLongLong();
fadeout_pause_duration_nanosec_ = (fadeout_pause_duration_ * kNsecPerMsec);
mono_playback_ = s.value("monoplayback", false).toBool();
s.endGroup();
}

View File

@ -75,7 +75,6 @@
#include "playlistview.h"
#include "covermanager/currentartloader.h"
#include "settings/appearancesettingspage.h"
#include "settings/playbacksettingspage.h"
#include "settings/playlistsettingspage.h"
using std::sort;

View File

@ -60,7 +60,6 @@ BackendSettingsPage::BackendSettingsPage(SettingsDialog *dialog) : SettingsPage(
ui_->label_bufferminfillvalue->setMinimumWidth(QFontMetrics(ui_->label_bufferminfillvalue->font()).width("WW%"));
ui_->label_replaygainpreamp->setMinimumWidth(QFontMetrics(ui_->label_replaygainpreamp->font()).width("-WW.W dB"));
RgPreampChanged(ui_->stickslider_replaygainpreamp->value());
s_.beginGroup(BackendSettingsPage::kSettingsGroup);
@ -107,7 +106,6 @@ void BackendSettingsPage::Load() {
if (EngineInitialised()) Load_Engine(enginetype);
ui_->spinbox_bufferduration->setValue(s_.value("bufferduration", 4000).toInt());
ui_->checkbox_monoplayback->setChecked(s_.value("monoplayback", false).toBool());
ui_->slider_bufferminfill->setValue(s_.value("bufferminfill", 33).toInt());
ui_->checkbox_replaygain->setChecked(s_.value("rgenabled", false).toBool());
@ -115,6 +113,16 @@ void BackendSettingsPage::Load() {
ui_->stickslider_replaygainpreamp->setValue(s_.value("rgpreamp", 0.0).toDouble() * 10 + 150);
ui_->checkbox_replaygaincompression->setChecked(s_.value("rgcompression", true).toBool());
ui_->checkbox_fadeout_stop->setChecked(s_.value("FadeoutEnabled", false).toBool());
ui_->checkbox_fadeout_cross->setChecked(s_.value("CrossfadeEnabled", false).toBool());
ui_->checkbox_fadeout_auto->setChecked(s_.value("AutoCrossfadeEnabled", false).toBool());
ui_->checkbox_fadeout_samealbum->setChecked(s_.value("NoCrossfadeSameAlbum", true).toBool());
ui_->checkbox_fadeout_pauseresume->setChecked(s_.value("FadeoutPauseEnabled", false).toBool());
ui_->spinbox_fadeduration->setValue(s_.value("FadeoutDuration", 2000).toInt());
ui_->spinbox_fadeduration_pauseresume->setValue(s_.value("FadeoutPauseDuration", 250).toInt());
ui_->checkbox_monoplayback->setChecked(s_.value("monoplayback", false).toBool());
int alsaplug_int = alsa_plugin(s_.value("alsaplugin", 0).toInt());
if (alsa_plugin(alsaplug_int)) {
alsa_plugin alsaplugin = alsa_plugin(alsaplug_int);
@ -133,12 +141,9 @@ void BackendSettingsPage::Load() {
if (engine()->state() == Engine::Empty) {
if (ui_->combobox_engine->count() > 1) ui_->combobox_engine->setEnabled(true);
else ui_->combobox_engine->setEnabled(false);
ResetWarning();
}
else {
ui_->combobox_engine->setEnabled(false);
if (ui_->combobox_engine->count() > 1) ShowWarning("Engine can't be switched while playing. Close settings and reopen to change engine.");
else ResetWarning();
}
ConnectSignals();
@ -153,10 +158,13 @@ void BackendSettingsPage::ConnectSignals() {
connect(ui_->combobox_output, SIGNAL(currentIndexChanged(int)), SLOT(OutputChanged(int)));
connect(ui_->combobox_device, SIGNAL(currentIndexChanged(int)), SLOT(DeviceSelectionChanged(int)));
connect(ui_->lineedit_device, SIGNAL(textChanged(const QString &)), SLOT(DeviceStringChanged()));
connect(ui_->slider_bufferminfill, SIGNAL(valueChanged(int)), SLOT(BufferMinFillChanged(int)));
connect(ui_->stickslider_replaygainpreamp, SIGNAL(valueChanged(int)), SLOT(RgPreampChanged(int)));
connect(ui_->radiobutton_alsa_hw, SIGNAL(clicked(bool)), SLOT(radiobutton_alsa_hw_clicked(bool)));
connect(ui_->radiobutton_alsa_plughw, SIGNAL(clicked(bool)), SLOT(radiobutton_alsa_plughw_clicked(bool)));
connect(ui_->slider_bufferminfill, SIGNAL(valueChanged(int)), SLOT(BufferMinFillChanged(int)));
connect(ui_->stickslider_replaygainpreamp, SIGNAL(valueChanged(int)), SLOT(RgPreampChanged(int)));
connect(ui_->checkbox_fadeout_stop, SIGNAL(toggled(bool)), SLOT(FadingOptionsChanged()));
connect(ui_->checkbox_fadeout_cross, SIGNAL(toggled(bool)), SLOT(FadingOptionsChanged()));
connect(ui_->checkbox_fadeout_auto, SIGNAL(toggled(bool)), SLOT(FadingOptionsChanged()));
}
@ -249,10 +257,7 @@ void BackendSettingsPage::Load_Output(QString output, QVariant device) {
ui_->checkbox_monoplayback->setEnabled(false);
}
if (ui_->combobox_output->count() < 1) {
ShowWarning("Engine may take some time to initialize. Close settings and reopen to set output and devices.");
}
else Load_Device(output, device);
if (ui_->combobox_output->count() >= 1) Load_Device(output, device);
}
@ -334,6 +339,8 @@ void BackendSettingsPage::Load_Device(QString output, QVariant device) {
}
}
FadingOptionsChanged();
}
void BackendSettingsPage::Save() {
@ -360,13 +367,23 @@ void BackendSettingsPage::Save() {
s_.setValue("device", device_value);
s_.setValue("bufferduration", ui_->spinbox_bufferduration->value());
s_.setValue("monoplayback", ui_->checkbox_monoplayback->isChecked());
s_.setValue("bufferminfill", ui_->slider_bufferminfill->value());
s_.setValue("rgenabled", ui_->checkbox_replaygain->isChecked());
s_.setValue("rgmode", ui_->combobox_replaygainmode->currentIndex());
s_.setValue("rgpreamp", float(ui_->stickslider_replaygainpreamp->value()) / 10 - 15);
s_.setValue("rgcompression", ui_->checkbox_replaygaincompression->isChecked());
s_.setValue("FadeoutEnabled", ui_->checkbox_fadeout_stop->isChecked());
s_.setValue("CrossfadeEnabled", ui_->checkbox_fadeout_cross->isChecked());
s_.setValue("AutoCrossfadeEnabled", ui_->checkbox_fadeout_auto->isChecked());
s_.setValue("NoCrossfadeSameAlbum", ui_->checkbox_fadeout_samealbum->isChecked());
s_.setValue("FadeoutPauseEnabled", ui_->checkbox_fadeout_pauseresume->isChecked());
s_.setValue("FadeoutDuration", ui_->spinbox_fadeduration->value());
s_.setValue("FadeoutPauseDuration", ui_->spinbox_fadeduration_pauseresume->value());
s_.setValue("monoplayback", ui_->checkbox_monoplayback->isChecked());
if (ui_->radiobutton_alsa_hw->isChecked()) s_.setValue("alsaplugin", static_cast<int>(alsa_plugin::alsa_hw));
else if (ui_->radiobutton_alsa_plughw->isChecked()) s_.setValue("alsaplugin", static_cast<int>(alsa_plugin::alsa_plughw));
else s_.remove("alsaplugin");
@ -396,7 +413,6 @@ void BackendSettingsPage::EngineChanged(int index) {
}
engineloaded_ = false;
ResetWarning();
Load_Engine(enginetype);
}
@ -429,6 +445,8 @@ void BackendSettingsPage::DeviceSelectionChanged(int index) {
if (!ui_->lineedit_device->text().isEmpty()) ui_->lineedit_device->setText("");
}
FadingOptionsChanged();
}
void BackendSettingsPage::DeviceStringChanged() {
@ -480,6 +498,8 @@ void BackendSettingsPage::DeviceStringChanged() {
if ((!found) && (ui_->combobox_device->count() > 0) && (ui_->combobox_device->currentIndex() != 0)) ui_->combobox_device->setCurrentIndex(0);
}
FadingOptionsChanged();
}
void BackendSettingsPage::RgPreampChanged(int value) {
@ -495,41 +515,6 @@ void BackendSettingsPage::BufferMinFillChanged(int value) {
ui_->label_bufferminfillvalue->setText(QString::number(value) + "%");
}
void BackendSettingsPage::ShowWarning(QString text) {
QImage image_logo(":/icons/64x64/dialog-warning.png");
QPixmap pixmap_logo(QPixmap::fromImage(image_logo));
ui_->label_warn_logo->setPixmap(pixmap_logo);
ui_->label_warn_text->setStyleSheet("QLabel { color: red; }");
ui_->label_warn_text->setText("<b>" + text + "</b>");
ui_->groupbox_warning->setVisible(true);
ui_->label_warn_logo->setVisible(true);
ui_->label_warn_text->setVisible(true);
ui_->groupbox_warning->setEnabled(true);
ui_->label_warn_logo->setEnabled(true);
ui_->label_warn_text->setEnabled(true);
}
void BackendSettingsPage::ResetWarning() {
ui_->label_warn_logo->clear();
ui_->label_warn_text->clear();
ui_->groupbox_warning->setEnabled(false);
ui_->label_warn_logo->setEnabled(false);
ui_->label_warn_text->setEnabled(false);
ui_->groupbox_warning->setVisible(false);
ui_->label_warn_logo->setVisible(false);
ui_->label_warn_text->setVisible(false);
}
void BackendSettingsPage::SwitchALSADevices(alsa_plugin alsaplugin) {
// All ALSA devices are listed twice, one for "hw" and one for "plughw"
@ -599,3 +584,22 @@ void BackendSettingsPage::radiobutton_alsa_plughw_clicked(bool checked) {
}
}
void BackendSettingsPage::FadingOptionsChanged() {
if (EngineInitialised()) {
EngineBase::OutputDetails output = ui_->combobox_output->itemData(ui_->combobox_output->currentIndex()).value<EngineBase::OutputDetails>();
if (engine()->type() == Engine::GStreamer && !(engine()->ALSADeviceSupport(output.name) && !ui_->lineedit_device->text().isEmpty())) {
ui_->groupbox_fading->setDisabled(false);
}
else {
ui_->groupbox_fading->setDisabled(true);
ui_->checkbox_fadeout_stop->setChecked(false);
ui_->checkbox_fadeout_cross->setChecked(false);
ui_->checkbox_fadeout_auto->setChecked(false);
}
}
ui_->widget_fading_options->setEnabled(ui_->checkbox_fadeout_stop->isChecked() || ui_->checkbox_fadeout_cross->isChecked() || ui_->checkbox_fadeout_auto->isChecked());
}

View File

@ -65,6 +65,7 @@ public:
void BufferMinFillChanged(int value);
void radiobutton_alsa_hw_clicked(bool checked);
void radiobutton_alsa_plughw_clicked(bool checked);
void FadingOptionsChanged();
private:
@ -83,9 +84,6 @@ private:
void Load_Engine(Engine::EngineType enginetype);
void Load_Output(QString output, QVariant device);
void Load_Device(QString output, QVariant device);
void ShowWarning(QString text);
void ResetWarning();
void XineWarning();
void SwitchALSADevices(alsa_plugin alsaplugin);
QSettings s_;

View File

@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>596</width>
<height>720</height>
<height>740</height>
</rect>
</property>
<property name="windowTitle">
@ -406,6 +406,159 @@
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupbox_fading">
<property name="title">
<string>Fading</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_4">
<item>
<widget class="QCheckBox" name="checkbox_fadeout_stop">
<property name="text">
<string>Fade out when stopping a track</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="checkbox_fadeout_cross">
<property name="text">
<string>Cross-fade when changing tracks manually</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="checkbox_fadeout_auto">
<property name="text">
<string>Cross-fade when changing tracks automatically</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="checkbox_fadeout_samealbum">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Except between tracks on the same album or in the same CUE sheet</string>
</property>
</widget>
</item>
<item>
<widget class="QWidget" name="widget_fading_options" native="true">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="label_fadingduration_1">
<property name="text">
<string>Fading duration</string>
</property>
<property name="indent">
<number>22</number>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="spinbox_fadeduration">
<property name="suffix">
<string> ms</string>
</property>
<property name="maximum">
<number>10000</number>
</property>
<property name="singleStep">
<number>1000</number>
</property>
<property name="value">
<number>2000</number>
</property>
</widget>
</item>
<item>
<spacer name="spacer_fading_1">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>257</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QCheckBox" name="checkbox_fadeout_pauseresume">
<property name="text">
<string>Fade out on pause / fade in on resume</string>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="layout_fading">
<item>
<widget class="QLabel" name="label_fadingduration_2">
<property name="text">
<string>Fading duration</string>
</property>
<property name="indent">
<number>22</number>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="spinbox_fadeduration_pauseresume">
<property name="suffix">
<string> ms</string>
</property>
<property name="maximum">
<number>10000</number>
</property>
<property name="singleStep">
<number>50</number>
</property>
<property name="value">
<number>250</number>
</property>
</widget>
</item>
<item>
<spacer name="spacer_fading_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QCheckBox" name="checkbox_monoplayback">
<property name="toolTip">
@ -416,68 +569,6 @@
</property>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupbox_warning">
<property name="enabled">
<bool>false</bool>
</property>
<property name="title">
<string/>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLabel" name="label_warn_logo">
<property name="enabled">
<bool>false</bool>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>70</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>64</width>
<height>64</height>
</size>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_warn_text">
<property name="enabled">
<bool>false</bool>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>70</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>64</height>
</size>
</property>
<property name="text">
<string/>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">

View File

@ -1,92 +0,0 @@
/*
* Strawberry Music Player
* This file was part of Clementine.
* Copyright 2010, David Sansome <me@davidsansome.com>
*
* Strawberry is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Strawberry is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Strawberry. If not, see <http://www.gnu.org/licenses/>.
*
*/
#include "config.h"
#include <stdbool.h>
#include <QWidget>
#include <QVariant>
#include <QString>
#include <QSettings>
#include <QCheckBox>
#include <QSpinBox>
#include "core/iconloader.h"
#include "core/logging.h"
#include "settingspage.h"
#include "playbacksettingspage.h"
#include "ui_playbacksettingspage.h"
class SettingsDialog;
const char *PlaybackSettingsPage::kSettingsGroup = "Playback";
PlaybackSettingsPage::PlaybackSettingsPage(SettingsDialog *dialog) : SettingsPage(dialog), ui_(new Ui_PlaybackSettingsPage) {
ui_->setupUi(this);
setWindowIcon(IconLoader::Load("media-play"));
connect(ui_->checkbox_fadeout_stop, SIGNAL(toggled(bool)), SLOT(FadingOptionsChanged()));
connect(ui_->checkbox_fadeout_cross, SIGNAL(toggled(bool)), SLOT(FadingOptionsChanged()));
connect(ui_->checkbox_fadeout_auto, SIGNAL(toggled(bool)), SLOT(FadingOptionsChanged()));
}
PlaybackSettingsPage::~PlaybackSettingsPage() {
delete ui_;
}
void PlaybackSettingsPage::Load() {
QSettings s;
s.beginGroup(kSettingsGroup);
ui_->checkbox_fadeout_stop->setChecked(s.value("FadeoutEnabled", false).toBool());
ui_->checkbox_fadeout_cross->setChecked(s.value("CrossfadeEnabled", false).toBool());
ui_->checkbox_fadeout_auto->setChecked(s.value("AutoCrossfadeEnabled", false).toBool());
ui_->checkbox_fadeout_samealbum->setChecked(s.value("NoCrossfadeSameAlbum", true).toBool());
ui_->checkbox_fadeout_pauseresume->setChecked(s.value("FadeoutPauseEnabled", false).toBool());
ui_->spinbox_fadeduration->setValue(s.value("FadeoutDuration", 2000).toInt());
ui_->spinbox_fadeduration_pauseresume->setValue(s.value("FadeoutPauseDuration", 250).toInt());
s.endGroup();
}
void PlaybackSettingsPage::Save() {
QSettings s;
s.beginGroup(kSettingsGroup);
s.setValue("FadeoutEnabled", ui_->checkbox_fadeout_stop->isChecked());
s.setValue("CrossfadeEnabled", ui_->checkbox_fadeout_cross->isChecked());
s.setValue("AutoCrossfadeEnabled", ui_->checkbox_fadeout_auto->isChecked());
s.setValue("NoCrossfadeSameAlbum", ui_->checkbox_fadeout_samealbum->isChecked());
s.setValue("FadeoutPauseEnabled", ui_->checkbox_fadeout_pauseresume->isChecked());
s.setValue("FadeoutDuration", ui_->spinbox_fadeduration->value());
s.setValue("FadeoutPauseDuration", ui_->spinbox_fadeduration_pauseresume->value());
s.endGroup();
}
void PlaybackSettingsPage::FadingOptionsChanged() {
ui_->widget_fading_options->setEnabled(ui_->checkbox_fadeout_stop->isChecked() || ui_->checkbox_fadeout_cross->isChecked() || ui_->checkbox_fadeout_auto->isChecked());
}

View File

@ -1,52 +0,0 @@
/*
* Strawberry Music Player
* This file was part of Clementine.
* Copyright 2010, David Sansome <me@davidsansome.com>
*
* Strawberry is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Strawberry is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Strawberry. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef PLAYBACKSETTINGSPAGE_H
#define PLAYBACKSETTINGSPAGE_H
#include "config.h"
#include <QObject>
#include <QString>
#include "settingspage.h"
class SettingsDialog;
class Ui_PlaybackSettingsPage;
class PlaybackSettingsPage : public SettingsPage {
Q_OBJECT
public:
PlaybackSettingsPage(SettingsDialog* dialog);
~PlaybackSettingsPage();
static const char *kSettingsGroup;
void Load();
void Save();
private slots:
void FadingOptionsChanged();
private:
Ui_PlaybackSettingsPage* ui_;
};
#endif // PLAYBACKSETTINGSPAGE_H

View File

@ -1,204 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>PlaybackSettingsPage</class>
<widget class="QWidget" name="PlaybackSettingsPage">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>596</width>
<height>638</height>
</rect>
</property>
<property name="windowTitle">
<string>Playback</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QGroupBox" name="groupbox_fading">
<property name="title">
<string>Fading</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QCheckBox" name="checkbox_fadeout_stop">
<property name="text">
<string>Fade out when stopping a track</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="checkbox_fadeout_cross">
<property name="text">
<string>Cross-fade when changing tracks manually</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="checkbox_fadeout_auto">
<property name="text">
<string>Cross-fade when changing tracks automatically</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="checkbox_fadeout_samealbum">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Except between tracks on the same album or in the same CUE sheet</string>
</property>
</widget>
</item>
<item>
<widget class="QWidget" name="widget_fading_options" native="true">
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="label_fadingduration_1">
<property name="text">
<string>Fading duration</string>
</property>
<property name="indent">
<number>22</number>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="spinbox_fadeduration">
<property name="suffix">
<string> ms</string>
</property>
<property name="maximum">
<number>10000</number>
</property>
<property name="singleStep">
<number>1000</number>
</property>
<property name="value">
<number>2000</number>
</property>
</widget>
</item>
<item>
<spacer name="spacer_fading_1">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>257</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QCheckBox" name="checkbox_fadeout_pauseresume">
<property name="text">
<string>Fade out on pause / fade in on resume</string>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="layout_fading">
<item>
<widget class="QLabel" name="label_fadingduration_2">
<property name="text">
<string>Fading duration</string>
</property>
<property name="indent">
<number>22</number>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="spinbox_fadeduration_pauseresume">
<property name="suffix">
<string> ms</string>
</property>
<property name="maximum">
<number>10000</number>
</property>
<property name="singleStep">
<number>50</number>
</property>
<property name="value">
<number>250</number>
</property>
</widget>
</item>
<item>
<spacer name="spacer_fading_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="spacer_bottom">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>114</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<resources/>
<connections>
<connection>
<sender>checkbox_fadeout_auto</sender>
<signal>toggled(bool)</signal>
<receiver>checkbox_fadeout_samealbum</receiver>
<slot>setEnabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>109</x>
<y>133</y>
</hint>
<hint type="destinationlabel">
<x>113</x>
<y>153</y>
</hint>
</hints>
</connection>
</connections>
</ui>

View File

@ -57,7 +57,6 @@
#include "behavioursettingspage.h"
#include "collectionsettingspage.h"
#include "notificationssettingspage.h"
#include "playbacksettingspage.h"
#include "playlistsettingspage.h"
#include "shortcutssettingspage.h"
#include "transcodersettingspage.h"
@ -122,13 +121,12 @@ SettingsDialog::SettingsDialog(Application *app, QWidget *parent)
AddPage(Page_Behaviour, new BehaviourSettingsPage(this), general);
AddPage(Page_Collection, new CollectionSettingsPage(this), general);
AddPage(Page_Backend, new BackendSettingsPage(this), general);
AddPage(Page_Playback, new PlaybackSettingsPage(this), general);
AddPage(Page_Playlist, new PlaylistSettingsPage(this), general);
AddPage(Page_Scrobbler, new ScrobblerSettingsPage(this), general);
#ifdef HAVE_GSTREAMER
AddPage(Page_Transcoding, new TranscoderSettingsPage(this), general);
#endif
AddPage(Page_Proxy, new NetworkProxySettingsPage(this), general);
AddPage(Page_Scrobbler, new ScrobblerSettingsPage(this), general);
QTreeWidgetItem *iface = AddCategory(tr("User interface"));
AddPage(Page_Appearance, new AppearanceSettingsPage(this), iface);