From 72ef93ccb8853ac7bd0cddf80579698386169b43 Mon Sep 17 00:00:00 2001 From: be_ Date: Sun, 17 Sep 2017 16:27:46 -0500 Subject: [PATCH 01/25] DlgPrefControls: remove "(Experimental)" label from skin scaling --- src/preferences/dialog/dlgprefcontrols.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/preferences/dialog/dlgprefcontrols.cpp b/src/preferences/dialog/dlgprefcontrols.cpp index 9a4f8c0fb739..69d6eb55f3e9 100644 --- a/src/preferences/dialog/dlgprefcontrols.cpp +++ b/src/preferences/dialog/dlgprefcontrols.cpp @@ -358,11 +358,11 @@ DlgPrefControls::DlgPrefControls(QWidget * parent, MixxxMainWindow * mixxx, this, SLOT(slotSetScaleFactorAuto(bool))); //: Entry of the HiDPI scale combo box. %1 is the scale factor in percent - comboBoxScaleFactor->addItem(QString(tr("%1 % (Experimental)")).arg(50), 0.5); + comboBoxScaleFactor->addItem(QString(tr("%1 %")).arg(50), 0.5); comboBoxScaleFactor->addItem(QString(tr("%1 %")).arg(100), 1); - comboBoxScaleFactor->addItem(QString(tr("%1 % (Experimental)")).arg(200), 2); - comboBoxScaleFactor->addItem(QString(tr("%1 % (Experimental)")).arg(300), 3); - comboBoxScaleFactor->addItem(QString(tr("%1 % (Experimental)")).arg(400), 4); + comboBoxScaleFactor->addItem(QString(tr("%1 %")).arg(200), 2); + comboBoxScaleFactor->addItem(QString(tr("%1 %")).arg(300), 3); + comboBoxScaleFactor->addItem(QString(tr("%1 %")).arg(400), 4); int i; for (i = 0; i < comboBoxScaleFactor->count(); ++i) { if (scaleFactor == comboBoxScaleFactor->itemData(i)) { From be6d4950500e77b277bfab214b40bd8f61ea53eb Mon Sep 17 00:00:00 2001 From: be_ Date: Sun, 17 Sep 2017 16:29:17 -0500 Subject: [PATCH 02/25] DlgPrefControls: don't apply changes until Apply button is pressed Only did this for the top section so far. The rest will be split into a new Decks pane. --- src/mixxx.cpp | 30 ++--- src/preferences/dialog/dlgprefcontrols.cpp | 125 ++++++++++++--------- src/preferences/dialog/dlgprefcontrols.h | 14 ++- src/skin/skinloader.cpp | 74 +++++------- src/skin/skinloader.h | 27 +++-- 5 files changed, 143 insertions(+), 127 deletions(-) diff --git a/src/mixxx.cpp b/src/mixxx.cpp index 5c9d4a55aedb..0f3c76415d4a 100644 --- a/src/mixxx.cpp +++ b/src/mixxx.cpp @@ -366,13 +366,13 @@ void MixxxMainWindow::initialize(QApplication* pApp, const CmdlineArgs& args) { // Load skin to a QWidget that we set as the central widget. Assignment // intentional in next line. - if (!(m_pWidgetParent = m_pSkinLoader->loadDefaultSkin(this, m_pKeyboard, - m_pPlayerManager, - m_pControllerManager, - m_pLibrary, - m_pVCManager, - m_pEffectsManager, - m_pRecordingManager))) { + if (!(m_pWidgetParent = m_pSkinLoader->loadConfiguredSkin(this, m_pKeyboard, + m_pPlayerManager, + m_pControllerManager, + m_pLibrary, + m_pVCManager, + m_pEffectsManager, + m_pRecordingManager))) { reportCriticalErrorAndQuit( "default skin cannot be loaded see mixxx trace for more information."); @@ -1209,14 +1209,14 @@ void MixxxMainWindow::rebootMixxxView() { // Load skin to a QWidget that we set as the central widget. Assignment // intentional in next line. - if (!(m_pWidgetParent = m_pSkinLoader->loadDefaultSkin(this, - m_pKeyboard, - m_pPlayerManager, - m_pControllerManager, - m_pLibrary, - m_pVCManager, - m_pEffectsManager, - m_pRecordingManager))) { + if (!(m_pWidgetParent = m_pSkinLoader->loadConfiguredSkin(this, + m_pKeyboard, + m_pPlayerManager, + m_pControllerManager, + m_pLibrary, + m_pVCManager, + m_pEffectsManager, + m_pRecordingManager))) { QMessageBox::critical(this, tr("Error in skin file"), diff --git a/src/preferences/dialog/dlgprefcontrols.cpp b/src/preferences/dialog/dlgprefcontrols.cpp index 69d6eb55f3e9..7d9484c55699 100644 --- a/src/preferences/dialog/dlgprefcontrols.cpp +++ b/src/preferences/dialog/dlgprefcontrols.cpp @@ -25,7 +25,6 @@ #include "mixer/basetrackplayer.h" #include "preferences/dialog/dlgprefcontrols.h" -#include "preferences/constants.h" #include "preferences/usersettings.h" #include "control/controlobject.h" #include "control/controlproxy.h" @@ -53,7 +52,11 @@ DlgPrefControls::DlgPrefControls(QWidget * parent, MixxxMainWindow * mixxx, m_pPlayerManager(pPlayerManager), m_iNumConfiguredDecks(0), m_iNumConfiguredSamplers(0), - m_autoScaleFactor(0) { + m_dScaleFactorAuto(1.0), + m_bUseAutoScaleFactor(false), + m_dScaleFactor(1.0), + m_bStartWithFullScreen(false), + m_bRebootMixxxView(false) { setupUi(this); m_pNumDecks = new ControlProxy("[Master]", "num_decks", this); @@ -297,15 +300,15 @@ DlgPrefControls::DlgPrefControls(QWidget * parent, MixxxMainWindow * mixxx, QList skinSearchPaths = m_pSkinLoader->getSkinSearchPaths(); QList skins; - foreach (QDir dir, skinSearchPaths) { + for (QDir dir : skinSearchPaths) { dir.setFilter(QDir::Dirs | QDir::NoDotAndDotDot); skins.append(dir.entryInfoList()); } - QString configuredSkinPath = m_pSkinLoader->getSkinPath(); + QString configuredSkinPath = m_pSkinLoader->getConfiguredSkinPath(); QIcon sizeWarningIcon(":/images/preferences/ic_preferences_warning.png"); int index = 0; - foreach (QFileInfo skinInfo, skins) { + for (QFileInfo skinInfo : skins) { bool size_ok = checkSkinResolution(skinInfo.absoluteFilePath()); if (size_ok) { ComboBoxSkinconf->insertItem(index, skinInfo.fileName()); @@ -332,8 +335,8 @@ DlgPrefControls::DlgPrefControls(QWidget * parent, MixxxMainWindow * mixxx, #if QT_VERSION < QT_VERSION_CHECK(5, 0, 0) AutoHiDpi autoHiDpi; - m_autoScaleFactor = autoHiDpi.getScaleFactor(); - double scaleFactor = m_autoScaleFactor; + m_dScaleFactorAuto = autoHiDpi.getScaleFactor(); + double scaleFactor = m_dScaleFactorAuto; if (scaleFactor > 0) { // we got a valid auto scale factor bool scaleFactorAuto = m_pConfig->getValue( @@ -342,13 +345,11 @@ DlgPrefControls::DlgPrefControls(QWidget * parent, MixxxMainWindow * mixxx, if (scaleFactorAuto) { comboBoxScaleFactor->setEnabled(false); m_pConfig->setValue( - ConfigKey("[Config]", "ScaleFactor"), m_autoScaleFactor); + ConfigKey("[Config]", "ScaleFactor"), m_dScaleFactorAuto); } else { scaleFactor = m_pConfig->getValue( ConfigKey("[Config]", "ScaleFactor"), 1.0); } - connect(checkBoxScaleFactorAuto, SIGNAL(toggled(bool)), - this, SLOT(slotSetScaleFactorAuto(bool))); } else { checkBoxScaleFactorAuto->setEnabled(false); scaleFactor = m_pConfig->getValue( @@ -390,8 +391,6 @@ DlgPrefControls::DlgPrefControls(QWidget * parent, MixxxMainWindow * mixxx, // checkBoxStartFullScreen->setChecked(m_pConfig->getValueString( ConfigKey("[Config]", "StartInFullscreen")).toInt()==1); - connect(checkBoxStartFullScreen, SIGNAL(toggled(bool)), - this, SLOT(slotSetStartInFullScreen(bool))); // // Screensaver mode @@ -486,7 +485,7 @@ DlgPrefControls::~DlgPrefControls() { void DlgPrefControls::slotUpdateSchemes() { // Since this involves opening a file we won't do this as part of regular slotUpdate QList schlist = LegacySkinParser::getSchemeList( - m_pSkinLoader->getSkinPath()); + m_pSkinLoader->getSkinPath(m_skin)); ComboBoxSchemeconf->clear(); @@ -540,6 +539,10 @@ void DlgPrefControls::slotUpdate() { } void DlgPrefControls::slotResetToDefaults() { + int index = ComboBoxSkinconf->findText(m_pSkinLoader->getDefaultSkinName()); + ComboBoxSkinconf->setCurrentIndex(index); + slotSetSkin(index); + // Track time display mode radioButtonRemaining->setChecked(true); @@ -563,7 +566,9 @@ void DlgPrefControls::slotResetToDefaults() { // Default to normal size widgets comboBoxScaleFactor->setCurrentIndex(1); // 100 % - checkBoxScaleFactorAuto->setChecked(true); + if (m_dScaleFactorAuto > 0) { + checkBoxScaleFactorAuto->setChecked(true); + } // Don't start in full screen. checkBoxStartFullScreen->setChecked(false); @@ -692,41 +697,34 @@ void DlgPrefControls::slotSetCueRecall(bool b) void DlgPrefControls::slotSetScaleFactor(int index) { - double scaleFactor = comboBoxScaleFactor->itemData(index).toDouble(); - m_pConfig->setValue(ConfigKey("[Config]", "ScaleFactor"), scaleFactor); - // reload the skin when the button is toggled - repaint(); - m_mixxx->rebootMixxxView(); + double newScaleFactor = comboBoxScaleFactor->itemData(index).toDouble(); + if (m_dScaleFactor != newScaleFactor) { + m_dScaleFactor = newScaleFactor; + m_bRebootMixxxView = true; + } } -void DlgPrefControls::slotSetScaleFactorAuto(bool checked) { - m_pConfig->setValue( - ConfigKey("[Config]", "ScaleFactorAuto"), checked); - comboBoxScaleFactor->setEnabled(!checked); - if (checked) { - m_pConfig->setValue( - ConfigKey("[Config]", "ScaleFactor"), m_autoScaleFactor); - // reload the skin when the button is toggled - repaint(); - m_mixxx->rebootMixxxView(); +void DlgPrefControls::slotSetScaleFactorAuto(bool newValue) { + if (newValue) { + if (!m_bUseAutoScaleFactor) { + m_bRebootMixxxView = true; + } } else { slotSetScaleFactor(comboBoxScaleFactor->currentIndex()); } -} -void DlgPrefControls::slotSetStartInFullScreen(bool b) { - m_pConfig->set(ConfigKey("[Config]", "StartInFullscreen"), ConfigValue(b?1:0)); + m_bUseAutoScaleFactor = newValue; + comboBoxScaleFactor->setEnabled(!newValue); } void DlgPrefControls::slotSetTooltips() { //0=OFF, 1=ON, 2=ON (only in Library) - mixxx::TooltipsPreference valueToSet = mixxx::TooltipsPreference::TOOLTIPS_ON; + m_tooltipMode = mixxx::TooltipsPreference::TOOLTIPS_ON; if (radioButtonTooltipsOff->isChecked()) { - valueToSet = mixxx::TooltipsPreference::TOOLTIPS_OFF; + m_tooltipMode = mixxx::TooltipsPreference::TOOLTIPS_OFF; } else if (radioButtonTooltipsLibrary->isChecked()) { - valueToSet = mixxx::TooltipsPreference::TOOLTIPS_ONLY_IN_LIBRARY; + m_tooltipMode = mixxx::TooltipsPreference::TOOLTIPS_ONLY_IN_LIBRARY; } - m_mixxx->setToolTipsCfg(valueToSet); } void DlgPrefControls::notifyRebootNecessary() { @@ -737,20 +735,22 @@ void DlgPrefControls::notifyRebootNecessary() { } void DlgPrefControls::slotSetScheme(int) { - m_pConfig->set(ConfigKey("[Config]", "Scheme"), ComboBoxSchemeconf->currentText()); - repaint(); - m_mixxx->rebootMixxxView(); + QString newScheme = ComboBoxSchemeconf->currentText(); + if (m_colorScheme != newScheme) { + m_colorScheme = newScheme; + m_bRebootMixxxView = true; + } } void DlgPrefControls::slotSetSkin(int) { - ComboBoxSkinconf->repaint(); // without it the combobox sticks to the old value until - // the new Skin is fully loaded - m_pConfig->set(ConfigKey("[Config]", "ResizableSkin"), ComboBoxSkinconf->currentText()); - repaint(); - m_mixxx->rebootMixxxView(); - checkSkinResolution(ComboBoxSkinconf->currentText()) + QString newSkin = ComboBoxSkinconf->currentText(); + if (newSkin != m_skin) { + m_skin = newSkin; + m_bRebootMixxxView = true; + checkSkinResolution(ComboBoxSkinconf->currentText()) ? warningLabel->hide() : warningLabel->show(); - slotUpdateSchemes(); + slotUpdateSchemes(); + } } void DlgPrefControls::slotSetTrackTimeDisplay(QAbstractButton* b) { @@ -823,6 +823,24 @@ void DlgPrefControls::slotSetRateRamp(bool mode) { } void DlgPrefControls::slotApply() { + m_pConfig->set(ConfigKey("[Config]", "ResizableSkin"), m_skin); + m_pConfig->set(ConfigKey("[Config]", "Scheme"), m_colorScheme); + + m_pConfig->setValue( + ConfigKey("[Config]", "ScaleFactorAuto"), m_bUseAutoScaleFactor); + if (m_bUseAutoScaleFactor) { + m_pConfig->setValue( + ConfigKey("[Config]", "ScaleFactor"), m_dScaleFactorAuto); + } else { + m_pConfig->setValue(ConfigKey("[Config]", "ScaleFactor"), m_dScaleFactor); + } + + m_pConfig->set(ConfigKey("[Config]", "StartInFullscreen"), + ConfigValue(checkBoxStartFullScreen->isChecked())); + + m_mixxx->setToolTipsCfg(m_tooltipMode); + + double deck1RateRange = m_rateRangeControls[0]->get(); double deck1RateDir = m_rateDirControls[0]->get(); @@ -839,14 +857,14 @@ void DlgPrefControls::slotApply() { int configSPAutoReset = BaseTrackPlayer::RESET_NONE; // screensaver mode update - int inhibitcombo = comboBoxScreensaver->itemData( + int screensaverComboBoxState = comboBoxScreensaver->itemData( comboBoxScreensaver->currentIndex()).toInt(); - int inhibitsettings = static_cast(m_mixxx->getInhibitScreensaver()); - if (inhibitcombo != inhibitsettings) { - m_mixxx->setInhibitScreensaver(static_cast(inhibitcombo)); + int screensaverConfiguredState = static_cast(m_mixxx->getInhibitScreensaver()); + if (screensaverComboBoxState != screensaverConfiguredState) { + m_mixxx->setInhibitScreensaver( + static_cast(screensaverComboBoxState)); } - if (m_speedAutoReset && m_pitchAutoReset) { configSPAutoReset = BaseTrackPlayer::RESET_PITCH_AND_SPEED; } @@ -869,6 +887,11 @@ void DlgPrefControls::slotApply() { foreach (ControlProxy* pControl, m_keyunlockModeControls) { pControl->set(m_keyunlockMode); } + + if (m_bRebootMixxxView) { + m_mixxx->rebootMixxxView(); + } + m_bRebootMixxxView = false; } //Returns TRUE if skin fits to screen resolution, FALSE otherwise diff --git a/src/preferences/dialog/dlgprefcontrols.h b/src/preferences/dialog/dlgprefcontrols.h index 1b9292723be1..d00e770e0bdf 100644 --- a/src/preferences/dialog/dlgprefcontrols.h +++ b/src/preferences/dialog/dlgprefcontrols.h @@ -20,6 +20,7 @@ #include +#include "preferences/constants.h" #include "preferences/dialog/ui_dlgprefcontrolsdlg.h" #include "preferences/usersettings.h" #include "preferences/dlgpreferencepage.h" @@ -80,7 +81,6 @@ class DlgPrefControls : public DlgPreferencePage, public Ui::DlgPrefControlsDlg void slotSetLocale(int); void slotSetScaleFactor(int index); void slotSetScaleFactorAuto(bool checked); - void slotSetStartInFullScreen(bool b); void slotNumDecksChanged(double); void slotNumSamplersChanged(double); @@ -115,11 +115,21 @@ class DlgPrefControls : public DlgPreferencePage, public Ui::DlgPrefControlsDlg int m_iNumConfiguredDecks; int m_iNumConfiguredSamplers; + QString m_skin; + QString m_colorScheme; + mixxx::TooltipsPreference m_tooltipMode; + double m_dScaleFactorAuto; + bool m_bUseAutoScaleFactor; + double m_dScaleFactor; + bool m_bStartWithFullScreen; + mixxx::ScreenSaverPreference m_screensaverMode; + + bool m_bRebootMixxxView; + bool m_speedAutoReset; bool m_pitchAutoReset; int m_keylockMode; int m_keyunlockMode; - double m_autoScaleFactor; }; #endif diff --git a/src/skin/skinloader.cpp b/src/skin/skinloader.cpp index efed15edeb3c..3e718ec71c3e 100644 --- a/src/skin/skinloader.cpp +++ b/src/skin/skinloader.cpp @@ -28,7 +28,7 @@ SkinLoader::~SkinLoader() { LegacySkinParser::freeChannelStrings(); } -QList SkinLoader::getSkinSearchPaths() { +QList SkinLoader::getSkinSearchPaths() const { QList searchPaths; // If we can't find the skins folder then we can't load a skin at all. This // is a critical error in the user's Mixxx installation. @@ -47,7 +47,16 @@ QList SkinLoader::getSkinSearchPaths() { return searchPaths; } -QString SkinLoader::getConfiguredSkinPath() { +QString SkinLoader::getSkinPath(const QString& skinName) const { + for (QDir dir : getSkinSearchPaths()) { + if (dir.cd(skinName)) { + return dir.absolutePath(); + } + } + return QString(); +} + +QString SkinLoader::getConfiguredSkinPath() const { QString configSkin = m_pConfig->getValueString(ConfigKey("[Config]", "ResizableSkin")); // If we don't have a skin defined, we might be migrating from 1.11 and @@ -66,14 +75,14 @@ QString SkinLoader::getConfiguredSkinPath() { ConfigValue(configSkin)); } - QList skinSearchPaths = getSkinSearchPaths(); - foreach (QDir dir, skinSearchPaths) { - if (dir.cd(configSkin)) { - return dir.absolutePath(); - } - } + QString skinPath = getSkinPath(configSkin); - return QString(); + if (skinPath.isEmpty()) { + skinPath = getSkinPath(getDefaultSkinName()); + qDebug() << "Could not find the user's configured skin." + << "Falling back on the default skin:" << skinPath; + } + return skinPath; } QString SkinLoader::getDefaultSkinName() const { @@ -85,42 +94,17 @@ QString SkinLoader::getDefaultSkinName() const { } } -QString SkinLoader::getDefaultSkinPath() { - // Fall back to default skin. - QString defaultSkin = getDefaultSkinName(); - - QList skinSearchPaths = getSkinSearchPaths(); - foreach (QDir dir, skinSearchPaths) { - if (dir.cd(defaultSkin)) { - return dir.absolutePath(); - } - } - - return QString(); -} - -QString SkinLoader::getSkinPath() { +QWidget* SkinLoader::loadConfiguredSkin(QWidget* pParent, + KeyboardEventFilter* pKeyboard, + PlayerManager* pPlayerManager, + ControllerManager* pControllerManager, + Library* pLibrary, + VinylControlManager* pVCMan, + EffectsManager* pEffectsManager, + RecordingManager* pRecordingManager) { + ScopedTimer timer("SkinLoader::loadConfiguredSkin"); QString skinPath = getConfiguredSkinPath(); - if (skinPath.isEmpty()) { - skinPath = getDefaultSkinPath(); - qDebug() << "Could not find the user's configured skin." - << "Falling back on the default skin:" << skinPath; - } - return skinPath; -} - -QWidget* SkinLoader::loadDefaultSkin(QWidget* pParent, - KeyboardEventFilter* pKeyboard, - PlayerManager* pPlayerManager, - ControllerManager* pControllerManager, - Library* pLibrary, - VinylControlManager* pVCMan, - EffectsManager* pEffectsManager, - RecordingManager* pRecordingManager) { - ScopedTimer timer("SkinLoader::loadDefaultSkin"); - QString skinPath = getSkinPath(); - // If we don't have a skin path then fail. if (skinPath.isEmpty()) { return NULL; @@ -133,7 +117,7 @@ QWidget* SkinLoader::loadDefaultSkin(QWidget* pParent, } LaunchImage* SkinLoader::loadLaunchImage(QWidget* pParent) { - QString skinPath = getSkinPath(); + QString skinPath = getConfiguredSkinPath(); LegacySkinParser parser(m_pConfig); LaunchImage* pLaunchImage = parser.parseLaunchImage(skinPath, pParent); if (pLaunchImage == nullptr) { @@ -143,7 +127,7 @@ LaunchImage* SkinLoader::loadLaunchImage(QWidget* pParent) { return pLaunchImage; } -QString SkinLoader::pickResizableSkin(QString oldSkin) { +QString SkinLoader::pickResizableSkin(QString oldSkin) const { if (oldSkin.contains("latenight", Qt::CaseInsensitive)) { return "LateNight"; } diff --git a/src/skin/skinloader.h b/src/skin/skinloader.h index b6a20438b3c9..aa2aac4eeb19 100644 --- a/src/skin/skinloader.h +++ b/src/skin/skinloader.h @@ -21,25 +21,24 @@ class SkinLoader { SkinLoader(UserSettingsPointer pConfig); virtual ~SkinLoader(); - QWidget* loadDefaultSkin(QWidget* pParent, - KeyboardEventFilter* pKeyboard, - PlayerManager* pPlayerManager, - ControllerManager* pControllerManager, - Library* pLibrary, - VinylControlManager* pVCMan, - EffectsManager* pEffectsManager, - RecordingManager* pRecordingManager); + QWidget* loadConfiguredSkin(QWidget* pParent, + KeyboardEventFilter* pKeyboard, + PlayerManager* pPlayerManager, + ControllerManager* pControllerManager, + Library* pLibrary, + VinylControlManager* pVCMan, + EffectsManager* pEffectsManager, + RecordingManager* pRecordingManager); LaunchImage* loadLaunchImage(QWidget* pParent); - QString getSkinPath(); - QList getSkinSearchPaths(); + QString getSkinPath(const QString& skinName) const; + QString getConfiguredSkinPath() const; + QString getDefaultSkinName() const; + QList getSkinSearchPaths() const; private: - QString getConfiguredSkinPath(); - QString getDefaultSkinName() const; - QString getDefaultSkinPath(); - QString pickResizableSkin(QString oldSkin); + QString pickResizableSkin(QString oldSkin) const; UserSettingsPointer m_pConfig; }; From 04424a39bf569a0c34a450719bb7637c3190e2bd Mon Sep 17 00:00:00 2001 From: be_ Date: Sat, 11 Nov 2017 14:52:17 -0600 Subject: [PATCH 03/25] split Interface preference pane into Interface and Decks --- build/depends.py | 6 +- .../{dlgprefcontrols.cpp => dlgprefdeck.cpp} | 433 ++---------------- src/preferences/dialog/dlgprefdeck.h | 96 ++++ ...lgprefcontrolsdlg.ui => dlgprefdeckdlg.ui} | 228 +-------- src/preferences/dialog/dlgpreferences.cpp | 15 +- src/preferences/dialog/dlgpreferences.h | 7 +- src/preferences/dialog/dlgprefinterface.cpp | 417 +++++++++++++++++ .../{dlgprefcontrols.h => dlgprefinterface.h} | 58 +-- src/preferences/dialog/dlgprefinterfacedlg.ui | 255 +++++++++++ src/widget/wnumberpos.h | 2 +- 10 files changed, 832 insertions(+), 685 deletions(-) rename src/preferences/dialog/{dlgprefcontrols.cpp => dlgprefdeck.cpp} (59%) create mode 100644 src/preferences/dialog/dlgprefdeck.h rename src/preferences/dialog/{dlgprefcontrolsdlg.ui => dlgprefdeckdlg.ui} (77%) create mode 100644 src/preferences/dialog/dlgprefinterface.cpp rename src/preferences/dialog/{dlgprefcontrols.h => dlgprefinterface.h} (58%) create mode 100644 src/preferences/dialog/dlgprefinterfacedlg.ui diff --git a/build/depends.py b/build/depends.py index 178e10f8c9b4..84c3285cc535 100644 --- a/build/depends.py +++ b/build/depends.py @@ -665,11 +665,12 @@ def sources(self, build): "preferences/configobject.cpp", "preferences/dialog/dlgprefautodj.cpp", - "preferences/dialog/dlgprefcontrols.cpp", + "preferences/dialog/dlgprefdeck.cpp", "preferences/dialog/dlgprefcrossfader.cpp", "preferences/dialog/dlgprefeffects.cpp", "preferences/dialog/dlgprefeq.cpp", "preferences/dialog/dlgpreferences.cpp", + "preferences/dialog/dlgprefinterface.cpp", "preferences/dialog/dlgpreflibrary.cpp", "preferences/dialog/dlgprefnovinyl.cpp", "preferences/dialog/dlgprefrecord.cpp", @@ -1182,11 +1183,12 @@ def sources(self, build): 'library/recording/dlgrecording.ui', 'preferences/dialog/dlgprefautodjdlg.ui', 'preferences/dialog/dlgprefbeatsdlg.ui', - 'preferences/dialog/dlgprefcontrolsdlg.ui', + 'preferences/dialog/dlgprefdeckdlg.ui', 'preferences/dialog/dlgprefcrossfaderdlg.ui', 'preferences/dialog/dlgprefeffectsdlg.ui', 'preferences/dialog/dlgprefeqdlg.ui', 'preferences/dialog/dlgpreferencesdlg.ui', + 'preferences/dialog/dlgprefinterfacedlg.ui', 'preferences/dialog/dlgprefkeydlg.ui', 'preferences/dialog/dlgpreflibrarydlg.ui', 'preferences/dialog/dlgprefnovinyldlg.ui', diff --git a/src/preferences/dialog/dlgprefcontrols.cpp b/src/preferences/dialog/dlgprefdeck.cpp similarity index 59% rename from src/preferences/dialog/dlgprefcontrols.cpp rename to src/preferences/dialog/dlgprefdeck.cpp index 7d9484c55699..5a6e60c84bd5 100644 --- a/src/preferences/dialog/dlgprefcontrols.cpp +++ b/src/preferences/dialog/dlgprefdeck.cpp @@ -24,39 +24,28 @@ #include #include "mixer/basetrackplayer.h" -#include "preferences/dialog/dlgprefcontrols.h" +#include "preferences/dialog/dlgprefdeck.h" #include "preferences/usersettings.h" #include "control/controlobject.h" #include "control/controlproxy.h" #include "widget/wnumberpos.h" #include "engine/enginebuffer.h" #include "engine/ratecontrol.h" -#include "skin/skinloader.h" -#include "skin/legacyskinparser.h" #include "mixer/playermanager.h" #include "mixer/playerinfo.h" #include "control/controlobject.h" #include "mixxx.h" -#include "util/screensaver.h" #include "defs_urls.h" -#include "util/autohidpi.h" -DlgPrefControls::DlgPrefControls(QWidget * parent, MixxxMainWindow * mixxx, - SkinLoader* pSkinLoader, - PlayerManager* pPlayerManager, - UserSettingsPointer pConfig) +DlgPrefDeck::DlgPrefDeck(QWidget * parent, MixxxMainWindow * mixxx, + PlayerManager* pPlayerManager, + UserSettingsPointer pConfig) : DlgPreferencePage(parent), m_pConfig(pConfig), m_mixxx(mixxx), - m_pSkinLoader(pSkinLoader), m_pPlayerManager(pPlayerManager), m_iNumConfiguredDecks(0), - m_iNumConfiguredSamplers(0), - m_dScaleFactorAuto(1.0), - m_bUseAutoScaleFactor(false), - m_dScaleFactor(1.0), - m_bStartWithFullScreen(false), - m_bRebootMixxxView(false) { + m_iNumConfiguredSamplers(0) { setupUi(this); m_pNumDecks = new ControlProxy("[Master]", "num_decks", this); @@ -197,10 +186,6 @@ DlgPrefControls::DlgPrefControls(QWidget * parent, MixxxMainWindow * mixxx, spinBoxPermRateRight->setValue(m_pConfig->getValueString( ConfigKey("[Controls]", "RatePermRight")).toDouble()); -// labelSpeedRampSensitivity->setEnabled(true); -// SliderRateRampSensitivity->setEnabled(true); -// SpinBoxRateRampSensitivity->setEnabled(true); - // // Override Playing Track on Track Load // @@ -210,48 +195,6 @@ DlgPrefControls::DlgPrefControls(QWidget * parent, MixxxMainWindow * mixxx, connect(checkBoxDisallowLoadToPlayingDeck, SIGNAL(toggled(bool)), this, SLOT(slotSetAllowTrackLoadToPlayingDeck(bool))); - // - // Locale setting - // - - // Iterate through the available locales and add them to the combobox - // Borrowed following snippet from http://qt-project.org/wiki/How_to_create_a_multi_language_application - QString translationsFolder = m_pConfig->getResourcePath() + "translations/"; - QString currentLocale = pConfig->getValueString(ConfigKey("[Config]", "Locale")); - - QDir translationsDir(translationsFolder); - QStringList fileNames = translationsDir.entryList(QStringList("mixxx_*.qm")); - fileNames.push_back("mixxx_en_US.qm"); // add source language as a fake value - - bool indexFlag = false; // it'll indicate if the selected index changed. - for (int i = 0; i < fileNames.size(); ++i) { - // Extract locale from filename - QString locale = fileNames[i]; - locale.truncate(locale.lastIndexOf('.')); - locale.remove(0, locale.indexOf('_') + 1); - QLocale qlocale = QLocale(locale); - - QString lang = QLocale::languageToString(qlocale.language()); - QString country = QLocale::countryToString(qlocale.country()); - if (lang == "C") { // Ugly hack to remove the non-resolving locales - continue; - } - lang = QString("%1 (%2)").arg(lang).arg(country); - ComboBoxLocale->addItem(lang, locale); // locale as userdata (for storing to config) - if (locale == currentLocale) { // Set the currently selected locale - ComboBoxLocale->setCurrentIndex(ComboBoxLocale->count() - 1); - indexFlag = true; - } - } - ComboBoxLocale->model()->sort(0); // Sort languages list - - ComboBoxLocale->insertItem(0, "System", ""); // System default locale - insert at the top - if (!indexFlag) { // if selectedIndex didn't change - select system default - ComboBoxLocale->setCurrentIndex(0); - } - connect(ComboBoxLocale, SIGNAL(activated(int)), - this, SLOT(slotSetLocale(int))); - // // Cue Mode // @@ -289,145 +232,6 @@ DlgPrefControls::DlgPrefControls(QWidget * parent, MixxxMainWindow * mixxx, connect(checkBoxSeekToCue, SIGNAL(toggled(bool)), this, SLOT(slotSetCueRecall(bool))); - // - // Skin configurations - // - QString warningString = "" - + tr("The minimum size of the selected skin is bigger than your screen resolution."); - warningLabel->setText(warningString); - - ComboBoxSkinconf->clear(); - - QList skinSearchPaths = m_pSkinLoader->getSkinSearchPaths(); - QList skins; - for (QDir dir : skinSearchPaths) { - dir.setFilter(QDir::Dirs | QDir::NoDotAndDotDot); - skins.append(dir.entryInfoList()); - } - - QString configuredSkinPath = m_pSkinLoader->getConfiguredSkinPath(); - QIcon sizeWarningIcon(":/images/preferences/ic_preferences_warning.png"); - int index = 0; - for (QFileInfo skinInfo : skins) { - bool size_ok = checkSkinResolution(skinInfo.absoluteFilePath()); - if (size_ok) { - ComboBoxSkinconf->insertItem(index, skinInfo.fileName()); - } else { - ComboBoxSkinconf->insertItem(index, sizeWarningIcon, skinInfo.fileName()); - } - - if (skinInfo.absoluteFilePath() == configuredSkinPath) { - ComboBoxSkinconf->setCurrentIndex(index); - if (size_ok) { - warningLabel->hide(); - } else { - warningLabel->show(); - } - } - index++; - } - - connect(ComboBoxSkinconf, SIGNAL(activated(int)), this, SLOT(slotSetSkin(int))); - connect(ComboBoxSchemeconf, SIGNAL(activated(int)), this, SLOT(slotSetScheme(int))); - - slotUpdateSchemes(); - - -#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0) - AutoHiDpi autoHiDpi; - m_dScaleFactorAuto = autoHiDpi.getScaleFactor(); - double scaleFactor = m_dScaleFactorAuto; - if (scaleFactor > 0) { - // we got a valid auto scale factor - bool scaleFactorAuto = m_pConfig->getValue( - ConfigKey("[Config]", "ScaleFactorAuto"), true); - checkBoxScaleFactorAuto->setChecked(scaleFactorAuto); - if (scaleFactorAuto) { - comboBoxScaleFactor->setEnabled(false); - m_pConfig->setValue( - ConfigKey("[Config]", "ScaleFactor"), m_dScaleFactorAuto); - } else { - scaleFactor = m_pConfig->getValue( - ConfigKey("[Config]", "ScaleFactor"), 1.0); - } - } else { - checkBoxScaleFactorAuto->setEnabled(false); - scaleFactor = m_pConfig->getValue( - ConfigKey("[Config]", "ScaleFactor"), 1.0); - } - connect(checkBoxScaleFactorAuto, SIGNAL(toggled(bool)), - this, SLOT(slotSetScaleFactorAuto(bool))); - - //: Entry of the HiDPI scale combo box. %1 is the scale factor in percent - comboBoxScaleFactor->addItem(QString(tr("%1 %")).arg(50), 0.5); - comboBoxScaleFactor->addItem(QString(tr("%1 %")).arg(100), 1); - comboBoxScaleFactor->addItem(QString(tr("%1 %")).arg(200), 2); - comboBoxScaleFactor->addItem(QString(tr("%1 %")).arg(300), 3); - comboBoxScaleFactor->addItem(QString(tr("%1 %")).arg(400), 4); - int i; - for (i = 0; i < comboBoxScaleFactor->count(); ++i) { - if (scaleFactor == comboBoxScaleFactor->itemData(i)) { - comboBoxScaleFactor->setCurrentIndex(i); - break; - } - } - if (i == comboBoxScaleFactor->count()) { - // no default scale, add custom scale - comboBoxScaleFactor->addItem( - QString(tr("%1 % (Experimental)")).arg(scaleFactor * 100), scaleFactor); - comboBoxScaleFactor->setCurrentIndex(i); - } - connect(comboBoxScaleFactor, SIGNAL(activated(int)), - this, SLOT(slotSetScaleFactor(int))); -#else - checkBoxScaleFactorAuto->hide(); - comboBoxScaleFactor->hide(); - labelScaleFactor->hide(); -#endif - - - // - // Start in fullscreen mode - // - checkBoxStartFullScreen->setChecked(m_pConfig->getValueString( - ConfigKey("[Config]", "StartInFullscreen")).toInt()==1); - - // - // Screensaver mode - // - comboBoxScreensaver->clear(); - comboBoxScreensaver->addItem(tr("Allow screensaver to run"), - static_cast(mixxx::ScreenSaverPreference::PREVENT_OFF)); - comboBoxScreensaver->addItem(tr("Prevent screensaver from running"), - static_cast(mixxx::ScreenSaverPreference::PREVENT_ON)); - comboBoxScreensaver->addItem(tr("Prevent screensaver while playing"), - static_cast(mixxx::ScreenSaverPreference::PREVENT_ON_PLAY)); - - int inhibitsettings = static_cast(mixxx->getInhibitScreensaver()); - comboBoxScreensaver->setCurrentIndex(comboBoxScreensaver->findData(inhibitsettings)); - - // - // Tooltip configuration - // - - // Initialize checkboxes to match config - mixxx::TooltipsPreference configTooltips = m_mixxx->getToolTipsCfg(); - switch (configTooltips) { - case mixxx::TooltipsPreference::TOOLTIPS_OFF: - radioButtonTooltipsOff->setChecked(true); - break; - case mixxx::TooltipsPreference::TOOLTIPS_ON: - radioButtonTooltipsLibraryAndSkin->setChecked(true); - break; - case mixxx::TooltipsPreference::TOOLTIPS_ONLY_IN_LIBRARY: - radioButtonTooltipsLibrary->setChecked(true); - break; - } - - slotSetTooltips(); // Update disabled status of "only library" checkbox - connect(buttonGroupTooltips, SIGNAL(buttonClicked(QAbstractButton*)), - this, SLOT(slotSetTooltips())); - // // Ramping Temporary Rate Change configuration // @@ -472,7 +276,7 @@ DlgPrefControls::DlgPrefControls(QWidget * parent, MixxxMainWindow * mixxx, slotUpdate(); } -DlgPrefControls::~DlgPrefControls() { +DlgPrefDeck::~DlgPrefDeck() { delete m_pControlTrackTimeDisplay; qDeleteAll(m_rateControls); qDeleteAll(m_rateDirControls); @@ -482,31 +286,7 @@ DlgPrefControls::~DlgPrefControls() { qDeleteAll(m_keyunlockModeControls); } -void DlgPrefControls::slotUpdateSchemes() { - // Since this involves opening a file we won't do this as part of regular slotUpdate - QList schlist = LegacySkinParser::getSchemeList( - m_pSkinLoader->getSkinPath(m_skin)); - - ComboBoxSchemeconf->clear(); - - if (schlist.size() == 0) { - ComboBoxSchemeconf->setEnabled(false); - ComboBoxSchemeconf->addItem(tr("This skin does not support color schemes", 0)); - ComboBoxSchemeconf->setCurrentIndex(0); - } else { - ComboBoxSchemeconf->setEnabled(true); - QString selectedScheme = m_pConfig->getValueString(ConfigKey("[Config]", "Scheme")); - for (int i = 0; i < schlist.size(); i++) { - ComboBoxSchemeconf->addItem(schlist[i]); - - if (schlist[i] == selectedScheme) { - ComboBoxSchemeconf->setCurrentIndex(i); - } - } - } -} - -void DlgPrefControls::slotUpdate() { +void DlgPrefDeck::slotUpdate() { double deck1RateRange = m_rateRangeControls[0]->get(); double deck1RateDir = m_rateDirControls[0]->get(); @@ -538,11 +318,7 @@ void DlgPrefControls::slotUpdate() { checkBoxResetPitch->setChecked(m_pitchAutoReset); } -void DlgPrefControls::slotResetToDefaults() { - int index = ComboBoxSkinconf->findText(m_pSkinLoader->getDefaultSkinName()); - ComboBoxSkinconf->setCurrentIndex(index); - slotSetSkin(index); - +void DlgPrefDeck::slotResetToDefaults() { // Track time display mode radioButtonRemaining->setChecked(true); @@ -555,31 +331,12 @@ void DlgPrefControls::slotResetToDefaults() { // Don't load tracks into playing decks. checkBoxDisallowLoadToPlayingDeck->setChecked(true); - // Use System locale - ComboBoxLocale->setCurrentIndex(0); - // Mixxx cue mode ComboBoxCueDefault->setCurrentIndex(0); // Cue recall on. checkBoxSeekToCue->setChecked(true); - // Default to normal size widgets - comboBoxScaleFactor->setCurrentIndex(1); // 100 % - if (m_dScaleFactorAuto > 0) { - checkBoxScaleFactorAuto->setChecked(true); - } - - // Don't start in full screen. - checkBoxStartFullScreen->setChecked(false); - - // Inhibit the screensaver - comboBoxScreensaver->setCurrentIndex(comboBoxScreensaver->findData( - static_cast(mixxx::ScreenSaverPreference::PREVENT_ON))); - - // Tooltips on everywhere. - radioButtonTooltipsLibraryAndSkin->setChecked(true); - // Rate-ramping default off. radioButtonSpeedBendStatic->setChecked(true); @@ -608,17 +365,11 @@ void DlgPrefControls::slotResetToDefaults() { radioButtonResetUnlockedKey->setChecked(true); } -void DlgPrefControls::slotSetLocale(int pos) { - QString newLocale = ComboBoxLocale->itemData(pos).toString(); - m_pConfig->set(ConfigKey("[Config]", "Locale"), ConfigValue(newLocale)); - notifyRebootNecessary(); -} - -void DlgPrefControls::slotSetRateRange(int pos) { +void DlgPrefDeck::slotSetRateRange(int pos) { slotSetRateRangePercent(ComboBoxRateRange->itemData(pos).toInt()); } -void DlgPrefControls::slotSetRateRangePercent (int rateRangePercent) { +void DlgPrefDeck::slotSetRateRangePercent (int rateRangePercent) { double rateRange = rateRangePercent / 100.; // Set rate range for every group @@ -632,13 +383,13 @@ void DlgPrefControls::slotSetRateRangePercent (int rateRangePercent) { } } -void DlgPrefControls::slotSetRateDir(bool invert) { +void DlgPrefDeck::slotSetRateDir(bool invert) { int index = 0; if (invert) index = 1; slotSetRateDir(index); } -void DlgPrefControls::slotSetRateDir(int index) { +void DlgPrefDeck::slotSetRateDir(int index) { float dir = 1.; if (index == 1) dir = -1.; @@ -659,27 +410,27 @@ void DlgPrefControls::slotSetRateDir(int index) { } -void DlgPrefControls::slotKeyLockMode(QAbstractButton* b) { +void DlgPrefDeck::slotKeyLockMode(QAbstractButton* b) { if (b == radioButtonCurrentKey) { m_keylockMode = 1; } else { m_keylockMode = 0; } } -void DlgPrefControls::slotKeyUnlockMode(QAbstractButton* b) { +void DlgPrefDeck::slotKeyUnlockMode(QAbstractButton* b) { if (b == radioButtonResetUnlockedKey) { m_keyunlockMode = 0; } else { m_keyunlockMode = 1; } } -void DlgPrefControls::slotSetAllowTrackLoadToPlayingDeck(bool b) { +void DlgPrefDeck::slotSetAllowTrackLoadToPlayingDeck(bool b) { // If b is true, it means NOT to allow track loading m_pConfig->set(ConfigKey("[Controls]", "AllowTrackLoadToPlayingDeck"), ConfigValue(b?0:1)); } -void DlgPrefControls::slotSetCueDefault(int index) +void DlgPrefDeck::slotSetCueDefault(int index) { int cueMode = ComboBoxCueDefault->itemData(index).toInt(); m_pConfig->set(ConfigKey("[Controls]", "CueDefault"), ConfigValue(cueMode)); @@ -690,70 +441,12 @@ void DlgPrefControls::slotSetCueDefault(int index) } } -void DlgPrefControls::slotSetCueRecall(bool b) +void DlgPrefDeck::slotSetCueRecall(bool b) { m_pConfig->set(ConfigKey("[Controls]", "CueRecall"), ConfigValue(b?0:1)); } - -void DlgPrefControls::slotSetScaleFactor(int index) { - double newScaleFactor = comboBoxScaleFactor->itemData(index).toDouble(); - if (m_dScaleFactor != newScaleFactor) { - m_dScaleFactor = newScaleFactor; - m_bRebootMixxxView = true; - } -} - -void DlgPrefControls::slotSetScaleFactorAuto(bool newValue) { - if (newValue) { - if (!m_bUseAutoScaleFactor) { - m_bRebootMixxxView = true; - } - } else { - slotSetScaleFactor(comboBoxScaleFactor->currentIndex()); - } - - m_bUseAutoScaleFactor = newValue; - comboBoxScaleFactor->setEnabled(!newValue); -} - -void DlgPrefControls::slotSetTooltips() { - //0=OFF, 1=ON, 2=ON (only in Library) - m_tooltipMode = mixxx::TooltipsPreference::TOOLTIPS_ON; - if (radioButtonTooltipsOff->isChecked()) { - m_tooltipMode = mixxx::TooltipsPreference::TOOLTIPS_OFF; - } else if (radioButtonTooltipsLibrary->isChecked()) { - m_tooltipMode = mixxx::TooltipsPreference::TOOLTIPS_ONLY_IN_LIBRARY; - } -} - -void DlgPrefControls::notifyRebootNecessary() { - // make the fact that you have to restart mixxx more obvious - QMessageBox::information( - this, tr("Information"), - tr("Mixxx must be restarted before the changes will take effect.")); -} - -void DlgPrefControls::slotSetScheme(int) { - QString newScheme = ComboBoxSchemeconf->currentText(); - if (m_colorScheme != newScheme) { - m_colorScheme = newScheme; - m_bRebootMixxxView = true; - } -} - -void DlgPrefControls::slotSetSkin(int) { - QString newSkin = ComboBoxSkinconf->currentText(); - if (newSkin != m_skin) { - m_skin = newSkin; - m_bRebootMixxxView = true; - checkSkinResolution(ComboBoxSkinconf->currentText()) - ? warningLabel->hide() : warningLabel->show(); - slotUpdateSchemes(); - } -} - -void DlgPrefControls::slotSetTrackTimeDisplay(QAbstractButton* b) { +void DlgPrefDeck::slotSetTrackTimeDisplay(QAbstractButton* b) { double timeDisplay; if (b == radioButtonRemaining) { timeDisplay = static_cast(TrackTime::DisplayMode::Remaining); @@ -766,7 +459,7 @@ void DlgPrefControls::slotSetTrackTimeDisplay(QAbstractButton* b) { m_pControlTrackTimeDisplay->set(timeDisplay); } -void DlgPrefControls::slotSetTrackTimeDisplay(double v) { +void DlgPrefDeck::slotSetTrackTimeDisplay(double v) { if (v == 1.0) { // Remaining radioButtonRemaining->setChecked(true); @@ -782,65 +475,47 @@ void DlgPrefControls::slotSetTrackTimeDisplay(double v) { } } -void DlgPrefControls::slotSetRateTempLeft(double v) { +void DlgPrefDeck::slotSetRateTempLeft(double v) { QString str; str = str.setNum(v, 'f'); m_pConfig->set(ConfigKey("[Controls]", "RateTempLeft"),ConfigValue(str)); RateControl::setTemp(v); } -void DlgPrefControls::slotSetRateTempRight(double v) { +void DlgPrefDeck::slotSetRateTempRight(double v) { QString str; str = str.setNum(v, 'f'); m_pConfig->set(ConfigKey("[Controls]", "RateTempRight"),ConfigValue(str)); RateControl::setTempSmall(v); } -void DlgPrefControls::slotSetRatePermLeft(double v) { +void DlgPrefDeck::slotSetRatePermLeft(double v) { QString str; str = str.setNum(v, 'f'); m_pConfig->set(ConfigKey("[Controls]", "RatePermLeft"),ConfigValue(str)); RateControl::setPerm(v); } -void DlgPrefControls::slotSetRatePermRight(double v) { +void DlgPrefDeck::slotSetRatePermRight(double v) { QString str; str = str.setNum(v, 'f'); m_pConfig->set(ConfigKey("[Controls]", "RatePermRight"),ConfigValue(str)); RateControl::setPermSmall(v); } -void DlgPrefControls::slotSetRateRampSensitivity(int sense) { +void DlgPrefDeck::slotSetRateRampSensitivity(int sense) { m_pConfig->set(ConfigKey("[Controls]", "RateRampSensitivity"), ConfigValue(SliderRateRampSensitivity->value())); RateControl::setRateRampSensitivity(sense); } -void DlgPrefControls::slotSetRateRamp(bool mode) { +void DlgPrefDeck::slotSetRateRamp(bool mode) { m_pConfig->set(ConfigKey("[Controls]", "RateRamp"), ConfigValue(radioButtonSpeedBendRamping->isChecked())); RateControl::setRateRamp(mode); } -void DlgPrefControls::slotApply() { - m_pConfig->set(ConfigKey("[Config]", "ResizableSkin"), m_skin); - m_pConfig->set(ConfigKey("[Config]", "Scheme"), m_colorScheme); - - m_pConfig->setValue( - ConfigKey("[Config]", "ScaleFactorAuto"), m_bUseAutoScaleFactor); - if (m_bUseAutoScaleFactor) { - m_pConfig->setValue( - ConfigKey("[Config]", "ScaleFactor"), m_dScaleFactorAuto); - } else { - m_pConfig->setValue(ConfigKey("[Config]", "ScaleFactor"), m_dScaleFactor); - } - - m_pConfig->set(ConfigKey("[Config]", "StartInFullscreen"), - ConfigValue(checkBoxStartFullScreen->isChecked())); - - m_mixxx->setToolTipsCfg(m_tooltipMode); - - +void DlgPrefDeck::slotApply() { double deck1RateRange = m_rateRangeControls[0]->get(); double deck1RateDir = m_rateDirControls[0]->get(); @@ -856,15 +531,6 @@ void DlgPrefControls::slotApply() { int configSPAutoReset = BaseTrackPlayer::RESET_NONE; - // screensaver mode update - int screensaverComboBoxState = comboBoxScreensaver->itemData( - comboBoxScreensaver->currentIndex()).toInt(); - int screensaverConfiguredState = static_cast(m_mixxx->getInhibitScreensaver()); - if (screensaverComboBoxState != screensaverConfiguredState) { - m_mixxx->setInhibitScreensaver( - static_cast(screensaverComboBoxState)); - } - if (m_speedAutoReset && m_pitchAutoReset) { configSPAutoReset = BaseTrackPlayer::RESET_PITCH_AND_SPEED; } @@ -887,46 +553,9 @@ void DlgPrefControls::slotApply() { foreach (ControlProxy* pControl, m_keyunlockModeControls) { pControl->set(m_keyunlockMode); } - - if (m_bRebootMixxxView) { - m_mixxx->rebootMixxxView(); - } - m_bRebootMixxxView = false; -} - -//Returns TRUE if skin fits to screen resolution, FALSE otherwise -bool DlgPrefControls::checkSkinResolution(QString skin) -{ - int screenWidth = QApplication::desktop()->width(); - int screenHeight = QApplication::desktop()->height(); - - const QRegExp min_size_regex("(\\d+), *(\\d+)<"); - QFile skinfile(skin + "/skin.xml"); - if (skinfile.open(QFile::ReadOnly | QFile::Text)) { - QTextStream in(&skinfile); - bool found_size = false; - while (!in.atEnd()) { - if (min_size_regex.indexIn(in.readLine()) != -1) { - found_size = true; - break; - } - } - if (found_size) { - return !(min_size_regex.cap(1).toInt() > screenWidth || - min_size_regex.cap(2).toInt() > screenHeight); - } - } - - // If regex failed, fall back to skin name parsing. - QString skinName = skin.left(skin.indexOf(QRegExp("\\d"))); - QString resName = skin.right(skin.count()-skinName.count()); - QString res = resName.left(resName.lastIndexOf(QRegExp("\\d"))+1); - QString skinWidth = res.left(res.indexOf("x")); - QString skinHeight = res.right(res.count()-skinWidth.count()-1); - return !(skinWidth.toInt() > screenWidth || skinHeight.toInt() > screenHeight); } -void DlgPrefControls::slotNumDecksChanged(double new_count) { +void DlgPrefDeck::slotNumDecksChanged(double new_count) { int numdecks = static_cast(new_count); if (numdecks <= m_iNumConfiguredDecks) { // TODO(owilliams): If we implement deck deletion, shrink the size of configured decks. @@ -956,7 +585,7 @@ void DlgPrefControls::slotNumDecksChanged(double new_count) { slotSetRateRangePercent(m_pConfig->getValueString(ConfigKey("[Controls]", "RateRangePercent")).toInt()); } -void DlgPrefControls::slotNumSamplersChanged(double new_count) { +void DlgPrefDeck::slotNumSamplersChanged(double new_count) { int numsamplers = static_cast(new_count); if (numsamplers <= m_iNumConfiguredSamplers) { return; @@ -985,15 +614,15 @@ void DlgPrefControls::slotNumSamplersChanged(double new_count) { slotSetRateRangePercent(m_pConfig->getValueString(ConfigKey("[Controls]", "RateRangePercent")).toInt()); } -void DlgPrefControls::slotUpdateSpeedAutoReset(bool b) { +void DlgPrefDeck::slotUpdateSpeedAutoReset(bool b) { m_speedAutoReset = b; } -void DlgPrefControls::slotUpdatePitchAutoReset(bool b) { +void DlgPrefDeck::slotUpdatePitchAutoReset(bool b) { m_pitchAutoReset = b; } -int DlgPrefControls::cueDefaultIndexByData(int userData) const { +int DlgPrefDeck::cueDefaultIndexByData(int userData) const { for (int i = 0; i < ComboBoxCueDefault->count(); ++i) { if (ComboBoxCueDefault->itemData(i).toInt() == userData) { return i; diff --git a/src/preferences/dialog/dlgprefdeck.h b/src/preferences/dialog/dlgprefdeck.h new file mode 100644 index 000000000000..2e0fd860abbb --- /dev/null +++ b/src/preferences/dialog/dlgprefdeck.h @@ -0,0 +1,96 @@ +#ifndef DLGPREFDECK_H +#define DLGPREFDECK_H + +#include + +#include "preferences/constants.h" +#include "preferences/dialog/ui_dlgprefdeckdlg.h" +#include "preferences/usersettings.h" +#include "preferences/dlgpreferencepage.h" + +class ControlProxy; +class ControlPotmeter; +class SkinLoader; +class PlayerManager; +class MixxxMainWindow; +class ControlObject; + +namespace TrackTime { + enum class DisplayMode { + Elapsed, + Remaining, + ElapsedAndRemaining, + }; +} + +/** + *@author Tue & Ken Haste Andersen + */ + +class DlgPrefDeck : public DlgPreferencePage, public Ui::DlgPrefDeckDlg { + Q_OBJECT + public: + DlgPrefDeck(QWidget *parent, MixxxMainWindow *mixxx, + PlayerManager* pPlayerManager, + UserSettingsPointer pConfig); + virtual ~DlgPrefDeck(); + + public slots: + void slotUpdate(); + void slotApply(); + void slotResetToDefaults(); + + void slotSetRateRange(int pos); + void slotSetRateRangePercent(int rateRangePercent); + void slotSetRateDir(bool invert); + void slotSetRateDir(int pos); + void slotKeyLockMode(QAbstractButton*); + void slotKeyUnlockMode(QAbstractButton*); + void slotSetRateTempLeft(double); + void slotSetRateTempRight(double); + void slotSetRatePermLeft(double); + void slotSetRatePermRight(double); + void slotSetTrackTimeDisplay(QAbstractButton*); + void slotSetTrackTimeDisplay(double); + void slotSetAllowTrackLoadToPlayingDeck(bool); + void slotSetCueDefault(int); + void slotSetCueRecall(bool); + void slotSetRateRamp(bool); + void slotSetRateRampSensitivity(int); + + void slotNumDecksChanged(double); + void slotNumSamplersChanged(double); + + void slotUpdateSpeedAutoReset(bool); + void slotUpdatePitchAutoReset(bool); + + private: + // Because the CueDefault list is out of order, we have to set the combo + // box using the user data, not the index. Returns the index of the item + // that has the corresponding userData. If the userdata is not in the list, + // returns zero. + int cueDefaultIndexByData(int userData) const; + + UserSettingsPointer m_pConfig; + ControlObject* m_pControlTrackTimeDisplay; + ControlProxy* m_pNumDecks; + ControlProxy* m_pNumSamplers; + QList m_cueControls; + QList m_rateControls; + QList m_rateDirControls; + QList m_rateRangeControls; + QList m_keylockModeControls; + QList m_keyunlockModeControls; + MixxxMainWindow *m_mixxx; + PlayerManager* m_pPlayerManager; + + int m_iNumConfiguredDecks; + int m_iNumConfiguredSamplers; + + bool m_speedAutoReset; + bool m_pitchAutoReset; + int m_keylockMode; + int m_keyunlockMode; +}; + +#endif diff --git a/src/preferences/dialog/dlgprefcontrolsdlg.ui b/src/preferences/dialog/dlgprefdeckdlg.ui similarity index 77% rename from src/preferences/dialog/dlgprefcontrolsdlg.ui rename to src/preferences/dialog/dlgprefdeckdlg.ui index e22094056ec9..5e8639015ec6 100644 --- a/src/preferences/dialog/dlgprefcontrolsdlg.ui +++ b/src/preferences/dialog/dlgprefdeckdlg.ui @@ -1,7 +1,7 @@ - DlgPrefControlsDlg - + DlgPrefDeckDlg + 0 @@ -11,220 +11,10 @@ - Interface Preferences + Deck Preferences - - - Skin options - - - - - - true - - - - - - Skin - - - false - - - ComboBoxSkinconf - - - - - - - - 0 - 0 - - - - - - - - - - - - - - Qt::AlignJustify|Qt::AlignVCenter - - - - - - - true - - - - - - Color scheme - - - false - - - ComboBoxSchemeconf - - - - - - - - 0 - 0 - - - - - - - Select from different color schemes of a skin if available. - - - - - - - Locale - - - ComboBoxLocale - - - - - - - Locales determine country and language specific settings. - - - - - - - Full-screen mode - - - checkBoxStartFullScreen - - - - - - - Start in full-screen mode - - - - - - - true - - - - - - Tool tips - - - false - - - radioButtonTooltipsOff - - - - - - - - - Off - - - buttonGroupTooltips - - - - - - - Library only - - - buttonGroupTooltips - - - - - - - Library and Skin - - - buttonGroupTooltips - - - - - - - - - HiDPI / Retina scaling - - - checkBoxScaleFactorAuto - - - - - - - Change the size of text, buttons, and other items. - - - - - - - Adopt scale factor from the operating system - - - Auto Scaling - - - - - - - Screen saver - - - - - - - - - - Deck options @@ -362,7 +152,7 @@ CUP mode: - + Speed (Tempo) and Key (Pitch) options @@ -793,7 +583,7 @@ CUP mode: - + Qt::Vertical @@ -810,13 +600,6 @@ CUP mode: - ComboBoxSkinconf - ComboBoxSchemeconf - ComboBoxLocale - checkBoxStartFullScreen - radioButtonTooltipsOff - radioButtonTooltipsLibrary - radioButtonTooltipsLibraryAndSkin ComboBoxCueDefault radioButtonElapsed radioButtonRemaining @@ -974,7 +757,6 @@ CUP mode: - false diff --git a/src/preferences/dialog/dlgpreferences.cpp b/src/preferences/dialog/dlgpreferences.cpp index 773fa46b4193..5abc1648220c 100644 --- a/src/preferences/dialog/dlgpreferences.cpp +++ b/src/preferences/dialog/dlgpreferences.cpp @@ -45,7 +45,8 @@ #include "preferences/dialog/dlgprefsound.h" #include "controllers/dlgprefcontrollers.h" #include "preferences/dialog/dlgpreflibrary.h" -#include "preferences/dialog/dlgprefcontrols.h" +#include "preferences/dialog/dlgprefinterface.h" +#include "preferences/dialog/dlgprefdeck.h" #include "preferences/dialog/dlgprefwaveform.h" #include "preferences/dialog/dlgprefautodj.h" #include "preferences/dialog/dlgprefeq.h" @@ -98,8 +99,10 @@ DlgPreferences::DlgPreferences(MixxxMainWindow * mixxx, SkinLoader* pSkinLoader, addPageWidget(m_wlibrary); connect(m_wlibrary, SIGNAL(scanLibrary()), pLibrary, SLOT(scan())); - m_wcontrols = new DlgPrefControls(this, mixxx, pSkinLoader, pPlayerManager, m_pConfig); + m_wcontrols = new DlgPrefInterface(this, mixxx, pSkinLoader, m_pConfig); addPageWidget(m_wcontrols); + m_wdeck = new DlgPrefDeck(this, mixxx, pPlayerManager, m_pConfig); + addPageWidget(m_wdeck); m_wwaveform = new DlgPrefWaveform(this, mixxx, m_pConfig, pLibrary); addPageWidget(m_wwaveform); m_wautodj = new DlgPrefAutoDJ(this, m_pConfig); @@ -170,6 +173,12 @@ void DlgPreferences::createIcons() { m_pControlsButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); m_pControlsButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); + m_pDecksButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); + m_pDecksButton->setIcon(0, QIcon(":/images/preferences/ic_preferences_decks.png")); + m_pDecksButton->setText(0, tr("Decks")); + m_pDecksButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); + m_pDecksButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); + m_pWaveformButton = new QTreeWidgetItem(m_pControlsButton, QTreeWidgetItem::Type); m_pWaveformButton->setIcon(0, QIcon(":/images/preferences/ic_preferences_waveforms.png")); m_pWaveformButton->setText(0, tr("Waveforms")); @@ -288,6 +297,8 @@ void DlgPreferences::changePage(QTreeWidgetItem* current, QTreeWidgetItem* previ switchToPage(m_wlibrary); } else if (current == m_pControlsButton) { switchToPage(m_wcontrols); + } else if (current == m_pDecksButton) { + switchToPage(m_wdeck); } else if (current == m_pWaveformButton) { switchToPage(m_wwaveform); } else if (current == m_pAutoDJButton) { diff --git a/src/preferences/dialog/dlgpreferences.h b/src/preferences/dialog/dlgpreferences.h index f6ddd4303ece..4877df8e63cf 100644 --- a/src/preferences/dialog/dlgpreferences.h +++ b/src/preferences/dialog/dlgpreferences.h @@ -34,7 +34,8 @@ class DlgPrefSound; class DlgPrefController; class DlgPrefControllers; class DlgPrefLibrary; -class DlgPrefControls; +class DlgPrefInterface; +class DlgPrefDeck; class DlgPrefWaveform; class DlgPrefAutoDJ; class DlgPrefEQ; @@ -103,7 +104,8 @@ class DlgPreferences : public QDialog, public Ui::DlgPreferencesDlg { DlgPrefSound* m_wsound; DlgPrefLibrary* m_wlibrary; DlgPrefControllers *m_wcontrollers; - DlgPrefControls* m_wcontrols; + DlgPrefInterface* m_wcontrols; + DlgPrefDeck* m_wdeck; DlgPrefWaveform* m_wwaveform; DlgPrefAutoDJ* m_wautodj; DlgPrefEQ* m_weq; @@ -124,6 +126,7 @@ class DlgPreferences : public QDialog, public Ui::DlgPreferencesDlg { QTreeWidgetItem* m_pSoundButton; QTreeWidgetItem* m_pLibraryButton; QTreeWidgetItem* m_pControlsButton; + QTreeWidgetItem* m_pDecksButton; QTreeWidgetItem* m_pWaveformButton; QTreeWidgetItem* m_pAutoDJButton; QTreeWidgetItem* m_pEqButton; diff --git a/src/preferences/dialog/dlgprefinterface.cpp b/src/preferences/dialog/dlgprefinterface.cpp new file mode 100644 index 000000000000..e9a576b97f52 --- /dev/null +++ b/src/preferences/dialog/dlgprefinterface.cpp @@ -0,0 +1,417 @@ +/*************************************************************************** + dlgprefcontrols.cpp - description + ------------------- + begin : Sat Jul 5 2003 + copyright : (C) 2003 by Tue & Ken Haste Andersen + email : haste@diku.dk +***************************************************************************/ + +/*************************************************************************** +* * +* This program 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 2 of the License, or * +* (at your option) any later version. * +* * +***************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include + +#include "preferences/dialog/dlgprefinterface.h" +#include "preferences/usersettings.h" +#include "control/controlobject.h" +#include "control/controlproxy.h" +#include "skin/skinloader.h" +#include "skin/legacyskinparser.h" +#include "control/controlobject.h" +#include "mixxx.h" +#include "util/screensaver.h" +#include "defs_urls.h" +#include "util/autohidpi.h" + +DlgPrefInterface::DlgPrefInterface(QWidget * parent, MixxxMainWindow * mixxx, + SkinLoader* pSkinLoader, + UserSettingsPointer pConfig) + : DlgPreferencePage(parent), + m_pConfig(pConfig), + m_mixxx(mixxx), + m_pSkinLoader(pSkinLoader), + m_dScaleFactorAuto(1.0), + m_bUseAutoScaleFactor(false), + m_dScaleFactor(1.0), + m_bStartWithFullScreen(false), + m_bRebootMixxxView(false) { + setupUi(this); + + // + // Locale setting + // + + // Iterate through the available locales and add them to the combobox + // Borrowed following snippet from http://qt-project.org/wiki/How_to_create_a_multi_language_application + QString translationsFolder = m_pConfig->getResourcePath() + "translations/"; + QString currentLocale = pConfig->getValueString(ConfigKey("[Config]", "Locale")); + + QDir translationsDir(translationsFolder); + QStringList fileNames = translationsDir.entryList(QStringList("mixxx_*.qm")); + fileNames.push_back("mixxx_en_US.qm"); // add source language as a fake value + + bool indexFlag = false; // it'll indicate if the selected index changed. + for (int i = 0; i < fileNames.size(); ++i) { + // Extract locale from filename + QString locale = fileNames[i]; + locale.truncate(locale.lastIndexOf('.')); + locale.remove(0, locale.indexOf('_') + 1); + QLocale qlocale = QLocale(locale); + + QString lang = QLocale::languageToString(qlocale.language()); + QString country = QLocale::countryToString(qlocale.country()); + if (lang == "C") { // Ugly hack to remove the non-resolving locales + continue; + } + lang = QString("%1 (%2)").arg(lang).arg(country); + ComboBoxLocale->addItem(lang, locale); // locale as userdata (for storing to config) + if (locale == currentLocale) { // Set the currently selected locale + ComboBoxLocale->setCurrentIndex(ComboBoxLocale->count() - 1); + indexFlag = true; + } + } + ComboBoxLocale->model()->sort(0); // Sort languages list + + ComboBoxLocale->insertItem(0, "System", ""); // System default locale - insert at the top + if (!indexFlag) { // if selectedIndex didn't change - select system default + ComboBoxLocale->setCurrentIndex(0); + } + connect(ComboBoxLocale, SIGNAL(activated(int)), + this, SLOT(slotSetLocale(int))); + + // + // Skin configurations + // + QString warningString = "" + + tr("The minimum size of the selected skin is bigger than your screen resolution."); + warningLabel->setText(warningString); + + ComboBoxSkinconf->clear(); + + QList skinSearchPaths = m_pSkinLoader->getSkinSearchPaths(); + QList skins; + for (QDir dir : skinSearchPaths) { + dir.setFilter(QDir::Dirs | QDir::NoDotAndDotDot); + skins.append(dir.entryInfoList()); + } + + QString configuredSkinPath = m_pSkinLoader->getConfiguredSkinPath(); + QIcon sizeWarningIcon(":/images/preferences/ic_preferences_warning.png"); + int index = 0; + for (QFileInfo skinInfo : skins) { + bool size_ok = checkSkinResolution(skinInfo.absoluteFilePath()); + if (size_ok) { + ComboBoxSkinconf->insertItem(index, skinInfo.fileName()); + } else { + ComboBoxSkinconf->insertItem(index, sizeWarningIcon, skinInfo.fileName()); + } + + if (skinInfo.absoluteFilePath() == configuredSkinPath) { + ComboBoxSkinconf->setCurrentIndex(index); + if (size_ok) { + warningLabel->hide(); + } else { + warningLabel->show(); + } + } + index++; + } + + connect(ComboBoxSkinconf, SIGNAL(activated(int)), this, SLOT(slotSetSkin(int))); + connect(ComboBoxSchemeconf, SIGNAL(activated(int)), this, SLOT(slotSetScheme(int))); + + slotUpdateSchemes(); + + +#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0) + AutoHiDpi autoHiDpi; + m_dScaleFactorAuto = autoHiDpi.getScaleFactor(); + double scaleFactor = m_dScaleFactorAuto; + if (scaleFactor > 0) { + // we got a valid auto scale factor + bool scaleFactorAuto = m_pConfig->getValue( + ConfigKey("[Config]", "ScaleFactorAuto"), true); + checkBoxScaleFactorAuto->setChecked(scaleFactorAuto); + if (scaleFactorAuto) { + comboBoxScaleFactor->setEnabled(false); + m_pConfig->setValue( + ConfigKey("[Config]", "ScaleFactor"), m_dScaleFactorAuto); + } else { + scaleFactor = m_pConfig->getValue( + ConfigKey("[Config]", "ScaleFactor"), 1.0); + } + } else { + checkBoxScaleFactorAuto->setEnabled(false); + scaleFactor = m_pConfig->getValue( + ConfigKey("[Config]", "ScaleFactor"), 1.0); + } + connect(checkBoxScaleFactorAuto, SIGNAL(toggled(bool)), + this, SLOT(slotSetScaleFactorAuto(bool))); + + //: Entry of the HiDPI scale combo box. %1 is the scale factor in percent + comboBoxScaleFactor->addItem(QString(tr("%1 %")).arg(50), 0.5); + comboBoxScaleFactor->addItem(QString(tr("%1 %")).arg(100), 1); + comboBoxScaleFactor->addItem(QString(tr("%1 %")).arg(200), 2); + comboBoxScaleFactor->addItem(QString(tr("%1 %")).arg(300), 3); + comboBoxScaleFactor->addItem(QString(tr("%1 %")).arg(400), 4); + int i; + for (i = 0; i < comboBoxScaleFactor->count(); ++i) { + if (scaleFactor == comboBoxScaleFactor->itemData(i)) { + comboBoxScaleFactor->setCurrentIndex(i); + break; + } + } + if (i == comboBoxScaleFactor->count()) { + // no default scale, add custom scale + comboBoxScaleFactor->addItem( + QString(tr("%1 % (Experimental)")).arg(scaleFactor * 100), scaleFactor); + comboBoxScaleFactor->setCurrentIndex(i); + } + connect(comboBoxScaleFactor, SIGNAL(activated(int)), + this, SLOT(slotSetScaleFactor(int))); +#else + checkBoxScaleFactorAuto->hide(); + comboBoxScaleFactor->hide(); + labelScaleFactor->hide(); +#endif + + + // + // Start in fullscreen mode + // + checkBoxStartFullScreen->setChecked(m_pConfig->getValueString( + ConfigKey("[Config]", "StartInFullscreen")).toInt()==1); + + // + // Screensaver mode + // + comboBoxScreensaver->clear(); + comboBoxScreensaver->addItem(tr("Allow screensaver to run"), + static_cast(mixxx::ScreenSaverPreference::PREVENT_OFF)); + comboBoxScreensaver->addItem(tr("Prevent screensaver from running"), + static_cast(mixxx::ScreenSaverPreference::PREVENT_ON)); + comboBoxScreensaver->addItem(tr("Prevent screensaver while playing"), + static_cast(mixxx::ScreenSaverPreference::PREVENT_ON_PLAY)); + + int inhibitsettings = static_cast(mixxx->getInhibitScreensaver()); + comboBoxScreensaver->setCurrentIndex(comboBoxScreensaver->findData(inhibitsettings)); + + // + // Tooltip configuration + // + + // Initialize checkboxes to match config + mixxx::TooltipsPreference configTooltips = m_mixxx->getToolTipsCfg(); + switch (configTooltips) { + case mixxx::TooltipsPreference::TOOLTIPS_OFF: + radioButtonTooltipsOff->setChecked(true); + break; + case mixxx::TooltipsPreference::TOOLTIPS_ON: + radioButtonTooltipsLibraryAndSkin->setChecked(true); + break; + case mixxx::TooltipsPreference::TOOLTIPS_ONLY_IN_LIBRARY: + radioButtonTooltipsLibrary->setChecked(true); + break; + } + + slotSetTooltips(); // Update disabled status of "only library" checkbox + connect(buttonGroupTooltips, SIGNAL(buttonClicked(QAbstractButton*)), + this, SLOT(slotSetTooltips())); + + slotUpdate(); +} + +DlgPrefInterface::~DlgPrefInterface() { +} + +void DlgPrefInterface::slotUpdateSchemes() { + // Since this involves opening a file we won't do this as part of regular slotUpdate + QList schlist = LegacySkinParser::getSchemeList( + m_pSkinLoader->getSkinPath(m_skin)); + + ComboBoxSchemeconf->clear(); + + if (schlist.size() == 0) { + ComboBoxSchemeconf->setEnabled(false); + ComboBoxSchemeconf->addItem(tr("This skin does not support color schemes", 0)); + ComboBoxSchemeconf->setCurrentIndex(0); + } else { + ComboBoxSchemeconf->setEnabled(true); + QString selectedScheme = m_pConfig->getValueString(ConfigKey("[Config]", "Scheme")); + for (int i = 0; i < schlist.size(); i++) { + ComboBoxSchemeconf->addItem(schlist[i]); + + if (schlist[i] == selectedScheme) { + ComboBoxSchemeconf->setCurrentIndex(i); + } + } + } +} + +void DlgPrefInterface::slotUpdate() { +} + +void DlgPrefInterface::slotResetToDefaults() { + int index = ComboBoxSkinconf->findText(m_pSkinLoader->getDefaultSkinName()); + ComboBoxSkinconf->setCurrentIndex(index); + slotSetSkin(index); + + // Use System locale + ComboBoxLocale->setCurrentIndex(0); + + // Default to normal size widgets + comboBoxScaleFactor->setCurrentIndex(1); // 100 % + if (m_dScaleFactorAuto > 0) { + checkBoxScaleFactorAuto->setChecked(true); + } + + // Don't start in full screen. + checkBoxStartFullScreen->setChecked(false); + + // Inhibit the screensaver + comboBoxScreensaver->setCurrentIndex(comboBoxScreensaver->findData( + static_cast(mixxx::ScreenSaverPreference::PREVENT_ON))); + + // Tooltips on everywhere. + radioButtonTooltipsLibraryAndSkin->setChecked(true); +} + +void DlgPrefInterface::slotSetLocale(int pos) { + QString newLocale = ComboBoxLocale->itemData(pos).toString(); + m_pConfig->set(ConfigKey("[Config]", "Locale"), ConfigValue(newLocale)); + notifyRebootNecessary(); +} + +void DlgPrefInterface::slotSetScaleFactor(int index) { + double newScaleFactor = comboBoxScaleFactor->itemData(index).toDouble(); + if (m_dScaleFactor != newScaleFactor) { + m_dScaleFactor = newScaleFactor; + m_bRebootMixxxView = true; + } +} + +void DlgPrefInterface::slotSetScaleFactorAuto(bool newValue) { + if (newValue) { + if (!m_bUseAutoScaleFactor) { + m_bRebootMixxxView = true; + } + } else { + slotSetScaleFactor(comboBoxScaleFactor->currentIndex()); + } + + m_bUseAutoScaleFactor = newValue; + comboBoxScaleFactor->setEnabled(!newValue); +} + +void DlgPrefInterface::slotSetTooltips() { + //0=OFF, 1=ON, 2=ON (only in Library) + m_tooltipMode = mixxx::TooltipsPreference::TOOLTIPS_ON; + if (radioButtonTooltipsOff->isChecked()) { + m_tooltipMode = mixxx::TooltipsPreference::TOOLTIPS_OFF; + } else if (radioButtonTooltipsLibrary->isChecked()) { + m_tooltipMode = mixxx::TooltipsPreference::TOOLTIPS_ONLY_IN_LIBRARY; + } +} + +void DlgPrefInterface::notifyRebootNecessary() { + // make the fact that you have to restart mixxx more obvious + QMessageBox::information( + this, tr("Information"), + tr("Mixxx must be restarted before the changes will take effect.")); +} + +void DlgPrefInterface::slotSetScheme(int) { + QString newScheme = ComboBoxSchemeconf->currentText(); + if (m_colorScheme != newScheme) { + m_colorScheme = newScheme; + m_bRebootMixxxView = true; + } +} + +void DlgPrefInterface::slotSetSkin(int) { + QString newSkin = ComboBoxSkinconf->currentText(); + if (newSkin != m_skin) { + m_skin = newSkin; + m_bRebootMixxxView = true; + checkSkinResolution(ComboBoxSkinconf->currentText()) + ? warningLabel->hide() : warningLabel->show(); + slotUpdateSchemes(); + } +} + +void DlgPrefInterface::slotApply() { + m_pConfig->set(ConfigKey("[Config]", "ResizableSkin"), m_skin); + m_pConfig->set(ConfigKey("[Config]", "Scheme"), m_colorScheme); + + m_pConfig->setValue( + ConfigKey("[Config]", "ScaleFactorAuto"), m_bUseAutoScaleFactor); + if (m_bUseAutoScaleFactor) { + m_pConfig->setValue( + ConfigKey("[Config]", "ScaleFactor"), m_dScaleFactorAuto); + } else { + m_pConfig->setValue(ConfigKey("[Config]", "ScaleFactor"), m_dScaleFactor); + } + + m_pConfig->set(ConfigKey("[Config]", "StartInFullscreen"), + ConfigValue(checkBoxStartFullScreen->isChecked())); + + m_mixxx->setToolTipsCfg(m_tooltipMode); + + // screensaver mode update + int screensaverComboBoxState = comboBoxScreensaver->itemData( + comboBoxScreensaver->currentIndex()).toInt(); + int screensaverConfiguredState = static_cast(m_mixxx->getInhibitScreensaver()); + if (screensaverComboBoxState != screensaverConfiguredState) { + m_mixxx->setInhibitScreensaver( + static_cast(screensaverComboBoxState)); + } + + if (m_bRebootMixxxView) { + m_mixxx->rebootMixxxView(); + } + m_bRebootMixxxView = false; +} + +//Returns TRUE if skin fits to screen resolution, FALSE otherwise +bool DlgPrefInterface::checkSkinResolution(QString skin) +{ + int screenWidth = QApplication::desktop()->width(); + int screenHeight = QApplication::desktop()->height(); + + const QRegExp min_size_regex("(\\d+), *(\\d+)<"); + QFile skinfile(skin + "/skin.xml"); + if (skinfile.open(QFile::ReadOnly | QFile::Text)) { + QTextStream in(&skinfile); + bool found_size = false; + while (!in.atEnd()) { + if (min_size_regex.indexIn(in.readLine()) != -1) { + found_size = true; + break; + } + } + if (found_size) { + return !(min_size_regex.cap(1).toInt() > screenWidth || + min_size_regex.cap(2).toInt() > screenHeight); + } + } + + // If regex failed, fall back to skin name parsing. + QString skinName = skin.left(skin.indexOf(QRegExp("\\d"))); + QString resName = skin.right(skin.count()-skinName.count()); + QString res = resName.left(resName.lastIndexOf(QRegExp("\\d"))+1); + QString skinWidth = res.left(res.indexOf("x")); + QString skinHeight = res.right(res.count()-skinWidth.count()-1); + return !(skinWidth.toInt() > screenWidth || skinHeight.toInt() > screenHeight); +} diff --git a/src/preferences/dialog/dlgprefcontrols.h b/src/preferences/dialog/dlgprefinterface.h similarity index 58% rename from src/preferences/dialog/dlgprefcontrols.h rename to src/preferences/dialog/dlgprefinterface.h index d00e770e0bdf..ebd61e3b995e 100644 --- a/src/preferences/dialog/dlgprefcontrols.h +++ b/src/preferences/dialog/dlgprefinterface.h @@ -21,7 +21,7 @@ #include #include "preferences/constants.h" -#include "preferences/dialog/ui_dlgprefcontrolsdlg.h" +#include "preferences/dialog/ui_dlgprefinterfacedlg.h" #include "preferences/usersettings.h" #include "preferences/dlgpreferencepage.h" @@ -32,62 +32,30 @@ class PlayerManager; class MixxxMainWindow; class ControlObject; -namespace TrackTime { - enum class DisplayMode { - Elapsed, - Remaining, - ElapsedAndRemaining, - }; -} - /** *@author Tue & Ken Haste Andersen */ -class DlgPrefControls : public DlgPreferencePage, public Ui::DlgPrefControlsDlg { +class DlgPrefInterface : public DlgPreferencePage, public Ui::DlgPrefControlsDlg { Q_OBJECT public: - DlgPrefControls(QWidget *parent, MixxxMainWindow *mixxx, - SkinLoader* pSkinLoader, PlayerManager* pPlayerManager, - UserSettingsPointer pConfig); - virtual ~DlgPrefControls(); + DlgPrefInterface(QWidget *parent, MixxxMainWindow *mixxx, + SkinLoader* pSkinLoader, UserSettingsPointer pConfig); + virtual ~DlgPrefInterface(); public slots: void slotUpdate(); void slotApply(); void slotResetToDefaults(); - void slotSetRateRange(int pos); - void slotSetRateRangePercent(int rateRangePercent); - void slotSetRateDir(bool invert); - void slotSetRateDir(int pos); - void slotKeyLockMode(QAbstractButton*); - void slotKeyUnlockMode(QAbstractButton*); - void slotSetRateTempLeft(double); - void slotSetRateTempRight(double); - void slotSetRatePermLeft(double); - void slotSetRatePermRight(double); void slotSetTooltips(); void slotSetSkin(int); void slotSetScheme(int); void slotUpdateSchemes(); - void slotSetTrackTimeDisplay(QAbstractButton*); - void slotSetTrackTimeDisplay(double); - void slotSetAllowTrackLoadToPlayingDeck(bool); - void slotSetCueDefault(int); - void slotSetCueRecall(bool); - void slotSetRateRamp(bool); - void slotSetRateRampSensitivity(int); void slotSetLocale(int); void slotSetScaleFactor(int index); void slotSetScaleFactorAuto(bool checked); - void slotNumDecksChanged(double); - void slotNumSamplersChanged(double); - - void slotUpdateSpeedAutoReset(bool); - void slotUpdatePitchAutoReset(bool); - private: void notifyRebootNecessary(); bool checkSkinResolution(QString skin); @@ -100,21 +68,10 @@ class DlgPrefControls : public DlgPreferencePage, public Ui::DlgPrefControlsDlg UserSettingsPointer m_pConfig; ControlObject* m_pControlTrackTimeDisplay; - ControlProxy* m_pNumDecks; - ControlProxy* m_pNumSamplers; - QList m_cueControls; - QList m_rateControls; - QList m_rateDirControls; - QList m_rateRangeControls; - QList m_keylockModeControls; - QList m_keyunlockModeControls; MixxxMainWindow *m_mixxx; SkinLoader* m_pSkinLoader; PlayerManager* m_pPlayerManager; - int m_iNumConfiguredDecks; - int m_iNumConfiguredSamplers; - QString m_skin; QString m_colorScheme; mixxx::TooltipsPreference m_tooltipMode; @@ -125,11 +82,6 @@ class DlgPrefControls : public DlgPreferencePage, public Ui::DlgPrefControlsDlg mixxx::ScreenSaverPreference m_screensaverMode; bool m_bRebootMixxxView; - - bool m_speedAutoReset; - bool m_pitchAutoReset; - int m_keylockMode; - int m_keyunlockMode; }; #endif diff --git a/src/preferences/dialog/dlgprefinterfacedlg.ui b/src/preferences/dialog/dlgprefinterfacedlg.ui new file mode 100644 index 000000000000..ebc2f23977fe --- /dev/null +++ b/src/preferences/dialog/dlgprefinterfacedlg.ui @@ -0,0 +1,255 @@ + + + DlgPrefControlsDlg + + + + 0 + 0 + 562 + 723 + + + + Interface Preferences + + + + + + Interface options + + + + + + true + + + + + + Skin + + + false + + + ComboBoxSkinconf + + + + + + + + 0 + 0 + + + + + + + + + + + + + + Qt::AlignJustify|Qt::AlignVCenter + + + + + + + true + + + + + + Color scheme + + + false + + + ComboBoxSchemeconf + + + + + + + + 0 + 0 + + + + + + + Select from different color schemes of a skin if available. + + + + + + + Locale + + + ComboBoxLocale + + + + + + + Locales determine country and language specific settings. + + + + + + + Full-screen mode + + + checkBoxStartFullScreen + + + + + + + Start in full-screen mode + + + + + + + true + + + + + + Tool tips + + + false + + + radioButtonTooltipsOff + + + + + + + + + Off + + + buttonGroupTooltips + + + + + + + Library only + + + buttonGroupTooltips + + + + + + + Library and Skin + + + buttonGroupTooltips + + + + + + + + + HiDPI / Retina scaling + + + checkBoxScaleFactorAuto + + + + + + + Change the size of text, buttons, and other items. + + + + + + + Adopt scale factor from the operating system + + + Auto Scaling + + + + + + + Screen saver + + + + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + ComboBoxSkinconf + ComboBoxSchemeconf + ComboBoxLocale + checkBoxStartFullScreen + radioButtonTooltipsOff + radioButtonTooltipsLibrary + radioButtonTooltipsLibraryAndSkin + + + + + diff --git a/src/widget/wnumberpos.h b/src/widget/wnumberpos.h index 593a5c7b65ec..56569a3a3350 100644 --- a/src/widget/wnumberpos.h +++ b/src/widget/wnumberpos.h @@ -6,7 +6,7 @@ #include #include "wnumber.h" -#include "preferences/dialog/dlgprefcontrols.h" +#include "preferences/dialog/dlgprefdeck.h" class ControlProxy; From f2354f995ef08ca58aa85e473ac56e5d9f9ee832 Mon Sep 17 00:00:00 2001 From: be_ Date: Sat, 11 Nov 2017 19:57:02 -0600 Subject: [PATCH 04/25] DlgPrefDeck: detangle rate range combobox from CO value so that Apply button must be pressed for changed setting to take effect TODO: do this for the rest of the preferences in DlgPrefDeck --- src/preferences/dialog/dlgprefdeck.cpp | 97 +++++++++++++------------- src/preferences/dialog/dlgprefdeck.h | 11 +-- 2 files changed, 57 insertions(+), 51 deletions(-) diff --git a/src/preferences/dialog/dlgprefdeck.cpp b/src/preferences/dialog/dlgprefdeck.cpp index 5a6e60c84bd5..ad66009560ea 100644 --- a/src/preferences/dialog/dlgprefdeck.cpp +++ b/src/preferences/dialog/dlgprefdeck.cpp @@ -37,6 +37,8 @@ #include "mixxx.h" #include "defs_urls.h" +const int kDefaultRateRangePercent = 8; + DlgPrefDeck::DlgPrefDeck(QWidget * parent, MixxxMainWindow * mixxx, PlayerManager* pPlayerManager, UserSettingsPointer pConfig) @@ -50,11 +52,11 @@ DlgPrefDeck::DlgPrefDeck(QWidget * parent, MixxxMainWindow * mixxx, m_pNumDecks = new ControlProxy("[Master]", "num_decks", this); m_pNumDecks->connectValueChanged(SLOT(slotNumDecksChanged(double))); - slotNumDecksChanged(m_pNumDecks->get()); + slotNumDecksChanged(m_pNumDecks->get(), true); m_pNumSamplers = new ControlProxy("[Master]", "num_samplers", this); m_pNumSamplers->connectValueChanged(SLOT(slotNumSamplersChanged(double))); - slotNumSamplersChanged(m_pNumSamplers->get()); + slotNumSamplersChanged(m_pNumSamplers->get(), true); // Track time display configuration m_pControlTrackTimeDisplay = new ControlObject( @@ -106,27 +108,27 @@ DlgPrefDeck::DlgPrefDeck(QWidget * parent, MixxxMainWindow * mixxx, ComboBoxRateRange->addItem(tr("50%"), 50); ComboBoxRateRange->addItem(tr("90%"), 90); connect(ComboBoxRateRange, SIGNAL(activated(int)), - this, SLOT(slotSetRateRange(int))); - - // Set default range as stored in config file - if (m_pConfig->getValueString(ConfigKey("[Controls]", "RateRangePercent")).length() == 0) { - // Fall back to old [Controls]RateRange - if (m_pConfig->getValueString(ConfigKey("[Controls]", "RateRange")).length() == 0) { - m_pConfig->set(ConfigKey("[Controls]", "RateRangePercent"), ConfigValue(8)); + this, SLOT(slotRateRangeComboBox(int))); + + // RateRange is the legacy ConfigKey. RateRangePercent is used now. + if (m_pConfig->exists(ConfigKey("[Controls]", "RateRange")) && + !m_pConfig->exists(ConfigKey("[Controls]", "RateRangePercent"))) { + int legacyIndex = m_pConfig->getValueString(ConfigKey("[Controls]", "RateRange")).toInt(); + if (legacyIndex == 0) { + m_iRateRangePercent = 6; + } else if (legacyIndex == 1) { + m_iRateRangePercent = 8; } else { - int oldIdx = m_pConfig->getValueString(ConfigKey("[Controls]", "RateRange")).toInt(); - double oldRange = static_cast(oldIdx-1) / 10.0; - if (oldIdx == 0) { - oldRange = 0.06; - } - if (oldIdx == 1) { - oldRange = 0.08; - } - m_pConfig->set(ConfigKey("[Controls]", "RateRangePercent"), - ConfigValue(static_cast(oldRange * 100.))); - slotSetRateRangePercent(oldRange * 100.); + m_iRateRangePercent = (legacyIndex-1) * 10; } + } else { + m_iRateRangePercent = m_pConfig->getValue(ConfigKey("[Controls]", "RateRangePercent"), + kDefaultRateRangePercent); } + if (!(m_iRateRangePercent > 0 && m_iRateRangePercent <= 90)) { + m_iRateRangePercent = kDefaultRateRangePercent; + } + setRateRangeForAllDecks(m_iRateRangePercent); // // Key lock mode @@ -365,21 +367,13 @@ void DlgPrefDeck::slotResetToDefaults() { radioButtonResetUnlockedKey->setChecked(true); } -void DlgPrefDeck::slotSetRateRange(int pos) { - slotSetRateRangePercent(ComboBoxRateRange->itemData(pos).toInt()); +void DlgPrefDeck::slotRateRangeComboBox(int index) { + m_iRateRangePercent = ComboBoxRateRange->itemData(index).toInt(); } -void DlgPrefDeck::slotSetRateRangePercent (int rateRangePercent) { - double rateRange = rateRangePercent / 100.; - - // Set rate range for every group - foreach (ControlProxy* pControl, m_rateRangeControls) { - pControl->set(rateRange); - } - - // Reset rate for every group - foreach (ControlProxy* pControl, m_rateControls) { - pControl->set(0); +void DlgPrefDeck::setRateRangeForAllDecks(int rangePercent) { + for (ControlProxy* pControl : m_rateRangeControls) { + pControl->set(rangePercent / 100.0); } } @@ -516,11 +510,12 @@ void DlgPrefDeck::slotSetRateRamp(bool mode) { } void DlgPrefDeck::slotApply() { - double deck1RateRange = m_rateRangeControls[0]->get(); - double deck1RateDir = m_rateDirControls[0]->get(); + // Set rate range + setRateRangeForAllDecks(m_iRateRangePercent); + m_pConfig->setValue(ConfigKey("[Controls]", "RateRangePercent"), + m_iRateRangePercent); - m_pConfig->set(ConfigKey("[Controls]", "RateRangePercent"), - ConfigValue(static_cast(deck1RateRange * 100))); + double deck1RateDir = m_rateDirControls[0]->get(); // Write rate direction to config file if (deck1RateDir == 1) { @@ -533,9 +528,11 @@ void DlgPrefDeck::slotApply() { if (m_speedAutoReset && m_pitchAutoReset) { configSPAutoReset = BaseTrackPlayer::RESET_PITCH_AND_SPEED; + } else if (m_speedAutoReset) { + configSPAutoReset = BaseTrackPlayer::RESET_SPEED; + } else if (m_pitchAutoReset) { + configSPAutoReset = BaseTrackPlayer::RESET_PITCH; } - else if (m_speedAutoReset) configSPAutoReset = BaseTrackPlayer::RESET_SPEED; - else if (m_pitchAutoReset) configSPAutoReset = BaseTrackPlayer::RESET_PITCH; m_pConfig->set(ConfigKey("[Controls]", "SpeedAutoReset"), ConfigValue(configSPAutoReset)); @@ -555,7 +552,7 @@ void DlgPrefDeck::slotApply() { } } -void DlgPrefDeck::slotNumDecksChanged(double new_count) { +void DlgPrefDeck::slotNumDecksChanged(double new_count, bool initializing) { int numdecks = static_cast(new_count); if (numdecks <= m_iNumConfiguredDecks) { // TODO(owilliams): If we implement deck deletion, shrink the size of configured decks. @@ -580,12 +577,15 @@ void DlgPrefDeck::slotNumDecksChanged(double new_count) { m_keyunlockModeControls.last()->set(m_keyunlockMode); } - m_iNumConfiguredDecks = numdecks; - slotSetRateDir(m_pConfig->getValueString(ConfigKey("[Controls]", "RateDir")).toInt()); - slotSetRateRangePercent(m_pConfig->getValueString(ConfigKey("[Controls]", "RateRangePercent")).toInt()); + // The rate range hasn't been read from the config file when this is first called. + if (!initializing) { + m_iNumConfiguredDecks = numdecks; + slotSetRateDir(m_pConfig->getValueString(ConfigKey("[Controls]", "RateDir")).toInt()); + setRateRangeForAllDecks(m_rateRangeControls[0]->get() * 100); + } } -void DlgPrefDeck::slotNumSamplersChanged(double new_count) { +void DlgPrefDeck::slotNumSamplersChanged(double new_count, bool initializing) { int numsamplers = static_cast(new_count); if (numsamplers <= m_iNumConfiguredSamplers) { return; @@ -609,9 +609,12 @@ void DlgPrefDeck::slotNumSamplersChanged(double new_count) { m_keyunlockModeControls.last()->set(m_keyunlockMode); } - m_iNumConfiguredSamplers = numsamplers; - slotSetRateDir(m_pConfig->getValueString(ConfigKey("[Controls]", "RateDir")).toInt()); - slotSetRateRangePercent(m_pConfig->getValueString(ConfigKey("[Controls]", "RateRangePercent")).toInt()); + // The rate range hasn't been read from the config file when this is first called. + if (!initializing) { + m_iNumConfiguredSamplers = numsamplers; + slotSetRateDir(m_pConfig->getValueString(ConfigKey("[Controls]", "RateDir")).toInt()); + setRateRangeForAllDecks(m_rateRangeControls[0]->get() * 100); + } } void DlgPrefDeck::slotUpdateSpeedAutoReset(bool b) { diff --git a/src/preferences/dialog/dlgprefdeck.h b/src/preferences/dialog/dlgprefdeck.h index 2e0fd860abbb..afbf6a7d8ffb 100644 --- a/src/preferences/dialog/dlgprefdeck.h +++ b/src/preferences/dialog/dlgprefdeck.h @@ -40,12 +40,11 @@ class DlgPrefDeck : public DlgPreferencePage, public Ui::DlgPrefDeckDlg { void slotApply(); void slotResetToDefaults(); - void slotSetRateRange(int pos); - void slotSetRateRangePercent(int rateRangePercent); void slotSetRateDir(bool invert); void slotSetRateDir(int pos); void slotKeyLockMode(QAbstractButton*); void slotKeyUnlockMode(QAbstractButton*); + void slotRateRangeComboBox(int index); void slotSetRateTempLeft(double); void slotSetRateTempRight(double); void slotSetRatePermLeft(double); @@ -58,8 +57,8 @@ class DlgPrefDeck : public DlgPreferencePage, public Ui::DlgPrefDeckDlg { void slotSetRateRamp(bool); void slotSetRateRampSensitivity(int); - void slotNumDecksChanged(double); - void slotNumSamplersChanged(double); + void slotNumDecksChanged(double, bool initializing=false); + void slotNumSamplersChanged(double, bool initializing=false); void slotUpdateSpeedAutoReset(bool); void slotUpdatePitchAutoReset(bool); @@ -71,6 +70,8 @@ class DlgPrefDeck : public DlgPreferencePage, public Ui::DlgPrefDeckDlg { // returns zero. int cueDefaultIndexByData(int userData) const; + void setRateRangeForAllDecks(int rangePercent); + UserSettingsPointer m_pConfig; ControlObject* m_pControlTrackTimeDisplay; ControlProxy* m_pNumDecks; @@ -87,6 +88,8 @@ class DlgPrefDeck : public DlgPreferencePage, public Ui::DlgPrefDeckDlg { int m_iNumConfiguredDecks; int m_iNumConfiguredSamplers; + int m_iRateRangePercent; + bool m_speedAutoReset; bool m_pitchAutoReset; int m_keylockMode; From a63769f523bd1453112d6085eaf5c914c7b1a0cf Mon Sep 17 00:00:00 2001 From: be_ Date: Sat, 11 Nov 2017 23:51:37 -0600 Subject: [PATCH 05/25] DlgPrefDeck: detangle rate inversion checkbox from CO until Apply button is pressed --- src/preferences/dialog/dlgprefdeck.cpp | 73 ++++++++++---------------- src/preferences/dialog/dlgprefdeck.h | 7 +-- 2 files changed, 32 insertions(+), 48 deletions(-) diff --git a/src/preferences/dialog/dlgprefdeck.cpp b/src/preferences/dialog/dlgprefdeck.cpp index ad66009560ea..62c993282a0c 100644 --- a/src/preferences/dialog/dlgprefdeck.cpp +++ b/src/preferences/dialog/dlgprefdeck.cpp @@ -38,6 +38,7 @@ #include "defs_urls.h" const int kDefaultRateRangePercent = 8; +const double kRateDirectionInverted = -1; DlgPrefDeck::DlgPrefDeck(QWidget * parent, MixxxMainWindow * mixxx, PlayerManager* pPlayerManager, @@ -91,12 +92,11 @@ DlgPrefDeck::DlgPrefDeck(QWidget * parent, MixxxMainWindow * mixxx, connect(buttonGroupTrackTime, SIGNAL(buttonClicked(QAbstractButton*)), this, SLOT(slotSetTrackTimeDisplay(QAbstractButton *))); - // Set default direction as stored in config file - if (m_pConfig->getValueString(ConfigKey("[Controls]", "RateDir")).length() == 0) - m_pConfig->set(ConfigKey("[Controls]", "RateDir"),ConfigValue(0)); - + m_bRateInverted = m_pConfig->getValue(ConfigKey("[Controls]", "RateDir"), false); + setRateDirectionForAllDecks(m_bRateInverted); + checkBoxInvertSpeedSlider->setChecked(m_bRateInverted); connect(checkBoxInvertSpeedSlider, SIGNAL(toggled(bool)), - this, SLOT(slotSetRateDir(bool))); + this, SLOT(slotRateInversionCheckbox(bool))); ComboBoxRateRange->clear(); ComboBoxRateRange->addItem(tr("4%"), 4); @@ -281,7 +281,7 @@ DlgPrefDeck::DlgPrefDeck(QWidget * parent, MixxxMainWindow * mixxx, DlgPrefDeck::~DlgPrefDeck() { delete m_pControlTrackTimeDisplay; qDeleteAll(m_rateControls); - qDeleteAll(m_rateDirControls); + qDeleteAll(m_rateDirectionControls); qDeleteAll(m_cueControls); qDeleteAll(m_rateRangeControls); qDeleteAll(m_keylockModeControls); @@ -290,21 +290,15 @@ DlgPrefDeck::~DlgPrefDeck() { void DlgPrefDeck::slotUpdate() { double deck1RateRange = m_rateRangeControls[0]->get(); - double deck1RateDir = m_rateDirControls[0]->get(); - int idx = ComboBoxRateRange->findData(static_cast(deck1RateRange * 100)); if (idx == -1) { ComboBoxRateRange->addItem(QString::number(deck1RateRange * 100.).append("%"), deck1RateRange * 100.); } - ComboBoxRateRange->setCurrentIndex(idx); - if (deck1RateDir == 1) { - checkBoxInvertSpeedSlider->setChecked(false); - } else { - checkBoxInvertSpeedSlider->setChecked(true); - } + double deck1RateDirection = m_rateDirectionControls[0]->get(); + checkBoxInvertSpeedSlider->setChecked(deck1RateDirection == kRateDirectionInverted); if (m_keylockMode == 1) radioButtonCurrentKey->setChecked(true); @@ -377,31 +371,27 @@ void DlgPrefDeck::setRateRangeForAllDecks(int rangePercent) { } } -void DlgPrefDeck::slotSetRateDir(bool invert) { - int index = 0; - if (invert) index = 1; - slotSetRateDir(index); +void DlgPrefDeck::slotRateInversionCheckbox(bool inverted) { + m_bRateInverted = inverted; } -void DlgPrefDeck::slotSetRateDir(int index) { - float dir = 1.; - if (index == 1) - dir = -1.; - float oldDir = m_rateDirControls[0]->get(); - - // Set rate direction for every group - foreach (ControlProxy* pControl, m_rateDirControls) { - pControl->set(dir); +void DlgPrefDeck::setRateDirectionForAllDecks(bool inverted) { + double oldRateDirectionMultiplier = m_rateDirectionControls[0]->get(); + double rateDirectionMultiplier = 1.0; + if (inverted) { + rateDirectionMultiplier = kRateDirectionInverted; + } + for (ControlProxy* pControl : m_rateDirectionControls) { + pControl->set(rateDirectionMultiplier); } - // If the setting was changed, ie the old direction is not equal to the new one, + // If the rate slider direction setting has changed, // multiply the rate by -1 so the current sound does not change. - if(fabs(dir - oldDir) > 0.1) { - foreach (ControlProxy* pControl, m_rateControls) { + if (rateDirectionMultiplier != oldRateDirectionMultiplier) { + for (ControlProxy* pControl : m_rateControls) { pControl->set(-1 * pControl->get()); } } - } void DlgPrefDeck::slotKeyLockMode(QAbstractButton* b) { @@ -515,14 +505,9 @@ void DlgPrefDeck::slotApply() { m_pConfig->setValue(ConfigKey("[Controls]", "RateRangePercent"), m_iRateRangePercent); - double deck1RateDir = m_rateDirControls[0]->get(); - - // Write rate direction to config file - if (deck1RateDir == 1) { - m_pConfig->set(ConfigKey("[Controls]", "RateDir"), ConfigValue(0)); - } else { - m_pConfig->set(ConfigKey("[Controls]", "RateDir"), ConfigValue(1)); - } + setRateDirectionForAllDecks(m_bRateInverted); + m_pConfig->setValue(ConfigKey("[Controls]", "RateDir"), + static_cast(m_bRateInverted)); int configSPAutoReset = BaseTrackPlayer::RESET_NONE; @@ -565,7 +550,7 @@ void DlgPrefDeck::slotNumDecksChanged(double new_count, bool initializing) { group, "rate")); m_rateRangeControls.push_back(new ControlProxy( group, "rateRange")); - m_rateDirControls.push_back(new ControlProxy( + m_rateDirectionControls.push_back(new ControlProxy( group, "rate_dir")); m_cueControls.push_back(new ControlProxy( group, "cue_mode")); @@ -579,8 +564,7 @@ void DlgPrefDeck::slotNumDecksChanged(double new_count, bool initializing) { // The rate range hasn't been read from the config file when this is first called. if (!initializing) { - m_iNumConfiguredDecks = numdecks; - slotSetRateDir(m_pConfig->getValueString(ConfigKey("[Controls]", "RateDir")).toInt()); + setRateDirectionForAllDecks(m_rateDirectionControls[0]->get() == kRateDirectionInverted); setRateRangeForAllDecks(m_rateRangeControls[0]->get() * 100); } } @@ -597,7 +581,7 @@ void DlgPrefDeck::slotNumSamplersChanged(double new_count, bool initializing) { group, "rate")); m_rateRangeControls.push_back(new ControlProxy( group, "rateRange")); - m_rateDirControls.push_back(new ControlProxy( + m_rateDirectionControls.push_back(new ControlProxy( group, "rate_dir")); m_cueControls.push_back(new ControlProxy( group, "cue_mode")); @@ -611,8 +595,7 @@ void DlgPrefDeck::slotNumSamplersChanged(double new_count, bool initializing) { // The rate range hasn't been read from the config file when this is first called. if (!initializing) { - m_iNumConfiguredSamplers = numsamplers; - slotSetRateDir(m_pConfig->getValueString(ConfigKey("[Controls]", "RateDir")).toInt()); + setRateDirectionForAllDecks(m_rateDirectionControls[0]->get() == kRateDirectionInverted); setRateRangeForAllDecks(m_rateRangeControls[0]->get() * 100); } } diff --git a/src/preferences/dialog/dlgprefdeck.h b/src/preferences/dialog/dlgprefdeck.h index afbf6a7d8ffb..6f6b88052ba6 100644 --- a/src/preferences/dialog/dlgprefdeck.h +++ b/src/preferences/dialog/dlgprefdeck.h @@ -40,11 +40,10 @@ class DlgPrefDeck : public DlgPreferencePage, public Ui::DlgPrefDeckDlg { void slotApply(); void slotResetToDefaults(); - void slotSetRateDir(bool invert); - void slotSetRateDir(int pos); void slotKeyLockMode(QAbstractButton*); void slotKeyUnlockMode(QAbstractButton*); void slotRateRangeComboBox(int index); + void slotRateInversionCheckbox(bool invert); void slotSetRateTempLeft(double); void slotSetRateTempRight(double); void slotSetRatePermLeft(double); @@ -71,6 +70,7 @@ class DlgPrefDeck : public DlgPreferencePage, public Ui::DlgPrefDeckDlg { int cueDefaultIndexByData(int userData) const; void setRateRangeForAllDecks(int rangePercent); + void setRateDirectionForAllDecks(bool inverted); UserSettingsPointer m_pConfig; ControlObject* m_pControlTrackTimeDisplay; @@ -78,7 +78,7 @@ class DlgPrefDeck : public DlgPreferencePage, public Ui::DlgPrefDeckDlg { ControlProxy* m_pNumSamplers; QList m_cueControls; QList m_rateControls; - QList m_rateDirControls; + QList m_rateDirectionControls; QList m_rateRangeControls; QList m_keylockModeControls; QList m_keyunlockModeControls; @@ -89,6 +89,7 @@ class DlgPrefDeck : public DlgPreferencePage, public Ui::DlgPrefDeckDlg { int m_iNumConfiguredSamplers; int m_iRateRangePercent; + bool m_bRateInverted; bool m_speedAutoReset; bool m_pitchAutoReset; From 6a257db38ac835dd348de8d692a8e519db69663b Mon Sep 17 00:00:00 2001 From: be_ Date: Sat, 11 Nov 2017 23:52:04 -0600 Subject: [PATCH 06/25] code cleanup (use enum classes instead of magic ints) --- src/preferences/dialog/dlgprefdeck.cpp | 82 +++++++++++++------------- src/preferences/dialog/dlgprefdeck.h | 18 ++++-- 2 files changed, 56 insertions(+), 44 deletions(-) diff --git a/src/preferences/dialog/dlgprefdeck.cpp b/src/preferences/dialog/dlgprefdeck.cpp index 62c993282a0c..c7eddf248a4f 100644 --- a/src/preferences/dialog/dlgprefdeck.cpp +++ b/src/preferences/dialog/dlgprefdeck.cpp @@ -134,26 +134,26 @@ DlgPrefDeck::DlgPrefDeck(QWidget * parent, MixxxMainWindow * mixxx, // Key lock mode // connect(buttonGroupKeyLockMode, SIGNAL(buttonClicked(QAbstractButton*)), - this, SLOT(slotKeyLockMode(QAbstractButton *))); + this, SLOT(slotKeyLockModeSelected(QAbstractButton *))); - // 0 Lock original key, 1 Lock current key - m_keylockMode = m_pConfig->getValue( - ConfigKey("[Controls]", "keylockMode"), 0); - foreach (ControlProxy* pControl, m_keylockModeControls) { - pControl->set(m_keylockMode); + m_keylockMode = static_cast( + m_pConfig->getValue(ConfigKey("[Controls]", "keylockMode"), + static_cast(KeylockMode::LockOriginalKey))); + for (ControlProxy* pControl : m_keylockModeControls) { + pControl->set(static_cast(m_keylockMode)); } // // Key unlock mode // connect(buttonGroupKeyUnlockMode, SIGNAL(buttonClicked(QAbstractButton*)), - this, SLOT(slotKeyUnlockMode(QAbstractButton *))); + this, SLOT(slotKeyUnlockModeSelected(QAbstractButton *))); - // 0 Reset locked key (default), 1 Keep locked key - m_keyunlockMode = m_pConfig->getValue( - ConfigKey("[Controls]", "keyunlockMode"), 0); - foreach (ControlProxy* pControl, m_keyunlockModeControls) { - pControl->set(m_keyunlockMode); + m_keyunlockMode = static_cast( + m_pConfig->getValue(ConfigKey("[Controls]", "keyunlockMode"), + static_cast(KeyunlockMode::ResetLockedKey))); + for (ControlProxy* pControl : m_keyunlockModeControls) { + pControl->set(static_cast(m_keyunlockMode)); } // @@ -300,15 +300,17 @@ void DlgPrefDeck::slotUpdate() { double deck1RateDirection = m_rateDirectionControls[0]->get(); checkBoxInvertSpeedSlider->setChecked(deck1RateDirection == kRateDirectionInverted); - if (m_keylockMode == 1) + if (m_keylockMode == KeylockMode::LockCurrentKey) { radioButtonCurrentKey->setChecked(true); - else + } else { radioButtonOriginalKey->setChecked(true); + } - if (m_keyunlockMode == 1) + if (m_keyunlockMode == KeyunlockMode::KeepLockedKey) { radioButtonKeepUnlockedKey->setChecked(true); - else + } else { radioButtonResetUnlockedKey->setChecked(true); + } checkBoxResetSpeed->setChecked(m_speedAutoReset); checkBoxResetPitch->setChecked(m_pitchAutoReset); @@ -352,12 +354,10 @@ void DlgPrefDeck::slotResetToDefaults() { checkBoxResetSpeed->setChecked(m_speedAutoReset); checkBoxResetPitch->setChecked(m_pitchAutoReset); - // Lock to original key - m_keylockMode = 0; + m_keylockMode = KeylockMode::LockOriginalKey; radioButtonOriginalKey->setChecked(true); - // Reset key on unlock - m_keyunlockMode = 0; + m_keyunlockMode = KeyunlockMode::ResetLockedKey; radioButtonResetUnlockedKey->setChecked(true); } @@ -394,18 +394,20 @@ void DlgPrefDeck::setRateDirectionForAllDecks(bool inverted) { } } -void DlgPrefDeck::slotKeyLockMode(QAbstractButton* b) { - if (b == radioButtonCurrentKey) { - m_keylockMode = 1; +void DlgPrefDeck::slotKeyLockModeSelected(QAbstractButton* pressedButton) { + if (pressedButton == radioButtonCurrentKey) { + m_keylockMode = KeylockMode::LockCurrentKey; + } else { + m_keylockMode = KeylockMode::LockOriginalKey; } - else { m_keylockMode = 0; } } -void DlgPrefDeck::slotKeyUnlockMode(QAbstractButton* b) { - if (b == radioButtonResetUnlockedKey) { - m_keyunlockMode = 0; +void DlgPrefDeck::slotKeyUnlockModeSelected(QAbstractButton* pressedButton) { + if (pressedButton == radioButtonResetUnlockedKey) { + m_keyunlockMode = KeyunlockMode::ResetLockedKey; + } else { + m_keyunlockMode = KeyunlockMode::KeepLockedKey; } - else { m_keyunlockMode = 1; } } void DlgPrefDeck::slotSetAllowTrackLoadToPlayingDeck(bool b) { @@ -522,18 +524,18 @@ void DlgPrefDeck::slotApply() { m_pConfig->set(ConfigKey("[Controls]", "SpeedAutoReset"), ConfigValue(configSPAutoReset)); - m_pConfig->set(ConfigKey("[Controls]", "keylockMode"), - ConfigValue(m_keylockMode)); + m_pConfig->setValue(ConfigKey("[Controls]", "keylockMode"), + static_cast(m_keylockMode)); // Set key lock behavior for every group - foreach (ControlProxy* pControl, m_keylockModeControls) { - pControl->set(m_keylockMode); + for (ControlProxy* pControl : m_keylockModeControls) { + pControl->set(static_cast(m_keylockMode)); } - m_pConfig->set(ConfigKey("[Controls]", "keyunlockMode"), - ConfigValue(m_keyunlockMode)); + m_pConfig->setValue(ConfigKey("[Controls]", "keyunlockMode"), + static_cast(m_keyunlockMode)); // Set key un-lock behavior for every group - foreach (ControlProxy* pControl, m_keyunlockModeControls) { - pControl->set(m_keyunlockMode); + for (ControlProxy* pControl : m_keyunlockModeControls) { + pControl->set(static_cast(m_keyunlockMode)); } } @@ -556,10 +558,10 @@ void DlgPrefDeck::slotNumDecksChanged(double new_count, bool initializing) { group, "cue_mode")); m_keylockModeControls.push_back(new ControlProxy( group, "keylockMode")); - m_keylockModeControls.last()->set(m_keylockMode); + m_keylockModeControls.last()->set(static_cast(m_keylockMode)); m_keyunlockModeControls.push_back(new ControlProxy( group, "keyunlockMode")); - m_keyunlockModeControls.last()->set(m_keyunlockMode); + m_keyunlockModeControls.last()->set(static_cast(m_keyunlockMode)); } // The rate range hasn't been read from the config file when this is first called. @@ -587,10 +589,10 @@ void DlgPrefDeck::slotNumSamplersChanged(double new_count, bool initializing) { group, "cue_mode")); m_keylockModeControls.push_back(new ControlProxy( group, "keylockMode")); - m_keylockModeControls.last()->set(m_keylockMode); + m_keylockModeControls.last()->set(static_cast(m_keylockMode)); m_keyunlockModeControls.push_back(new ControlProxy( group, "keyunlockMode")); - m_keyunlockModeControls.last()->set(m_keyunlockMode); + m_keyunlockModeControls.last()->set(static_cast(m_keyunlockMode)); } // The rate range hasn't been read from the config file when this is first called. diff --git a/src/preferences/dialog/dlgprefdeck.h b/src/preferences/dialog/dlgprefdeck.h index 6f6b88052ba6..bd386d80bee2 100644 --- a/src/preferences/dialog/dlgprefdeck.h +++ b/src/preferences/dialog/dlgprefdeck.h @@ -23,6 +23,16 @@ namespace TrackTime { }; } +enum class KeylockMode { + LockOriginalKey, + LockCurrentKey +}; + +enum class KeyunlockMode { + ResetLockedKey, + KeepLockedKey +}; + /** *@author Tue & Ken Haste Andersen */ @@ -40,10 +50,10 @@ class DlgPrefDeck : public DlgPreferencePage, public Ui::DlgPrefDeckDlg { void slotApply(); void slotResetToDefaults(); - void slotKeyLockMode(QAbstractButton*); - void slotKeyUnlockMode(QAbstractButton*); void slotRateRangeComboBox(int index); void slotRateInversionCheckbox(bool invert); + void slotKeyLockModeSelected(QAbstractButton*); + void slotKeyUnlockModeSelected(QAbstractButton*); void slotSetRateTempLeft(double); void slotSetRateTempRight(double); void slotSetRatePermLeft(double); @@ -93,8 +103,8 @@ class DlgPrefDeck : public DlgPreferencePage, public Ui::DlgPrefDeckDlg { bool m_speedAutoReset; bool m_pitchAutoReset; - int m_keylockMode; - int m_keyunlockMode; + KeylockMode m_keylockMode; + KeyunlockMode m_keyunlockMode; }; #endif From 29ef9d1a708a1937dfaef90d2df33b43cdb718a6 Mon Sep 17 00:00:00 2001 From: be_ Date: Sat, 11 Nov 2017 23:54:40 -0600 Subject: [PATCH 07/25] change "rateRange" CO to a ControlPotmeter to set limits on it to prevent recurrence of bugs like https://bugs.launchpad.net/mixxx/+bug/1631393 when rateRange was 0 --- src/engine/ratecontrol.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/engine/ratecontrol.cpp b/src/engine/ratecontrol.cpp index 7fe644353a55..76b58cf79044 100644 --- a/src/engine/ratecontrol.cpp +++ b/src/engine/ratecontrol.cpp @@ -44,7 +44,7 @@ RateControl::RateControl(QString group, m_pScratchController = new PositionScratchController(group); m_pRateDir = new ControlObject(ConfigKey(group, "rate_dir")); - m_pRateRange = new ControlObject(ConfigKey(group, "rateRange")); + m_pRateRange = new ControlPotmeter(ConfigKey(group, "rateRange"), 0.01, 0.90); // Allow rate slider to go out of bounds so that master sync rate // adjustments are not capped. m_pRateSlider = new ControlPotmeter(ConfigKey(group, "rate"), From f413afa6dd6c017e9e6b5c4a4370567bac7c4ce2 Mon Sep 17 00:00:00 2001 From: be_ Date: Sun, 12 Nov 2017 00:27:00 -0600 Subject: [PATCH 08/25] DlgPrefDeck: detangle playing track protection checkbox from config value until Apply button is pressed --- src/preferences/dialog/dlgprefdeck.cpp | 16 +++++++++------- src/preferences/dialog/dlgprefdeck.h | 3 ++- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/preferences/dialog/dlgprefdeck.cpp b/src/preferences/dialog/dlgprefdeck.cpp index c7eddf248a4f..0352c7f6db96 100644 --- a/src/preferences/dialog/dlgprefdeck.cpp +++ b/src/preferences/dialog/dlgprefdeck.cpp @@ -192,10 +192,11 @@ DlgPrefDeck::DlgPrefDeck(QWidget * parent, MixxxMainWindow * mixxx, // Override Playing Track on Track Load // // The check box reflects the opposite of the config value - checkBoxDisallowLoadToPlayingDeck->setChecked( - m_pConfig->getValueString(ConfigKey("[Controls]", "AllowTrackLoadToPlayingDeck")).toInt()==0); + m_bDisallowTrackLoadToPlayingDeck = !m_pConfig->getValue( + ConfigKey("[Controls]", "AllowTrackLoadToPlayingDeck"), false); + checkBoxDisallowLoadToPlayingDeck->setChecked(m_bDisallowTrackLoadToPlayingDeck); connect(checkBoxDisallowLoadToPlayingDeck, SIGNAL(toggled(bool)), - this, SLOT(slotSetAllowTrackLoadToPlayingDeck(bool))); + this, SLOT(slotDisallowTrackLoadToPlayingDeckCheckbox(bool))); // // Cue Mode @@ -410,10 +411,8 @@ void DlgPrefDeck::slotKeyUnlockModeSelected(QAbstractButton* pressedButton) { } } -void DlgPrefDeck::slotSetAllowTrackLoadToPlayingDeck(bool b) { - // If b is true, it means NOT to allow track loading - m_pConfig->set(ConfigKey("[Controls]", "AllowTrackLoadToPlayingDeck"), - ConfigValue(b?0:1)); +void DlgPrefDeck::slotDisallowTrackLoadToPlayingDeckCheckbox(bool checked) { + m_bDisallowTrackLoadToPlayingDeck = checked; } void DlgPrefDeck::slotSetCueDefault(int index) @@ -502,6 +501,9 @@ void DlgPrefDeck::slotSetRateRamp(bool mode) { } void DlgPrefDeck::slotApply() { + m_pConfig->setValue(ConfigKey("[Controls]", "AllowTrackLoadToPlayingDeck"), + !m_bDisallowTrackLoadToPlayingDeck); + // Set rate range setRateRangeForAllDecks(m_iRateRangePercent); m_pConfig->setValue(ConfigKey("[Controls]", "RateRangePercent"), diff --git a/src/preferences/dialog/dlgprefdeck.h b/src/preferences/dialog/dlgprefdeck.h index bd386d80bee2..6391d3a2987c 100644 --- a/src/preferences/dialog/dlgprefdeck.h +++ b/src/preferences/dialog/dlgprefdeck.h @@ -60,7 +60,7 @@ class DlgPrefDeck : public DlgPreferencePage, public Ui::DlgPrefDeckDlg { void slotSetRatePermRight(double); void slotSetTrackTimeDisplay(QAbstractButton*); void slotSetTrackTimeDisplay(double); - void slotSetAllowTrackLoadToPlayingDeck(bool); + void slotDisallowTrackLoadToPlayingDeckCheckbox(bool); void slotSetCueDefault(int); void slotSetCueRecall(bool); void slotSetRateRamp(bool); @@ -98,6 +98,7 @@ class DlgPrefDeck : public DlgPreferencePage, public Ui::DlgPrefDeckDlg { int m_iNumConfiguredDecks; int m_iNumConfiguredSamplers; + bool m_bDisallowTrackLoadToPlayingDeck; int m_iRateRangePercent; bool m_bRateInverted; From d05ad94aa94ec439cd4ebe791474e58713babf33 Mon Sep 17 00:00:00 2001 From: be_ Date: Sun, 12 Nov 2017 01:10:53 -0600 Subject: [PATCH 09/25] DlgPrefDeck: detangle load tracks to cue point checkbox from ConfigValue until Apply button is pressed --- src/preferences/dialog/dlgprefdeck.cpp | 39 +++++++++++++------------- src/preferences/dialog/dlgprefdeck.h | 4 ++- 2 files changed, 22 insertions(+), 21 deletions(-) diff --git a/src/preferences/dialog/dlgprefdeck.cpp b/src/preferences/dialog/dlgprefdeck.cpp index 0352c7f6db96..c62aa490a350 100644 --- a/src/preferences/dialog/dlgprefdeck.cpp +++ b/src/preferences/dialog/dlgprefdeck.cpp @@ -92,6 +92,21 @@ DlgPrefDeck::DlgPrefDeck(QWidget * parent, MixxxMainWindow * mixxx, connect(buttonGroupTrackTime, SIGNAL(buttonClicked(QAbstractButton*)), this, SLOT(slotSetTrackTimeDisplay(QAbstractButton *))); + // Override Playing Track on Track Load + // The check box reflects the opposite of the config value + m_bDisallowTrackLoadToPlayingDeck = !m_pConfig->getValue( + ConfigKey("[Controls]", "AllowTrackLoadToPlayingDeck"), false); + checkBoxDisallowLoadToPlayingDeck->setChecked(m_bDisallowTrackLoadToPlayingDeck); + connect(checkBoxDisallowLoadToPlayingDeck, SIGNAL(toggled(bool)), + this, SLOT(slotDisallowTrackLoadToPlayingDeckCheckbox(bool))); + + // Jump to cue on track load + // The check box reflects the opposite of the config value + m_bJumpToCueOnTrackLoad = !m_pConfig->getValue(ConfigKey("[Controls]", "CueRecall"), false); + checkBoxSeekToCue->setChecked(m_bJumpToCueOnTrackLoad); + connect(checkBoxSeekToCue, SIGNAL(toggled(bool)), + this, SLOT(slotJumpToCueOnTrackLoadCheckbox(bool))); + m_bRateInverted = m_pConfig->getValue(ConfigKey("[Controls]", "RateDir"), false); setRateDirectionForAllDecks(m_bRateInverted); checkBoxInvertSpeedSlider->setChecked(m_bRateInverted); @@ -188,16 +203,6 @@ DlgPrefDeck::DlgPrefDeck(QWidget * parent, MixxxMainWindow * mixxx, spinBoxPermRateRight->setValue(m_pConfig->getValueString( ConfigKey("[Controls]", "RatePermRight")).toDouble()); - // - // Override Playing Track on Track Load - // - // The check box reflects the opposite of the config value - m_bDisallowTrackLoadToPlayingDeck = !m_pConfig->getValue( - ConfigKey("[Controls]", "AllowTrackLoadToPlayingDeck"), false); - checkBoxDisallowLoadToPlayingDeck->setChecked(m_bDisallowTrackLoadToPlayingDeck); - connect(checkBoxDisallowLoadToPlayingDeck, SIGNAL(toggled(bool)), - this, SLOT(slotDisallowTrackLoadToPlayingDeckCheckbox(bool))); - // // Cue Mode // @@ -228,13 +233,6 @@ DlgPrefDeck::DlgPrefDeck(QWidget * parent, MixxxMainWindow * mixxx, slotSetCueDefault(cueDefaultIndex); connect(ComboBoxCueDefault, SIGNAL(activated(int)), this, SLOT(slotSetCueDefault(int))); - // Cue recall - checkBoxSeekToCue->setChecked(m_pConfig->getValueString( - ConfigKey("[Controls]", "CueRecall")).toInt()==0); - //NOTE: for CueRecall, 0 means ON... - connect(checkBoxSeekToCue, SIGNAL(toggled(bool)), - this, SLOT(slotSetCueRecall(bool))); - // // Ramping Temporary Rate Change configuration // @@ -426,9 +424,8 @@ void DlgPrefDeck::slotSetCueDefault(int index) } } -void DlgPrefDeck::slotSetCueRecall(bool b) -{ - m_pConfig->set(ConfigKey("[Controls]", "CueRecall"), ConfigValue(b?0:1)); +void DlgPrefDeck::slotJumpToCueOnTrackLoadCheckbox(bool checked) { + m_bJumpToCueOnTrackLoad = checked; } void DlgPrefDeck::slotSetTrackTimeDisplay(QAbstractButton* b) { @@ -504,6 +501,8 @@ void DlgPrefDeck::slotApply() { m_pConfig->setValue(ConfigKey("[Controls]", "AllowTrackLoadToPlayingDeck"), !m_bDisallowTrackLoadToPlayingDeck); + m_pConfig->setValue(ConfigKey("[Controls]", "CueRecall"), !m_bJumpToCueOnTrackLoad); + // Set rate range setRateRangeForAllDecks(m_iRateRangePercent); m_pConfig->setValue(ConfigKey("[Controls]", "RateRangePercent"), diff --git a/src/preferences/dialog/dlgprefdeck.h b/src/preferences/dialog/dlgprefdeck.h index 6391d3a2987c..934f2b26550d 100644 --- a/src/preferences/dialog/dlgprefdeck.h +++ b/src/preferences/dialog/dlgprefdeck.h @@ -62,7 +62,7 @@ class DlgPrefDeck : public DlgPreferencePage, public Ui::DlgPrefDeckDlg { void slotSetTrackTimeDisplay(double); void slotDisallowTrackLoadToPlayingDeckCheckbox(bool); void slotSetCueDefault(int); - void slotSetCueRecall(bool); + void slotJumpToCueOnTrackLoadCheckbox(bool); void slotSetRateRamp(bool); void slotSetRateRampSensitivity(int); @@ -99,6 +99,8 @@ class DlgPrefDeck : public DlgPreferencePage, public Ui::DlgPrefDeckDlg { int m_iNumConfiguredSamplers; bool m_bDisallowTrackLoadToPlayingDeck; + bool m_bJumpToCueOnTrackLoad; + int m_iRateRangePercent; bool m_bRateInverted; From 18ce6d3b2723d1c14eb4eb71ec4bbe38f958a4ce Mon Sep 17 00:00:00 2001 From: be_ Date: Sun, 12 Nov 2017 01:13:16 -0600 Subject: [PATCH 10/25] DlgPrefDeck: detangle cue mode selection buttons from ConfigValue until Apply button is pressed --- src/preferences/dialog/dlgprefdeck.cpp | 22 +++++++++++----------- src/preferences/dialog/dlgprefdeck.h | 4 +++- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/preferences/dialog/dlgprefdeck.cpp b/src/preferences/dialog/dlgprefdeck.cpp index c62aa490a350..7580d4a0203b 100644 --- a/src/preferences/dialog/dlgprefdeck.cpp +++ b/src/preferences/dialog/dlgprefdeck.cpp @@ -222,6 +222,7 @@ DlgPrefDeck::DlgPrefDeck(QWidget * parent, MixxxMainWindow * mixxx, // Update combo box // The itemData values are out of order to avoid breaking configurations // when Mixxx mode (no blinking) was introduced. + // TODO: replace magic numbers with an enum class ComboBoxCueDefault->addItem(tr("Mixxx mode"), 0); ComboBoxCueDefault->addItem(tr("Mixxx mode (no blinking)"), 4); ComboBoxCueDefault->addItem(tr("Pioneer mode"), 1); @@ -230,8 +231,8 @@ DlgPrefDeck::DlgPrefDeck(QWidget * parent, MixxxMainWindow * mixxx, ComboBoxCueDefault->addItem(tr("CUP mode"), 5); const int cueDefaultIndex = cueDefaultIndexByData(cueDefaultValue); ComboBoxCueDefault->setCurrentIndex(cueDefaultIndex); - slotSetCueDefault(cueDefaultIndex); - connect(ComboBoxCueDefault, SIGNAL(activated(int)), this, SLOT(slotSetCueDefault(int))); + slotCueModeCombobox(cueDefaultIndex); + connect(ComboBoxCueDefault, SIGNAL(activated(int)), this, SLOT(slotCueModeCombobox(int))); // // Ramping Temporary Rate Change configuration @@ -413,15 +414,8 @@ void DlgPrefDeck::slotDisallowTrackLoadToPlayingDeckCheckbox(bool checked) { m_bDisallowTrackLoadToPlayingDeck = checked; } -void DlgPrefDeck::slotSetCueDefault(int index) -{ - int cueMode = ComboBoxCueDefault->itemData(index).toInt(); - m_pConfig->set(ConfigKey("[Controls]", "CueDefault"), ConfigValue(cueMode)); - - // Set cue behavior for every group - foreach (ControlProxy* pControl, m_cueControls) { - pControl->set(cueMode); - } +void DlgPrefDeck::slotCueModeCombobox(int index) { + m_iCueMode = ComboBoxCueDefault->itemData(index).toInt(); } void DlgPrefDeck::slotJumpToCueOnTrackLoadCheckbox(bool checked) { @@ -498,6 +492,12 @@ void DlgPrefDeck::slotSetRateRamp(bool mode) { } void DlgPrefDeck::slotApply() { + // Set cue mode for every deck + for (ControlProxy* pControl : m_cueControls) { + pControl->set(m_iCueMode); + } + m_pConfig->setValue(ConfigKey("[Controls]", "CueDefault"), m_iCueMode); + m_pConfig->setValue(ConfigKey("[Controls]", "AllowTrackLoadToPlayingDeck"), !m_bDisallowTrackLoadToPlayingDeck); diff --git a/src/preferences/dialog/dlgprefdeck.h b/src/preferences/dialog/dlgprefdeck.h index 934f2b26550d..3377fae57955 100644 --- a/src/preferences/dialog/dlgprefdeck.h +++ b/src/preferences/dialog/dlgprefdeck.h @@ -61,7 +61,7 @@ class DlgPrefDeck : public DlgPreferencePage, public Ui::DlgPrefDeckDlg { void slotSetTrackTimeDisplay(QAbstractButton*); void slotSetTrackTimeDisplay(double); void slotDisallowTrackLoadToPlayingDeckCheckbox(bool); - void slotSetCueDefault(int); + void slotCueModeCombobox(int); void slotJumpToCueOnTrackLoadCheckbox(bool); void slotSetRateRamp(bool); void slotSetRateRampSensitivity(int); @@ -98,6 +98,8 @@ class DlgPrefDeck : public DlgPreferencePage, public Ui::DlgPrefDeckDlg { int m_iNumConfiguredDecks; int m_iNumConfiguredSamplers; + int m_iCueMode; + bool m_bDisallowTrackLoadToPlayingDeck; bool m_bJumpToCueOnTrackLoad; From 042ac2e29bf4113e3eb880d859b850a649e4c6b1 Mon Sep 17 00:00:00 2001 From: be_ Date: Sun, 12 Nov 2017 02:36:14 -0600 Subject: [PATCH 11/25] DlgPrefDeck: detangle rate adjustment widgets from ConfigValues until Apply button is pressed --- src/preferences/dialog/dlgprefdeck.cpp | 115 ++++++++++++------------- src/preferences/dialog/dlgprefdeck.h | 19 ++-- 2 files changed, 70 insertions(+), 64 deletions(-) diff --git a/src/preferences/dialog/dlgprefdeck.cpp b/src/preferences/dialog/dlgprefdeck.cpp index 7580d4a0203b..27a23191a3b9 100644 --- a/src/preferences/dialog/dlgprefdeck.cpp +++ b/src/preferences/dialog/dlgprefdeck.cpp @@ -175,33 +175,33 @@ DlgPrefDeck::DlgPrefDeck(QWidget * parent, MixxxMainWindow * mixxx, // Rate buttons configuration // //NOTE: THESE DEFAULTS ARE A LIE! You'll need to hack the same values into the static variables - // at the top of enginebuffer.cpp - if (m_pConfig->getValueString(ConfigKey("[Controls]", "RateTempLeft")).length() == 0) - m_pConfig->set(ConfigKey("[Controls]", "RateTempLeft"), ConfigValue(QString("4.0"))); - if (m_pConfig->getValueString(ConfigKey("[Controls]", "RateTempRight")).length() == 0) - m_pConfig->set(ConfigKey("[Controls]", "RateTempRight"), ConfigValue(QString("2.0"))); - if (m_pConfig->getValueString(ConfigKey("[Controls]", "RatePermLeft")).length() == 0) - m_pConfig->set(ConfigKey("[Controls]", "RatePermLeft"), ConfigValue(QString("0.50"))); - if (m_pConfig->getValueString(ConfigKey("[Controls]", "RatePermRight")).length() == 0) - m_pConfig->set(ConfigKey("[Controls]", "RatePermRight"), ConfigValue(QString("0.05"))); + // at the top of ratecontrol.cpp + // + // "Left" and "Right" in the ConfigKeys refer to left versus right clicking + // on the skin buttons + m_dRateTempCoarse = m_pConfig->getValue(ConfigKey("[Controls]", "RateTempLeft"), 4.0); + m_dRateTempFine = m_pConfig->getValue(ConfigKey("[Controls]", "RateTempRight"), 2.0); + m_dRatePermCoarse = m_pConfig->getValue(ConfigKey("[Controls]", "RatePermLeft"), 0.5); + m_dRatePermFine = m_pConfig->getValue(ConfigKey("[Controls]", "RatePermRight"), 0.05); + + RateControl::setTemp(m_dRateTempCoarse); + RateControl::setTempSmall(m_dRateTempFine); + RateControl::setPerm(m_dRatePermCoarse); + RateControl::setPermSmall(m_dRatePermFine); + + spinBoxTempRateLeft->setValue(m_dRateTempCoarse); + spinBoxTempRateRight->setValue(m_dRateTempFine); + spinBoxPermRateLeft->setValue(m_dRatePermCoarse); + spinBoxPermRateRight->setValue(m_dRatePermFine); connect(spinBoxTempRateLeft, SIGNAL(valueChanged(double)), - this, SLOT(slotSetRateTempLeft(double))); + this, SLOT(slotRateTempCoarseSpinbox(double))); connect(spinBoxTempRateRight, SIGNAL(valueChanged(double)), - this, SLOT(slotSetRateTempRight(double))); + this, SLOT(slotRateTempFineSpinbox(double))); connect(spinBoxPermRateLeft, SIGNAL(valueChanged(double)), - this, SLOT(slotSetRatePermLeft(double))); + this, SLOT(slotRatePermCoarseSpinbox(double))); connect(spinBoxPermRateRight, SIGNAL(valueChanged(double)), - this, SLOT(slotSetRatePermRight(double))); - - spinBoxTempRateLeft->setValue(m_pConfig->getValueString( - ConfigKey("[Controls]", "RateTempLeft")).toDouble()); - spinBoxTempRateRight->setValue(m_pConfig->getValueString( - ConfigKey("[Controls]", "RateTempRight")).toDouble()); - spinBoxPermRateLeft->setValue(m_pConfig->getValueString( - ConfigKey("[Controls]", "RatePermLeft")).toDouble()); - spinBoxPermRateRight->setValue(m_pConfig->getValueString( - ConfigKey("[Controls]", "RatePermRight")).toDouble()); + this, SLOT(slotRatePermFineSpinbox(double))); // // Cue Mode @@ -239,21 +239,20 @@ DlgPrefDeck::DlgPrefDeck(QWidget * parent, MixxxMainWindow * mixxx, // // Set Ramp Rate On or Off - connect(radioButtonSpeedBendRamping, SIGNAL(toggled(bool)), - this, SLOT(slotSetRateRamp(bool))); - if ((bool) - m_pConfig->getValueString(ConfigKey("[Controls]", "RateRamp")).toInt()) { + m_bRateRamping = m_pConfig->getValue(ConfigKey("[Controls]", "RateRamp"), false); + if (m_bRateRamping) { radioButtonSpeedBendRamping->setChecked(true); } else { radioButtonSpeedBendStatic->setChecked(true); } + connect(radioButtonSpeedBendRamping, SIGNAL(toggled(bool)), + this, SLOT(slotRateRampingButton(bool))); // Update Ramp Rate Sensitivity + m_iRateRampSensitivity = m_pConfig->getValue(ConfigKey("[Controls]", "RateRampSensitivity"), 0); + SliderRateRampSensitivity->setValue(m_iRateRampSensitivity); connect(SliderRateRampSensitivity, SIGNAL(valueChanged(int)), - this, SLOT(slotSetRateRampSensitivity(int))); - SliderRateRampSensitivity->setValue(m_pConfig->getValueString( - ConfigKey("[Controls]", "RateRampSensitivity")).toInt()); - + this, SLOT(slotRateRampSensitivitySlider(int))); // Update "reset speed" and "reset pitch" check boxes // TODO: All defaults should only be set in slotResetToDefaults. @@ -451,44 +450,28 @@ void DlgPrefDeck::slotSetTrackTimeDisplay(double v) { } } -void DlgPrefDeck::slotSetRateTempLeft(double v) { - QString str; - str = str.setNum(v, 'f'); - m_pConfig->set(ConfigKey("[Controls]", "RateTempLeft"),ConfigValue(str)); - RateControl::setTemp(v); +void DlgPrefDeck::slotRateTempCoarseSpinbox(double value) { + m_dRateTempCoarse = value; } -void DlgPrefDeck::slotSetRateTempRight(double v) { - QString str; - str = str.setNum(v, 'f'); - m_pConfig->set(ConfigKey("[Controls]", "RateTempRight"),ConfigValue(str)); - RateControl::setTempSmall(v); +void DlgPrefDeck::slotRateTempFineSpinbox(double value) { + m_dRateTempFine = value; } -void DlgPrefDeck::slotSetRatePermLeft(double v) { - QString str; - str = str.setNum(v, 'f'); - m_pConfig->set(ConfigKey("[Controls]", "RatePermLeft"),ConfigValue(str)); - RateControl::setPerm(v); +void DlgPrefDeck::slotRatePermCoarseSpinbox(double value) { + m_dRatePermCoarse = value; } -void DlgPrefDeck::slotSetRatePermRight(double v) { - QString str; - str = str.setNum(v, 'f'); - m_pConfig->set(ConfigKey("[Controls]", "RatePermRight"),ConfigValue(str)); - RateControl::setPermSmall(v); +void DlgPrefDeck::slotRatePermFineSpinbox(double value) { + m_dRatePermFine = value; } -void DlgPrefDeck::slotSetRateRampSensitivity(int sense) { - m_pConfig->set(ConfigKey("[Controls]", "RateRampSensitivity"), - ConfigValue(SliderRateRampSensitivity->value())); - RateControl::setRateRampSensitivity(sense); +void DlgPrefDeck::slotRateRampSensitivitySlider(int value) { + m_iRateRampSensitivity = value; } -void DlgPrefDeck::slotSetRateRamp(bool mode) { - m_pConfig->set(ConfigKey("[Controls]", "RateRamp"), - ConfigValue(radioButtonSpeedBendRamping->isChecked())); - RateControl::setRateRamp(mode); +void DlgPrefDeck::slotRateRampingButton(bool checked) { + m_bRateRamping = checked; } void DlgPrefDeck::slotApply() { @@ -538,6 +521,22 @@ void DlgPrefDeck::slotApply() { for (ControlProxy* pControl : m_keyunlockModeControls) { pControl->set(static_cast(m_keyunlockMode)); } + + RateControl::setRateRamp(m_bRateRamping); + m_pConfig->setValue(ConfigKey("[Controls]", "RateRamp"), m_bRateRamping); + + RateControl::setRateRampSensitivity(m_iRateRampSensitivity); + m_pConfig->setValue(ConfigKey("[Controls]", "RateRampSensitivity"), m_iRateRampSensitivity); + + RateControl::setTemp(m_dRateTempCoarse); + RateControl::setTempSmall(m_dRateTempFine); + RateControl::setPerm(m_dRatePermCoarse); + RateControl::setPermSmall(m_dRatePermFine); + + m_pConfig->setValue(ConfigKey("[Controls]", "RateTempLeft"), m_dRateTempCoarse); + m_pConfig->setValue(ConfigKey("[Controls]", "RateTempRight"), m_dRateTempFine); + m_pConfig->setValue(ConfigKey("[Controls]", "RatePermLeft"), m_dRatePermCoarse); + m_pConfig->setValue(ConfigKey("[Controls]", "RatePermRight"), m_dRatePermFine); } void DlgPrefDeck::slotNumDecksChanged(double new_count, bool initializing) { diff --git a/src/preferences/dialog/dlgprefdeck.h b/src/preferences/dialog/dlgprefdeck.h index 3377fae57955..7530e63ceef0 100644 --- a/src/preferences/dialog/dlgprefdeck.h +++ b/src/preferences/dialog/dlgprefdeck.h @@ -54,17 +54,17 @@ class DlgPrefDeck : public DlgPreferencePage, public Ui::DlgPrefDeckDlg { void slotRateInversionCheckbox(bool invert); void slotKeyLockModeSelected(QAbstractButton*); void slotKeyUnlockModeSelected(QAbstractButton*); - void slotSetRateTempLeft(double); - void slotSetRateTempRight(double); - void slotSetRatePermLeft(double); - void slotSetRatePermRight(double); + void slotRateTempCoarseSpinbox(double); + void slotRateTempFineSpinbox(double); + void slotRatePermCoarseSpinbox(double); + void slotRatePermFineSpinbox(double); void slotSetTrackTimeDisplay(QAbstractButton*); void slotSetTrackTimeDisplay(double); void slotDisallowTrackLoadToPlayingDeckCheckbox(bool); void slotCueModeCombobox(int); void slotJumpToCueOnTrackLoadCheckbox(bool); - void slotSetRateRamp(bool); - void slotSetRateRampSensitivity(int); + void slotRateRampingButton(bool); + void slotRateRampSensitivitySlider(int); void slotNumDecksChanged(double, bool initializing=false); void slotNumSamplersChanged(double, bool initializing=false); @@ -110,6 +110,13 @@ class DlgPrefDeck : public DlgPreferencePage, public Ui::DlgPrefDeckDlg { bool m_pitchAutoReset; KeylockMode m_keylockMode; KeyunlockMode m_keyunlockMode; + + bool m_bRateRamping; + int m_iRateRampSensitivity; + double m_dRateTempCoarse; + double m_dRateTempFine; + double m_dRatePermCoarse; + double m_dRatePermFine; }; #endif From dfaa7cf8e31234d9247301f535a41940f3c708e8 Mon Sep 17 00:00:00 2001 From: be_ Date: Sun, 12 Nov 2017 02:50:29 -0600 Subject: [PATCH 12/25] DlgPrefDeck: detangle track time setting from CO until Apply button is pressed --- src/preferences/dialog/dlgprefdeck.cpp | 13 +++++++------ src/preferences/dialog/dlgprefdeck.h | 2 ++ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/preferences/dialog/dlgprefdeck.cpp b/src/preferences/dialog/dlgprefdeck.cpp index 27a23191a3b9..dbaf6507057f 100644 --- a/src/preferences/dialog/dlgprefdeck.cpp +++ b/src/preferences/dialog/dlgprefdeck.cpp @@ -422,16 +422,13 @@ void DlgPrefDeck::slotJumpToCueOnTrackLoadCheckbox(bool checked) { } void DlgPrefDeck::slotSetTrackTimeDisplay(QAbstractButton* b) { - double timeDisplay; if (b == radioButtonRemaining) { - timeDisplay = static_cast(TrackTime::DisplayMode::Remaining); + m_timeDisplayMode = TrackTime::DisplayMode::Remaining; } else if (b == radioButtonElapsedAndRemaining) { - timeDisplay = static_cast(TrackTime::DisplayMode::ElapsedAndRemaining); + m_timeDisplayMode = TrackTime::DisplayMode::ElapsedAndRemaining; } else { - timeDisplay = static_cast(TrackTime::DisplayMode::Elapsed); + m_timeDisplayMode = TrackTime::DisplayMode::Elapsed; } - m_pConfig->set(ConfigKey("[Controls]","PositionDisplay"), ConfigValue(timeDisplay)); - m_pControlTrackTimeDisplay->set(timeDisplay); } void DlgPrefDeck::slotSetTrackTimeDisplay(double v) { @@ -475,6 +472,10 @@ void DlgPrefDeck::slotRateRampingButton(bool checked) { } void DlgPrefDeck::slotApply() { + double timeDisplay = static_cast(m_timeDisplayMode); + m_pConfig->set(ConfigKey("[Controls]","PositionDisplay"), ConfigValue(timeDisplay)); + m_pControlTrackTimeDisplay->set(timeDisplay); + // Set cue mode for every deck for (ControlProxy* pControl : m_cueControls) { pControl->set(m_iCueMode); diff --git a/src/preferences/dialog/dlgprefdeck.h b/src/preferences/dialog/dlgprefdeck.h index 7530e63ceef0..004f6dbd5725 100644 --- a/src/preferences/dialog/dlgprefdeck.h +++ b/src/preferences/dialog/dlgprefdeck.h @@ -98,6 +98,8 @@ class DlgPrefDeck : public DlgPreferencePage, public Ui::DlgPrefDeckDlg { int m_iNumConfiguredDecks; int m_iNumConfiguredSamplers; + TrackTime::DisplayMode m_timeDisplayMode; + int m_iCueMode; bool m_bDisallowTrackLoadToPlayingDeck; From c8a5a08443f4051213eef85a1ed04563c3c82e43 Mon Sep 17 00:00:00 2001 From: be_ Date: Sun, 19 Nov 2017 18:02:54 -0600 Subject: [PATCH 13/25] fix reverting to default skin when opening Preferences without pressing Apply somehow DlgPrefInterface::slotApply is shown when closing the Preferences window even if the Interface pane is never shown and the Okay button is used to close the window. Also, configuration values should never be set outside of the preferences code! --- src/preferences/dialog/dlgprefinterface.cpp | 1 + src/skin/skinloader.cpp | 2 -- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/preferences/dialog/dlgprefinterface.cpp b/src/preferences/dialog/dlgprefinterface.cpp index e9a576b97f52..d4b3718dfbbe 100644 --- a/src/preferences/dialog/dlgprefinterface.cpp +++ b/src/preferences/dialog/dlgprefinterface.cpp @@ -119,6 +119,7 @@ DlgPrefInterface::DlgPrefInterface(QWidget * parent, MixxxMainWindow * mixxx, } if (skinInfo.absoluteFilePath() == configuredSkinPath) { + m_skin = skinInfo.fileName(); ComboBoxSkinconf->setCurrentIndex(index); if (size_ok) { warningLabel->hide(); diff --git a/src/skin/skinloader.cpp b/src/skin/skinloader.cpp index 3e718ec71c3e..560d85d5e07c 100644 --- a/src/skin/skinloader.cpp +++ b/src/skin/skinloader.cpp @@ -71,8 +71,6 @@ QString SkinLoader::getConfiguredSkinPath() const { if (configSkin.isEmpty()) { configSkin = getDefaultSkinName(); } - m_pConfig->set(ConfigKey("[Config]", "ResizableSkin"), - ConfigValue(configSkin)); } QString skinPath = getSkinPath(configSkin); From c06a9244c84acd581c7f84ca0e49eb5f71a1014f Mon Sep 17 00:00:00 2001 From: be_ Date: Sun, 19 Nov 2017 18:21:45 -0600 Subject: [PATCH 14/25] move Waveform preferences out to equal tree level as other prefs --- src/preferences/dialog/dlgpreferences.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/preferences/dialog/dlgpreferences.cpp b/src/preferences/dialog/dlgpreferences.cpp index 5abc1648220c..05d92c6326f5 100644 --- a/src/preferences/dialog/dlgpreferences.cpp +++ b/src/preferences/dialog/dlgpreferences.cpp @@ -179,7 +179,7 @@ void DlgPreferences::createIcons() { m_pDecksButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); m_pDecksButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); - m_pWaveformButton = new QTreeWidgetItem(m_pControlsButton, QTreeWidgetItem::Type); + m_pWaveformButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); m_pWaveformButton->setIcon(0, QIcon(":/images/preferences/ic_preferences_waveforms.png")); m_pWaveformButton->setText(0, tr("Waveforms")); m_pWaveformButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); From 7b6c6bf9ff232aaa27652abe75e434c4a3e255de Mon Sep 17 00:00:00 2001 From: be_ Date: Sun, 19 Nov 2017 18:27:55 -0600 Subject: [PATCH 15/25] cleanup variable names in DlgPreferences --- src/preferences/dialog/dlgpreferences.cpp | 120 +++++++++++----------- src/preferences/dialog/dlgpreferences.h | 38 +++---- 2 files changed, 79 insertions(+), 79 deletions(-) diff --git a/src/preferences/dialog/dlgpreferences.cpp b/src/preferences/dialog/dlgpreferences.cpp index 05d92c6326f5..14d203e9025e 100644 --- a/src/preferences/dialog/dlgpreferences.cpp +++ b/src/preferences/dialog/dlgpreferences.cpp @@ -87,56 +87,56 @@ DlgPreferences::DlgPreferences(MixxxMainWindow * mixxx, SkinLoader* pSkinLoader, #ifdef __VINYLCONTROL__ // It's important for this to be before the connect for wsound. // TODO(rryan) determine why/if this is still true - m_wvinylcontrol = new DlgPrefVinyl(this, pVCManager, m_pConfig); - addPageWidget(m_wvinylcontrol); + m_vinylControlPage = new DlgPrefVinyl(this, pVCManager, m_pConfig); + addPageWidget(m_vinylControlPage); #else m_wnovinylcontrol = new DlgPrefNoVinyl(this, soundman, m_pConfig); addPageWidget(m_wnovinylcontrol); #endif - m_wsound = new DlgPrefSound(this, soundman, pPlayerManager, m_pConfig); - addPageWidget(m_wsound); - m_wlibrary = new DlgPrefLibrary(this, m_pConfig, pLibrary); - addPageWidget(m_wlibrary); - connect(m_wlibrary, SIGNAL(scanLibrary()), + m_soundPage = new DlgPrefSound(this, soundman, pPlayerManager, m_pConfig); + addPageWidget(m_soundPage); + m_libraryPage = new DlgPrefLibrary(this, m_pConfig, pLibrary); + addPageWidget(m_libraryPage); + connect(m_libraryPage, SIGNAL(scanLibrary()), pLibrary, SLOT(scan())); - m_wcontrols = new DlgPrefInterface(this, mixxx, pSkinLoader, m_pConfig); - addPageWidget(m_wcontrols); - m_wdeck = new DlgPrefDeck(this, mixxx, pPlayerManager, m_pConfig); - addPageWidget(m_wdeck); - m_wwaveform = new DlgPrefWaveform(this, mixxx, m_pConfig, pLibrary); - addPageWidget(m_wwaveform); - m_wautodj = new DlgPrefAutoDJ(this, m_pConfig); - addPageWidget(m_wautodj); - m_weq = new DlgPrefEQ(this, pEffectsManager, m_pConfig); - addPageWidget(m_weq); + m_interfacePage = new DlgPrefInterface(this, mixxx, pSkinLoader, m_pConfig); + addPageWidget(m_interfacePage); + m_deckPage = new DlgPrefDeck(this, mixxx, pPlayerManager, m_pConfig); + addPageWidget(m_deckPage); + m_waveformPage = new DlgPrefWaveform(this, mixxx, m_pConfig, pLibrary); + addPageWidget(m_waveformPage); + m_autoDjPage = new DlgPrefAutoDJ(this, m_pConfig); + addPageWidget(m_autoDjPage); + m_equalizerPage = new DlgPrefEQ(this, pEffectsManager, m_pConfig); + addPageWidget(m_equalizerPage); // TODO: Re-enable the effects preferences pane when it does something useful. - //m_weffects = new DlgPrefEffects(this, m_pConfig, pEffectsManager); - //addPageWidget(m_weffects); - m_wcrossfader = new DlgPrefCrossfader(this, m_pConfig); - addPageWidget(m_wcrossfader); + //m_effectsPage = new DlgPrefEffects(this, m_pConfig, pEffectsManager); + //addPageWidget(m_effectsPage); + m_crossfaderPage = new DlgPrefCrossfader(this, m_pConfig); + addPageWidget(m_crossfaderPage); #ifdef __VAMP__ - m_wbeats = new DlgPrefBeats(this, m_pConfig); - addPageWidget (m_wbeats); - m_wkey = new DlgPrefKey(this, m_pConfig); - addPageWidget(m_wkey); + m_beatgridPage = new DlgPrefBeats(this, m_pConfig); + addPageWidget (m_beatgridPage); + m_musicalKeyPage = new DlgPrefKey(this, m_pConfig); + addPageWidget(m_musicalKeyPage); #endif - m_wreplaygain = new DlgPrefReplayGain(this, m_pConfig); - addPageWidget(m_wreplaygain); - m_wrecord = new DlgPrefRecord(this, m_pConfig); - addPageWidget(m_wrecord); + m_replayGainPage = new DlgPrefReplayGain(this, m_pConfig); + addPageWidget(m_replayGainPage); + m_recordingPage = new DlgPrefRecord(this, m_pConfig); + addPageWidget(m_recordingPage); #ifdef __BROADCAST__ - m_wbroadcast = new DlgPrefBroadcast(this, m_pConfig); - addPageWidget(m_wbroadcast); + m_broadcastingPage = new DlgPrefBroadcast(this, m_pConfig); + addPageWidget(m_broadcastingPage); #endif #ifdef __MODPLUG__ - m_wmodplug = new DlgPrefModplug(this, m_pConfig); - addPageWidget(m_wmodplug); + m_modplugPage = new DlgPrefModplug(this, m_pConfig); + addPageWidget(m_modplugPage); #endif - m_wcontrollers = new DlgPrefControllers(this, m_pConfig, controllers, + m_controllersPage = new DlgPrefControllers(this, m_pConfig, controllers, m_pControllerTreeItem); - addPageWidget(m_wcontrollers); + addPageWidget(m_controllersPage); // Install event handler to generate closeDlg signal installEventFilter(this); @@ -157,7 +157,7 @@ DlgPreferences::~DlgPreferences() { // because otherwise the QStackedWidget will delete the controller // preference pages (and DlgPrefControllers dynamically generates and // deletes them). - delete m_wcontrollers; + delete m_controllersPage; } void DlgPreferences::createIcons() { @@ -167,11 +167,11 @@ void DlgPreferences::createIcons() { m_pSoundButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); m_pSoundButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); - m_pControlsButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); - m_pControlsButton->setIcon(0, QIcon(":/images/preferences/ic_preferences_interface.png")); - m_pControlsButton->setText(0, tr("Interface")); - m_pControlsButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); - m_pControlsButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); + m_pInterfaceButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); + m_pInterfaceButton->setIcon(0, QIcon(":/images/preferences/ic_preferences_interface.png")); + m_pInterfaceButton->setText(0, tr("Interface")); + m_pInterfaceButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); + m_pInterfaceButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); m_pDecksButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); m_pDecksButton->setIcon(0, QIcon(":/images/preferences/ic_preferences_decks.png")); @@ -292,54 +292,54 @@ void DlgPreferences::changePage(QTreeWidgetItem* current, QTreeWidgetItem* previ current = previous; if (current == m_pSoundButton) { - switchToPage(m_wsound); + switchToPage(m_soundPage); } else if (current == m_pLibraryButton) { - switchToPage(m_wlibrary); - } else if (current == m_pControlsButton) { - switchToPage(m_wcontrols); + switchToPage(m_libraryPage); + } else if (current == m_pInterfaceButton) { + switchToPage(m_interfacePage); } else if (current == m_pDecksButton) { - switchToPage(m_wdeck); + switchToPage(m_deckPage); } else if (current == m_pWaveformButton) { - switchToPage(m_wwaveform); + switchToPage(m_waveformPage); } else if (current == m_pAutoDJButton) { - switchToPage(m_wautodj); + switchToPage(m_autoDjPage); } else if (current == m_pEqButton) { - switchToPage(m_weq); + switchToPage(m_equalizerPage); // TODO: Re-enable the effects preferences pane when it does something useful. //} else if (current == m_pEffectsButton) { - // switchToPage(m_weffects); + // switchToPage(m_effectsPage); } else if (current == m_pCrossfaderButton) { - switchToPage(m_wcrossfader); + switchToPage(m_crossfaderPage); } else if (current == m_pRecordingButton) { - switchToPage(m_wrecord); + switchToPage(m_recordingPage); } else if (current == m_pBeatDetectionButton) { - switchToPage(m_wbeats); + switchToPage(m_beatgridPage); } else if (current == m_pKeyDetectionButton) { - switchToPage(m_wkey); + switchToPage(m_musicalKeyPage); } else if (current == m_pReplayGainButton) { - switchToPage(m_wreplaygain); + switchToPage(m_replayGainPage); #ifdef __VINYLCONTROL__ } else if (current == m_pVinylControlButton) { - switchToPage(m_wvinylcontrol); + switchToPage(m_vinylControlPage); #else } else if (current == m_pVinylControlButton) { switchToPage(m_wnovinylcontrol); #endif #ifdef __BROADCAST__ } else if (current == m_pBroadcastButton) { - switchToPage(m_wbroadcast); + switchToPage(m_broadcastingPage); #endif #ifdef __MODPLUG__ } else if (current == m_pModplugButton) { - switchToPage(m_wmodplug); + switchToPage(m_modplugPage); #endif - } else if (m_wcontrollers->handleTreeItemClick(current)) { + } else if (m_controllersPage->handleTreeItemClick(current)) { // Do nothing. m_wcontrollers handled this click. } } void DlgPreferences::showSoundHardwarePage() { - switchToPage(m_wsound); + switchToPage(m_soundPage); contentsTreeWidget->setCurrentItem(m_pSoundButton); } diff --git a/src/preferences/dialog/dlgpreferences.h b/src/preferences/dialog/dlgpreferences.h index 4877df8e63cf..5536d6bb1122 100644 --- a/src/preferences/dialog/dlgpreferences.h +++ b/src/preferences/dialog/dlgpreferences.h @@ -101,31 +101,31 @@ class DlgPreferences : public QDialog, public Ui::DlgPreferencesDlg { QStringList m_geometry; UserSettingsPointer m_pConfig; - DlgPrefSound* m_wsound; - DlgPrefLibrary* m_wlibrary; - DlgPrefControllers *m_wcontrollers; - DlgPrefInterface* m_wcontrols; - DlgPrefDeck* m_wdeck; - DlgPrefWaveform* m_wwaveform; - DlgPrefAutoDJ* m_wautodj; - DlgPrefEQ* m_weq; + DlgPrefSound* m_soundPage; + DlgPrefLibrary* m_libraryPage; + DlgPrefControllers *m_controllersPage; + DlgPrefInterface* m_interfacePage; + DlgPrefDeck* m_deckPage; + DlgPrefWaveform* m_waveformPage; + DlgPrefAutoDJ* m_autoDjPage; + DlgPrefEQ* m_equalizerPage; //TODO: Re-enable the effects pane when it does something useful. - //DlgPrefEffects* m_weffects; - DlgPrefCrossfader* m_wcrossfader; - DlgPrefRecord* m_wrecord; - DlgPrefKey* m_wkey; - DlgPrefBeats* m_wbeats; - DlgPrefVinyl* m_wvinylcontrol; - DlgPrefNoVinyl* m_wnovinylcontrol; - DlgPrefBroadcast* m_wbroadcast; - DlgPrefReplayGain* m_wreplaygain; + //DlgPrefEffects* m_effectsPage; + DlgPrefCrossfader* m_crossfaderPage; + DlgPrefRecord* m_recordingPage; + DlgPrefKey* m_musicalKeyPage; + DlgPrefBeats* m_beatgridPage; + DlgPrefVinyl* m_vinylControlPage; + DlgPrefNoVinyl* m_noVinylControlPage; + DlgPrefBroadcast* m_broadcastingPage; + DlgPrefReplayGain* m_replayGainPage; #ifdef __MODPLUG__ - DlgPrefModplug* m_wmodplug; + DlgPrefModplug* m_modplugPage; #endif QTreeWidgetItem* m_pSoundButton; QTreeWidgetItem* m_pLibraryButton; - QTreeWidgetItem* m_pControlsButton; + QTreeWidgetItem* m_pInterfaceButton; QTreeWidgetItem* m_pDecksButton; QTreeWidgetItem* m_pWaveformButton; QTreeWidgetItem* m_pAutoDJButton; From d9c3ea021746121ec199b2fbbc5345c184136673 Mon Sep 17 00:00:00 2001 From: be_ Date: Sun, 19 Nov 2017 19:20:26 -0600 Subject: [PATCH 16/25] reorder preferences pages in list This order is somewhat arbitrary. I am trying to put it in order of what I think is most important for users to configure first. --- src/preferences/dialog/dlgpreferences.cpp | 222 +++++++++++----------- src/preferences/dialog/dlgpreferences.h | 40 ++-- 2 files changed, 134 insertions(+), 128 deletions(-) diff --git a/src/preferences/dialog/dlgpreferences.cpp b/src/preferences/dialog/dlgpreferences.cpp index 14d203e9025e..909bfb73aae5 100644 --- a/src/preferences/dialog/dlgpreferences.cpp +++ b/src/preferences/dialog/dlgpreferences.cpp @@ -24,36 +24,39 @@ #include #include +#include "preferences/dialog/dlgpreferences.h" + +#include "preferences/dialog/dlgprefsound.h" +#include "preferences/dialog/dlgpreflibrary.h" +#include "controllers/dlgprefcontrollers.h" + #ifdef __VINYLCONTROL__ #include "preferences/dialog/dlgprefvinyl.h" #else #include "preferences/dialog/dlgprefnovinyl.h" #endif +#include "preferences/dialog/dlgprefinterface.h" +#include "preferences/dialog/dlgprefwaveform.h" +#include "preferences/dialog/dlgprefdeck.h" +#include "preferences/dialog/dlgprefeq.h" +#include "preferences/dialog/dlgprefcrossfader.h" +#include "preferences/dialog/dlgprefeffects.h" +#include "preferences/dialog/dlgprefautodj.h" + #ifdef __BROADCAST__ #include "preferences/dialog/dlgprefbroadcast.h" #endif +#include "preferences/dialog/dlgprefrecord.h" #include "preferences/dialog/dlgprefbeats.h" #include "preferences/dialog/dlgprefkey.h" +#include "preferences/dialog/dlgprefreplaygain.h" #ifdef __MODPLUG__ #include "preferences/dialog/dlgprefmodplug.h" #endif -#include "preferences/dialog/dlgpreferences.h" -#include "preferences/dialog/dlgprefsound.h" -#include "controllers/dlgprefcontrollers.h" -#include "preferences/dialog/dlgpreflibrary.h" -#include "preferences/dialog/dlgprefinterface.h" -#include "preferences/dialog/dlgprefdeck.h" -#include "preferences/dialog/dlgprefwaveform.h" -#include "preferences/dialog/dlgprefautodj.h" -#include "preferences/dialog/dlgprefeq.h" -#include "preferences/dialog/dlgprefcrossfader.h" -#include "preferences/dialog/dlgprefrecord.h" -#include "preferences/dialog/dlgprefreplaygain.h" -#include "preferences/dialog/dlgprefeffects.h" #include "mixxx.h" #include "controllers/controllermanager.h" #include "skin/skinloader.h" @@ -75,7 +78,6 @@ DlgPreferences::DlgPreferences(MixxxMainWindow * mixxx, SkinLoader* pSkinLoader, connect(buttonBox, SIGNAL(clicked(QAbstractButton*)), this, SLOT(slotButtonPressed(QAbstractButton*))); - createIcons(); while (pagesWidget->count() > 0) { @@ -83,6 +85,15 @@ DlgPreferences::DlgPreferences(MixxxMainWindow * mixxx, SkinLoader* pSkinLoader, } // Construct widgets for use in tabs. + m_soundPage = new DlgPrefSound(this, soundman, pPlayerManager, m_pConfig); + addPageWidget(m_soundPage); + m_libraryPage = new DlgPrefLibrary(this, m_pConfig, pLibrary); + addPageWidget(m_libraryPage); + connect(m_libraryPage, SIGNAL(scanLibrary()), + pLibrary, SLOT(scan())); + m_controllersPage = new DlgPrefControllers(this, m_pConfig, controllers, + m_pControllerTreeItem); + addPageWidget(m_controllersPage); #ifdef __VINYLCONTROL__ // It's important for this to be before the connect for wsound. @@ -93,27 +104,30 @@ DlgPreferences::DlgPreferences(MixxxMainWindow * mixxx, SkinLoader* pSkinLoader, m_wnovinylcontrol = new DlgPrefNoVinyl(this, soundman, m_pConfig); addPageWidget(m_wnovinylcontrol); #endif - m_soundPage = new DlgPrefSound(this, soundman, pPlayerManager, m_pConfig); - addPageWidget(m_soundPage); - m_libraryPage = new DlgPrefLibrary(this, m_pConfig, pLibrary); - addPageWidget(m_libraryPage); - connect(m_libraryPage, SIGNAL(scanLibrary()), - pLibrary, SLOT(scan())); + m_interfacePage = new DlgPrefInterface(this, mixxx, pSkinLoader, m_pConfig); addPageWidget(m_interfacePage); - m_deckPage = new DlgPrefDeck(this, mixxx, pPlayerManager, m_pConfig); - addPageWidget(m_deckPage); m_waveformPage = new DlgPrefWaveform(this, mixxx, m_pConfig, pLibrary); addPageWidget(m_waveformPage); - m_autoDjPage = new DlgPrefAutoDJ(this, m_pConfig); - addPageWidget(m_autoDjPage); + m_deckPage = new DlgPrefDeck(this, mixxx, pPlayerManager, m_pConfig); + addPageWidget(m_deckPage); m_equalizerPage = new DlgPrefEQ(this, pEffectsManager, m_pConfig); addPageWidget(m_equalizerPage); + m_crossfaderPage = new DlgPrefCrossfader(this, m_pConfig); + addPageWidget(m_crossfaderPage); // TODO: Re-enable the effects preferences pane when it does something useful. //m_effectsPage = new DlgPrefEffects(this, m_pConfig, pEffectsManager); //addPageWidget(m_effectsPage); - m_crossfaderPage = new DlgPrefCrossfader(this, m_pConfig); - addPageWidget(m_crossfaderPage); + m_autoDjPage = new DlgPrefAutoDJ(this, m_pConfig); + addPageWidget(m_autoDjPage); + +#ifdef __BROADCAST__ + m_broadcastingPage = new DlgPrefBroadcast(this, m_pConfig); + addPageWidget(m_broadcastingPage); +#endif + + m_recordingPage = new DlgPrefRecord(this, m_pConfig); + addPageWidget(m_recordingPage); #ifdef __VAMP__ m_beatgridPage = new DlgPrefBeats(this, m_pConfig); @@ -124,19 +138,11 @@ DlgPreferences::DlgPreferences(MixxxMainWindow * mixxx, SkinLoader* pSkinLoader, m_replayGainPage = new DlgPrefReplayGain(this, m_pConfig); addPageWidget(m_replayGainPage); - m_recordingPage = new DlgPrefRecord(this, m_pConfig); - addPageWidget(m_recordingPage); -#ifdef __BROADCAST__ - m_broadcastingPage = new DlgPrefBroadcast(this, m_pConfig); - addPageWidget(m_broadcastingPage); -#endif + #ifdef __MODPLUG__ m_modplugPage = new DlgPrefModplug(this, m_pConfig); addPageWidget(m_modplugPage); #endif - m_controllersPage = new DlgPrefControllers(this, m_pConfig, controllers, - m_pControllerTreeItem); - addPageWidget(m_controllersPage); // Install event handler to generate closeDlg signal installEventFilter(this); @@ -167,24 +173,6 @@ void DlgPreferences::createIcons() { m_pSoundButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); m_pSoundButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); - m_pInterfaceButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); - m_pInterfaceButton->setIcon(0, QIcon(":/images/preferences/ic_preferences_interface.png")); - m_pInterfaceButton->setText(0, tr("Interface")); - m_pInterfaceButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); - m_pInterfaceButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); - - m_pDecksButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); - m_pDecksButton->setIcon(0, QIcon(":/images/preferences/ic_preferences_decks.png")); - m_pDecksButton->setText(0, tr("Decks")); - m_pDecksButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); - m_pDecksButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); - - m_pWaveformButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); - m_pWaveformButton->setIcon(0, QIcon(":/images/preferences/ic_preferences_waveforms.png")); - m_pWaveformButton->setText(0, tr("Waveforms")); - m_pWaveformButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); - m_pWaveformButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); - m_pLibraryButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); m_pLibraryButton->setIcon(0, QIcon(":/images/preferences/ic_preferences_library.png")); m_pLibraryButton->setText(0, tr("Library")); @@ -197,11 +185,41 @@ void DlgPreferences::createIcons() { m_pControllerTreeItem->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); m_pControllerTreeItem->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); - m_pAutoDJButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); - m_pAutoDJButton->setIcon(0, QIcon(":/images/preferences/ic_preferences_autodj.png")); - m_pAutoDJButton->setText(0, tr("Auto DJ")); - m_pAutoDJButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); - m_pAutoDJButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); +#ifdef __VINYLCONTROL__ + m_pVinylControlButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); + //QT screws up my nice vinyl svg for some reason, so we'll use a PNG version + //instead... + m_pVinylControlButton->setIcon(0, QIcon(":/images/preferences/ic_preferences_vinyl.png")); + m_pVinylControlButton->setText(0, tr("Vinyl Control")); + m_pVinylControlButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); + m_pVinylControlButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); +#else + m_pVinylControlButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); + //QT screws up my nice vinyl svg for some reason, so we'll use a PNG version + //instead... + m_pVinylControlButton->setIcon(0, QIcon(":/images/preferences/ic_preferences_vinyl.png")); + m_pVinylControlButton->setText(0, tr("Vinyl Control")); + m_pVinylControlButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); + m_pVinylControlButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); +#endif + + m_pInterfaceButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); + m_pInterfaceButton->setIcon(0, QIcon(":/images/preferences/ic_preferences_interface.png")); + m_pInterfaceButton->setText(0, tr("Interface")); + m_pInterfaceButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); + m_pInterfaceButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); + + m_pWaveformButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); + m_pWaveformButton->setIcon(0, QIcon(":/images/preferences/ic_preferences_waveforms.png")); + m_pWaveformButton->setText(0, tr("Waveforms")); + m_pWaveformButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); + m_pWaveformButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); + + m_pDecksButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); + m_pDecksButton->setIcon(0, QIcon(":/images/preferences/ic_preferences_decks.png")); + m_pDecksButton->setText(0, tr("Decks")); + m_pDecksButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); + m_pDecksButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); m_pEqButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); m_pEqButton->setIcon(0, QIcon(":/images/preferences/ic_preferences_equalizers.png")); @@ -209,6 +227,12 @@ void DlgPreferences::createIcons() { m_pEqButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); m_pEqButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); + m_pCrossfaderButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); + m_pCrossfaderButton->setIcon(0, QIcon(":/images/preferences/ic_preferences_crossfader.png")); + m_pCrossfaderButton->setText(0, tr("Crossfader")); + m_pCrossfaderButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); + m_pCrossfaderButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); + // TODO: Re-enable the effects pane when it does something useful. //m_pEffectsButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); //m_pEffectsButton->setIcon(0, QIcon(":/images/preferences/ic_preferences_effects.png")); @@ -216,11 +240,19 @@ void DlgPreferences::createIcons() { //m_pEffectsButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); //m_pEffectsButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); - m_pCrossfaderButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); - m_pCrossfaderButton->setIcon(0, QIcon(":/images/preferences/ic_preferences_crossfader.png")); - m_pCrossfaderButton->setText(0, tr("Crossfader")); - m_pCrossfaderButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); - m_pCrossfaderButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); + m_pAutoDJButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); + m_pAutoDJButton->setIcon(0, QIcon(":/images/preferences/ic_preferences_autodj.png")); + m_pAutoDJButton->setText(0, tr("Auto DJ")); + m_pAutoDJButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); + m_pAutoDJButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); + +#ifdef __BROADCAST__ + m_pBroadcastButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); + m_pBroadcastButton->setIcon(0, QIcon(":/images/preferences/ic_preferences_broadcast.png")); + m_pBroadcastButton->setText(0, tr("Live Broadcasting")); + m_pBroadcastButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); + m_pBroadcastButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); +#endif m_pRecordingButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); m_pRecordingButton->setIcon(0, QIcon(":/images/preferences/ic_preferences_recording.png")); @@ -248,32 +280,6 @@ void DlgPreferences::createIcons() { m_pReplayGainButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); m_pReplayGainButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); -#ifdef __VINYLCONTROL__ - m_pVinylControlButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); - //QT screws up my nice vinyl svg for some reason, so we'll use a PNG version - //instead... - m_pVinylControlButton->setIcon(0, QIcon(":/images/preferences/ic_preferences_vinyl.png")); - m_pVinylControlButton->setText(0, tr("Vinyl Control")); - m_pVinylControlButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); - m_pVinylControlButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); -#else - m_pVinylControlButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); - //QT screws up my nice vinyl svg for some reason, so we'll use a PNG version - //instead... - m_pVinylControlButton->setIcon(0, QIcon(":/images/preferences/ic_preferences_vinyl.png")); - m_pVinylControlButton->setText(0, tr("Vinyl Control")); - m_pVinylControlButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); - m_pVinylControlButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); -#endif - -#ifdef __BROADCAST__ - m_pBroadcastButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); - m_pBroadcastButton->setIcon(0, QIcon(":/images/preferences/ic_preferences_broadcast.png")); - m_pBroadcastButton->setText(0, tr("Live Broadcasting")); - m_pBroadcastButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); - m_pBroadcastButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); -#endif - #ifdef __MODPLUG__ m_pModplugButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); m_pModplugButton->setIcon(0, QIcon(":/images/preferences/ic_preferences_modplug.png")); @@ -295,21 +301,34 @@ void DlgPreferences::changePage(QTreeWidgetItem* current, QTreeWidgetItem* previ switchToPage(m_soundPage); } else if (current == m_pLibraryButton) { switchToPage(m_libraryPage); + } else if (m_controllersPage->handleTreeItemClick(current)) { + // Do nothing. m_controllersPage handled this click. +#ifdef __VINYLCONTROL__ + } else if (current == m_pVinylControlButton) { + switchToPage(m_vinylControlPage); +#else + } else if (current == m_pVinylControlButton) { + switchToPage(m_wnovinylcontrol); +#endif } else if (current == m_pInterfaceButton) { switchToPage(m_interfacePage); - } else if (current == m_pDecksButton) { - switchToPage(m_deckPage); } else if (current == m_pWaveformButton) { switchToPage(m_waveformPage); - } else if (current == m_pAutoDJButton) { - switchToPage(m_autoDjPage); + } else if (current == m_pDecksButton) { + switchToPage(m_deckPage); } else if (current == m_pEqButton) { switchToPage(m_equalizerPage); + } else if (current == m_pCrossfaderButton) { + switchToPage(m_crossfaderPage); // TODO: Re-enable the effects preferences pane when it does something useful. //} else if (current == m_pEffectsButton) { // switchToPage(m_effectsPage); - } else if (current == m_pCrossfaderButton) { - switchToPage(m_crossfaderPage); + } else if (current == m_pAutoDJButton) { + switchToPage(m_autoDjPage); +#ifdef __BROADCAST__ + } else if (current == m_pBroadcastButton) { + switchToPage(m_broadcastingPage); +#endif } else if (current == m_pRecordingButton) { switchToPage(m_recordingPage); } else if (current == m_pBeatDetectionButton) { @@ -318,23 +337,10 @@ void DlgPreferences::changePage(QTreeWidgetItem* current, QTreeWidgetItem* previ switchToPage(m_musicalKeyPage); } else if (current == m_pReplayGainButton) { switchToPage(m_replayGainPage); -#ifdef __VINYLCONTROL__ - } else if (current == m_pVinylControlButton) { - switchToPage(m_vinylControlPage); -#else - } else if (current == m_pVinylControlButton) { - switchToPage(m_wnovinylcontrol); -#endif -#ifdef __BROADCAST__ - } else if (current == m_pBroadcastButton) { - switchToPage(m_broadcastingPage); -#endif #ifdef __MODPLUG__ } else if (current == m_pModplugButton) { switchToPage(m_modplugPage); #endif - } else if (m_controllersPage->handleTreeItemClick(current)) { - // Do nothing. m_wcontrollers handled this click. } } diff --git a/src/preferences/dialog/dlgpreferences.h b/src/preferences/dialog/dlgpreferences.h index 5536d6bb1122..0890c92c41f5 100644 --- a/src/preferences/dialog/dlgpreferences.h +++ b/src/preferences/dialog/dlgpreferences.h @@ -31,22 +31,22 @@ class MixxxMainWindow; class SoundManager; class DlgPrefSound; +class DlgPrefLibrary; class DlgPrefController; class DlgPrefControllers; -class DlgPrefLibrary; +class DlgPrefVinyl; +class DlgPrefNoVinyl; class DlgPrefInterface; -class DlgPrefDeck; class DlgPrefWaveform; -class DlgPrefAutoDJ; +class DlgPrefDeck; class DlgPrefEQ; class DlgPrefEffects; class DlgPrefCrossfader; +class DlgPrefAutoDJ; +class DlgPrefBroadcast; class DlgPrefRecord; -class DlgPrefKey; class DlgPrefBeats; -class DlgPrefVinyl; -class DlgPrefNoVinyl; -class DlgPrefBroadcast; +class DlgPrefKey; class DlgPrefReplayGain; class ControllerManager; class EffectsManager; @@ -104,20 +104,20 @@ class DlgPreferences : public QDialog, public Ui::DlgPreferencesDlg { DlgPrefSound* m_soundPage; DlgPrefLibrary* m_libraryPage; DlgPrefControllers *m_controllersPage; + DlgPrefVinyl* m_vinylControlPage; + DlgPrefNoVinyl* m_noVinylControlPage; DlgPrefInterface* m_interfacePage; - DlgPrefDeck* m_deckPage; DlgPrefWaveform* m_waveformPage; - DlgPrefAutoDJ* m_autoDjPage; + DlgPrefDeck* m_deckPage; DlgPrefEQ* m_equalizerPage; + DlgPrefCrossfader* m_crossfaderPage; //TODO: Re-enable the effects pane when it does something useful. //DlgPrefEffects* m_effectsPage; - DlgPrefCrossfader* m_crossfaderPage; + DlgPrefAutoDJ* m_autoDjPage; + DlgPrefBroadcast* m_broadcastingPage; DlgPrefRecord* m_recordingPage; - DlgPrefKey* m_musicalKeyPage; DlgPrefBeats* m_beatgridPage; - DlgPrefVinyl* m_vinylControlPage; - DlgPrefNoVinyl* m_noVinylControlPage; - DlgPrefBroadcast* m_broadcastingPage; + DlgPrefKey* m_musicalKeyPage; DlgPrefReplayGain* m_replayGainPage; #ifdef __MODPLUG__ DlgPrefModplug* m_modplugPage; @@ -125,23 +125,23 @@ class DlgPreferences : public QDialog, public Ui::DlgPreferencesDlg { QTreeWidgetItem* m_pSoundButton; QTreeWidgetItem* m_pLibraryButton; + QTreeWidgetItem* m_pControllerTreeItem; + QTreeWidgetItem* m_pVinylControlButton; QTreeWidgetItem* m_pInterfaceButton; - QTreeWidgetItem* m_pDecksButton; QTreeWidgetItem* m_pWaveformButton; - QTreeWidgetItem* m_pAutoDJButton; + QTreeWidgetItem* m_pDecksButton; QTreeWidgetItem* m_pEqButton; - //QTreeWidgetItem* m_pEffectsButton; QTreeWidgetItem* m_pCrossfaderButton; + //QTreeWidgetItem* m_pEffectsButton; + QTreeWidgetItem* m_pAutoDJButton; + QTreeWidgetItem* m_pBroadcastButton; QTreeWidgetItem* m_pRecordingButton; QTreeWidgetItem* m_pBeatDetectionButton; QTreeWidgetItem* m_pKeyDetectionButton; - QTreeWidgetItem* m_pVinylControlButton; - QTreeWidgetItem* m_pBroadcastButton; QTreeWidgetItem* m_pReplayGainButton; #ifdef __MODPLUG__ QTreeWidgetItem* m_pModplugButton; #endif - QTreeWidgetItem* m_pControllerTreeItem; QSize m_pageSizeHint; From f10f00d0c7d5ef32def8ea8c63e1191438f8972f Mon Sep 17 00:00:00 2001 From: be_ Date: Sun, 19 Nov 2017 19:43:25 -0600 Subject: [PATCH 17/25] add icon for Decks Preferences Thanks @ronso0 ! --- res/images/preferences/ic_preferences_decks.png | Bin 0 -> 9402 bytes res/mixxx.qrc | 1 + 2 files changed, 1 insertion(+) create mode 100644 res/images/preferences/ic_preferences_decks.png diff --git a/res/images/preferences/ic_preferences_decks.png b/res/images/preferences/ic_preferences_decks.png new file mode 100644 index 0000000000000000000000000000000000000000..f34c97e6529601784d8b35554311854ae22d0b08 GIT binary patch literal 9402 zcmeI2UufG^6vuyQ{x)e6OS9U)SZc9!b=uLsiCAmPR?3Driws26r=dO+^u^a9Oz}x% z!ccLrNtwbFaSx*6U=w_>^}&@{D_FZys-*bMSgGNUFE`C4$J|op* z$4|d*7@->?wnJkl1{id|F??dk{ggvkO&d%z( zG2O08*JC=J&LFj!Oy+I$&rYZF6yl9UBCh`ae*5U?s7=?GnReO)0B+>OhJFyaluRbS zKzf#!m#b%HW}F=z9pbN|M6?OyGGL&U2$2EghRtSs58dqbdOe+;osQn#UTweSWZ>D2fjYEBLzTds*DQhda`p4o9oEX#>PhV z;^LyKt*uQ69#~mv6UZwaRYJQoz-`zaLB6D{#sPlVLu+qucXW4m%Uq@t(Ix;mX@w%c zYYd>`cLWkQ(Qmok?hs|=hJ>9R%TyBD1avY`z{U&du~aJc6Z!?n_~z&5T`eswrj?cU zBIe*a1b|nN{X{Sbfe{Ek!TrBG9FC>t=4K-h2xL}PRv6lU(+0yHf0$`*A=>x+53D5P zpCM-MBY=M%@OHBDYcv{7u}%zjt^*|y zV&YekaxMiAFJdCNYa1=Fh>O{%$CAq+y_!fQ z9;vFT@`OSmM^WTC18o8VI9~*8{&kssA@USHue060R8vzUzaMEeZKgOcxjwZJ>=)>O`XBHhpr}l=u^Q|@kDH*dGAhYF%zu)MeM^6Ge zOpMm(N60{2cP?!LW@Z3iVSs;v{tCT{tP!9H5@Q!i@Ya`{o14?(PznJpheeF!5c?d! zm(l+ab&2>o5=G*?Pb8{Wpdeknbeo_*uh81lgn|c(_x*O9n3hva zB_z8*8H@7Ru;ugll2cPt;;gvCJtov9P)Y`{{Q+vd?c)GD&`hku9w( z;EIzr0nH4|0r~@+|A-EA&zb;-M2vTW#M07|Di<|>*;<=GkqpQ#@+qLNpjXh@ZIM!m zvOu?1S63BqQ=*>Fx)cK0$%RN>lZ&qbe33}s;k)btm8b(e4sh8vO)HnYdAGaT1Sp5? zn{u7)Q&h?Y@KWmnJjQdq09R4J_dZjvwFv-Fg z0>0OoHUTmqz%Bvw0zl;u+61`l=h;&L8LnjBX4!n5wKkgq?w*UYD literal 0 HcmV?d00001 diff --git a/res/mixxx.qrc b/res/mixxx.qrc index de5b498070aa..17bf11d233e1 100644 --- a/res/mixxx.qrc +++ b/res/mixxx.qrc @@ -31,6 +31,7 @@ images/preferences/ic_preferences_broadcast.png images/preferences/ic_preferences_controllers.png images/preferences/ic_preferences_crossfader.png + images/preferences/ic_preferences_decks.png images/preferences/ic_preferences_effects.png images/preferences/ic_preferences_equalizers.png images/preferences/ic_preferences_interface.png From c045be6f86ef900414a5e4de8b2b5fa1c6af80d3 Mon Sep 17 00:00:00 2001 From: be_ Date: Fri, 24 Nov 2017 18:56:12 -0600 Subject: [PATCH 18/25] use anonymous namespace --- src/preferences/dialog/dlgprefdeck.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/preferences/dialog/dlgprefdeck.cpp b/src/preferences/dialog/dlgprefdeck.cpp index dbaf6507057f..f48acb051c6d 100644 --- a/src/preferences/dialog/dlgprefdeck.cpp +++ b/src/preferences/dialog/dlgprefdeck.cpp @@ -37,8 +37,10 @@ #include "mixxx.h" #include "defs_urls.h" -const int kDefaultRateRangePercent = 8; -const double kRateDirectionInverted = -1; +namespace { + constexpr int kDefaultRateRangePercent = 8; + constexpr double kRateDirectionInverted = -1; +} DlgPrefDeck::DlgPrefDeck(QWidget * parent, MixxxMainWindow * mixxx, PlayerManager* pPlayerManager, From 2ea945bc097faea7282518b267f3383567a7a3aa Mon Sep 17 00:00:00 2001 From: be_ Date: Fri, 24 Nov 2017 18:56:46 -0600 Subject: [PATCH 19/25] restore lines lost when splitting up dlgprefcontrols.cpp --- src/preferences/dialog/dlgprefdeck.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/preferences/dialog/dlgprefdeck.cpp b/src/preferences/dialog/dlgprefdeck.cpp index f48acb051c6d..1774cfb7f660 100644 --- a/src/preferences/dialog/dlgprefdeck.cpp +++ b/src/preferences/dialog/dlgprefdeck.cpp @@ -567,6 +567,8 @@ void DlgPrefDeck::slotNumDecksChanged(double new_count, bool initializing) { m_keyunlockModeControls.last()->set(static_cast(m_keyunlockMode)); } + m_iNumConfiguredDecks = numdecks; + // The rate range hasn't been read from the config file when this is first called. if (!initializing) { setRateDirectionForAllDecks(m_rateDirectionControls[0]->get() == kRateDirectionInverted); @@ -598,6 +600,8 @@ void DlgPrefDeck::slotNumSamplersChanged(double new_count, bool initializing) { m_keyunlockModeControls.last()->set(static_cast(m_keyunlockMode)); } + m_iNumConfiguredSamplers = numsamplers; + // The rate range hasn't been read from the config file when this is first called. if (!initializing) { setRateDirectionForAllDecks(m_rateDirectionControls[0]->get() == kRateDirectionInverted); From cd9ed62086654af414bf0f21109760471c3e3c17 Mon Sep 17 00:00:00 2001 From: be_ Date: Fri, 24 Nov 2017 19:36:12 -0600 Subject: [PATCH 20/25] fix tests that depend on rateRange rateRange is a percent expressed as a decimal (0 - 1 range), but the test previously set rateRange to 4.0. Commit 29ef9d1a708a1937dfaef90d2df33b43cdb718a6 changed rateRange to enforce a limited range between 0.01 and 0.90, which broke the incorrect test setup. --- .../golden_buffers/BasicProcessingTestPause | 1022 ++++++++-------- .../golden_buffers/BasicProcessingTestPlay | 1022 ++++++++-------- .../golden_buffers/BasicProcessingTestPlaying | 1024 ++++++++--------- src/test/golden_buffers/KeylockReverseTest | 1024 ++++++++--------- src/test/signalpathtest.cpp | 2 +- 5 files changed, 2047 insertions(+), 2047 deletions(-) diff --git a/src/test/golden_buffers/BasicProcessingTestPause b/src/test/golden_buffers/BasicProcessingTestPause index a320e637f831..87e8bc3013fc 100644 --- a/src/test/golden_buffers/BasicProcessingTestPause +++ b/src/test/golden_buffers/BasicProcessingTestPause @@ -1,512 +1,512 @@ -0.870045,0.870045 -0.861948,0.861948 -0.84856,0.84856 -0.830516,0.830516 -0.807968,0.807968 -0.781128,0.781128 -0.750002,0.750002 -0.714361,0.714361 -0.674919,0.674919 -0.631909,0.631909 -0.585666,0.585666 -0.53627,0.53627 -0.48376,0.48376 -0.428829,0.428829 -0.371728,0.371728 -0.312858,0.312858 -0.252449,0.252449 -0.190694,0.190694 -0.128185,0.128185 -0.0651973,0.0651973 -0.00217104,0.00217104 --0.0607714,-0.0607714 --0.122884,-0.122884 --0.184202,-0.184202 --0.244202,-0.244202 --0.302562,-0.302562 --0.35919,-0.35919 --0.413136,-0.413136 --0.464718,-0.464718 --0.513441,-0.513441 --0.559221,-0.559221 --0.601631,-0.601631 --0.640249,-0.640249 --0.675047,-0.675047 --0.706017,-0.706017 --0.733083,-0.733083 --0.755762,-0.755762 --0.773895,-0.773895 --0.787486,-0.787486 --0.796809,-0.796809 --0.801671,-0.801671 --0.802055,-0.802055 --0.797472,-0.797472 --0.788508,-0.788508 --0.77524,-0.77524 --0.757792,-0.757792 --0.736156,-0.736156 --0.710123,-0.710123 --0.680235,-0.680235 --0.646716,-0.646716 --0.609878,-0.609878 --0.569642,-0.569642 --0.526265,-0.526265 --0.480012,-0.480012 --0.431392,-0.431392 --0.380587,-0.380587 --0.327903,-0.327903 --0.273414,-0.273414 --0.21764,-0.21764 --0.16091,-0.16091 --0.103676,-0.103676 --0.0458157,-0.0458157 -0.011718,0.011718 -0.0691946,0.0691946 -0.125873,0.125873 -0.181664,0.181664 -0.236224,0.236224 -0.289052,0.289052 -0.340047,0.340047 -0.388933,0.388933 -0.435401,0.435401 -0.479455,0.479455 -0.520074,0.520074 -0.557805,0.557805 -0.592224,0.592224 -0.623193,0.623193 -0.650745,0.650745 -0.673931,0.673931 -0.693374,0.693374 -0.708899,0.708899 -0.720468,0.720468 -0.728001,0.728001 -0.730944,0.730944 -0.729875,0.729875 -0.724734,0.724734 -0.715748,0.715748 -0.702685,0.702685 -0.685463,0.685463 -0.664438,0.664438 -0.639922,0.639922 -0.611962,0.611962 -0.580754,0.580754 -0.546109,0.546109 -0.50857,0.50857 -0.468456,0.468456 -0.425962,0.425962 -0.381235,0.381235 -0.334466,0.334466 -0.285972,0.285972 -0.236228,0.236228 -0.185352,0.185352 -0.133802,0.133802 -0.0815226,0.0815226 -0.029146,0.029146 --0.0231653,-0.0231653 --0.0750298,-0.0750298 --0.126348,-0.126348 --0.176534,-0.176534 --0.225515,-0.225515 --0.27302,-0.27302 --0.318767,-0.318767 --0.362564,-0.362564 --0.403878,-0.403878 --0.442737,-0.442737 --0.478934,-0.478934 --0.512428,-0.512428 --0.542691,-0.542691 --0.569773,-0.569773 --0.593267,-0.593267 --0.6135,-0.6135 --0.630252,-0.630252 --0.643447,-0.643447 --0.652524,-0.652524 --0.65798,-0.65798 --0.659776,-0.659776 --0.65796,-0.65796 --0.652491,-0.652491 --0.642991,-0.642991 --0.629987,-0.629987 --0.613629,-0.613629 --0.593867,-0.593867 --0.571161,-0.571161 --0.544703,-0.544703 --0.515606,-0.515606 --0.48373,-0.48373 --0.449411,-0.449411 --0.412773,-0.412773 --0.373699,-0.373699 --0.332857,-0.332857 --0.290378,-0.290378 --0.246509,-0.246509 --0.201562,-0.201562 --0.15548,-0.15548 --0.108936,-0.108936 --0.0619791,-0.0619791 --0.0149186,-0.0149186 -0.0319385,0.0319385 -0.0783346,0.0783346 -0.124088,0.124088 -0.168852,0.168852 -0.212465,0.212465 -0.254686,0.254686 -0.295051,0.295051 -0.333589,0.333589 -0.370043,0.370043 -0.404261,0.404261 -0.436128,0.436128 -0.465016,0.465016 -0.491197,0.491197 -0.514512,0.514512 -0.534914,0.534914 -0.552138,0.552138 -0.566006,0.566006 -0.576491,0.576491 -0.58382,0.58382 -0.587931,0.587931 -0.588675,0.588675 -0.585818,0.585818 -0.579729,0.579729 -0.570478,0.570478 -0.558145,0.558145 -0.54278,0.54278 -0.524168,0.524168 -0.502721,0.502721 -0.478671,0.478671 -0.452113,0.452113 -0.423223,0.423223 -0.391835,0.391835 -0.358517,0.358517 -0.323399,0.323399 -0.28674,0.28674 -0.248626,0.248626 -0.209349,0.209349 -0.168996,0.168996 -0.12808,0.12808 -0.0866259,0.0866259 -0.0450219,0.0450219 -0.00329269,0.00329269 --0.0381167,-0.0381167 --0.0790644,-0.0790644 --0.119385,-0.119385 --0.158703,-0.158703 --0.196893,-0.196893 --0.23368,-0.23368 --0.268977,-0.268977 --0.302534,-0.302534 --0.334305,-0.334305 --0.363682,-0.363682 --0.390928,-0.390928 --0.415796,-0.415796 --0.438306,-0.438306 --0.458099,-0.458099 --0.475091,-0.475091 --0.489218,-0.489218 --0.500628,-0.500628 --0.509125,-0.509125 --0.514903,-0.514903 --0.517284,-0.517284 --0.516853,-0.516853 --0.513566,-0.513566 --0.507484,-0.507484 --0.498688,-0.498688 --0.486702,-0.486702 --0.472239,-0.472239 --0.455224,-0.455224 --0.435809,-0.435809 --0.414133,-0.414133 --0.390002,-0.390002 --0.363902,-0.363902 --0.335959,-0.335959 --0.306376,-0.306376 --0.275279,-0.275279 --0.242695,-0.242695 --0.208977,-0.208977 --0.174362,-0.174362 --0.139026,-0.139026 --0.103139,-0.103139 --0.066916,-0.066916 --0.0305043,-0.0305043 -0.00577764,0.00577764 -0.0417215,0.0417215 -0.0772901,0.0772901 -0.112062,0.112062 -0.14596,0.14596 -0.178803,0.178803 -0.210471,0.210471 -0.24067,0.24067 -0.269273,0.269273 -0.296051,0.296051 -0.321061,0.321061 -0.344135,0.344135 -0.3651,0.3651 -0.383649,0.383649 -0.399956,0.399956 -0.413888,0.413888 -0.425526,0.425526 -0.434574,0.434574 -0.441019,0.441019 -0.444862,0.444862 -0.446261,0.446261 -0.445176,0.445176 -0.441676,0.441676 -0.435384,0.435384 -0.426783,0.426783 -0.415873,0.415873 -0.402775,0.402775 -0.387512,0.387512 -0.370012,0.370012 -0.350537,0.350537 -0.329327,0.329327 -0.306483,0.306483 -0.282034,0.282034 -0.256133,0.256133 -0.228956,0.228956 -0.200777,0.200777 -0.17165,0.17165 -0.14192,0.14192 -0.111417,0.111417 -0.0806375,0.0806375 -0.0496218,0.0496218 -0.0186409,0.0186409 --0.0122979,-0.0122979 --0.042771,-0.042771 --0.0728361,-0.0728361 --0.10221,-0.10221 --0.130797,-0.130797 --0.158405,-0.158405 --0.184814,-0.184814 --0.209932,-0.209932 --0.233707,-0.233707 --0.255985,-0.255985 --0.276663,-0.276663 --0.295422,-0.295422 --0.312371,-0.312371 --0.327466,-0.327466 --0.340625,-0.340625 --0.351782,-0.351782 --0.360628,-0.360628 --0.367403,-0.367403 --0.372103,-0.372103 --0.374685,-0.374685 --0.37523,-0.37523 --0.373324,-0.373324 --0.369445,-0.369445 --0.363546,-0.363546 --0.355667,-0.355667 --0.345972,-0.345972 --0.334075,-0.334075 --0.320545,-0.320545 --0.305326,-0.305326 --0.28859,-0.28859 --0.270376,-0.270376 --0.250676,-0.250676 --0.229761,-0.229761 --0.207779,-0.207779 --0.1849,-0.1849 --0.161122,-0.161122 --0.136662,-0.136662 --0.111633,-0.111633 --0.0862683,-0.0862683 --0.0606391,-0.0606391 --0.0349581,-0.0349581 --0.00928729,-0.00928729 -0.0161679,0.0161679 -0.041249,0.041249 -0.0659159,0.0659159 -0.0898674,0.0898674 -0.11312,0.11312 -0.135449,0.135449 -0.156797,0.156797 -0.177063,0.177063 -0.196152,0.196152 -0.21381,0.21381 -0.230078,0.230078 -0.244916,0.244916 -0.25821,0.25821 -0.270021,0.270021 -0.279896,0.279896 -0.288186,0.288186 -0.294759,0.294759 -0.299648,0.299648 -0.302811,0.302811 -0.304058,0.304058 -0.303574,0.303574 -0.301419,0.301419 -0.297686,0.297686 -0.292212,0.292212 -0.285109,0.285109 -0.276407,0.276407 -0.266317,0.266317 -0.254874,0.254874 -0.242117,0.242117 -0.228009,0.228009 -0.212805,0.212805 -0.196587,0.196587 -0.179507,0.179507 -0.161576,0.161576 -0.142895,0.142895 -0.123623,0.123623 -0.103932,0.103932 -0.0838408,0.0838408 -0.0636524,0.0636524 -0.0431463,0.0431463 -0.0227929,0.0227929 -0.0025214,0.0025214 --0.0175262,-0.0175262 --0.037165,-0.037165 --0.0563932,-0.0563932 --0.0749994,-0.0749994 --0.0929801,-0.0929801 --0.110169,-0.110169 --0.126597,-0.126597 --0.141923,-0.141923 --0.156313,-0.156313 --0.169606,-0.169606 --0.181789,-0.181789 --0.192835,-0.192835 --0.202426,-0.202426 --0.21084,-0.21084 --0.217924,-0.217924 --0.223689,-0.223689 --0.228174,-0.228174 --0.231097,-0.231097 --0.232726,-0.232726 --0.233025,-0.233025 --0.232022,-0.232022 --0.229745,-0.229745 --0.226043,-0.226043 --0.221139,-0.221139 --0.215073,-0.215073 --0.207907,-0.207907 --0.199671,-0.199671 --0.190316,-0.190316 --0.180035,-0.180035 --0.16891,-0.16891 --0.157005,-0.157005 --0.144427,-0.144427 --0.131128,-0.131128 --0.117297,-0.117297 --0.103048,-0.103048 --0.0884465,-0.0884465 --0.0736054,-0.0736054 --0.0585049,-0.0585049 --0.0433655,-0.0433655 --0.0282226,-0.0282226 --0.0131919,-0.0131919 -0.00169273,0.00169273 -0.016266,0.016266 -0.030524,0.030524 -0.0443365,0.0443365 -0.0576851,0.0576851 -0.0704305,0.0704305 -0.0825504,0.0825504 -0.0939423,0.0939423 -0.104621,0.104621 -0.114488,0.114488 -0.123568,0.123568 -0.131648,0.131648 -0.138852,0.138852 -0.145126,0.145126 -0.150455,0.150455 -0.154863,0.154863 -0.158151,0.158151 -0.160501,0.160501 -0.161883,0.161883 -0.162349,0.162349 -0.161839,0.161839 -0.160353,0.160353 -0.157953,0.157953 -0.15473,0.15473 -0.150667,0.150667 -0.145892,0.145892 -0.140218,0.140218 -0.133909,0.133909 -0.126973,0.126973 -0.11946,0.11946 -0.111469,0.111469 -0.102896,0.102896 -0.0939701,0.0939701 -0.0847054,0.0847054 -0.0751977,0.0751977 -0.065455,0.065455 -0.0555593,0.0555593 -0.0455735,0.0455735 -0.0355961,0.0355961 -0.0256485,0.0256485 -0.0158289,0.0158289 -0.00614847,0.00614847 --0.00330073,-0.00330073 --0.0124718,-0.0124718 --0.0213244,-0.0213244 --0.0298084,-0.0298084 --0.0378563,-0.0378563 --0.0454532,-0.0454532 --0.0525575,-0.0525575 --0.0591528,-0.0591528 --0.0652048,-0.0652048 --0.0706331,-0.0706331 --0.0754847,-0.0754847 --0.0797379,-0.0797379 --0.083368,-0.083368 --0.0864183,-0.0864183 --0.0887583,-0.0887583 --0.0905011,-0.0905011 --0.0916437,-0.0916437 --0.0921941,-0.0921941 --0.0921711,-0.0921711 --0.0915155,-0.0915155 --0.0903369,-0.0903369 --0.0886466,-0.0886466 --0.086473,-0.086473 --0.0838602,-0.0838602 --0.0807634,-0.0807634 --0.0772889,-0.0772889 --0.0734738,-0.0734738 --0.069364,-0.069364 --0.0649775,-0.0649775 --0.0603327,-0.0603327 --0.0555037,-0.0555037 --0.0505413,-0.0505413 --0.0454774,-0.0454774 --0.0403574,-0.0403574 --0.0351972,-0.0351972 --0.0300535,-0.0300535 --0.0249789,-0.0249789 --0.0199991,-0.0199991 --0.0151521,-0.0151521 --0.0104547,-0.0104547 --0.00595534,-0.00595534 --0.00167876,-0.00167876 -0.00234928,0.00234928 -0.0061132,0.0061132 -0.00958225,0.00958225 -0.0127459,0.0127459 -0.0155928,0.0155928 -0.01811,0.01811 -0.0202987,0.0202987 -0.0221317,0.0221317 -0.0236268,0.0236268 -0.0247875,0.0247875 -0.0256184,0.0256184 -0.0261317,0.0261317 -0.0263139,0.0263139 -0.026202,0.026202 -0.0258115,0.0258115 -0.0251664,0.0251664 -0.0242734,0.0242734 -0.0231596,0.0231596 -0.0218462,0.0218462 -0.0203738,0.0203738 -0.018761,0.018761 -0.0170429,0.0170429 -0.0152272,0.0152272 -0.0133636,0.0133636 -0.0114783,0.0114783 -0.00960039,0.00960039 -0.00775741,0.00775741 -0.00597345,0.00597345 -0.00428025,0.00428025 -0.00270506,0.00270506 -0.00127072,0.00127072 +0.798902,0.798902 +0.793413,0.793413 +0.78475,0.78475 +0.772937,0.772937 +0.758237,0.758237 +0.74048,0.74048 +0.719909,0.719909 +0.696612,0.696612 +0.67056,0.67056 +0.642006,0.642006 +0.611,0.611 +0.577752,0.577752 +0.542263,0.542263 +0.504898,0.504898 +0.465533,0.465533 +0.424574,0.424574 +0.382102,0.382102 +0.338191,0.338191 +0.293272,0.293272 +0.247275,0.247275 +0.200485,0.200485 +0.153154,0.153154 +0.105293,0.105293 +0.0573502,0.0573502 +0.00930888,0.00930888 +-0.0386088,-0.0386088 +-0.0860659,-0.0860659 +-0.133196,-0.133196 +-0.179293,-0.179293 +-0.224771,-0.224771 +-0.269016,-0.269016 +-0.312049,-0.312049 +-0.353758,-0.353758 +-0.393691,-0.393691 +-0.432071,-0.432071 +-0.468511,-0.468511 +-0.502965,-0.502965 +-0.53526,-0.53526 +-0.565314,-0.565314 +-0.592978,-0.592978 +-0.618208,-0.618208 +-0.64089,-0.64089 +-0.660869,-0.660869 +-0.67824,-0.67824 +-0.692751,-0.692751 +-0.704579,-0.704579 +-0.713388,-0.713388 +-0.71957,-0.71957 +-0.722633,-0.722633 +-0.723012,-0.723012 +-0.720403,-0.720403 +-0.715001,-0.715001 +-0.706801,-0.706801 +-0.695804,-0.695804 +-0.682124,-0.682124 +-0.665806,-0.665806 +-0.646897,-0.646897 +-0.6255,-0.6255 +-0.601786,-0.601786 +-0.5757,-0.5757 +-0.54756,-0.54756 +-0.517249,-0.517249 +-0.48512,-0.48512 +-0.451178,-0.451178 +-0.415578,-0.415578 +-0.378554,-0.378554 +-0.34012,-0.34012 +-0.300565,-0.300565 +-0.25999,-0.25999 +-0.218543,-0.218543 +-0.176427,-0.176427 +-0.133835,-0.133835 +-0.0908513,-0.0908513 +-0.0477436,-0.0477436 +-0.00463628,-0.00463628 +0.0383024,0.0383024 +0.080882,0.080882 +0.122952,0.122952 +0.164347,0.164347 +0.204897,0.204897 +0.244428,0.244428 +0.282829,0.282829 +0.319932,0.319932 +0.355596,0.355596 +0.389654,0.389654 +0.422072,0.422072 +0.452575,0.452575 +0.481223,0.481223 +0.507816,0.507816 +0.532228,0.532228 +0.554458,0.554458 +0.574363,0.574363 +0.591901,0.591901 +0.607045,0.607045 +0.619649,0.619649 +0.629792,0.629792 +0.637364,0.637364 +0.642379,0.642379 +0.644824,0.644824 +0.644709,0.644709 +0.642014,0.642014 +0.636843,0.636843 +0.629141,0.629141 +0.618941,0.618941 +0.606418,0.606418 +0.591491,0.591491 +0.574334,0.574334 +0.554985,0.554985 +0.533478,0.533478 +0.510038,0.510038 +0.484629,0.484629 +0.457492,0.457492 +0.428616,0.428616 +0.398199,0.398199 +0.366394,0.366394 +0.333262,0.333262 +0.298972,0.298972 +0.263709,0.263709 +0.22752,0.22752 +0.190681,0.190681 +0.153219,0.153219 +0.115352,0.115352 +0.0772514,0.0772514 +0.0390077,0.0390077 +0.000832788,0.000832788 +-0.0371738,-0.0371738 +-0.0748318,-0.0748318 +-0.111998,-0.111998 +-0.148508,-0.148508 +-0.184259,-0.184259 +-0.219094,-0.219094 +-0.252849,-0.252849 +-0.285489,-0.285489 +-0.31675,-0.31675 +-0.346651,-0.346651 +-0.374974,-0.374974 +-0.401696,-0.401696 +-0.42666,-0.42666 +-0.449806,-0.449806 +-0.471086,-0.471086 +-0.490283,-0.490283 +-0.507555,-0.507555 +-0.522627,-0.522627 +-0.5356,-0.5356 +-0.54636,-0.54636 +-0.554916,-0.554916 +-0.561159,-0.561159 +-0.565268,-0.565268 +-0.566962,-0.566962 +-0.566529,-0.566529 +-0.563765,-0.563765 +-0.558839,-0.558839 +-0.551711,-0.551711 +-0.542369,-0.542369 +-0.531053,-0.531053 +-0.517575,-0.517575 +-0.502201,-0.502201 +-0.484895,-0.484895 +-0.465734,-0.465734 +-0.444896,-0.444896 +-0.422343,-0.422343 +-0.39832,-0.39832 +-0.372766,-0.372766 +-0.345991,-0.345991 +-0.317851,-0.317851 +-0.288779,-0.288779 +-0.25858,-0.25858 +-0.22763,-0.22763 +-0.195933,-0.195933 +-0.163576,-0.163576 +-0.130874,-0.130874 +-0.0977513,-0.0977513 +-0.06447,-0.06447 +-0.0311506,-0.0311506 +0.00216399,0.00216399 +0.0351765,0.0351765 +0.0679545,0.0679545 +0.100199,0.100199 +0.131877,0.131877 +0.162858,0.162858 +0.192951,0.192951 +0.222189,0.222189 +0.250253,0.250253 +0.277318,0.277318 +0.302894,0.302894 +0.327364,0.327364 +0.350152,0.350152 +0.371593,0.371593 +0.391328,0.391328 +0.409435,0.409435 +0.425755,0.425755 +0.440353,0.440353 +0.453043,0.453043 +0.463923,0.463923 +0.472829,0.472829 +0.47988,0.47988 +0.484882,0.484882 +0.488052,0.488052 +0.489141,0.489141 +0.488361,0.488361 +0.485643,0.485643 +0.480975,0.480975 +0.474474,0.474474 +0.466102,0.466102 +0.455955,0.455955 +0.444026,0.444026 +0.430479,0.430479 +0.415246,0.415246 +0.398502,0.398502 +0.380278,0.380278 +0.360656,0.360656 +0.339725,0.339725 +0.317639,0.317639 +0.294368,0.294368 +0.270109,0.270109 +0.244986,0.244986 +0.218963,0.218963 +0.192336,0.192336 +0.165094,0.165094 +0.137377,0.137377 +0.109301,0.109301 +0.080991,0.080991 +0.0525584,0.0525584 +0.0240765,0.0240765 +-0.00423005,-0.00423005 +-0.0324248,-0.0324248 +-0.0601677,-0.0601677 +-0.0876269,-0.0876269 +-0.114382,-0.114382 +-0.140669,-0.140669 +-0.166042,-0.166042 +-0.190719,-0.190719 +-0.214344,-0.214344 +-0.237021,-0.237021 +-0.258605,-0.258605 +-0.278919,-0.278919 +-0.29809,-0.29809 +-0.315834,-0.315834 +-0.332293,-0.332293 +-0.347207,-0.347207 +-0.360745,-0.360745 +-0.372628,-0.372628 +-0.383091,-0.383091 +-0.39178,-0.39178 +-0.399013,-0.399013 +-0.404448,-0.404448 +-0.40841,-0.40841 +-0.410573,-0.410573 +-0.411172,-0.411172 +-0.410078,-0.410078 +-0.407401,-0.407401 +-0.4031,-0.4031 +-0.397278,-0.397278 +-0.389848,-0.389848 +-0.380994,-0.380994 +-0.370633,-0.370633 +-0.358944,-0.358944 +-0.345855,-0.345855 +-0.331587,-0.331587 +-0.315966,-0.315966 +-0.299371,-0.299371 +-0.281585,-0.281585 +-0.26294,-0.26294 +-0.243301,-0.243301 +-0.22292,-0.22292 +-0.201764,-0.201764 +-0.18001,-0.18001 +-0.157711,-0.157711 +-0.134976,-0.134976 +-0.111854,-0.111854 +-0.088541,-0.088541 +-0.0649771,-0.0649771 +-0.0414742,-0.0414742 +-0.0178634,-0.0178634 +0.00548459,0.00548459 +0.0287467,0.0287467 +0.0515877,0.0515877 +0.0740919,0.0740919 +0.0960852,0.0960852 +0.117514,0.117514 +0.138292,0.138292 +0.158358,0.158358 +0.17756,0.17756 +0.195976,0.195976 +0.213362,0.213362 +0.229823,0.229823 +0.245157,0.245157 +0.259451,0.259451 +0.272493,0.272493 +0.284435,0.284435 +0.295045,0.295045 +0.30446,0.30446 +0.312522,0.312522 +0.319292,0.319292 +0.32472,0.32472 +0.328813,0.328813 +0.331552,0.331552 +0.332938,0.332938 +0.332995,0.332995 +0.331732,0.331732 +0.329124,0.329124 +0.325265,0.325265 +0.320144,0.320144 +0.313758,0.313758 +0.306234,0.306234 +0.297522,0.297522 +0.287718,0.287718 +0.276884,0.276884 +0.265013,0.265013 +0.252228,0.252228 +0.23856,0.23856 +0.224061,0.224061 +0.20884,0.20884 +0.192905,0.192905 +0.176384,0.176384 +0.159313,0.159313 +0.141794,0.141794 +0.123862,0.123862 +0.105654,0.105654 +0.0871762,0.0871762 +0.068567,0.068567 +0.0498827,0.0498827 +0.0311637,0.0311637 +0.0125435,0.0125435 +-0.00593612,-0.00593612 +-0.0242072,-0.0242072 +-0.0421586,-0.0421586 +-0.0597792,-0.0597792 +-0.076948,-0.076948 +-0.0936314,-0.0936314 +-0.109762,-0.109762 +-0.125272,-0.125272 +-0.140104,-0.140104 +-0.15422,-0.15422 +-0.167553,-0.167553 +-0.180077,-0.180077 +-0.191729,-0.191729 +-0.202482,-0.202482 +-0.212304,-0.212304 +-0.221161,-0.221161 +-0.229045,-0.229045 +-0.235892,-0.235892 +-0.24174,-0.24174 +-0.246524,-0.246524 +-0.250294,-0.250294 +-0.252997,-0.252997 +-0.254651,-0.254651 +-0.255278,-0.255278 +-0.254866,-0.254866 +-0.253433,-0.253433 +-0.251011,-0.251011 +-0.247602,-0.247602 +-0.243245,-0.243245 +-0.237967,-0.237967 +-0.231811,-0.231811 +-0.224774,-0.224774 +-0.216953,-0.216953 +-0.208349,-0.208349 +-0.19901,-0.19901 +-0.189013,-0.189013 +-0.178364,-0.178364 +-0.167152,-0.167152 +-0.155419,-0.155419 +-0.143202,-0.143202 +-0.130583,-0.130583 +-0.117612,-0.117612 +-0.10434,-0.10434 +-0.0908255,-0.0908255 +-0.0771412,-0.0771412 +-0.0633172,-0.0633172 +-0.0494608,-0.0494608 +-0.0355725,-0.0355725 +-0.021753,-0.021753 +-0.00803805,-0.00803805 +0.00551747,0.00551747 +0.018835,0.018835 +0.031901,0.031901 +0.0446443,0.0446443 +0.0570109,0.0570109 +0.0689669,0.0689669 +0.0804649,0.0804649 +0.0914562,0.0914562 +0.101922,0.101922 +0.111801,0.111801 +0.121082,0.121082 +0.129723,0.129723 +0.13771,0.13771 +0.145007,0.145007 +0.151594,0.151594 +0.157468,0.157468 +0.162597,0.162597 +0.166996,0.166996 +0.17062,0.17062 +0.173524,0.173524 +0.175636,0.175636 +0.177029,0.177029 +0.177651,0.177651 +0.177562,0.177562 +0.176732,0.176732 +0.175198,0.175198 +0.172994,0.172994 +0.170092,0.170092 +0.166575,0.166575 +0.162428,0.162428 +0.157686,0.157686 +0.152403,0.152403 +0.146577,0.146577 +0.140273,0.140273 +0.133503,0.133503 +0.126319,0.126319 +0.118755,0.118755 +0.110847,0.110847 +0.10265,0.10265 +0.0941806,0.0941806 +0.0855003,0.0855003 +0.0766468,0.0766468 +0.067642,0.067642 +0.0585803,0.0585803 +0.0494222,0.0494222 +0.0402898,0.0402898 +0.03117,0.03117 +0.0221145,0.0221145 +0.013183,0.013183 +0.00437603,0.00437603 +-0.00422933,-0.00422933 +-0.012653,-0.012653 +-0.0207915,-0.0207915 +-0.0286914,-0.0286914 +-0.0362562,-0.0362562 +-0.0435064,-0.0435064 +-0.0503898,-0.0503898 +-0.0568976,-0.0568976 +-0.0630058,-0.0630058 +-0.0686851,-0.0686851 +-0.0739465,-0.0739465 +-0.0787443,-0.0787443 +-0.0830865,-0.0830865 +-0.0869757,-0.0869757 +-0.0903592,-0.0903592 +-0.0933031,-0.0933031 +-0.0957264,-0.0957264 +-0.0977068,-0.0977068 +-0.0991869,-0.0991869 +-0.100209,-0.100209 +-0.100768,-0.100768 +-0.100856,-0.100856 +-0.100529,-0.100529 +-0.0997542,-0.0997542 +-0.0985717,-0.0985717 +-0.096994,-0.096994 +-0.0950353,-0.0950353 +-0.0927235,-0.0927235 +-0.0900813,-0.0900813 +-0.0871051,-0.0871051 +-0.0838645,-0.0838645 +-0.0803416,-0.0803416 +-0.0765903,-0.0765903 +-0.0726158,-0.0726158 +-0.0684602,-0.0684602 +-0.0641443,-0.0641443 +-0.0596952,-0.0596952 +-0.0551424,-0.0551424 +-0.0505035,-0.0505035 +-0.045822,-0.045822 +-0.0411089,-0.0411089 +-0.0364021,-0.0364021 +-0.0317128,-0.0317128 +-0.0270815,-0.0270815 +-0.0225174,-0.0225174 +-0.018055,-0.018055 +-0.013706,-0.013706 +-0.00950638,-0.00950638 +-0.00543947,-0.00543947 +-0.00157895,-0.00157895 +0.002125,0.002125 +0.00559077,0.00559077 +0.00886257,0.00886257 +0.0118956,0.0118956 +0.0146876,0.0146876 +0.0172387,0.0172387 +0.0195281,0.0195281 +0.0215711,0.0215711 +0.0233403,0.0233403 +0.0248642,0.0248642 +0.0261075,0.0261075 +0.0271143,0.0271143 +0.0278471,0.0278471 +0.0283469,0.0283469 +0.0285948,0.0285948 +0.0286136,0.0286136 +0.028411,0.028411 +0.0279951,0.0279951 +0.0273775,0.0273775 +0.0265826,0.0265826 +0.0256051,0.0256051 +0.0244844,0.0244844 +0.0232185,0.0232185 +0.0218323,0.0218323 +0.0203444,0.0203444 +0.0187692,0.0187692 +0.0171292,0.0171292 +0.0154398,0.0154398 +0.013724,0.013724 +0.0119949,0.0119949 +0.0102784,0.0102784 +0.00858733,0.00858733 +0.00694226,0.00694226 +0.00536166,0.00536166 +0.00385998,0.00385998 +0.00245661,0.00245661 +0.0011646,0.0011646 0,0 diff --git a/src/test/golden_buffers/BasicProcessingTestPlay b/src/test/golden_buffers/BasicProcessingTestPlay index 082a17c721fb..914179cecec1 100644 --- a/src/test/golden_buffers/BasicProcessingTestPlay +++ b/src/test/golden_buffers/BasicProcessingTestPlay @@ -1,512 +1,512 @@ 0,0 -0.000256421,0.000256421 -0.000766958,0.000766958 -0.00152728,0.00152728 -0.0025273,0.0025273 -0.00376272,0.00376272 -0.00520848,0.00520848 -0.00685897,0.00685897 -0.00869118,0.00869118 -0.0106886,0.0106886 -0.0128263,0.0128263 -0.0150737,0.0150737 -0.0174074,0.0174074 -0.0198062,0.0198062 -0.0222377,0.0222377 -0.0246781,0.0246781 -0.0270689,0.0270689 -0.029405,0.029405 -0.0316524,0.0316524 -0.0337798,0.0337798 -0.0357613,0.0357613 -0.0375304,0.0375304 -0.0390944,0.0390944 -0.0404192,0.0404192 -0.0414855,0.0414855 -0.0422532,0.0422532 -0.0426922,0.0426922 -0.0427889,0.0427889 -0.042542,0.042542 -0.0419271,0.0419271 -0.040936,0.040936 -0.0395249,0.0395249 -0.0377189,0.0377189 -0.0355191,0.0355191 -0.0329127,0.0329127 -0.029926,0.029926 -0.0265049,0.0265049 -0.0227277,0.0227277 -0.0185729,0.0185729 -0.0140733,0.0140733 -0.00924328,0.00924328 -0.00410357,0.00410357 --0.00131682,-0.00131682 --0.00698298,-0.00698298 --0.0128731,-0.0128731 --0.0189293,-0.0189293 --0.0251402,-0.0251402 --0.0314361,-0.0314361 --0.0378062,-0.0378062 --0.0441856,-0.0441856 --0.0505595,-0.0505595 --0.0568082,-0.0568082 --0.0629506,-0.0629506 --0.0689264,-0.0689264 --0.07469,-0.07469 --0.0802084,-0.0802084 --0.0853575,-0.0853575 --0.0901566,-0.0901566 --0.0945664,-0.0945664 --0.0985457,-0.0985457 --0.102055,-0.102055 --0.104967,-0.104967 --0.107341,-0.107341 --0.109129,-0.109129 --0.110318,-0.110318 --0.110863,-0.110863 --0.110677,-0.110677 --0.109818,-0.109818 --0.108269,-0.108269 --0.106017,-0.106017 --0.103084,-0.103084 --0.0993378,-0.0993378 --0.0949253,-0.0949253 --0.0898058,-0.0898058 --0.0840236,-0.0840236 --0.077575,-0.077575 --0.0704368,-0.0704368 --0.0626968,-0.0626968 --0.0543913,-0.0543913 --0.0455448,-0.0455448 --0.0362058,-0.0362058 --0.0263893,-0.0263893 --0.0161832,-0.0161832 --0.00563579,-0.00563579 -0.00521158,0.00521158 -0.0162755,0.0162755 -0.0274967,0.0274967 -0.0388214,0.0388214 -0.0501751,0.0501751 -0.0614891,0.0614891 -0.0727139,0.0727139 -0.0837068,0.0837068 -0.0944441,0.0944441 -0.104878,0.104878 -0.114926,0.114926 -0.12452,0.12452 -0.133504,0.133504 -0.141906,0.141906 -0.149654,0.149654 -0.156712,0.156712 -0.16298,0.16298 -0.168355,0.168355 -0.172827,0.172827 -0.176414,0.176414 -0.179057,0.179057 -0.18071,0.18071 -0.181241,0.181241 -0.180716,0.180716 -0.179167,0.179167 -0.176559,0.176559 -0.172888,0.172888 -0.168038,0.168038 -0.16212,0.16212 -0.155196,0.155196 -0.147244,0.147244 -0.138348,0.138348 -0.128336,0.128336 -0.11748,0.11748 -0.105739,0.105739 -0.0932349,0.0932349 -0.0799069,0.0799069 -0.0659421,0.0659421 -0.0513037,0.0513037 -0.0361585,0.0361585 -0.0205915,0.0205915 -0.00456074,0.00456074 --0.0116496,-0.0116496 --0.0281072,-0.0281072 --0.0446526,-0.0446526 --0.0611803,-0.0611803 --0.077667,-0.077667 --0.0938793,-0.0938793 --0.109805,-0.109805 --0.125344,-0.125344 --0.14044,-0.14044 --0.154906,-0.154906 --0.168681,-0.168681 --0.181627,-0.181627 --0.193764,-0.193764 --0.204991,-0.204991 --0.215217,-0.215217 --0.224193,-0.224193 --0.232061,-0.232061 --0.238701,-0.238701 --0.244108,-0.244108 --0.248199,-0.248199 --0.250775,-0.250775 --0.251957,-0.251957 --0.25175,-0.25175 --0.250096,-0.250096 --0.247075,-0.247075 --0.242332,-0.242332 --0.236249,-0.236249 --0.228722,-0.228722 --0.219814,-0.219814 --0.209575,-0.209575 --0.197805,-0.197805 --0.184837,-0.184837 --0.170642,-0.170642 --0.155299,-0.155299 --0.138909,-0.138909 --0.121408,-0.121408 --0.103014,-0.103014 --0.0838263,-0.0838263 --0.0639282,-0.0639282 --0.0434323,-0.0434323 --0.022372,-0.022372 --0.000986354,-0.000986354 -0.0206863,0.0206863 -0.0424871,0.0424871 -0.0643451,0.0643451 -0.0859987,0.0859987 -0.107469,0.107469 -0.128548,0.128548 -0.14917,0.14917 -0.169198,0.169198 -0.188382,0.188382 -0.206707,0.206707 -0.22409,0.22409 -0.240425,0.240425 -0.255592,0.255592 -0.269296,0.269296 -0.28165,0.28165 -0.292562,0.292562 -0.301956,0.301956 -0.309756,0.309756 -0.315695,0.315695 -0.319904,0.319904 -0.322396,0.322396 -0.323082,0.323082 -0.322025,0.322025 -0.318823,0.318823 -0.313885,0.313885 -0.307108,0.307108 -0.298555,0.298555 -0.288219,0.288219 -0.276006,0.276006 -0.262057,0.262057 -0.246544,0.246544 -0.229529,0.229529 -0.210962,0.210962 -0.190971,0.190971 -0.169667,0.169667 -0.147211,0.147211 -0.12375,0.12375 -0.0992535,0.0992535 -0.0740583,0.0740583 -0.0480598,0.0480598 -0.0216201,0.0216201 --0.00519789,-0.00519789 --0.0322946,-0.0322946 --0.059388,-0.059388 --0.0864472,-0.0864472 --0.113251,-0.113251 --0.13968,-0.13968 --0.165593,-0.165593 --0.1907,-0.1907 --0.214957,-0.214957 --0.238243,-0.238243 --0.260431,-0.260431 --0.281331,-0.281331 --0.300716,-0.300716 --0.318534,-0.318534 --0.33474,-0.33474 --0.3493,-0.3493 --0.361878,-0.361878 --0.372524,-0.372524 --0.380975,-0.380975 --0.387485,-0.387485 --0.391872,-0.391872 --0.394096,-0.394096 --0.393899,-0.393899 --0.391435,-0.391435 --0.386826,-0.386826 --0.379998,-0.379998 --0.371054,-0.371054 --0.359573,-0.359573 --0.346098,-0.346098 --0.330534,-0.330534 --0.313005,-0.313005 --0.293643,-0.293643 --0.272156,-0.272156 --0.249064,-0.249064 --0.224365,-0.224365 --0.198208,-0.198208 --0.170767,-0.170767 --0.141996,-0.141996 --0.112179,-0.112179 --0.0815567,-0.0815567 --0.0501861,-0.0501861 --0.018334,-0.018334 -0.0139844,0.0139844 -0.046382,0.046382 -0.0788293,0.0788293 -0.11106,0.11106 -0.142994,0.142994 -0.174204,0.174204 -0.204732,0.204732 -0.234317,0.234317 -0.262907,0.262907 -0.290129,0.290129 -0.315891,0.315891 -0.339964,0.339964 -0.362396,0.362396 -0.38296,0.38296 -0.40158,0.40158 -0.417774,0.417774 -0.431789,0.431789 -0.443508,0.443508 -0.452807,0.452807 -0.459798,0.459798 -0.463757,0.463757 -0.465292,0.465292 -0.464192,0.464192 -0.460572,0.460572 -0.454284,0.454284 -0.445171,0.445171 -0.433443,0.433443 -0.419288,0.419288 -0.402664,0.402664 -0.383724,0.383724 -0.362167,0.362167 -0.33849,0.33849 -0.312774,0.312774 -0.285087,0.285087 -0.255769,0.255769 -0.224384,0.224384 -0.191747,0.191747 -0.157724,0.157724 -0.122647,0.122647 -0.0865573,0.0865573 -0.0497553,0.0497553 -0.0123863,0.0123863 --0.0252838,-0.0252838 --0.0630886,-0.0630886 --0.100763,-0.100763 --0.138169,-0.138169 --0.174936,-0.174936 --0.211016,-0.211016 --0.246212,-0.246212 --0.280196,-0.280196 --0.312757,-0.312757 --0.343697,-0.343697 --0.372962,-0.372962 --0.400375,-0.400375 --0.425752,-0.425752 --0.448568,-0.448568 --0.469086,-0.469086 --0.487132,-0.487132 --0.502537,-0.502537 --0.515415,-0.515415 --0.524901,-0.524901 --0.531726,-0.531726 --0.535522,-0.535522 --0.536522,-0.536522 --0.534296,-0.534296 --0.529012,-0.529012 --0.52052,-0.52052 --0.50921,-0.50921 --0.494957,-0.494957 --0.477926,-0.477926 --0.457668,-0.457668 --0.434857,-0.434857 --0.409449,-0.409449 --0.381625,-0.381625 --0.351516,-0.351516 --0.31896,-0.31896 --0.284514,-0.284514 --0.24823,-0.24823 --0.210417,-0.210417 --0.171051,-0.171051 --0.130537,-0.130537 --0.0889773,-0.0889773 --0.0467012,-0.0467012 --0.00392931,-0.00392931 -0.0392431,0.0392431 -0.0822503,0.0822503 -0.125192,0.125192 -0.16759,0.16759 -0.209423,0.209423 -0.250168,0.250168 -0.289837,0.289837 -0.327922,0.327922 -0.364485,0.364485 -0.399226,0.399226 -0.432031,0.432031 -0.462172,0.462172 -0.490056,0.490056 -0.51532,0.51532 -0.537833,0.537833 -0.557668,0.557668 -0.573895,0.573895 -0.587172,0.587172 -0.597229,0.597229 -0.603982,0.603982 -0.60763,0.60763 -0.607203,0.607203 -0.603581,0.603581 -0.596573,0.596573 -0.586151,0.586151 -0.572615,0.572615 -0.555099,0.555099 -0.534673,0.534673 -0.51108,0.51108 -0.484482,0.484482 -0.455192,0.455192 -0.42271,0.42271 -0.3878,0.3878 -0.350558,0.350558 -0.311195,0.311195 -0.269783,0.269783 -0.226575,0.226575 -0.181804,0.181804 -0.135866,0.135866 -0.0887893,0.0887893 -0.0411954,0.0411954 --0.0071671,-0.0071671 --0.055596,-0.055596 --0.104018,-0.104018 --0.152058,-0.152058 --0.199645,-0.199645 --0.246081,-0.246081 --0.291507,-0.291507 --0.335465,-0.335465 --0.377886,-0.377886 --0.41835,-0.41835 --0.456464,-0.456464 --0.492239,-0.492239 --0.525446,-0.525446 --0.555904,-0.555904 --0.583471,-0.583471 --0.607579,-0.607579 --0.628307,-0.628307 --0.645757,-0.645757 --0.659698,-0.659698 --0.670103,-0.670103 --0.67624,-0.67624 --0.678783,-0.678783 --0.677543,-0.677543 --0.67247,-0.67247 --0.663839,-0.663839 --0.650782,-0.650782 --0.634182,-0.634182 --0.613963,-0.613963 --0.590224,-0.590224 --0.563194,-0.563194 --0.532341,-0.532341 --0.498502,-0.498502 --0.461686,-0.461686 --0.422211,-0.422211 --0.38013,-0.38013 --0.335438,-0.335438 --0.288758,-0.288758 --0.240201,-0.240201 --0.190118,-0.190118 --0.138659,-0.138659 --0.0861594,-0.0861594 --0.0329095,-0.0329095 -0.0207748,0.0207748 -0.0745913,0.0745913 -0.128324,0.128324 -0.181403,0.181403 -0.233803,0.233803 -0.285133,0.285133 -0.335055,0.335055 -0.383578,0.383578 -0.42965,0.42965 -0.473745,0.473745 -0.515371,0.515371 -0.554263,0.554263 -0.590466,0.590466 -0.622942,0.622942 -0.652201,0.652201 -0.677949,0.677949 -0.700184,0.700184 -0.718432,0.718432 -0.7325,0.7325 -0.7424,0.7424 -0.748348,0.748348 -0.750064,0.750064 -0.747858,0.747858 -0.740691,0.740691 -0.72955,0.72955 -0.71427,0.71427 -0.695009,0.695009 -0.671787,0.671787 -0.644233,0.644233 -0.613021,0.613021 -0.578312,0.578312 -0.540109,0.540109 -0.499044,0.499044 -0.454263,0.454263 -0.407079,0.407079 -0.357313,0.357313 -0.305397,0.305397 -0.251501,0.251501 -0.195864,0.195864 -0.138806,0.138806 -0.0808575,0.0808575 -0.0221341,0.0221341 --0.0369444,-0.0369444 --0.0961682,-0.0961682 --0.154925,-0.154925 --0.213167,-0.213167 --0.270478,-0.270478 --0.32661,-0.32661 --0.38082,-0.38082 --0.433223,-0.433223 --0.48341,-0.48341 --0.531195,-0.531195 --0.576183,-0.576183 --0.617838,-0.617838 --0.656173,-0.656173 --0.691072,-0.691072 --0.722291,-0.722291 --0.749636,-0.749636 --0.772464,-0.772464 --0.791037,-0.791037 --0.80534,-0.80534 --0.815221,-0.815221 --0.820795,-0.820795 --0.820989,-0.820989 --0.816831,-0.816831 --0.808068,-0.808068 --0.794796,-0.794796 --0.777218,-0.777218 --0.75443,-0.75443 --0.727576,-0.727576 --0.696519,-0.696519 --0.661565,-0.661565 --0.622641,-0.622641 --0.579848,-0.579848 --0.533526,-0.533526 --0.484168,-0.484168 --0.431911,-0.431911 --0.376989,-0.376989 --0.319554,-0.319554 --0.260089,-0.260089 --0.198959,-0.198959 --0.136521,-0.136521 --0.0729288,-0.0729288 --0.00884278,-0.00884278 -0.0557284,0.0557284 -0.120136,0.120136 -0.184168,0.184168 -0.247488,0.247488 -0.309435,0.309435 -0.369972,0.369972 -0.428656,0.428656 -0.485211,0.485211 -0.539321,0.539321 -0.590322,0.590322 +0.000196912,0.000196912 +0.000589817,0.000589817 +0.00117495,0.00117495 +0.00195118,0.00195118 +0.0029058,0.0029058 +0.00404226,0.00404226 +0.00534023,0.00534023 +0.00679857,0.00679857 +0.00840231,0.00840231 +0.0101355,0.0101355 +0.0119923,0.0119923 +0.0139496,0.0139496 +0.0159987,0.0159987 +0.0181145,0.0181145 +0.0202873,0.0202873 +0.0224944,0.0224944 +0.0247158,0.0247158 +0.0269376,0.0269376 +0.0291314,0.0291314 +0.0312867,0.0312867 +0.0333742,0.0333742 +0.0353831,0.0353831 +0.0372828,0.0372828 +0.0390637,0.0390637 +0.0406966,0.0406966 +0.0421731,0.0421731 +0.0434664,0.0434664 +0.0445633,0.0445633 +0.0454498,0.0454498 +0.0460957,0.0460957 +0.0465123,0.0465123 +0.0466591,0.0466591 +0.0465441,0.0465441 +0.046148,0.046148 +0.0454602,0.0454602 +0.0444789,0.0444789 +0.0431947,0.0431947 +0.0416029,0.0416029 +0.0397033,0.0397033 +0.0374978,0.0374978 +0.0349735,0.0349735 +0.0321594,0.0321594 +0.0290255,0.0290255 +0.0256222,0.0256222 +0.0219117,0.0219117 +0.0179401,0.0179401 +0.0137007,0.0137007 +0.00921612,0.00921612 +0.00450122,0.00450122 +-0.000430062,-0.000430062 +-0.00556252,-0.00556252 +-0.0108565,-0.0108565 +-0.0163168,-0.0163168 +-0.0218882,-0.0218882 +-0.0275831,-0.0275831 +-0.0333386,-0.0333386 +-0.0391576,-0.0391576 +-0.0449935,-0.0449935 +-0.050817,-0.050817 +-0.0566173,-0.0566173 +-0.0623399,-0.0623399 +-0.0679776,-0.0679776 +-0.0734772,-0.0734772 +-0.078832,-0.078832 +-0.0839856,-0.0839856 +-0.0889336,-0.0889336 +-0.0936266,-0.0936266 +-0.0980409,-0.0980409 +-0.102157,-0.102157 +-0.105929,-0.105929 +-0.109352,-0.109352 +-0.112383,-0.112383 +-0.115003,-0.115003 +-0.117198,-0.117198 +-0.11893,-0.11893 +-0.120198,-0.120198 +-0.120973,-0.120973 +-0.121236,-0.121236 +-0.120991,-0.120991 +-0.120214,-0.120214 +-0.118894,-0.118894 +-0.117031,-0.117031 +-0.114618,-0.114618 +-0.111659,-0.111659 +-0.108143,-0.108143 +-0.104097,-0.104097 +-0.0994884,-0.0994884 +-0.0943735,-0.0943735 +-0.0887272,-0.0887272 +-0.0825767,-0.0825767 +-0.0759414,-0.0759414 +-0.0688368,-0.0688368 +-0.0612883,-0.0612883 +-0.0533211,-0.0533211 +-0.04495,-0.04495 +-0.0362186,-0.0362186 +-0.0271527,-0.0271527 +-0.0177855,-0.0177855 +-0.00815196,-0.00815196 +0.00170941,0.00170941 +0.0117688,0.0117688 +0.0219607,0.0219607 +0.0322793,0.0322793 +0.0426523,0.0426523 +0.0530409,0.0530409 +0.0634312,0.0634312 +0.0737189,0.0737189 +0.0839171,0.0839171 +0.0939397,0.0939397 +0.10376,0.10376 +0.113336,0.113336 +0.1226,0.1226 +0.131528,0.131528 +0.14006,0.14006 +0.14817,0.14817 +0.155806,0.155806 +0.162922,0.162922 +0.169495,0.169495 +0.175468,0.175468 +0.180822,0.180822 +0.18552,0.18552 +0.189521,0.189521 +0.192817,0.192817 +0.195366,0.195366 +0.19715,0.19715 +0.198157,0.198157 +0.198354,0.198354 +0.197742,0.197742 +0.196313,0.196313 +0.194047,0.194047 +0.190956,0.190956 +0.187037,0.187037 +0.182273,0.182273 +0.176703,0.176703 +0.17033,0.17033 +0.163148,0.163148 +0.155218,0.155218 +0.146511,0.146511 +0.137083,0.137083 +0.126976,0.126976 +0.11618,0.11618 +0.104785,0.104785 +0.0927682,0.0927682 +0.0802337,0.0802337 +0.0671699,0.0671699 +0.0536884,0.0536884 +0.0397644,0.0397644 +0.0255196,0.0255196 +0.0109527,0.0109527 +-0.003838,-0.003838 +-0.0188236,-0.0188236 +-0.0339,-0.0339 +-0.049081,-0.049081 +-0.064228,-0.064228 +-0.0793178,-0.0793178 +-0.0942969,-0.0942969 +-0.109056,-0.109056 +-0.123591,-0.123591 +-0.137772,-0.137772 +-0.151608,-0.151608 +-0.164967,-0.164967 +-0.177859,-0.177859 +-0.190152,-0.190152 +-0.201851,-0.201851 +-0.21285,-0.21285 +-0.223139,-0.223139 +-0.232646,-0.232646 +-0.241298,-0.241298 +-0.249121,-0.249121 +-0.255978,-0.255978 +-0.261907,-0.261907 +-0.266843,-0.266843 +-0.27074,-0.27074 +-0.273604,-0.273604 +-0.27538,-0.27538 +-0.276073,-0.276073 +-0.275655,-0.275655 +-0.274093,-0.274093 +-0.271455,-0.271455 +-0.267624,-0.267624 +-0.262727,-0.262727 +-0.256679,-0.256679 +-0.249545,-0.249545 +-0.241312,-0.241312 +-0.232036,-0.232036 +-0.221676,-0.221676 +-0.210372,-0.210372 +-0.198037,-0.198037 +-0.184825,-0.184825 +-0.170683,-0.170683 +-0.155729,-0.155729 +-0.139987,-0.139987 +-0.123497,-0.123497 +-0.106366,-0.106366 +-0.0886068,-0.0886068 +-0.0703205,-0.0703205 +-0.0515716,-0.0515716 +-0.0323849,-0.0323849 +-0.0129331,-0.0129331 +0.00682541,0.00682541 +0.0267113,0.0267113 +0.0467009,0.0467009 +0.0667213,0.0667213 +0.0866205,0.0866205 +0.106434,0.106434 +0.12595,0.12595 +0.145183,0.145183 +0.164007,0.164007 +0.182354,0.182354 +0.200155,0.200155 +0.217282,0.217282 +0.233756,0.233756 +0.24938,0.24938 +0.264204,0.264204 +0.278076,0.278076 +0.290955,0.290955 +0.302803,0.302803 +0.31352,0.31352 +0.3231,0.3231 +0.33145,0.33145 +0.338538,0.338538 +0.34436,0.34436 +0.348815,0.348815 +0.351934,0.351934 +0.353669,0.353669 +0.353962,0.353962 +0.352901,0.352901 +0.350316,0.350316 +0.346437,0.346437 +0.340969,0.340969 +0.334246,0.334246 +0.326017,0.326017 +0.316422,0.316422 +0.305552,0.305552 +0.293213,0.293213 +0.279776,0.279776 +0.264918,0.264918 +0.24905,0.24905 +0.231885,0.231885 +0.213767,0.213767 +0.194593,0.194593 +0.174458,0.174458 +0.153485,0.153485 +0.131756,0.131756 +0.109195,0.109195 +0.0862275,0.0862275 +0.0624663,0.0624663 +0.038501,0.038501 +0.0139991,0.0139991 +-0.0106129,-0.0106129 +-0.0354806,-0.0354806 +-0.0603177,-0.0603177 +-0.0852237,-0.0852237 +-0.109836,-0.109836 +-0.134353,-0.134353 +-0.158411,-0.158411 +-0.182074,-0.182074 +-0.205193,-0.205193 +-0.227627,-0.227627 +-0.249399,-0.249399 +-0.270248,-0.270248 +-0.290255,-0.290255 +-0.309173,-0.309173 +-0.327094,-0.327094 +-0.343741,-0.343741 +-0.359231,-0.359231 +-0.373282,-0.373282 +-0.386112,-0.386112 +-0.397265,-0.397265 +-0.407193,-0.407193 +-0.415269,-0.415269 +-0.421987,-0.421987 +-0.426904,-0.426904 +-0.430239,-0.430239 +-0.431826,-0.431826 +-0.431766,-0.431766 +-0.429837,-0.429837 +-0.426382,-0.426382 +-0.420986,-0.420986 +-0.414004,-0.414004 +-0.405305,-0.405305 +-0.394835,-0.394835 +-0.382822,-0.382822 +-0.369123,-0.369123 +-0.353862,-0.353862 +-0.337088,-0.337088 +-0.318888,-0.318888 +-0.299199,-0.299199 +-0.278281,-0.278281 +-0.255984,-0.255984 +-0.232632,-0.232632 +-0.208094,-0.208094 +-0.182636,-0.182636 +-0.156241,-0.156241 +-0.128983,-0.128983 +-0.101144,-0.101144 +-0.0726128,-0.0726128 +-0.0436413,-0.0436413 +-0.0143194,-0.0143194 +0.0153227,0.0153227 +0.0450098,0.0450098 +0.0747964,0.0747964 +0.104434,0.104434 +0.133853,0.133853 +0.162964,0.162964 +0.191561,0.191561 +0.219619,0.219619 +0.246997,0.246997 +0.273493,0.273493 +0.299178,0.299178 +0.323706,0.323706 +0.347222,0.347222 +0.369394,0.369394 +0.39032,0.39032 +0.409772,0.409772 +0.427722,0.427722 +0.444081,0.444081 +0.458764,0.458764 +0.471728,0.471728 +0.482844,0.482844 +0.492166,0.492166 +0.499508,0.499508 +0.504995,0.504995 +0.508397,0.508397 +0.50988,0.50988 +0.509254,0.509254 +0.506662,0.506662 +0.502014,0.502014 +0.495303,0.495303 +0.486625,0.486625 +0.475892,0.475892 +0.463241,0.463241 +0.448669,0.448669 +0.432186,0.432186 +0.41391,0.41391 +0.39385,0.39385 +0.372116,0.372116 +0.348754,0.348754 +0.323881,0.323881 +0.297553,0.297553 +0.269921,0.269921 +0.240961,0.240961 +0.210986,0.210986 +0.179899,0.179899 +0.147973,0.147973 +0.115254,0.115254 +0.0818653,0.0818653 +0.0480013,0.0480013 +0.013712,0.013712 +-0.0208158,-0.0208158 +-0.0554474,-0.0554474 +-0.0900573,-0.0900573 +-0.124522,-0.124522 +-0.158674,-0.158674 +-0.192376,-0.192376 +-0.225538,-0.225538 +-0.257911,-0.257911 +-0.289528,-0.289528 +-0.320105,-0.320105 +-0.349615,-0.349615 +-0.377859,-0.377859 +-0.404773,-0.404773 +-0.430216,-0.430216 +-0.45411,-0.45411 +-0.476282,-0.476282 +-0.496709,-0.496709 +-0.515248,-0.515248 +-0.531848,-0.531848 +-0.546419,-0.546419 +-0.558883,-0.558883 +-0.56919,-0.56919 +-0.577267,-0.577267 +-0.583145,-0.583145 +-0.586641,-0.586641 +-0.587916,-0.587916 +-0.586773,-0.586773 +-0.58332,-0.58332 +-0.577542,-0.577542 +-0.569389,-0.569389 +-0.558976,-0.558976 +-0.546229,-0.546229 +-0.531288,-0.531288 +-0.514109,-0.514109 +-0.494804,-0.494804 +-0.47346,-0.47346 +-0.450081,-0.450081 +-0.424795,-0.424795 +-0.397702,-0.397702 +-0.36886,-0.36886 +-0.338404,-0.338404 +-0.306499,-0.306499 +-0.273128,-0.273128 +-0.238556,-0.238556 +-0.202816,-0.202816 +-0.166105,-0.166105 +-0.128568,-0.128568 +-0.090304,-0.090304 +-0.0514938,-0.0514938 +-0.0123029,-0.0123029 +0.0271954,0.0271954 +0.0667074,0.0667074 +0.106188,0.106188 +0.145462,0.145462 +0.184285,0.184285 +0.222658,0.222658 +0.260227,0.260227 +0.297055,0.297055 +0.332797,0.332797 +0.367457,0.367457 +0.400763,0.400763 +0.432647,0.432647 +0.463023,0.463023 +0.491593,0.491593 +0.518491,0.518491 +0.543294,0.543294 +0.566197,0.566197 +0.586841,0.586841 +0.60534,0.60534 +0.621441,0.621441 +0.635225,0.635225 +0.646452,0.646452 +0.655254,0.655254 +0.661383,0.661383 +0.665048,0.665048 +0.665952,0.665952 +0.664283,0.664283 +0.659914,0.659914 +0.652976,0.652976 +0.643289,0.643289 +0.631149,0.631149 +0.616241,0.616241 +0.599042,0.599042 +0.579152,0.579152 +0.557074,0.557074 +0.5325,0.5325 +0.505824,0.505824 +0.47694,0.47694 +0.446022,0.446022 +0.413236,0.413236 +0.378618,0.378618 +0.342383,0.342383 +0.304533,0.304533 +0.265387,0.265387 +0.224981,0.224981 +0.183436,0.183436 +0.141122,0.141122 +0.0978361,0.0978361 +0.0542114,0.0542114 +0.00999775,0.00999775 +-0.0343686,-0.0343686 +-0.0788498,-0.0788498 +-0.123189,-0.123189 +-0.167181,-0.167181 +-0.210812,-0.210812 +-0.253683,-0.253683 +-0.295806,-0.295806 +-0.336976,-0.336976 +-0.376837,-0.376837 +-0.415548,-0.415548 +-0.452638,-0.452638 +-0.488134,-0.488134 +-0.521934,-0.521934 +-0.553627,-0.553627 +-0.583436,-0.583436 +-0.610902,-0.610902 +-0.636115,-0.636115 +-0.659019,-0.659019 +-0.679123,-0.679123 +-0.696975,-0.696975 +-0.71179,-0.71179 +-0.724046,-0.724046 +-0.733437,-0.733437 +-0.739842,-0.739842 +-0.743543,-0.743543 +-0.744047,-0.744047 +-0.741865,-0.741865 +-0.736426,-0.736426 +-0.728321,-0.728321 +-0.717079,-0.717079 +-0.703049,-0.703049 +-0.686124,-0.686124 +-0.666407,-0.666407 +-0.643919,-0.643919 +-0.618891,-0.618891 +-0.591162,-0.591162 +-0.561006,-0.561006 +-0.528624,-0.528624 +-0.493736,-0.493736 +-0.457038,-0.457038 +-0.418195,-0.418195 +-0.377515,-0.377515 +-0.335347,-0.335347 +-0.29141,-0.29141 +-0.246375,-0.246375 +-0.200057,-0.200057 +-0.152735,-0.152735 +-0.104706,-0.104706 +-0.0559716,-0.0559716 +-0.00694585,-0.00694585 +0.0424866,0.0424866 +0.0917853,0.0917853 +0.141034,0.141034 +0.189782,0.189782 +0.238135,0.238135 +0.285557,0.285557 +0.332232,0.332232 +0.37751,0.37751 +0.421773,0.421773 +0.4642,0.4642 +0.505306,0.505306 +0.544168,0.544168 diff --git a/src/test/golden_buffers/BasicProcessingTestPlaying b/src/test/golden_buffers/BasicProcessingTestPlaying index c9183e5790dd..fecc993b05e6 100644 --- a/src/test/golden_buffers/BasicProcessingTestPlaying +++ b/src/test/golden_buffers/BasicProcessingTestPlaying @@ -1,512 +1,512 @@ -0.63688,0.63688 -0.680038,0.680038 -0.719396,0.719396 -0.754834,0.754834 -0.785533,0.785533 -0.811891,0.811891 -0.83379,0.83379 -0.851123,0.851123 -0.863662,0.863662 -0.870995,0.870995 -0.873342,0.873342 -0.870982,0.870982 -0.863835,0.863835 -0.851795,0.851795 -0.834596,0.834596 -0.81273,0.81273 -0.786391,0.786391 -0.755713,0.755713 -0.720901,0.720901 -0.681516,0.681516 -0.638451,0.638451 -0.591853,0.591853 -0.541962,0.541962 -0.489177,0.489177 -0.433153,0.433153 -0.374916,0.374916 -0.314518,0.314518 -0.252548,0.252548 -0.188824,0.188824 -0.124373,0.124373 -0.0588961,0.0588961 --0.00672108,-0.00672108 --0.0723182,-0.0723182 --0.137662,-0.137662 --0.201993,-0.201993 --0.26527,-0.26527 --0.327027,-0.327027 --0.387104,-0.387104 --0.444915,-0.444915 --0.500046,-0.500046 --0.552377,-0.552377 --0.601654,-0.601654 --0.647666,-0.647666 --0.690037,-0.690037 --0.728182,-0.728182 --0.762247,-0.762247 --0.792166,-0.792166 --0.817644,-0.817644 --0.83873,-0.83873 --0.854476,-0.854476 --0.865582,-0.865582 --0.871862,-0.871862 --0.873368,-0.873368 --0.870095,-0.870095 --0.861322,-0.861322 --0.847869,-0.847869 --0.82967,-0.82967 --0.806964,-0.806964 --0.779865,-0.779865 --0.74768,-0.74768 --0.711615,-0.711615 --0.671516,-0.671516 --0.627678,-0.627678 --0.580606,-0.580606 --0.529529,-0.529529 --0.475851,-0.475851 --0.419453,-0.419453 --0.360656,-0.360656 --0.300119,-0.300119 --0.237361,-0.237361 --0.173564,-0.173564 --0.108727,-0.108727 --0.04325,-0.04325 -0.0224007,0.0224007 -0.0879443,0.0879443 -0.153008,0.153008 -0.217205,0.217205 -0.280189,0.280189 -0.341753,0.341753 -0.400984,0.400984 -0.458194,0.458194 -0.512752,0.512752 -0.564496,0.564496 -0.613274,0.613274 -0.657992,0.657992 -0.699297,0.699297 -0.736595,0.736595 -0.769913,0.769913 -0.798999,0.798999 -0.823044,0.823044 -0.842577,0.842577 -0.857496,0.857496 -0.867615,0.867615 -0.873095,0.873095 -0.872948,0.872948 -0.868108,0.868108 -0.858469,0.858469 -0.844002,0.844002 -0.825163,0.825163 -0.800771,0.800771 -0.772278,0.772278 -0.73938,0.73938 -0.702475,0.702475 -0.661736,0.661736 -0.616692,0.616692 -0.568427,0.568427 -0.516969,0.516969 -0.462692,0.462692 -0.405714,0.405714 -0.346463,0.346463 -0.285079,0.285079 -0.222262,0.222262 -0.158171,0.158171 -0.0931609,0.0931609 -0.0276506,0.0276506 --0.0380663,-0.0380663 --0.103584,-0.103584 --0.168341,-0.168341 --0.232591,-0.232591 --0.294968,-0.294968 --0.355912,-0.355912 --0.41485,-0.41485 --0.471487,-0.471487 --0.525678,-0.525678 --0.576342,-0.576342 --0.624007,-0.624007 --0.668165,-0.668165 --0.70863,-0.70863 --0.745268,-0.745268 --0.77722,-0.77722 --0.804792,-0.804792 --0.828071,-0.828071 --0.846657,-0.846657 --0.860796,-0.860796 --0.869288,-0.869288 --0.873142,-0.873142 --0.872141,-0.872141 --0.866395,-0.866395 --0.855829,-0.855829 --0.839889,-0.839889 --0.81937,-0.81937 --0.794311,-0.794311 --0.764925,-0.764925 --0.7313,-0.7313 --0.693009,-0.693009 --0.65105,-0.65105 --0.605432,-0.605432 --0.556474,-0.556474 --0.50451,-0.50451 --0.449292,-0.449292 --0.391682,-0.391682 --0.331884,-0.331884 --0.270246,-0.270246 --0.207223,-0.207223 --0.142686,-0.142686 --0.0775552,-0.0775552 --0.0119775,-0.0119775 -0.0538328,0.0538328 -0.118963,0.118963 -0.18392,0.18392 -0.247357,0.247357 -0.309695,0.309695 -0.370239,0.370239 -0.428749,0.428749 -0.48464,0.48464 -0.537785,0.537785 -0.588022,0.588022 -0.634927,0.634927 -0.678504,0.678504 -0.717683,0.717683 -0.752988,0.752988 -0.784086,0.784086 -0.810952,0.810952 -0.833264,0.833264 -0.850416,0.850416 -0.862882,0.862882 -0.870582,0.870582 -0.873462,0.873462 -0.871661,0.871661 -0.864195,0.864195 -0.852155,0.852155 -0.835316,0.835316 -0.813944,0.813944 -0.788031,0.788031 -0.757219,0.757219 -0.72226,0.72226 -0.683282,0.683282 -0.640551,0.640551 -0.594306,0.594306 -0.544375,0.544375 -0.491337,0.491337 -0.435699,0.435699 -0.377675,0.377675 -0.317451,0.317451 -0.255354,0.255354 -0.191796,0.191796 -0.127159,0.127159 -0.0620021,0.0620021 --0.00383483,-0.00383483 --0.0693184,-0.0693184 --0.13461,-0.13461 --0.199087,-0.199087 --0.262457,-0.262457 --0.324421,-0.324421 --0.384384,-0.384384 --0.442169,-0.442169 --0.497506,-0.497506 --0.550184,-0.550184 --0.599708,-0.599708 --0.645659,-0.645659 --0.687911,-0.687911 --0.726409,-0.726409 --0.760887,-0.760887 --0.791299,-0.791299 --0.816598,-0.816598 --0.837477,-0.837477 --0.853736,-0.853736 --0.865296,-0.865296 --0.872095,-0.872095 --0.873435,-0.873435 --0.869942,-0.869942 --0.861682,-0.861682 --0.848709,-0.848709 --0.830929,-0.830929 --0.80817,-0.80817 --0.780758,-0.780758 --0.749159,-0.749159 --0.713427,-0.713427 --0.673703,-0.673703 --0.629811,-0.629811 --0.582453,-0.582453 --0.531915,-0.531915 --0.47833,-0.47833 --0.42238,-0.42238 --0.363355,-0.363355 --0.302719,-0.302719 --0.240261,-0.240261 --0.176463,-0.176463 --0.111793,-0.111793 --0.0462223,-0.0462223 -0.0193872,0.0193872 -0.0849849,0.0849849 -0.150089,0.150089 -0.214425,0.214425 -0.277337,0.277337 -0.338826,0.338826 -0.398284,0.398284 -0.455789,0.455789 -0.510346,0.510346 -0.562397,0.562397 -0.610714,0.610714 -0.656012,0.656012 -0.697571,0.697571 -0.735302,0.735302 -0.768541,0.768541 -0.797379,0.797379 -0.821918,0.821918 -0.841917,0.841917 -0.857329,0.857329 -0.867295,0.867295 -0.872522,0.872522 -0.872921,0.872921 -0.868548,0.868548 -0.859462,0.859462 -0.844789,0.844789 -0.825657,0.825657 -0.801917,0.801917 -0.773731,0.773731 -0.7413,0.7413 -0.704307,0.704307 -0.663297,0.663297 -0.618738,0.618738 -0.570793,0.570793 -0.519542,0.519542 -0.465251,0.465251 -0.408241,0.408241 -0.349103,0.349103 -0.287918,0.287918 -0.225288,0.225288 -0.161111,0.161111 -0.0961011,0.0961011 -0.0306033,0.0306033 --0.0350611,-0.0350611 --0.100664,-0.100664 --0.165488,-0.165488 --0.229498,-0.229498 --0.292096,-0.292096 --0.353334,-0.353334 --0.412283,-0.412283 --0.469068,-0.469068 --0.522918,-0.522918 --0.574076,-0.574076 --0.621981,-0.621981 --0.666605,-0.666605 --0.706857,-0.706857 --0.743348,-0.743348 --0.775707,-0.775707 --0.803799,-0.803799 --0.827464,-0.827464 --0.845977,-0.845977 --0.859776,-0.859776 --0.868895,-0.868895 --0.873202,-0.873202 --0.872695,-0.872695 --0.866775,-0.866775 --0.856015,-0.856015 --0.840556,-0.840556 --0.820583,-0.820583 --0.795864,-0.795864 --0.766378,-0.766378 --0.732554,-0.732554 --0.694775,-0.694775 --0.653096,-0.653096 --0.607872,-0.607872 --0.558807,-0.558807 --0.50669,-0.50669 --0.451752,-0.451752 --0.394474,-0.394474 --0.334684,-0.334684 --0.273172,-0.273172 --0.209936,-0.209936 --0.145698,-0.145698 --0.0804338,-0.0804338 --0.0150643,-0.0150643 -0.0508201,0.0508201 -0.116085,0.116085 -0.180861,0.180861 -0.244592,0.244592 -0.307021,0.307021 -0.367559,0.367559 -0.425931,0.425931 -0.482067,0.482067 -0.535545,0.535545 -0.586075,0.586075 -0.63288,0.63288 -0.676252,0.676252 -0.71591,0.71591 -0.751535,0.751535 -0.783233,0.783233 -0.809738,0.809738 -0.832018,0.832018 -0.849576,0.849576 -0.862602,0.862602 -0.870628,0.870628 -0.873541,0.873541 -0.871355,0.871355 -0.864555,0.864555 -0.852875,0.852875 -0.836629,0.836629 -0.814996,0.814996 -0.788971,0.788971 -0.758592,0.758592 -0.72402,0.72402 -0.685435,0.685435 -0.642617,0.642617 -0.596218,0.596218 -0.546581,0.546581 -0.493889,0.493889 -0.438546,0.438546 -0.380288,0.380288 -0.320143,0.320143 -0.258127,0.258127 -0.194769,0.194769 -0.130159,0.130159 -0.0649281,0.0649281 --0.000749648,-0.000749648 --0.0663457,-0.0663457 --0.131784,-0.131784 --0.196126,-0.196126 --0.259644,-0.259644 --0.321482,-0.321482 --0.381678,-0.381678 --0.439623,-0.439623 --0.495313,-0.495313 --0.547818,-0.547818 --0.597323,-0.597323 --0.64352,-0.64352 --0.686171,-0.686171 --0.725069,-0.725069 --0.759474,-0.759474 --0.789593,-0.789593 --0.815391,-0.815391 --0.836844,-0.836844 --0.853329,-0.853329 --0.864975,-0.864975 --0.871455,-0.871455 --0.873335,-0.873335 --0.870321,-0.870321 --0.862595,-0.862595 --0.849375,-0.849375 --0.831536,-0.831536 --0.809137,-0.809137 --0.782178,-0.782178 --0.751133,-0.751133 --0.71508,-0.71508 --0.675348,-0.675348 --0.631751,-0.631751 --0.584792,-0.584792 --0.534442,-0.534442 --0.480937,-0.480937 --0.424645,-0.424645 --0.366109,-0.366109 --0.305537,-0.305537 --0.243188,-0.243188 --0.17945,-0.17945 --0.114625,-0.114625 --0.0492492,-0.0492492 -0.016442,0.016442 -0.0820314,0.0820314 -0.147149,0.147149 -0.211414,0.211414 -0.27449,0.27449 -0.336114,0.336114 -0.395784,0.395784 -0.453195,0.453195 -0.507873,0.507873 -0.55987,0.55987 -0.608735,0.608735 -0.654339,0.654339 -0.695777,0.695777 -0.733376,0.733376 -0.766914,0.766914 -0.796366,0.796366 -0.821231,0.821231 -0.841144,0.841144 -0.856316,0.856316 -0.866795,0.866795 -0.872528,0.872528 -0.873428,0.873428 -0.868855,0.868855 -0.859562,0.859562 -0.845422,0.845422 -0.826783,0.826783 -0.803363,0.803363 -0.775204,0.775204 -0.742527,0.742527 -0.705928,0.705928 -0.665302,0.665302 -0.62127,0.62127 -0.572938,0.572938 -0.521796,0.521796 -0.467658,0.467658 -0.410926,0.410926 -0.352048,0.352048 -0.29073,0.29073 -0.228055,0.228055 -0.163997,0.163997 -0.099093,0.099093 -0.0335952,0.0335952 --0.0320826,-0.0320826 --0.0976104,-0.0976104 --0.162568,-0.162568 --0.226606,-0.226606 --0.28949,-0.28949 --0.350495,-0.350495 --0.409583,-0.409583 --0.466381,-0.466381 --0.520699,-0.520699 --0.572011,-0.572011 --0.619929,-0.619929 --0.664272,-0.664272 --0.70507,-0.70507 --0.741815,-0.741815 --0.774801,-0.774801 --0.802559,-0.802559 --0.826144,-0.826144 --0.845103,-0.845103 --0.859329,-0.859329 --0.869129,-0.869129 --0.873028,-0.873028 --0.872481,-0.872481 --0.866982,-0.866982 --0.856768,-0.856768 --0.841695,-0.841695 --0.821609,-0.821609 --0.796758,-0.796758 --0.767678,-0.767678 --0.734266,-0.734266 --0.696934,-0.696934 --0.655062,-0.655062 --0.609732,-0.609732 --0.561034,-0.561034 --0.509102,-0.509102 --0.454677,-0.454677 --0.396992,-0.396992 --0.337451,-0.337451 --0.275873,-0.275873 --0.212928,-0.212928 --0.148623,-0.148623 --0.0835123,-0.0835123 --0.0179179,-0.0179179 -0.0477399,0.0477399 -0.113218,0.113218 -0.177995,0.177995 -0.241733,0.241733 -0.304075,0.304075 -0.364772,0.364772 -0.42337,0.42337 -0.479948,0.479948 -0.53306,0.53306 -0.583602,0.583602 -0.63074,0.63074 -0.674472,0.674472 -0.714537,0.714537 -0.750022,0.750022 -0.78146,0.78146 -0.808558,0.808558 -0.831184,0.831184 -0.849363,0.849363 -0.862023,0.862023 -0.870102,0.870102 -0.873282,0.873282 +0.580324,0.580324 +0.613744,0.613744 +0.645089,0.645089 +0.673667,0.673667 +0.6996,0.6996 +0.722931,0.722931 +0.743105,0.743105 +0.760684,0.760684 +0.774898,0.774898 +0.786346,0.786346 +0.794463,0.794463 +0.799549,0.799549 +0.80147,0.80147 +0.800081,0.800081 +0.795764,0.795764 +0.788055,0.788055 +0.777407,0.777407 +0.763535,0.763535 +0.746751,0.746751 +0.726961,0.726961 +0.704286,0.704286 +0.67883,0.67883 +0.650733,0.650733 +0.619944,0.619944 +0.586887,0.586887 +0.551236,0.551236 +0.513733,0.513733 +0.473853,0.473853 +0.432445,0.432445 +0.388951,0.388951 +0.344276,0.344276 +0.298,0.298 +0.250621,0.250621 +0.20229,0.20229 +0.153015,0.153015 +0.103344,0.103344 +0.0531135,0.0531135 +0.00272798,0.00272798 +-0.0476821,-0.0476821 +-0.0979676,-0.0979676 +-0.1477,-0.1477 +-0.197001,-0.197001 +-0.245422,-0.245422 +-0.29295,-0.29295 +-0.339299,-0.339299 +-0.384245,-0.384245 +-0.427742,-0.427742 +-0.469483,-0.469483 +-0.509415,-0.509415 +-0.547315,-0.547315 +-0.583011,-0.583011 +-0.616464,-0.616464 +-0.647421,-0.647421 +-0.675841,-0.675841 +-0.701579,-0.701579 +-0.724517,-0.724517 +-0.744598,-0.744598 +-0.761775,-0.761775 +-0.775879,-0.775879 +-0.786922,-0.786922 +-0.794848,-0.794848 +-0.799631,-0.799631 +-0.801288,-0.801288 +-0.799686,-0.799686 +-0.795028,-0.795028 +-0.787044,-0.787044 +-0.776172,-0.776172 +-0.76205,-0.76205 +-0.745018,-0.745018 +-0.724937,-0.724937 +-0.702085,-0.702085 +-0.676334,-0.676334 +-0.648066,-0.648066 +-0.617106,-0.617106 +-0.583715,-0.583715 +-0.54808,-0.54808 +-0.510184,-0.510184 +-0.470353,-0.470353 +-0.428609,-0.428609 +-0.385181,-0.385181 +-0.340212,-0.340212 +-0.293941,-0.293941 +-0.246463,-0.246463 +-0.198004,-0.198004 +-0.148809,-0.148809 +-0.0989714,-0.0989714 +-0.0487642,-0.0487642 +0.00159481,0.00159481 +0.0520365,0.0520365 +0.102194,0.102194 +0.151981,0.151981 +0.201162,0.201162 +0.249538,0.249538 +0.296928,0.296928 +0.343162,0.343162 +0.38801,0.38801 +0.431339,0.431339 +0.472932,0.472932 +0.512698,0.512698 +0.550407,0.550407 +0.585903,0.585903 +0.619148,0.619148 +0.649905,0.649905 +0.678073,0.678073 +0.703582,0.703582 +0.726289,0.726289 +0.74613,0.74613 +0.763018,0.763018 +0.776883,0.776883 +0.78764,0.78764 +0.795325,0.795325 +0.799841,0.799841 +0.801179,0.801179 +0.799374,0.799374 +0.79438,0.79438 +0.786224,0.786224 +0.774959,0.774959 +0.760671,0.760671 +0.743349,0.743349 +0.723068,0.723068 +0.69991,0.69991 +0.67401,0.67401 +0.645414,0.645414 +0.614319,0.614319 +0.580714,0.580714 +0.544861,0.544861 +0.506844,0.506844 +0.46681,0.46681 +0.424913,0.424913 +0.381354,0.381354 +0.33629,0.33629 +0.289847,0.289847 +0.242364,0.242364 +0.193775,0.193775 +0.144547,0.144547 +0.0946672,0.0946672 +0.0444343,0.0444343 +-0.00596134,-0.00596134 +-0.0563291,-0.0563291 +-0.106513,-0.106513 +-0.156256,-0.156256 +-0.205333,-0.205333 +-0.253695,-0.253695 +-0.300938,-0.300938 +-0.347091,-0.347091 +-0.391821,-0.391821 +-0.43498,-0.43498 +-0.476464,-0.476464 +-0.516024,-0.516024 +-0.55356,-0.55356 +-0.588923,-0.588923 +-0.621897,-0.621897 +-0.652445,-0.652445 +-0.680428,-0.680428 +-0.705658,-0.705658 +-0.728186,-0.728186 +-0.747734,-0.747734 +-0.764365,-0.764365 +-0.777963,-0.777963 +-0.7885,-0.7885 +-0.795912,-0.795912 +-0.800128,-0.800128 +-0.801202,-0.801202 +-0.79912,-0.79912 +-0.793842,-0.793842 +-0.785489,-0.785489 +-0.77394,-0.77394 +-0.759344,-0.759344 +-0.741765,-0.741765 +-0.721286,-0.721286 +-0.697807,-0.697807 +-0.671792,-0.671792 +-0.642871,-0.642871 +-0.611606,-0.611606 +-0.577753,-0.577753 +-0.541789,-0.541789 +-0.503462,-0.503462 +-0.463393,-0.463393 +-0.421218,-0.421218 +-0.377642,-0.377642 +-0.332323,-0.332323 +-0.285911,-0.285911 +-0.238168,-0.238168 +-0.189662,-0.189662 +-0.140241,-0.140241 +-0.0904061,-0.0904061 +-0.0400821,-0.0400821 +0.01031,0.01031 +0.0606649,0.0606649 +0.110818,0.110818 +0.160525,0.160525 +0.209591,0.209591 +0.257804,0.257804 +0.305073,0.305073 +0.350983,0.350983 +0.395698,0.395698 +0.438713,0.438713 +0.480037,0.480037 +0.519414,0.519414 +0.556839,0.556839 +0.591881,0.591881 +0.624823,0.624823 +0.655076,0.655076 +0.682839,0.682839 +0.707877,0.707877 +0.730114,0.730114 +0.74944,0.74944 +0.765838,0.765838 +0.779146,0.779146 +0.789476,0.789476 +0.796521,0.796521 +0.800565,0.800565 +0.80132,0.80132 +0.798968,0.798968 +0.793477,0.793477 +0.784787,0.784787 +0.77292,0.77292 +0.758242,0.758242 +0.740227,0.740227 +0.719584,0.719584 +0.695901,0.695901 +0.669506,0.669506 +0.640487,0.640487 +0.608963,0.608963 +0.574884,0.574884 +0.538711,0.538711 +0.500269,0.500269 +0.459926,0.459926 +0.417732,0.417732 +0.373778,0.373778 +0.328629,0.328629 +0.281773,0.281773 +0.234265,0.234265 +0.185393,0.185393 +0.136066,0.136066 +0.0860656,0.0860656 +0.0358424,0.0358424 +-0.0147185,-0.0147185 +-0.0649151,-0.0649151 +-0.115291,-0.115291 +-0.164657,-0.164657 +-0.213947,-0.213947 +-0.261949,-0.261949 +-0.309111,-0.309111 +-0.355035,-0.355035 +-0.399507,-0.399507 +-0.442406,-0.442406 +-0.483651,-0.483651 +-0.522757,-0.522757 +-0.560097,-0.560097 +-0.594851,-0.594851 +-0.627646,-0.627646 +-0.65763,-0.65763 +-0.685191,-0.685191 +-0.710023,-0.710023 +-0.731887,-0.731887 +-0.751069,-0.751069 +-0.767167,-0.767167 +-0.780172,-0.780172 +-0.790269,-0.790269 +-0.79703,-0.79703 +-0.800715,-0.800715 +-0.801338,-0.801338 +-0.798564,-0.798564 +-0.792851,-0.792851 +-0.783864,-0.783864 +-0.771797,-0.771797 +-0.75669,-0.75669 +-0.738612,-0.738612 +-0.717525,-0.717525 +-0.69371,-0.69371 +-0.667072,-0.667072 +-0.637752,-0.637752 +-0.606083,-0.606083 +-0.571759,-0.571759 +-0.535425,-0.535425 +-0.496776,-0.496776 +-0.456289,-0.456289 +-0.413917,-0.413917 +-0.369969,-0.369969 +-0.324481,-0.324481 +-0.277765,-0.277765 +-0.229916,-0.229916 +-0.181234,-0.181234 +-0.131694,-0.131694 +-0.0818022,-0.0818022 +-0.0314026,-0.0314026 +0.0189072,0.0189072 +0.0694039,0.0694039 +0.119305,0.119305 +0.16911,0.16911 +0.217835,0.217835 +0.266059,0.266059 +0.31301,0.31301 +0.3588,0.3588 +0.403135,0.403135 +0.445919,0.445919 +0.486894,0.486894 +0.525966,0.525966 +0.562969,0.562969 +0.597659,0.597659 +0.630099,0.630099 +0.659951,0.659951 +0.68725,0.68725 +0.711797,0.711797 +0.733509,0.733509 +0.75238,0.75238 +0.768179,0.768179 +0.78101,0.78101 +0.790747,0.790747 +0.797266,0.797266 +0.800757,0.800757 +0.800963,0.800963 +0.798081,0.798081 +0.791957,0.791957 +0.782805,0.782805 +0.770438,0.770438 +0.755093,0.755093 +0.736737,0.736737 +0.71544,0.71544 +0.691368,0.691368 +0.664543,0.664543 +0.634996,0.634996 +0.603064,0.603064 +0.568639,0.568639 +0.532058,0.532058 +0.493315,0.493315 +0.452575,0.452575 +0.410158,0.410158 +0.365995,0.365995 +0.320487,0.320487 +0.273643,0.273643 +0.225732,0.225732 +0.176932,0.176932 +0.127458,0.127458 +0.0773677,0.0773677 +0.0271611,0.0271611 +-0.0233371,-0.0233371 +-0.0736059,-0.0736059 +-0.123683,-0.123683 +-0.173224,-0.173224 +-0.222084,-0.222084 +-0.270043,-0.270043 +-0.316969,-0.316969 +-0.362625,-0.362625 +-0.406846,-0.406846 +-0.449451,-0.449451 +-0.490268,-0.490268 +-0.529166,-0.529166 +-0.565937,-0.565937 +-0.600529,-0.600529 +-0.632672,-0.632672 +-0.662335,-0.662335 +-0.689375,-0.689375 +-0.713698,-0.713698 +-0.735198,-0.735198 +-0.75375,-0.75375 +-0.769348,-0.769348 +-0.781894,-0.781894 +-0.791345,-0.791345 +-0.797651,-0.797651 +-0.800814,-0.800814 +-0.800788,-0.800788 +-0.797601,-0.797601 +-0.791255,-0.791255 +-0.781781,-0.781781 +-0.769177,-0.769177 +-0.75359,-0.75359 +-0.734957,-0.734957 +-0.713459,-0.713459 +-0.689124,-0.689124 +-0.662021,-0.662021 +-0.632349,-0.632349 +-0.600132,-0.600132 +-0.565591,-0.565591 +-0.528753,-0.528753 +-0.489873,-0.489873 +-0.448986,-0.448986 +-0.406405,-0.406405 +-0.362119,-0.362119 +-0.316472,-0.316472 +-0.269561,-0.269561 +-0.22157,-0.22157 +-0.172693,-0.172693 +-0.123156,-0.123156 +-0.0730744,-0.0730744 +-0.0227982,-0.0227982 +0.0276646,0.0276646 +0.0779593,0.0779593 +0.127939,0.127939 +0.177468,0.177468 +0.226218,0.226218 +0.274163,0.274163 +0.320976,0.320976 +0.366452,0.366452 +0.410641,0.410641 +0.452967,0.452967 +0.493793,0.493793 +0.532386,0.532386 +0.569046,0.569046 +0.603409,0.603409 +0.635345,0.635345 +0.664781,0.664781 +0.691667,0.691667 +0.71563,0.71563 +0.737,0.737 +0.755238,0.755238 +0.770571,0.770571 +0.782899,0.782899 +0.792064,0.792064 +0.798106,0.798106 +0.800992,0.800992 +0.800682,0.800682 +0.797231,0.797231 +0.790667,0.790667 +0.780838,0.780838 +0.768094,0.768094 +0.752103,0.752103 +0.733342,0.733342 +0.711532,0.711532 +0.686921,0.686921 +0.659713,0.659713 +0.629668,0.629668 +0.597397,0.597397 +0.562516,0.562516 +0.525577,0.525577 +0.486436,0.486436 +0.445485,0.445485 +0.402691,0.402691 +0.358289,0.358289 +0.312565,0.312565 +0.26546,0.26546 +0.217434,0.217434 +0.168495,0.168495 +0.118839,0.118839 +0.0688022,0.0688022 +0.0184327,0.0184327 +-0.0319594,-0.0319594 +-0.0823143,-0.0823143 +-0.132245,-0.132245 +-0.181726,-0.181726 +-0.230477,-0.230477 +-0.278178,-0.278178 +-0.32507,-0.32507 +-0.37034,-0.37034 +-0.41445,-0.41445 +-0.456652,-0.456652 +-0.497219,-0.497219 +-0.535783,-0.535783 +-0.572173,-0.572173 +-0.6064,-0.6064 +-0.638079,-0.638079 +-0.667373,-0.667373 +-0.693905,-0.693905 +-0.717812,-0.717812 +-0.738784,-0.738784 +-0.756847,-0.756847 +-0.771959,-0.771959 +-0.783924,-0.783924 +-0.792903,-0.792903 +-0.798652,-0.798652 +-0.80127,-0.80127 +-0.800693,-0.800693 +-0.79702,-0.79702 +-0.790043,-0.790043 +-0.780155,-0.780155 +-0.766898,-0.766898 +-0.750919,-0.750919 +-0.731671,-0.731671 +-0.709745,-0.709745 +-0.684857,-0.684857 +-0.657379,-0.657379 +-0.627228,-0.627228 +-0.594568,-0.594568 +-0.559613,-0.559613 +-0.522436,-0.522436 +-0.483097,-0.483097 +-0.442067,-0.442067 +-0.398934,-0.398934 +-0.354647,-0.354647 +-0.30851,-0.30851 +-0.261533,-0.261533 +-0.213307,-0.213307 +-0.164237,-0.164237 +-0.114726,-0.114726 +-0.0643603,-0.0643603 +-0.0142236,-0.0142236 +0.0364279,0.0364279 +0.0865637,0.0865637 +0.136572,0.136572 +0.185994,0.185994 +0.234645,0.234645 +0.282398,0.282398 +0.329093,0.329093 +0.374228,0.374228 +0.418258,0.418258 +0.460298,0.460298 +0.500748,0.500748 +0.5391,0.5391 +0.575292,0.575292 +0.609283,0.609283 +0.64081,0.64081 +0.669879,0.669879 +0.696133,0.696133 +0.719849,0.719849 +0.740455,0.740455 +0.758375,0.758375 +0.773155,0.773155 +0.784865,0.784865 +0.793603,0.793603 +0.798949,0.798949 +0.80145,0.80145 diff --git a/src/test/golden_buffers/KeylockReverseTest b/src/test/golden_buffers/KeylockReverseTest index 7d0acbfff16a..2fbdc06eff7b 100644 --- a/src/test/golden_buffers/KeylockReverseTest +++ b/src/test/golden_buffers/KeylockReverseTest @@ -1,512 +1,512 @@ -1.1353,1.1353 -1.00751,1.00751 -0.844492,0.844492 -0.652814,0.652814 -0.438762,0.438762 -0.209594,0.209594 --0.026582,-0.026582 --0.261159,-0.261159 --0.486578,-0.486578 --0.694821,-0.694821 --0.878613,-0.878613 --1.03171,-1.03171 --1.14881,-1.14881 --1.22592,-1.22592 --1.26053,-1.26053 --1.25106,-1.25106 --1.19874,-1.19874 --1.10454,-1.10454 --0.972258,-0.972258 --0.806569,-0.806569 --0.612944,-0.612944 --0.398471,-0.398471 --0.170617,-0.170617 -0.0632482,0.0632482 -0.293999,0.293999 -0.514741,0.514741 -0.717191,0.717191 -0.894452,0.894452 -1.04077,1.04077 -1.15036,1.15036 -1.22028,1.22028 -1.24795,1.24795 -1.23172,1.23172 -1.17344,1.17344 -1.07427,1.07427 -0.938115,0.938115 -0.769522,0.769522 -0.574346,0.574346 -0.360208,0.360208 -0.133007,0.133007 --0.0979073,-0.0979073 --0.325521,-0.325521 --0.541484,-0.541484 --0.738189,-0.738189 --0.909389,-0.909389 --1.04838,-1.04838 --1.15149,-1.15149 --1.21414,-1.21414 --1.23486,-1.23486 --1.21272,-1.21272 --1.14851,-1.14851 --1.04463,-1.04463 --0.904816,-0.904816 --0.733762,-0.733762 --0.537507,-0.537507 --0.32276,-0.32276 --0.097117,-0.097117 -0.131465,0.131465 -0.355255,0.355255 -0.566599,0.566599 -0.758118,0.758118 -0.922889,0.922889 -1.05579,1.05579 -1.15182,1.15182 -1.20766,1.20766 -1.22186,1.22186 -1.19386,1.19386 -1.1242,1.1242 -1.01598,1.01598 -0.872483,0.872483 -0.698898,0.698898 -0.50141,0.50141 -0.286921,0.286921 -0.0626452,0.0626452 --0.163641,-0.163641 --0.383873,-0.383873 --0.590702,-0.590702 --0.776532,-0.776532 --0.93586,-0.93586 --1.06219,-1.06219 --1.15163,-1.15163 --1.20107,-1.20107 --1.20904,-1.20904 --1.17503,-1.17503 --1.10033,-1.10033 --0.987663,-0.987663 --0.84097,-0.84097 --0.665364,-0.665364 --0.46683,-0.46683 --0.25234,-0.25234 --0.0293049,-0.0293049 -0.194415,0.194415 -0.411332,0.411332 -0.613686,0.613686 -0.794587,0.794587 -0.947822,0.947822 -1.06785,1.06785 -1.15119,1.15119 -1.1945,1.1945 -1.19623,1.19623 -1.15668,1.15668 -1.07713,1.07713 -0.960455,0.960455 -0.810482,0.810482 -0.63272,0.63272 -0.433199,0.433199 -0.218928,0.218928 --0.00279968,-0.00279968 --0.22424,-0.22424 --0.437695,-0.437695 --0.635654,-0.635654 --0.811467,-0.811467 --0.95923,-0.95923 --1.07358,-1.07358 --1.15042,-1.15042 --1.1879,-1.1879 --1.18384,-1.18384 --1.13862,-1.13862 --1.05453,-1.05453 --0.933813,-0.933813 --0.780992,-0.780992 --0.601051,-0.601051 --0.400641,-0.400641 --0.186584,-0.186584 -0.033899,0.033899 -0.252933,0.252933 -0.463058,0.463058 -0.656946,0.656946 -0.827924,0.827924 -0.97006,0.97006 -1.07887,1.07887 -1.14977,1.14977 -1.18123,1.18123 -1.17143,1.17143 -1.12144,1.12144 -1.03267,1.03267 -0.907929,0.907929 -0.752252,0.752252 -0.570389,0.570389 -0.369159,0.369159 -0.155217,0.155217 --0.0641559,-0.0641559 --0.2807,-0.2807 --0.487821,-0.487821 --0.677511,-0.677511 --0.843983,-0.843983 --0.980868,-0.980868 --1.0838,-1.0838 --1.1492,-1.1492 --1.17496,-1.17496 --1.1597,-1.1597 --1.1046,-1.1046 --1.01111,-1.01111 --0.882971,-0.882971 --0.724439,-0.724439 --0.540625,-0.540625 --0.338473,-0.338473 --0.124659,-0.124659 -0.0934068,0.0934068 -0.307856,0.307856 -0.511489,0.511489 -0.697672,0.697672 -0.859644,0.859644 -0.991289,0.991289 -1.08903,1.08903 -1.14851,1.14851 -1.16881,1.16881 -1.14842,1.14842 -1.08832,1.08832 -0.990483,0.990483 -0.858899,0.858899 -0.697056,0.697056 -0.511655,0.511655 -0.308632,0.308632 -0.0948792,0.0948792 --0.121858,-0.121858 --0.334435,-0.334435 --0.535255,-0.535255 --0.717452,-0.717452 --0.874801,-0.874801 --1.00184,-1.00184 --1.09389,-1.09389 --1.14845,-1.14845 --1.16299,-1.16299 --1.13759,-1.13759 --1.07246,-1.07246 --0.970677,-0.970677 --0.835157,-0.835157 --0.670895,-0.670895 --0.483406,-0.483406 --0.279452,-0.279452 --0.0657176,-0.0657176 -0.149828,0.149828 -0.36055,0.36055 -0.558566,0.558566 -0.737033,0.737033 -0.890046,0.890046 -1.01223,1.01223 -1.09931,1.09931 -1.14834,1.14834 -1.15761,1.15761 -1.12717,1.12717 -1.05736,1.05736 -0.951215,0.951215 -0.812251,0.812251 -0.645043,0.645043 -0.455761,0.455761 -0.250648,0.250648 -0.0372199,0.0372199 --0.177629,-0.177629 --0.386356,-0.386356 --0.581418,-0.581418 --0.756443,-0.756443 --0.905483,-0.905483 --1.02274,-1.02274 --1.10478,-1.10478 --1.14885,-1.14885 --1.1528,-1.1528 --1.11717,-1.11717 --1.04271,-1.04271 --0.932489,-0.932489 --0.789801,-0.789801 --0.619938,-0.619938 --0.428628,-0.428628 --0.222751,-0.222751 --0.00881796,-0.00881796 -0.204979,0.204979 -0.411906,0.411906 -0.604468,0.604468 -0.775916,0.775916 -0.92076,0.92076 -1.03358,1.03358 -1.11077,1.11077 -1.14956,1.14956 -1.14842,1.14842 -1.10781,1.10781 -1.02865,1.02865 -0.914163,0.914163 -0.767934,0.767934 -0.595273,0.595273 -0.401802,0.401802 -0.194845,0.194845 --0.0190576,-0.0190576 --0.232381,-0.232381 --0.437292,-0.437292 --0.627477,-0.627477 --0.795624,-0.795624 --0.93647,-0.93647 --1.04475,-1.04475 --1.1172,-1.1172 --1.15061,-1.15061 --1.14449,-1.14449 --1.09876,-1.09876 --1.01505,-1.01505 --0.896124,-0.896124 --0.746399,-0.746399 --0.570764,-0.570764 --0.375582,-0.375582 --0.167065,-0.167065 -0.0470556,0.0470556 -0.259545,0.259545 -0.46297,0.46297 -0.650558,0.650558 -0.81552,0.81552 -0.952441,0.952441 -1.05638,1.05638 -1.12367,1.12367 -1.15237,1.15237 -1.14095,1.14095 -1.09027,1.09027 -1.00169,1.00169 -0.87874,0.87874 -0.725253,0.725253 -0.546693,0.546693 -0.349094,0.349094 -0.139622,0.139622 --0.07506,-0.07506 --0.286831,-0.286831 --0.488798,-0.488798 --0.674077,-0.674077 --0.835769,-0.835769 --0.96893,-0.96893 --1.06823,-1.06823 --1.13104,-1.13104 --1.15441,-1.15441 --1.13795,-1.13795 --1.08217,-1.08217 --0.988906,-0.988906 --0.861468,-0.861468 --0.704181,-0.704181 --0.522558,-0.522558 --0.322828,-0.322828 --0.111857,-0.111857 -0.103174,0.103174 -0.314608,0.314608 -0.514901,0.514901 -0.69794,0.69794 -0.856532,0.856532 -0.98572,0.98572 -1.08085,1.08085 -1.13857,1.13857 -1.1569,1.1569 -1.13536,1.13536 -1.07436,1.07436 -0.976319,0.976319 -0.844411,0.844411 -0.683243,0.683243 -0.498408,0.498408 -0.296293,0.296293 -0.0838893,0.0838893 --0.131549,-0.131549 --0.342477,-0.342477 --0.541713,-0.541713 --0.722225,-0.722225 --0.877874,-0.877874 --1.0031,-1.0031 --1.09385,-1.09385 --1.14668,-1.14668 --1.15983,-1.15983 --1.1331,-1.1331 --1.06683,-1.06683 --0.963814,-0.963814 --0.827386,-0.827386 --0.662377,-0.662377 --0.47412,-0.47412 --0.269702,-0.269702 --0.0555911,-0.0555911 -0.160512,0.160512 -0.371044,0.371044 -0.568807,0.568807 -0.747138,0.747138 -0.899788,0.899788 -1.02097,1.02097 -1.10735,1.10735 -1.15525,1.15525 -1.1633,1.1633 -1.13086,1.13086 -1.05952,1.05952 -0.951536,0.951536 -0.810325,0.810325 -0.641034,0.641034 -0.449759,0.449759 -0.242372,0.242372 -0.0269037,0.0269037 --0.189947,-0.189947 --0.400109,-0.400109 --0.596745,-0.596745 --0.772844,-0.772844 --0.922171,-0.922171 --1.03968,-1.03968 --1.12137,-1.12137 --1.1643,-1.1643 --1.16681,-1.16681 --1.12927,-1.12927 --1.05225,-1.05225 --0.938926,-0.938926 --0.793061,-0.793061 --0.619725,-0.619725 --0.42477,-0.42477 --0.214859,-0.214859 -0.00264836,0.00264836 -0.220079,0.220079 -0.429892,0.429892 -0.625366,0.625366 -0.799158,0.799158 -0.945246,0.945246 -1.05884,1.05884 -1.13606,1.13606 -1.17364,1.17364 -1.17092,1.17092 -1.12741,1.12741 -1.04514,1.04514 -0.926273,0.926273 -0.775711,0.775711 -0.597743,0.597743 -0.398967,0.398967 -0.186625,0.186625 --0.032729,-0.032729 --0.251058,-0.251058 --0.460721,-0.460721 --0.654847,-0.654847 --0.826156,-0.826156 --0.969208,-0.969208 --1.07877,-1.07877 --1.15097,-1.15097 --1.18337,-1.18337 --1.17529,-1.17529 --1.12596,-1.12596 --1.03757,-1.03757 --0.913565,-0.913565 --0.75757,-0.75757 --0.575168,-0.575168 --0.372949,-0.372949 --0.1572,-0.1572 -0.0637186,0.0637186 -0.282935,0.282935 -0.492464,0.492464 -0.685136,0.685136 -0.853994,0.853994 -0.993856,0.993856 -1.09916,1.09916 -1.16653,1.16653 -1.19367,1.19367 -1.17941,1.17941 -1.12408,1.12408 -1.03016,1.03016 -0.900157,0.900157 -0.738857,0.738857 -0.552119,0.552119 -0.345653,0.345653 -0.127213,0.127213 --0.0959141,-0.0959141 --0.315723,-0.315723 --0.5249,-0.5249 --0.716222,-0.716222 --0.883048,-0.883048 --1.0191,-1.0191 --1.12024,-1.12024 --1.1825,-1.1825 --1.20375,-1.20375 --1.18368,-1.18368 --1.12215,-1.12215 --1.02223,-1.02223 --0.886213,-0.886213 --0.71964,-0.71964 --0.527802,-0.527802 --0.317545,-0.317545 --0.0962029,-0.0962029 -0.129054,0.129054 -0.349614,0.349614 -0.558807,0.558807 -0.74857,0.74857 -0.91275,0.91275 -1.04503,1.04503 -1.14173,1.14173 -1.19896,1.19896 -1.21429,1.21429 -1.18784,1.18784 -1.12013,1.12013 -1.01353,1.01353 -0.871687,0.871687 -0.699314,0.699314 -0.502638,0.502638 -0.288436,0.288436 -0.0636963,0.0636963 --0.163424,-0.163424 --0.385015,-0.385015 --0.593512,-0.593512 --0.781769,-0.781769 --0.943255,-0.943255 --1.07194,-1.07194 --1.16388,-1.16388 --1.21526,-1.21526 --1.2248,-1.2248 --1.19187,-1.19187 --1.11763,-1.11763 --1.00436,-1.00436 --0.856019,-0.856019 --0.678236,-0.678236 --0.476274,-0.476274 --0.257653,-0.257653 --0.0302052,-0.0302052 -0.199223,0.199223 -0.421241,0.421241 -0.629716,0.629716 -0.816138,0.816138 -0.974517,0.974517 -1.09925,1.09925 -1.18629,1.18629 -1.23197,1.23197 -1.23525,1.23525 -1.19543,1.19543 -1.11435,1.11435 -0.994309,0.994309 -0.839666,0.839666 -0.655548,0.655548 -0.448617,0.448617 -0.226064,0.226064 --0.00497451,-0.00497451 --0.236125,-0.236125 --0.459236,-0.459236 --0.66678,-0.66678 --0.851452,-0.851452 --1.00693,-1.00693 --1.12732,-1.12732 --1.2091,-1.2091 --1.2489,-1.2489 --1.24543,-1.24543 --1.1987,-1.1987 --1.11024,-1.11024 --0.983206,-0.983206 --0.822,-0.822 --0.631765,-0.631765 --0.419523,-0.419523 --0.19258,-0.19258 -0.0417103,0.0417103 -0.274618,0.274618 -0.498576,0.498576 -0.705083,0.705083 -0.887779,0.887779 -1.03979,1.03979 -1.15589,1.15589 -1.23222,1.23222 -1.26562,1.26562 -1.25516,1.25516 -1.20124,1.20124 -1.10536,1.10536 -0.971059,0.971059 -0.802952,0.802952 -0.606589,0.606589 -0.388663,0.388663 -0.157456,0.157456 +-0.524209,-0.524209 +-0.48325,-0.48325 +-0.44034,-0.44034 +-0.395863,-0.395863 +-0.350198,-0.350198 +-0.303047,-0.303047 +-0.255155,-0.255155 +-0.206316,-0.206316 +-0.15684,-0.15684 +-0.10704,-0.10704 +-0.0569178,-0.0569178 +-0.006903,-0.006903 +0.0431255,0.0431255 +0.0926204,0.0926204 +0.141675,0.141675 +0.189836,0.189836 +0.237231,0.237231 +0.283319,0.283319 +0.328319,0.328319 +0.371577,0.371577 +0.41352,0.41352 +0.453321,0.453321 +0.493648,0.493648 +0.52961,0.52961 +0.563827,0.563827 +0.59524,0.59524 +0.624572,0.624572 +0.651126,0.651126 +0.675032,0.675032 +0.696391,0.696391 +0.714601,0.714601 +0.730318,0.730318 +0.742712,0.742712 +0.752464,0.752464 +0.758983,0.758983 +0.762597,0.762597 +0.763212,0.763212 +0.760636,0.760636 +0.755348,0.755348 +0.746818,0.746818 +0.735573,0.735573 +0.721293,0.721293 +0.704328,0.704328 +0.684587,0.684587 +0.662192,0.662192 +0.63725,0.63725 +0.60994,0.60994 +0.580139,0.580139 +0.548396,0.548396 +0.514218,0.514218 +0.478547,0.478547 +0.440637,0.440637 +0.401565,0.401565 +0.360535,0.360535 +0.318644,0.318644 +0.275347,0.275347 +0.231153,0.231153 +0.186267,0.186267 +0.140563,0.140563 +0.0947039,0.0947039 +0.0484321,0.0484321 +0.00215811,0.00215811 +-0.043971,-0.043971 +-0.0899174,-0.0899174 +-0.135143,-0.135143 +-0.179901,-0.179901 +-0.223682,-0.223682 +-0.266536,-0.266536 +-0.308213,-0.308213 +-0.348448,-0.348448 +-0.387293,-0.387293 +-0.424399,-0.424399 +-0.459766,-0.459766 +-0.493216,-0.493216 +-0.524527,-0.524527 +-0.553774,-0.553774 +-0.580649,-0.580649 +-0.60518,-0.60518 +-0.62722,-0.62722 +-0.646691,-0.646691 +-0.66351,-0.66351 +-0.677713,-0.677713 +-0.689116,-0.689116 +-0.697727,-0.697727 +-0.703568,-0.703568 +-0.706516,-0.706516 +-0.706783,-0.706783 +-0.703996,-0.703996 +-0.698698,-0.698698 +-0.69023,-0.69023 +-0.679434,-0.679434 +-0.665624,-0.665624 +-0.649432,-0.649432 +-0.630425,-0.630425 +-0.609208,-0.609208 +-0.585318,-0.585318 +-0.559393,-0.559393 +-0.531182,-0.531182 +-0.500813,-0.500813 +-0.468703,-0.468703 +-0.434583,-0.434583 +-0.39895,-0.39895 +-0.361709,-0.361709 +-0.323136,-0.323136 +-0.283312,-0.283312 +-0.242478,-0.242478 +-0.200756,-0.200756 +-0.15825,-0.15825 +-0.11527,-0.11527 +-0.0719108,-0.0719108 +-0.0282457,-0.0282457 +0.015244,0.015244 +0.0588027,0.0588027 +0.101891,0.101891 +0.144549,0.144549 +0.186524,0.186524 +0.22768,0.22768 +0.267809,0.267809 +0.306835,0.306835 +0.344515,0.344515 +0.380749,0.380749 +0.415381,0.415381 +0.44825,0.44825 +0.479347,0.479347 +0.508305,0.508305 +0.535281,0.535281 +0.560025,0.560025 +0.582441,0.582441 +0.602466,0.602466 +0.62006,0.62006 +0.635066,0.635066 +0.647551,0.647551 +0.657323,0.657323 +0.664499,0.664499 +0.668841,0.668841 +0.670689,0.670689 +0.669554,0.669554 +0.665969,0.665969 +0.659476,0.659476 +0.650485,0.650485 +0.638704,0.638704 +0.624493,0.624493 +0.607719,0.607719 +0.588503,0.588503 +0.566907,0.566907 +0.543023,0.543023 +0.517025,0.517025 +0.48887,0.48887 +0.458903,0.458903 +0.426901,0.426901 +0.393417,0.393417 +0.358201,0.358201 +0.321682,0.321682 +0.283776,0.283776 +0.24488,0.24488 +0.204932,0.204932 +0.164195,0.164195 +0.122971,0.122971 +0.0809752,0.0809752 +0.0390817,0.0390817 +-0.00332461,-0.00332461 +-0.0453799,-0.0453799 +-0.0873974,-0.0873974 +-0.128916,-0.128916 +-0.169993,-0.169993 +-0.210246,-0.210246 +-0.249633,-0.249633 +-0.288071,-0.288071 +-0.32511,-0.32511 +-0.361054,-0.361054 +-0.395287,-0.395287 +-0.427988,-0.427988 +-0.458934,-0.458934 +-0.487913,-0.487913 +-0.514993,-0.514993 +-0.539863,-0.539863 +-0.562559,-0.562559 +-0.582927,-0.582927 +-0.600934,-0.600934 +-0.616427,-0.616427 +-0.629466,-0.629466 +-0.639842,-0.639842 +-0.647641,-0.647641 +-0.652793,-0.652793 +-0.655252,-0.655252 +-0.655061,-0.655061 +-0.652109,-0.652109 +-0.646556,-0.646556 +-0.63834,-0.63834 +-0.627467,-0.627467 +-0.614118,-0.614118 +-0.598122,-0.598122 +-0.579758,-0.579758 +-0.558973,-0.558973 +-0.535976,-0.535976 +-0.510566,-0.510566 +-0.483408,-0.483408 +-0.453841,-0.453841 +-0.422791,-0.422791 +-0.389676,-0.389676 +-0.355234,-0.355234 +-0.319038,-0.319038 +-0.28183,-0.28183 +-0.243117,-0.243117 +-0.203711,-0.203711 +-0.163174,-0.163174 +-0.122179,-0.122179 +-0.0804619,-0.0804619 +-0.0385906,-0.0385906 +0.00367346,0.00367346 +0.045715,0.045715 +0.0878443,0.0878443 +0.129416,0.129416 +0.170599,0.170599 +0.211068,0.211068 +0.250729,0.250729 +0.289352,0.289352 +0.326823,0.326823 +0.363005,0.363005 +0.397635,0.397635 +0.43078,0.43078 +0.462071,0.462071 +0.491561,0.491561 +0.518961,0.518961 +0.544381,0.544381 +0.567401,0.567401 +0.588299,0.588299 +0.606656,0.606656 +0.622558,0.622558 +0.635966,0.635966 +0.646666,0.646666 +0.654799,0.654799 +0.660175,0.660175 +0.66287,0.66287 +0.662843,0.662843 +0.660006,0.660006 +0.65453,0.65453 +0.646266,0.646266 +0.635374,0.635374 +0.621818,0.621818 +0.60571,0.60571 +0.586937,0.586937 +0.565982,0.565982 +0.542317,0.542317 +0.516688,0.516688 +0.488667,0.488667 +0.458654,0.458654 +0.426726,0.426726 +0.392952,0.392952 +0.357454,0.357454 +0.320515,0.320515 +0.282071,0.282071 +0.242512,0.242512 +0.201773,0.201773 +0.160143,0.160143 +0.117894,0.117894 +0.0748354,0.0748354 +0.0317184,0.0317184 +-0.0119588,-0.0119588 +-0.0554527,-0.0554527 +-0.098862,-0.098862 +-0.141956,-0.141956 +-0.184558,-0.184558 +-0.226447,-0.226447 +-0.267584,-0.267584 +-0.307533,-0.307533 +-0.346492,-0.346492 +-0.38393,-0.38393 +-0.419959,-0.419959 +-0.454333,-0.454333 +-0.48682,-0.48682 +-0.517471,-0.517471 +-0.546014,-0.546014 +-0.572248,-0.572248 +-0.596452,-0.596452 +-0.617854,-0.617854 +-0.637161,-0.637161 +-0.653561,-0.653561 +-0.667463,-0.667463 +-0.678579,-0.678579 +-0.686915,-0.686915 +-0.692384,-0.692384 +-0.695184,-0.695184 +-0.694783,-0.694783 +-0.691888,-0.691888 +-0.685781,-0.685781 +-0.677023,-0.677023 +-0.665382,-0.665382 +-0.650926,-0.650926 +-0.63375,-0.63375 +-0.613931,-0.613931 +-0.591444,-0.591444 +-0.56653,-0.56653 +-0.539123,-0.539123 +-0.509434,-0.509434 +-0.477561,-0.477561 +-0.443589,-0.443589 +-0.407692,-0.407692 +-0.369994,-0.369994 +-0.330656,-0.330656 +-0.289817,-0.289817 +-0.247662,-0.247662 +-0.204332,-0.204332 +-0.160081,-0.160081 +-0.114914,-0.114914 +-0.0692885,-0.0692885 +-0.0229984,-0.0229984 +0.0232713,0.0232713 +0.0697828,0.0697828 +0.116108,0.116108 +0.16203,0.16203 +0.207594,0.207594 +0.252279,0.252279 +0.29619,0.29619 +0.33896,0.33896 +0.38051,0.38051 +0.420609,0.420609 +0.459065,0.459065 +0.495887,0.495887 +0.530628,0.530628 +0.563371,0.563371 +0.593962,0.593962 +0.622014,0.622014 +0.647847,0.647847 +0.670868,0.670868 +0.69134,0.69134 +0.708954,0.708954 +0.723744,0.723744 +0.735572,0.735572 +0.744394,0.744394 +0.750192,0.750192 +0.752899,0.752899 +0.752496,0.752496 +0.749003,0.749003 +0.742391,0.742391 +0.732651,0.732651 +0.719901,0.719901 +0.704072,0.704072 +0.685349,0.685349 +0.663573,0.663573 +0.639179,0.639179 +0.611833,0.611833 +0.582012,0.582012 +0.549587,0.549587 +0.514767,0.514767 +0.477701,0.477701 +0.438507,0.438507 +0.397354,0.397354 +0.354325,0.354325 +0.309753,0.309753 +0.263642,0.263642 +0.216299,0.216299 +0.167843,0.167843 +0.118515,0.118515 +0.0687554,0.0687554 +0.0186311,0.0186311 +-0.0315551,-0.0315551 +-0.0815779,-0.0815779 +-0.131406,-0.131406 +-0.180514,-0.180514 +-0.229155,-0.229155 +-0.276643,-0.276643 +-0.32314,-0.32314 +-0.36834,-0.36834 +-0.411943,-0.411943 +-0.454062,-0.454062 +-0.494125,-0.494125 +-0.532389,-0.532389 +-0.568351,-0.568351 +-0.602105,-0.602105 +-0.63331,-0.63331 +-0.662101,-0.662101 +-0.687959,-0.687959 +-0.711344,-0.711344 +-0.731523,-0.731523 +-0.74895,-0.74895 +-0.763246,-0.763246 +-0.774397,-0.774397 +-0.782484,-0.782484 +-0.78729,-0.78729 +-0.788986,-0.788986 +-0.787425,-0.787425 +-0.782577,-0.782577 +-0.774742,-0.774742 +-0.763501,-0.763501 +-0.749321,-0.749321 +-0.732041,-0.732041 +-0.711686,-0.711686 +-0.688588,-0.688588 +-0.662482,-0.662482 +-0.633901,-0.633901 +-0.602453,-0.602453 +-0.568804,-0.568804 +-0.5326,-0.5326 +-0.494401,-0.494401 +-0.454042,-0.454042 +-0.411877,-0.411877 +-0.368036,-0.368036 +-0.322537,-0.322537 +-0.276006,-0.276006 +-0.227938,-0.227938 +-0.179308,-0.179308 +-0.129626,-0.129626 +-0.0796584,-0.0796584 +-0.0290311,-0.0290311 +0.0213593,0.0213593 +0.0720967,0.0720967 +0.122112,0.122112 +0.172078,0.172078 +0.220984,0.220984 +0.269363,0.269363 +0.316383,0.316383 +0.362278,0.362278 +0.406717,0.406717 +0.449375,0.449375 +0.490473,0.490473 +0.529352,0.529352 +0.566186,0.566186 +0.600809,0.600809 +0.632797,0.632797 +0.662454,0.662454 +0.689297,0.689297 +0.713327,0.713327 +0.734535,0.734535 +0.752721,0.752721 +0.76781,0.76781 +0.779912,0.779912 +0.788684,0.788684 +0.794359,0.794359 +0.796752,0.796752 +0.795911,0.795911 +0.791811,0.791811 +0.784568,0.784568 +0.773966,0.773966 +0.760406,0.760406 +0.743584,0.743584 +0.723796,0.723796 +0.701061,0.701061 +0.675404,0.675404 +0.647028,0.647028 +0.616044,0.616044 +0.582425,0.582425 +0.546581,0.546581 +0.508257,0.508257 +0.468103,0.468103 +0.425859,0.425859 +0.381863,0.381863 +0.336504,0.336504 +0.289315,0.289315 +0.241457,0.241457 +0.192152,0.192152 +0.142275,0.142275 +0.0917689,0.0917689 +0.0407561,0.0407561 +-0.0103185,-0.0103185 +-0.0614803,-0.0614803 +-0.112332,-0.112332 +-0.162825,-0.162825 +-0.212626,-0.212626 +-0.261664,-0.261664 +-0.309558,-0.309558 +-0.356291,-0.356291 +-0.401577,-0.401577 +-0.445251,-0.445251 +-0.487167,-0.487167 +-0.527099,-0.527099 +-0.564818,-0.564818 +-0.600508,-0.600508 +-0.633424,-0.633424 +-0.664128,-0.664128 +-0.691865,-0.691865 +-0.717009,-0.717009 +-0.73912,-0.73912 +-0.758321,-0.758321 +-0.774363,-0.774363 +-0.787289,-0.787289 +-0.797097,-0.797097 +-0.803575,-0.803575 +-0.806798,-0.806798 +-0.806814,-0.806814 +-0.803433,-0.803433 +-0.796892,-0.796892 +-0.787047,-0.787047 +-0.773953,-0.773953 +-0.757832,-0.757832 +-0.738461,-0.738461 +-0.716209,-0.716209 +-0.690966,-0.690966 +-0.66285,-0.66285 +-0.632166,-0.632166 +-0.598699,-0.598699 +-0.562979,-0.562979 +-0.524749,-0.524749 +-0.484555,-0.484555 +-0.442168,-0.442168 +-0.398159,-0.398159 +-0.352373,-0.352373 +-0.305104,-0.305104 +-0.256717,-0.256717 +-0.207015,-0.207015 +-0.156741,-0.156741 +-0.105511,-0.105511 +-0.0540654,-0.0540654 +-0.00215057,-0.00215057 +0.049682,0.049682 +0.101343,0.101343 +0.152651,0.152651 +0.203394,0.203394 +0.253262,0.253262 +0.30233,0.30233 +0.349844,0.349844 +0.396383,0.396383 diff --git a/src/test/signalpathtest.cpp b/src/test/signalpathtest.cpp index 849d59c93a6a..a0840243e528 100644 --- a/src/test/signalpathtest.cpp +++ b/src/test/signalpathtest.cpp @@ -8,7 +8,7 @@ const char* BaseSignalPathTest::m_sGroup2 = "[Channel2]"; const char* BaseSignalPathTest::m_sGroup3 = "[Channel3]"; const char* BaseSignalPathTest::m_sPreviewGroup = "[PreviewDeck1]"; const char* BaseSignalPathTest::m_sSamplerGroup = "[Sampler1]"; -const double BaseSignalPathTest::kDefaultRateRange = 4.0; +const double BaseSignalPathTest::kDefaultRateRange = 0.08; const double BaseSignalPathTest::kDefaultRateDir = 1.0; const double BaseSignalPathTest::kRateRangeDivisor = kDefaultRateDir * kDefaultRateRange; const int BaseSignalPathTest::kProcessBufferSize = 1024; From 16d46f022da106f875bc47d3103b0a54c099e2f6 Mon Sep 17 00:00:00 2001 From: be_ Date: Sat, 25 Nov 2017 14:11:33 -0600 Subject: [PATCH 21/25] DlgPrefDecks: make Cancel button work and pay down some technical debt --- src/engine/ratecontrol.cpp | 110 ++++++----- src/engine/ratecontrol.h | 73 +++---- src/preferences/dialog/dlgprefdeck.cpp | 233 ++++++++++++++--------- src/preferences/dialog/dlgprefdeck.h | 5 +- src/preferences/dialog/dlgprefdeckdlg.ui | 52 ++--- 5 files changed, 270 insertions(+), 203 deletions(-) diff --git a/src/engine/ratecontrol.cpp b/src/engine/ratecontrol.cpp index 76b58cf79044..6b905f0f62b7 100644 --- a/src/engine/ratecontrol.cpp +++ b/src/engine/ratecontrol.cpp @@ -17,18 +17,16 @@ #include -// Static default values for rate buttons (percents). Note that these are not -// actually used -- the preferences code sets the values that are stored in the -// user's configuration. These are just fail safe defaults. -double RateControl::m_dTemp = 4.00; //(eg. 4.00%) -double RateControl::m_dTempSmall = 2.00; -double RateControl::m_dPerm = 0.50; -double RateControl::m_dPermSmall = 0.05; - -int RateControl::m_iRateRampSensitivity = 250; +// Static default values for rate buttons (percents) +double RateControl::m_dTemporaryRateChangeCoarse; +double RateControl::m_dTemporaryRateChangeFine; +double RateControl::m_dPermanentRateChangeCoarse; +double RateControl::m_dPermanentRateChangeFine; +int RateControl::m_iRateRampSensitivity; +enum RateControl::RampMode RateControl::m_eRateRampMode; + const double RateControl::kWheelMultiplier = 40.0; const double RateControl::kPausedJogMultiplier = 18.0; -enum RateControl::RATERAMP_MODE RateControl::m_eRateRampMode = RateControl::RATERAMP_STEP; RateControl::RateControl(QString group, UserSettingsPointer pConfig) @@ -161,14 +159,15 @@ RateControl::RateControl(QString group, // FIXME: This should be dependent on sample rate/block size or something m_pJogFilter->setFilterLength(25); - // Update Internal Settings - // Set Pitchbend Mode - m_eRateRampMode = (RateControl::RATERAMP_MODE) - getConfig()->getValueString(ConfigKey("[Controls]","RateRamp")).toInt(); +// // Update Internal Settings +// // Set Pitchbend Mode +// m_eRateRampMode = static_cast( +// getConfig()->getValue(ConfigKey("[Controls]","RateRamp"), +// static_cast(RampMode::Stepping))); - // Set the Sensitivity - m_iRateRampSensitivity = - getConfig()->getValueString(ConfigKey("[Controls]","RateRampSensitivity")).toInt(); +// // Set the Sensitivity +// m_iRateRampSensitivity = +// getConfig()->getValueString(ConfigKey("[Controls]","RateRampSensitivity")).toInt(); m_pSyncMode = new ControlProxy(group, "sync_mode", this); } @@ -209,15 +208,17 @@ void RateControl::setBpmControl(BpmControl* bpmcontrol) { } //static -void RateControl::setRateRamp(bool linearMode) -{ - m_eRateRampMode = linearMode ? - RateControl::RATERAMP_LINEAR : RateControl::RATERAMP_STEP; +void RateControl::setRateRampMode(RampMode mode) { + m_eRateRampMode = mode; } //static -void RateControl::setRateRampSensitivity(int sense) -{ +RateControl::RampMode RateControl::getRateRampMode() { + return m_eRateRampMode; +} + +//static +void RateControl::setRateRampSensitivity(int sense) { // Reverse the actual sensitivity value passed. // That way the gui works in an intuitive manner. sense = RATE_SENSITIVITY_MAX - sense + RATE_SENSITIVITY_MIN; @@ -231,23 +232,43 @@ void RateControl::setRateRampSensitivity(int sense) } //static -void RateControl::setTemp(double v) { - m_dTemp = v; +void RateControl::setTemporaryRateChangeCoarseAmount(double v) { + m_dTemporaryRateChangeCoarse = v; } //static -void RateControl::setTempSmall(double v) { - m_dTempSmall = v; +void RateControl::setTemporaryRateChangeFineAmount(double v) { + m_dTemporaryRateChangeFine = v; } //static -void RateControl::setPerm(double v) { - m_dPerm = v; +void RateControl::setPermanentRateChangeCoarseAmount(double v) { + m_dPermanentRateChangeCoarse = v; } //static -void RateControl::setPermSmall(double v) { - m_dPermSmall = v; +void RateControl::setPermanentRateChangeFineAmount(double v) { + m_dPermanentRateChangeFine = v; +} + +//static +double RateControl::getTemporaryRateChangeCoarseAmount() { + return m_dTemporaryRateChangeCoarse; +} + +//static +double RateControl::getTemporaryRateChangeFineAmount() { + return m_dTemporaryRateChangeFine; +} + +//static +double RateControl::getPermanentRateChangeCoarseAmount() { + return m_dPermanentRateChangeCoarse; +} + +//static +double RateControl::getPermanentRateChangeFineAmount() { + return m_dPermanentRateChangeFine; } void RateControl::slotReverseRollActivate(double v) { @@ -283,7 +304,7 @@ void RateControl::slotControlRatePermDown(double) // Adjusts temp rate down if button pressed if (buttonRatePermDown->get()) { m_pRateSlider->set(m_pRateSlider->get() - - m_pRateDir->get() * m_dPerm / (100 * m_pRateRange->get())); + m_pRateDir->get() * m_dPermanentRateChangeCoarse / (100 * m_pRateRange->get())); } } @@ -292,7 +313,7 @@ void RateControl::slotControlRatePermDownSmall(double) // Adjusts temp rate down if button pressed if (buttonRatePermDownSmall->get()) m_pRateSlider->set(m_pRateSlider->get() - - m_pRateDir->get() * m_dPermSmall / (100. * m_pRateRange->get())); + m_pRateDir->get() * m_dPermanentRateChangeFine / (100. * m_pRateRange->get())); } void RateControl::slotControlRatePermUp(double) @@ -300,7 +321,7 @@ void RateControl::slotControlRatePermUp(double) // Adjusts temp rate up if button pressed if (buttonRatePermUp->get()) { m_pRateSlider->set(m_pRateSlider->get() + - m_pRateDir->get() * m_dPerm / (100. * m_pRateRange->get())); + m_pRateDir->get() * m_dPermanentRateChangeCoarse / (100. * m_pRateRange->get())); } } @@ -309,7 +330,7 @@ void RateControl::slotControlRatePermUpSmall(double) // Adjusts temp rate up if button pressed if (buttonRatePermUpSmall->get()) m_pRateSlider->set(m_pRateSlider->get() + - m_pRateDir->get() * m_dPermSmall / (100. * m_pRateRange->get())); + m_pRateDir->get() * m_dPermanentRateChangeFine / (100. * m_pRateRange->get())); } void RateControl::slotControlRateTempDown(double) @@ -540,7 +561,7 @@ double RateControl::process(const double rate, if ((m_ePbPressed) && (!m_bTempStarted)) { m_bTempStarted = true; - if (m_eRateRampMode == RATERAMP_STEP) { + if (m_eRateRampMode == RampMode::Stepping) { // old temporary pitch shift behavior double range = m_pRateRange->get(); @@ -550,9 +571,9 @@ double RateControl::process(const double rate, return kNoTrigger; } - double change = m_pRateDir->get() * m_dTemp / + double change = m_pRateDir->get() * m_dTemporaryRateChangeCoarse / (100. * range); - double csmall = m_pRateDir->get() * m_dTempSmall / + double csmall = m_pRateDir->get() * m_dTemporaryRateChangeFine / (100. * range); if (buttonRateTempUp->get()) @@ -563,9 +584,8 @@ double RateControl::process(const double rate, addRateTemp(csmall); else if (buttonRateTempDownSmall->get()) subRateTemp(csmall); - } else { - // m_eRateRampMode == RATERAMP_LINEAR - m_dTempRateChange = ((double)latrate / ((double)m_iRateRampSensitivity / 100.)); + } else if (m_eRateRampMode == RampMode::Linear) { + m_dTemporaryRateChangeCoarse = ((double)latrate / ((double)m_iRateRampSensitivity / 100.)); if (m_eRampBackMode == RATERAMP_RAMPBACK_PERIOD) m_dRateTempRampbackChange = 0.0; @@ -573,13 +593,13 @@ double RateControl::process(const double rate, } - if (m_eRateRampMode == RATERAMP_LINEAR) { + if (m_eRateRampMode == RampMode::Linear) { if (m_ePbCurrent) { // apply ramped pitchbending if (m_ePbCurrent == RateControl::RATERAMP_UP) { - addRateTemp(m_dTempRateChange); + addRateTemp(m_dTemporaryRateChangeCoarse); } else if (m_ePbCurrent == RateControl::RATERAMP_DOWN) { - subRateTemp(m_dTempRateChange); + subRateTemp(m_dTemporaryRateChangeCoarse); } } else if ((m_bTempStarted) || ((m_eRampBackMode != RATERAMP_RAMPBACK_NONE) @@ -605,7 +625,7 @@ double RateControl::process(const double rate, resetRateTemp(); } } - } else if ((m_eRateRampMode == RATERAMP_STEP) && (m_bTempStarted)) { + } else if ((m_eRateRampMode == RampMode::Stepping) && (m_bTempStarted)) { if (!m_ePbCurrent) { m_bTempStarted = false; resetRateTemp(); diff --git a/src/engine/ratecontrol.h b/src/engine/ratecontrol.h index 3341b7f51f79..6d95b0df148b 100644 --- a/src/engine/ratecontrol.h +++ b/src/engine/ratecontrol.h @@ -34,6 +34,31 @@ class RateControl : public EngineControl { RateControl(QString group, UserSettingsPointer pConfig); virtual ~RateControl(); + // Enumerations which hold the state of the pitchbend buttons. + // These enumerations can be used like a bitmask. + enum RATERAMP_DIRECTION { + RATERAMP_NONE = 0, // No buttons are held down + RATERAMP_DOWN = 1, // Down button is being held + RATERAMP_UP = 2, // Up button is being held + RATERAMP_BOTH = 3 // Both buttons are being held down + }; + + enum class RampMode { + Stepping = 0, // pitch takes a temporary step up/down a certain amount + Linear = 1 // pitch moves up/down in a progresively linear fashion + }; + + // This defines how the rate returns to normal. Currently unused. + // Rate ramp back mode: + // RATERAMP_RAMPBACK_NONE: returns back to normal all at once. + // RATERAMP_RAMPBACK_SPEED: moves back in a linearly progresive manner. + // RATERAMP_RAMPBACK_PERIOD: returns to normal within a period of time. + enum RATERAMP_RAMPBACK_MODE { + RATERAMP_RAMPBACK_NONE, + RATERAMP_RAMPBACK_SPEED, + RATERAMP_RAMPBACK_PERIOD + }; + void setBpmControl(BpmControl* bpmcontrol); // Must be called during each callback of the audio thread so that // RateControl has a chance to update itself. @@ -50,17 +75,23 @@ class RateControl : public EngineControl { double calcRateRatio() const; // Set rate change when temp rate button is pressed - static void setTemp(double v); + static void setTemporaryRateChangeCoarseAmount(double v); + static double getTemporaryRateChangeCoarseAmount(); // Set rate change when temp rate small button is pressed - static void setTempSmall(double v); + static void setTemporaryRateChangeFineAmount(double v); + static double getTemporaryRateChangeFineAmount(); // Set rate change when perm rate button is pressed - static void setPerm(double v); + static void setPermanentRateChangeCoarseAmount(double v); + static double getPermanentRateChangeCoarseAmount(); // Set rate change when perm rate small button is pressed - static void setPermSmall(double v); + static void setPermanentRateChangeFineAmount(double v); + static double getPermanentRateChangeFineAmount(); // Set Rate Ramp Mode - static void setRateRamp(bool); + static void setRateRampMode(RampMode mode); + static RampMode getRateRampMode(); // Set Rate Ramp Sensitivity static void setRateRampSensitivity(int); + static int getRateRampSensitivity(); virtual void notifySeek(double dNewPlaypos); public slots: @@ -94,7 +125,7 @@ class RateControl : public EngineControl { double getTempRate(void); // Values used when temp and perm rate buttons are pressed - static double m_dTemp, m_dTempSmall, m_dPerm, m_dPermSmall; + static double m_dTemporaryRateChangeCoarse, m_dTemporaryRateChangeFine, m_dPermanentRateChangeCoarse, m_dPermanentRateChangeFine; ControlPushButton *buttonRateTempDown, *buttonRateTempDownSmall, *buttonRateTempUp, *buttonRateTempUpSmall; @@ -130,34 +161,6 @@ class RateControl : public EngineControl { ControlProxy* m_pSyncMode; ControlProxy* m_pSlipEnabled; - // Enumerations which hold the state of the pitchbend buttons. - // These enumerations can be used like a bitmask. - enum RATERAMP_DIRECTION { - RATERAMP_NONE = 0, // No buttons are held down - RATERAMP_DOWN = 1, // Down button is being held - RATERAMP_UP = 2, // Up button is being held - RATERAMP_BOTH = 3 // Both buttons are being held down - }; - - // Rate ramping mode: - // RATERAMP_STEP: pitch takes a temporary step up/down a certain amount. - // RATERAMP_LINEAR: pitch moves up/down in a progresively linear fashion. - enum RATERAMP_MODE { - RATERAMP_STEP = 0, - RATERAMP_LINEAR = 1 - }; - - // This defines how the rate returns to normal. Currently unused. - // Rate ramp back mode: - // RATERAMP_RAMPBACK_NONE: returns back to normal all at once. - // RATERAMP_RAMPBACK_SPEED: moves back in a linearly progresive manner. - // RATERAMP_RAMPBACK_PERIOD: returns to normal within a period of time. - enum RATERAMP_RAMPBACK_MODE { - RATERAMP_RAMPBACK_NONE, - RATERAMP_RAMPBACK_SPEED, - RATERAMP_RAMPBACK_PERIOD - }; - // The current rate ramping direction. Only holds the last button pressed. int m_ePbCurrent; // The rate ramping buttons which are currently being pressed. @@ -168,7 +171,7 @@ class RateControl : public EngineControl { // Set to the rate change used for rate temp double m_dTempRateChange; // Set the Temporary Rate Change Mode - static enum RATERAMP_MODE m_eRateRampMode; + static RampMode m_eRateRampMode; // The Rate Temp Sensitivity, the higher it is the slower it gets static int m_iRateRampSensitivity; // Factor applied to the deprecated "wheel" rate value. diff --git a/src/preferences/dialog/dlgprefdeck.cpp b/src/preferences/dialog/dlgprefdeck.cpp index 1774cfb7f660..8be915ebc30f 100644 --- a/src/preferences/dialog/dlgprefdeck.cpp +++ b/src/preferences/dialog/dlgprefdeck.cpp @@ -38,8 +38,14 @@ #include "defs_urls.h" namespace { - constexpr int kDefaultRateRangePercent = 8; - constexpr double kRateDirectionInverted = -1; +constexpr int kDefaultRateRangePercent = 8; +constexpr double kRateDirectionInverted = -1; +constexpr RateControl::RampMode kDefaultRampingMode = RateControl::RampMode::Stepping; +constexpr double kDefaultTemporaryRateChangeCoarse = 4.00; // percent +constexpr double kDefaultTemporaryRateChangeFine = 2.00; +constexpr double kDefaultPermanentRateChangeCoarse = 0.50; +constexpr double kDefaultPermanentRateChangeFine = 0.05; +constexpr int kDefaultRateRampSensitivity = 250; } DlgPrefDeck::DlgPrefDeck(QWidget * parent, MixxxMainWindow * mixxx, @@ -61,6 +67,29 @@ DlgPrefDeck::DlgPrefDeck(QWidget * parent, MixxxMainWindow * mixxx, m_pNumSamplers->connectValueChanged(SLOT(slotNumSamplersChanged(double))); slotNumSamplersChanged(m_pNumSamplers->get(), true); + // Set default value in config file and control objects, if not present + // Default is "0" = Mixxx Mode + int cueDefaultValue = m_pConfig->getValue( + ConfigKey("[Controls]", "CueDefault"), 0); + + // Update combo box + // The itemData values are out of order to avoid breaking configurations + // when Mixxx mode (no blinking) was introduced. + // TODO: replace magic numbers with an enum class + ComboBoxCueMode->addItem(tr("Mixxx mode"), 0); + ComboBoxCueMode->addItem(tr("Mixxx mode (no blinking)"), 4); + ComboBoxCueMode->addItem(tr("Pioneer mode"), 1); + ComboBoxCueMode->addItem(tr("Denon mode"), 2); + ComboBoxCueMode->addItem(tr("Numark mode"), 3); + ComboBoxCueMode->addItem(tr("CUP mode"), 5); + const int cueModeIndex = cueDefaultIndexByData(cueDefaultValue); + ComboBoxCueMode->setCurrentIndex(cueModeIndex); + slotCueModeCombobox(cueModeIndex); + for (ControlProxy* pControl : m_cueControls) { + pControl->set(m_iCueMode); + } + connect(ComboBoxCueMode, SIGNAL(activated(int)), this, SLOT(slotCueModeCombobox(int))); + // Track time display configuration m_pControlTrackTimeDisplay = new ControlObject( ConfigKey("[Controls]", "ShowDurationRemaining")); @@ -176,35 +205,40 @@ DlgPrefDeck::DlgPrefDeck(QWidget * parent, MixxxMainWindow * mixxx, // // Rate buttons configuration // - //NOTE: THESE DEFAULTS ARE A LIE! You'll need to hack the same values into the static variables - // at the top of ratecontrol.cpp - // - // "Left" and "Right" in the ConfigKeys refer to left versus right clicking - // on the skin buttons - m_dRateTempCoarse = m_pConfig->getValue(ConfigKey("[Controls]", "RateTempLeft"), 4.0); - m_dRateTempFine = m_pConfig->getValue(ConfigKey("[Controls]", "RateTempRight"), 2.0); - m_dRatePermCoarse = m_pConfig->getValue(ConfigKey("[Controls]", "RatePermLeft"), 0.5); - m_dRatePermFine = m_pConfig->getValue(ConfigKey("[Controls]", "RatePermRight"), 0.05); - - RateControl::setTemp(m_dRateTempCoarse); - RateControl::setTempSmall(m_dRateTempFine); - RateControl::setPerm(m_dRatePermCoarse); - RateControl::setPermSmall(m_dRatePermFine); - - spinBoxTempRateLeft->setValue(m_dRateTempCoarse); - spinBoxTempRateRight->setValue(m_dRateTempFine); - spinBoxPermRateLeft->setValue(m_dRatePermCoarse); - spinBoxPermRateRight->setValue(m_dRatePermFine); - - connect(spinBoxTempRateLeft, SIGNAL(valueChanged(double)), + connect(spinBoxTemporaryRateCoarse, SIGNAL(valueChanged(double)), this, SLOT(slotRateTempCoarseSpinbox(double))); - connect(spinBoxTempRateRight, SIGNAL(valueChanged(double)), + connect(spinBoxTemporaryRateFine, SIGNAL(valueChanged(double)), this, SLOT(slotRateTempFineSpinbox(double))); - connect(spinBoxPermRateLeft, SIGNAL(valueChanged(double)), + connect(spinBoxPermanentRateCoarse, SIGNAL(valueChanged(double)), this, SLOT(slotRatePermCoarseSpinbox(double))); - connect(spinBoxPermRateRight, SIGNAL(valueChanged(double)), + connect(spinBoxPermanentRateFine, SIGNAL(valueChanged(double)), this, SLOT(slotRatePermFineSpinbox(double))); + m_dRateTempCoarse = m_pConfig->getValue(ConfigKey("[Controls]", "RateTempLeft"), + kDefaultPermanentRateChangeCoarse); + m_dRateTempFine = m_pConfig->getValue(ConfigKey("[Controls]", "RateTempRight"), + kDefaultPermanentRateChangeFine); + m_dRatePermCoarse = m_pConfig->getValue(ConfigKey("[Controls]", "RatePermLeft"), + kDefaultTemporaryRateChangeCoarse); + m_dRatePermFine = m_pConfig->getValue(ConfigKey("[Controls]", "RatePermRight"), + kDefaultTemporaryRateChangeFine); + + spinBoxTemporaryRateCoarse->setValue(m_dRateTempCoarse); + spinBoxTemporaryRateFine->setValue(m_dRateTempFine); + spinBoxPermanentRateCoarse->setValue(m_dRatePermCoarse); + spinBoxPermanentRateFine->setValue(m_dRatePermFine); + + RateControl::setTemporaryRateChangeCoarseAmount(m_dRateTempCoarse); + RateControl::setTemporaryRateChangeFineAmount(m_dRateTempFine); + RateControl::setPermanentRateChangeCoarseAmount(m_dRatePermCoarse); + RateControl::setPermanentRateChangeFineAmount(m_dRatePermFine); + + // Rate Ramp Sensitivity + m_iRateRampSensitivity = m_pConfig->getValue(ConfigKey("[Controls]", "RateRampSensitivity"), kDefaultRateRampSensitivity); + SliderRateRampSensitivity->setValue(m_iRateRampSensitivity); + connect(SliderRateRampSensitivity, SIGNAL(valueChanged(int)), + this, SLOT(slotRateRampSensitivitySlider(int))); + // // Cue Mode // @@ -216,45 +250,21 @@ DlgPrefDeck::DlgPrefDeck(QWidget * parent, MixxxMainWindow * mixxx, MIXXX_MANUAL_URL + "/chapters/user_interface.html#using-cue-modes\">(?)"); - // Set default value in config file and control objects, if not present - // Default is "0" = Mixxx Mode - int cueDefaultValue = m_pConfig->getValue( - ConfigKey("[Controls]", "CueDefault"), 0); - - // Update combo box - // The itemData values are out of order to avoid breaking configurations - // when Mixxx mode (no blinking) was introduced. - // TODO: replace magic numbers with an enum class - ComboBoxCueDefault->addItem(tr("Mixxx mode"), 0); - ComboBoxCueDefault->addItem(tr("Mixxx mode (no blinking)"), 4); - ComboBoxCueDefault->addItem(tr("Pioneer mode"), 1); - ComboBoxCueDefault->addItem(tr("Denon mode"), 2); - ComboBoxCueDefault->addItem(tr("Numark mode"), 3); - ComboBoxCueDefault->addItem(tr("CUP mode"), 5); - const int cueDefaultIndex = cueDefaultIndexByData(cueDefaultValue); - ComboBoxCueDefault->setCurrentIndex(cueDefaultIndex); - slotCueModeCombobox(cueDefaultIndex); - connect(ComboBoxCueDefault, SIGNAL(activated(int)), this, SLOT(slotCueModeCombobox(int))); - // // Ramping Temporary Rate Change configuration // // Set Ramp Rate On or Off - m_bRateRamping = m_pConfig->getValue(ConfigKey("[Controls]", "RateRamp"), false); - if (m_bRateRamping) { - radioButtonSpeedBendRamping->setChecked(true); + connect(radioButtonRateRampModeLinear, SIGNAL(toggled(bool)), + this, SLOT(slotRateRampingModeLinearButton(bool))); + m_bRateRamping = static_cast( + m_pConfig->getValue(ConfigKey("[Controls]", "RateRamp"), + static_cast(kDefaultRampingMode))); + if (m_bRateRamping == RateControl::RampMode::Linear) { + radioButtonRateRampModeLinear->setChecked(true); } else { - radioButtonSpeedBendStatic->setChecked(true); + radioButtonRateRampModeStepping->setChecked(true); } - connect(radioButtonSpeedBendRamping, SIGNAL(toggled(bool)), - this, SLOT(slotRateRampingButton(bool))); - - // Update Ramp Rate Sensitivity - m_iRateRampSensitivity = m_pConfig->getValue(ConfigKey("[Controls]", "RateRampSensitivity"), 0); - SliderRateRampSensitivity->setValue(m_iRateRampSensitivity); - connect(SliderRateRampSensitivity, SIGNAL(valueChanged(int)), - this, SLOT(slotRateRampSensitivitySlider(int))); // Update "reset speed" and "reset pitch" check boxes // TODO: All defaults should only be set in slotResetToDefaults. @@ -267,7 +277,6 @@ DlgPrefDeck::DlgPrefDeck(QWidget * parent, MixxxMainWindow * mixxx, m_pitchAutoReset = (configSPAutoReset==BaseTrackPlayer::RESET_PITCH || configSPAutoReset==BaseTrackPlayer::RESET_PITCH_AND_SPEED); - // Do these need to be here when slotUpdate() has them as well? checkBoxResetSpeed->setChecked(m_speedAutoReset); checkBoxResetPitch->setChecked(m_pitchAutoReset); @@ -290,31 +299,69 @@ DlgPrefDeck::~DlgPrefDeck() { } void DlgPrefDeck::slotUpdate() { + slotSetTrackTimeDisplay(m_pControlTrackTimeDisplay->get()); + + checkBoxDisallowLoadToPlayingDeck->setChecked(!m_pConfig->getValue( + ConfigKey("[Controls]", "AllowTrackLoadToPlayingDeck"), false)); + + checkBoxSeekToCue->setChecked(!m_pConfig->getValue( + ConfigKey("[Controls]", "CueRecall"), false)); + double deck1RateRange = m_rateRangeControls[0]->get(); - int idx = ComboBoxRateRange->findData(static_cast(deck1RateRange * 100)); - if (idx == -1) { + int index = ComboBoxRateRange->findData(static_cast(deck1RateRange * 100)); + if (index == -1) { ComboBoxRateRange->addItem(QString::number(deck1RateRange * 100.).append("%"), deck1RateRange * 100.); } - ComboBoxRateRange->setCurrentIndex(idx); + ComboBoxRateRange->setCurrentIndex(index); double deck1RateDirection = m_rateDirectionControls[0]->get(); checkBoxInvertSpeedSlider->setChecked(deck1RateDirection == kRateDirectionInverted); - if (m_keylockMode == KeylockMode::LockCurrentKey) { + double deck1CueMode = m_cueControls[0]->get(); + index = ComboBoxCueMode->findData(static_cast(deck1CueMode)); + ComboBoxCueMode->setCurrentIndex(index); + + KeylockMode deck1KeylockMode = + static_cast(static_cast(m_keylockModeControls[0]->get())); + if (deck1KeylockMode == KeylockMode::LockCurrentKey) { radioButtonCurrentKey->setChecked(true); } else { radioButtonOriginalKey->setChecked(true); } - if (m_keyunlockMode == KeyunlockMode::KeepLockedKey) { + KeyunlockMode deck1KeyunlockMode = + static_cast(static_cast(m_keyunlockModeControls[0]->get())); + if (deck1KeyunlockMode == KeyunlockMode::KeepLockedKey) { radioButtonKeepUnlockedKey->setChecked(true); } else { radioButtonResetUnlockedKey->setChecked(true); } - checkBoxResetSpeed->setChecked(m_speedAutoReset); - checkBoxResetPitch->setChecked(m_pitchAutoReset); + int reset = m_pConfig->getValue(ConfigKey("[Controls]", "SpeedAutoReset"), + static_cast(BaseTrackPlayer::RESET_PITCH)); + if (reset == BaseTrackPlayer::RESET_PITCH) { + checkBoxResetPitch->setChecked(true); + checkBoxResetSpeed->setChecked(false); + } else if (reset == BaseTrackPlayer::RESET_SPEED) { + checkBoxResetPitch->setChecked(false); + checkBoxResetSpeed->setChecked(true); + } else if (reset == BaseTrackPlayer::RESET_PITCH_AND_SPEED) { + checkBoxResetPitch->setChecked(true); + checkBoxResetSpeed->setChecked(true); + } else if (reset == BaseTrackPlayer::RESET_NONE) { + checkBoxResetPitch->setChecked(false); + checkBoxResetSpeed->setChecked(false); + } + + SliderRateRampSensitivity->setValue( + m_pConfig->getValue(ConfigKey("[Controls]", "RateRampSensitivity"), + kDefaultRateRampSensitivity)); + + spinBoxTemporaryRateCoarse->setValue(RateControl::getTemporaryRateChangeCoarseAmount()); + spinBoxTemporaryRateFine->setValue(RateControl::getTemporaryRateChangeFineAmount()); + spinBoxPermanentRateCoarse->setValue(RateControl::getPermanentRateChangeCoarseAmount()); + spinBoxPermanentRateFine->setValue(RateControl::getPermanentRateChangeFineAmount()); } void DlgPrefDeck::slotResetToDefaults() { @@ -325,40 +372,32 @@ void DlgPrefDeck::slotResetToDefaults() { checkBoxInvertSpeedSlider->setChecked(false); // 8% Rate Range - ComboBoxRateRange->setCurrentIndex(ComboBoxRateRange->findData(8)); + ComboBoxRateRange->setCurrentIndex(ComboBoxRateRange->findData(kDefaultRateRangePercent)); // Don't load tracks into playing decks. checkBoxDisallowLoadToPlayingDeck->setChecked(true); // Mixxx cue mode - ComboBoxCueDefault->setCurrentIndex(0); + ComboBoxCueMode->setCurrentIndex(0); // Cue recall on. checkBoxSeekToCue->setChecked(true); // Rate-ramping default off. - radioButtonSpeedBendStatic->setChecked(true); + radioButtonRateRampModeStepping->setChecked(true); - // 0 rate-ramp sensitivity - SliderRateRampSensitivity->setValue(0); + SliderRateRampSensitivity->setValue(kDefaultRateRampSensitivity); // Permanent and temporary pitch adjust fine/coarse. - spinBoxTempRateLeft->setValue(4.0); - spinBoxTempRateRight->setValue(2.0); - spinBoxPermRateLeft->setValue(0.50); - spinBoxPermRateRight->setValue(0.05); + spinBoxTemporaryRateCoarse->setValue(4.0); + spinBoxTemporaryRateFine->setValue(2.0); + spinBoxPermanentRateCoarse->setValue(0.50); + spinBoxPermanentRateFine->setValue(0.05); - // Automatically reset the pitch/key but not speed/tempo slider on track load - m_speedAutoReset = false; - m_pitchAutoReset = true; + checkBoxResetSpeed->setChecked(false); + checkBoxResetPitch->setChecked(true); - checkBoxResetSpeed->setChecked(m_speedAutoReset); - checkBoxResetPitch->setChecked(m_pitchAutoReset); - - m_keylockMode = KeylockMode::LockOriginalKey; radioButtonOriginalKey->setChecked(true); - - m_keyunlockMode = KeyunlockMode::ResetLockedKey; radioButtonResetUnlockedKey->setChecked(true); } @@ -416,7 +455,7 @@ void DlgPrefDeck::slotDisallowTrackLoadToPlayingDeckCheckbox(bool checked) { } void DlgPrefDeck::slotCueModeCombobox(int index) { - m_iCueMode = ComboBoxCueDefault->itemData(index).toInt(); + m_iCueMode = ComboBoxCueMode->itemData(index).toInt(); } void DlgPrefDeck::slotJumpToCueOnTrackLoadCheckbox(bool checked) { @@ -469,8 +508,12 @@ void DlgPrefDeck::slotRateRampSensitivitySlider(int value) { m_iRateRampSensitivity = value; } -void DlgPrefDeck::slotRateRampingButton(bool checked) { - m_bRateRamping = checked; +void DlgPrefDeck::slotRateRampingModeLinearButton(bool checked) { + if (checked) { + m_bRateRamping = RateControl::RampMode::Linear; + } else { + m_bRateRamping = RateControl::RampMode::Stepping; + } } void DlgPrefDeck::slotApply() { @@ -525,16 +568,16 @@ void DlgPrefDeck::slotApply() { pControl->set(static_cast(m_keyunlockMode)); } - RateControl::setRateRamp(m_bRateRamping); - m_pConfig->setValue(ConfigKey("[Controls]", "RateRamp"), m_bRateRamping); + RateControl::setRateRampMode(m_bRateRamping); + m_pConfig->setValue(ConfigKey("[Controls]", "RateRamp"), static_cast(m_bRateRamping)); RateControl::setRateRampSensitivity(m_iRateRampSensitivity); m_pConfig->setValue(ConfigKey("[Controls]", "RateRampSensitivity"), m_iRateRampSensitivity); - RateControl::setTemp(m_dRateTempCoarse); - RateControl::setTempSmall(m_dRateTempFine); - RateControl::setPerm(m_dRatePermCoarse); - RateControl::setPermSmall(m_dRatePermFine); + RateControl::setTemporaryRateChangeCoarseAmount(m_dRateTempCoarse); + RateControl::setTemporaryRateChangeFineAmount(m_dRateTempFine); + RateControl::setPermanentRateChangeCoarseAmount(m_dRatePermCoarse); + RateControl::setPermanentRateChangeFineAmount(m_dRatePermFine); m_pConfig->setValue(ConfigKey("[Controls]", "RateTempLeft"), m_dRateTempCoarse); m_pConfig->setValue(ConfigKey("[Controls]", "RateTempRight"), m_dRateTempFine); @@ -618,8 +661,8 @@ void DlgPrefDeck::slotUpdatePitchAutoReset(bool b) { } int DlgPrefDeck::cueDefaultIndexByData(int userData) const { - for (int i = 0; i < ComboBoxCueDefault->count(); ++i) { - if (ComboBoxCueDefault->itemData(i).toInt() == userData) { + for (int i = 0; i < ComboBoxCueMode->count(); ++i) { + if (ComboBoxCueMode->itemData(i).toInt() == userData) { return i; } } diff --git a/src/preferences/dialog/dlgprefdeck.h b/src/preferences/dialog/dlgprefdeck.h index 004f6dbd5725..bd7e0bd79f0a 100644 --- a/src/preferences/dialog/dlgprefdeck.h +++ b/src/preferences/dialog/dlgprefdeck.h @@ -3,6 +3,7 @@ #include +#include "engine/ratecontrol.h" #include "preferences/constants.h" #include "preferences/dialog/ui_dlgprefdeckdlg.h" #include "preferences/usersettings.h" @@ -63,7 +64,7 @@ class DlgPrefDeck : public DlgPreferencePage, public Ui::DlgPrefDeckDlg { void slotDisallowTrackLoadToPlayingDeckCheckbox(bool); void slotCueModeCombobox(int); void slotJumpToCueOnTrackLoadCheckbox(bool); - void slotRateRampingButton(bool); + void slotRateRampingModeLinearButton(bool); void slotRateRampSensitivitySlider(int); void slotNumDecksChanged(double, bool initializing=false); @@ -113,7 +114,7 @@ class DlgPrefDeck : public DlgPreferencePage, public Ui::DlgPrefDeckDlg { KeylockMode m_keylockMode; KeyunlockMode m_keyunlockMode; - bool m_bRateRamping; + RateControl::RampMode m_bRateRamping; int m_iRateRampSensitivity; double m_dRateTempCoarse; double m_dRateTempFine; diff --git a/src/preferences/dialog/dlgprefdeckdlg.ui b/src/preferences/dialog/dlgprefdeckdlg.ui index 5e8639015ec6..35712d80e95d 100644 --- a/src/preferences/dialog/dlgprefdeckdlg.ui +++ b/src/preferences/dialog/dlgprefdeckdlg.ui @@ -29,12 +29,12 @@ true - ComboBoxCueDefault + ComboBoxCueMode - + Mixxx mode: - Cue button while pause at cue point = preview @@ -161,7 +161,7 @@ CUP mode: - + Permanent rate change when left-clicking @@ -189,7 +189,7 @@ CUP mode: - + Permanent rate change when right-clicking @@ -237,7 +237,7 @@ CUP mode: - + false @@ -367,7 +367,7 @@ CUP mode: Pitch bend behavior - radioButtonSpeedBendStatic + radioButtonRateRampModeStepping @@ -382,7 +382,7 @@ CUP mode: - + false @@ -460,7 +460,7 @@ CUP mode: false - spinBoxPermRateLeft + spinBoxPermanentRateCoarse @@ -485,7 +485,7 @@ CUP mode: false - spinBoxPermRateRight + spinBoxPermanentRateFine @@ -529,7 +529,7 @@ CUP mode: - + Abrupt jump @@ -539,7 +539,7 @@ CUP mode: - + Smoothly adjusts deck speed when temporary change buttons are held down @@ -600,7 +600,7 @@ CUP mode: - ComboBoxCueDefault + ComboBoxCueMode radioButtonElapsed radioButtonRemaining radioButtonElapsedAndRemaining @@ -614,14 +614,14 @@ CUP mode: radioButtonCurrentKey radioButtonResetUnlockedKey radioButtonKeepUnlockedKey - radioButtonSpeedBendRamping - radioButtonSpeedBendStatic + radioButtonRateRampModeLinear + radioButtonRateRampModeStepping SliderRateRampSensitivity SpinBoxRateRampSensitivity - spinBoxPermRateLeft - spinBoxPermRateRight - spinBoxTempRateLeft - spinBoxTempRateRight + spinBoxPermanentRateCoarse + spinBoxPermanentRateFine + spinBoxTemporaryRateCoarse + spinBoxTemporaryRateFine @@ -658,7 +658,7 @@ CUP mode: - radioButtonSpeedBendRamping + radioButtonRateRampModeLinear toggled(bool) labelSpeedRampSensitivity setEnabled(bool) @@ -674,7 +674,7 @@ CUP mode: - radioButtonSpeedBendRamping + radioButtonRateRampModeLinear toggled(bool) SliderRateRampSensitivity setEnabled(bool) @@ -690,7 +690,7 @@ CUP mode: - radioButtonSpeedBendRamping + radioButtonRateRampModeLinear toggled(bool) SpinBoxRateRampSensitivity setEnabled(bool) @@ -706,7 +706,7 @@ CUP mode: - radioButtonSpeedBendStatic + radioButtonRateRampModeStepping toggled(bool) labelSpeedTemporary setEnabled(bool) @@ -722,9 +722,9 @@ CUP mode: - radioButtonSpeedBendStatic + radioButtonRateRampModeStepping toggled(bool) - spinBoxTempRateLeft + spinBoxTemporaryRateCoarse setEnabled(bool) @@ -738,9 +738,9 @@ CUP mode: - radioButtonSpeedBendStatic + radioButtonRateRampModeStepping toggled(bool) - spinBoxTempRateRight + spinBoxTemporaryRateFine setEnabled(bool) From 7e4aa9b3bcadffbd17fa16ccf8d824465f020a7a Mon Sep 17 00:00:00 2001 From: be_ Date: Sun, 17 Dec 2017 19:07:54 -0600 Subject: [PATCH 22/25] remove unnecesary file heading comments --- src/preferences/dialog/dlgprefdeck.cpp | 17 ----------------- src/preferences/dialog/dlgprefinterface.cpp | 17 ----------------- 2 files changed, 34 deletions(-) diff --git a/src/preferences/dialog/dlgprefdeck.cpp b/src/preferences/dialog/dlgprefdeck.cpp index 8be915ebc30f..b7152d52d439 100644 --- a/src/preferences/dialog/dlgprefdeck.cpp +++ b/src/preferences/dialog/dlgprefdeck.cpp @@ -1,20 +1,3 @@ -/*************************************************************************** - dlgprefcontrols.cpp - description - ------------------- - begin : Sat Jul 5 2003 - copyright : (C) 2003 by Tue & Ken Haste Andersen - email : haste@diku.dk -***************************************************************************/ - -/*************************************************************************** -* * -* This program 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 2 of the License, or * -* (at your option) any later version. * -* * -***************************************************************************/ - #include #include #include diff --git a/src/preferences/dialog/dlgprefinterface.cpp b/src/preferences/dialog/dlgprefinterface.cpp index d4b3718dfbbe..745f5e5a2256 100644 --- a/src/preferences/dialog/dlgprefinterface.cpp +++ b/src/preferences/dialog/dlgprefinterface.cpp @@ -1,20 +1,3 @@ -/*************************************************************************** - dlgprefcontrols.cpp - description - ------------------- - begin : Sat Jul 5 2003 - copyright : (C) 2003 by Tue & Ken Haste Andersen - email : haste@diku.dk -***************************************************************************/ - -/*************************************************************************** -* * -* This program 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 2 of the License, or * -* (at your option) any later version. * -* * -***************************************************************************/ - #include #include #include From 330473f6f59b7d61f7637f246749ed66a103acba Mon Sep 17 00:00:00 2001 From: be_ Date: Sun, 17 Dec 2017 21:04:05 -0600 Subject: [PATCH 23/25] break up long lines of code --- src/engine/ratecontrol.h | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/src/engine/ratecontrol.h b/src/engine/ratecontrol.h index cb0785e7a628..c67d0cd531ce 100644 --- a/src/engine/ratecontrol.h +++ b/src/engine/ratecontrol.h @@ -125,13 +125,23 @@ class RateControl : public EngineControl { double getTempRate(void); // Values used when temp and perm rate buttons are pressed - static double m_dTemporaryRateChangeCoarse, m_dTemporaryRateChangeFine, m_dPermanentRateChangeCoarse, m_dPermanentRateChangeFine; - - ControlPushButton *buttonRateTempDown, *buttonRateTempDownSmall, - *buttonRateTempUp, *buttonRateTempUpSmall; - ControlPushButton *buttonRatePermDown, *buttonRatePermDownSmall, - *buttonRatePermUp, *buttonRatePermUpSmall; - ControlObject *m_pRateDir, *m_pRateRange; + static double m_dTemporaryRateChangeCoarse; + static double m_dTemporaryRateChangeFine; + static double m_dPermanentRateChangeCoarse; + static double m_dPermanentRateChangeFine; + + ControlPushButton *buttonRateTempDown; + ControlPushButton *buttonRateTempDownSmall; + ControlPushButton *buttonRateTempUp; + ControlPushButton *buttonRateTempUpSmall; + + ControlPushButton *buttonRatePermDown; + ControlPushButton *buttonRatePermDownSmall; + ControlPushButton *buttonRatePermUp; + ControlPushButton *buttonRatePermUpSmall; + + ControlObject *m_pRateDir; + ControlObject *m_pRateRange; ControlPotmeter* m_pRateSlider; ControlPotmeter* m_pRateSearch; ControlPushButton* m_pReverseButton; From 2ea6e9ae052809af27efdabda3336266723c82c5 Mon Sep 17 00:00:00 2001 From: be_ Date: Sun, 17 Dec 2017 21:39:25 -0600 Subject: [PATCH 24/25] fix updating of track time display in preferences when loading dialog --- src/preferences/dialog/dlgprefdeck.cpp | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/src/preferences/dialog/dlgprefdeck.cpp b/src/preferences/dialog/dlgprefdeck.cpp index b7152d52d439..b5ef06a99b47 100644 --- a/src/preferences/dialog/dlgprefdeck.cpp +++ b/src/preferences/dialog/dlgprefdeck.cpp @@ -456,18 +456,14 @@ void DlgPrefDeck::slotSetTrackTimeDisplay(QAbstractButton* b) { } void DlgPrefDeck::slotSetTrackTimeDisplay(double v) { - if (v == 1.0) { - // Remaining + m_timeDisplayMode = static_cast(v); + m_pConfig->set(ConfigKey("[Controls]","PositionDisplay"), ConfigValue(v)); + if (m_timeDisplayMode == TrackTime::DisplayMode::Remaining) { radioButtonRemaining->setChecked(true); - m_pConfig->set(ConfigKey("[Controls]", "PositionDisplay"), ConfigValue(1)); - } else if (v == 2.0) { - // Elapsed and remaining + } else if (m_timeDisplayMode == TrackTime::DisplayMode::ElapsedAndRemaining) { radioButtonElapsedAndRemaining->setChecked(true); - m_pConfig->set(ConfigKey("[Controls]", "PositionDisplay"), ConfigValue(2)); - } else { - // Elapsed + } else { // Elapsed radioButtonElapsed->setChecked(true); - m_pConfig->set(ConfigKey("[Controls]", "PositionDisplay"), ConfigValue(0)); } } From d89f84c21a8a435f3c813f0a066796b020f66c55 Mon Sep 17 00:00:00 2001 From: be_ Date: Sun, 17 Dec 2017 21:59:54 -0600 Subject: [PATCH 25/25] make DlgPrefInterface Cancel button work --- src/preferences/dialog/dlgprefinterface.cpp | 75 +++++++++++++++------ src/preferences/dialog/dlgprefinterface.h | 4 ++ 2 files changed, 58 insertions(+), 21 deletions(-) diff --git a/src/preferences/dialog/dlgprefinterface.cpp b/src/preferences/dialog/dlgprefinterface.cpp index 745f5e5a2256..0ff6c729d163 100644 --- a/src/preferences/dialog/dlgprefinterface.cpp +++ b/src/preferences/dialog/dlgprefinterface.cpp @@ -85,7 +85,7 @@ DlgPrefInterface::DlgPrefInterface(QWidget * parent, MixxxMainWindow * mixxx, QList skinSearchPaths = m_pSkinLoader->getSkinSearchPaths(); QList skins; - for (QDir dir : skinSearchPaths) { + for (QDir& dir : skinSearchPaths) { dir.setFilter(QDir::Dirs | QDir::NoDotAndDotDot); skins.append(dir.entryInfoList()); } @@ -93,7 +93,7 @@ DlgPrefInterface::DlgPrefInterface(QWidget * parent, MixxxMainWindow * mixxx, QString configuredSkinPath = m_pSkinLoader->getConfiguredSkinPath(); QIcon sizeWarningIcon(":/images/preferences/ic_preferences_warning.png"); int index = 0; - for (QFileInfo skinInfo : skins) { + for (const QFileInfo& skinInfo : skins) { bool size_ok = checkSkinResolution(skinInfo.absoluteFilePath()); if (size_ok) { ComboBoxSkinconf->insertItem(index, skinInfo.fileName()); @@ -197,19 +197,7 @@ DlgPrefInterface::DlgPrefInterface(QWidget * parent, MixxxMainWindow * mixxx, // // Initialize checkboxes to match config - mixxx::TooltipsPreference configTooltips = m_mixxx->getToolTipsCfg(); - switch (configTooltips) { - case mixxx::TooltipsPreference::TOOLTIPS_OFF: - radioButtonTooltipsOff->setChecked(true); - break; - case mixxx::TooltipsPreference::TOOLTIPS_ON: - radioButtonTooltipsLibraryAndSkin->setChecked(true); - break; - case mixxx::TooltipsPreference::TOOLTIPS_ONLY_IN_LIBRARY: - radioButtonTooltipsLibrary->setChecked(true); - break; - } - + loadTooltipPreferenceFromConfig(); slotSetTooltips(); // Update disabled status of "only library" checkbox connect(buttonGroupTooltips, SIGNAL(buttonClicked(QAbstractButton*)), this, SLOT(slotSetTooltips())); @@ -245,6 +233,28 @@ void DlgPrefInterface::slotUpdateSchemes() { } void DlgPrefInterface::slotUpdate() { + m_skinOnUpdate = m_pConfig->getValueString(ConfigKey("[Config]", "ResizableSkin")); + ComboBoxSkinconf->setCurrentIndex(ComboBoxSkinconf->findText(m_skinOnUpdate)); + slotUpdateSchemes(); + m_bRebootMixxxView = false; + + m_localeOnUpdate = m_pConfig->getValueString(ConfigKey("[Config]", "Locale")); + ComboBoxLocale->setCurrentIndex(ComboBoxLocale->findData(m_localeOnUpdate)); + + checkBoxScaleFactorAuto->setChecked(m_pConfig->getValue( + ConfigKey("[Config]", "ScaleFactorAuto"), m_bUseAutoScaleFactor)); + + comboBoxScaleFactor->setCurrentIndex(comboBoxScaleFactor->findData( + m_pConfig->getValue( + ConfigKey("[Config]", "ScaleFactor"), m_dScaleFactorAuto))); + + checkBoxStartFullScreen->setChecked(m_pConfig->getValue( + ConfigKey("[Config]", "StartInFullscreen"), m_bStartWithFullScreen)); + + loadTooltipPreferenceFromConfig(); + + int inhibitsettings = static_cast(m_mixxx->getInhibitScreensaver()); + comboBoxScreensaver->setCurrentIndex(comboBoxScreensaver->findData(inhibitsettings)); } void DlgPrefInterface::slotResetToDefaults() { @@ -273,9 +283,7 @@ void DlgPrefInterface::slotResetToDefaults() { } void DlgPrefInterface::slotSetLocale(int pos) { - QString newLocale = ComboBoxLocale->itemData(pos).toString(); - m_pConfig->set(ConfigKey("[Config]", "Locale"), ConfigValue(newLocale)); - notifyRebootNecessary(); + m_locale = ComboBoxLocale->itemData(pos).toString(); } void DlgPrefInterface::slotSetScaleFactor(int index) { @@ -300,7 +308,6 @@ void DlgPrefInterface::slotSetScaleFactorAuto(bool newValue) { } void DlgPrefInterface::slotSetTooltips() { - //0=OFF, 1=ON, 2=ON (only in Library) m_tooltipMode = mixxx::TooltipsPreference::TOOLTIPS_ON; if (radioButtonTooltipsOff->isChecked()) { m_tooltipMode = mixxx::TooltipsPreference::TOOLTIPS_OFF; @@ -313,7 +320,7 @@ void DlgPrefInterface::notifyRebootNecessary() { // make the fact that you have to restart mixxx more obvious QMessageBox::information( this, tr("Information"), - tr("Mixxx must be restarted before the changes will take effect.")); + tr("Mixxx must be restarted before the new locale setting will take effect.")); } void DlgPrefInterface::slotSetScheme(int) { @@ -328,7 +335,7 @@ void DlgPrefInterface::slotSetSkin(int) { QString newSkin = ComboBoxSkinconf->currentText(); if (newSkin != m_skin) { m_skin = newSkin; - m_bRebootMixxxView = true; + m_bRebootMixxxView = newSkin != m_skinOnUpdate; checkSkinResolution(ComboBoxSkinconf->currentText()) ? warningLabel->hide() : warningLabel->show(); slotUpdateSchemes(); @@ -339,6 +346,8 @@ void DlgPrefInterface::slotApply() { m_pConfig->set(ConfigKey("[Config]", "ResizableSkin"), m_skin); m_pConfig->set(ConfigKey("[Config]", "Scheme"), m_colorScheme); + m_pConfig->set(ConfigKey("[Config]", "Locale"), m_locale); + m_pConfig->setValue( ConfigKey("[Config]", "ScaleFactorAuto"), m_bUseAutoScaleFactor); if (m_bUseAutoScaleFactor) { @@ -362,8 +371,16 @@ void DlgPrefInterface::slotApply() { static_cast(screensaverComboBoxState)); } + if (m_locale != m_localeOnUpdate) { + notifyRebootNecessary(); + // hack to prevent showing the notification when pressing "Okay" after "Apply" + m_localeOnUpdate = m_locale; + } + if (m_bRebootMixxxView) { m_mixxx->rebootMixxxView(); + // Allow switching skins multiple times without closing the dialog + m_skinOnUpdate = m_skin; } m_bRebootMixxxView = false; } @@ -399,3 +416,19 @@ bool DlgPrefInterface::checkSkinResolution(QString skin) QString skinHeight = res.right(res.count()-skinWidth.count()-1); return !(skinWidth.toInt() > screenWidth || skinHeight.toInt() > screenHeight); } + +void DlgPrefInterface::loadTooltipPreferenceFromConfig() { + mixxx::TooltipsPreference configTooltips = m_mixxx->getToolTipsCfg(); + switch (configTooltips) { + case mixxx::TooltipsPreference::TOOLTIPS_OFF: + radioButtonTooltipsOff->setChecked(true); + break; + case mixxx::TooltipsPreference::TOOLTIPS_ON: + radioButtonTooltipsLibraryAndSkin->setChecked(true); + break; + case mixxx::TooltipsPreference::TOOLTIPS_ONLY_IN_LIBRARY: + radioButtonTooltipsLibrary->setChecked(true); + break; + } + m_tooltipMode = configTooltips; +} diff --git a/src/preferences/dialog/dlgprefinterface.h b/src/preferences/dialog/dlgprefinterface.h index ebd61e3b995e..21e53f99a53a 100644 --- a/src/preferences/dialog/dlgprefinterface.h +++ b/src/preferences/dialog/dlgprefinterface.h @@ -58,6 +58,7 @@ class DlgPrefInterface : public DlgPreferencePage, public Ui::DlgPrefControlsDlg private: void notifyRebootNecessary(); + void loadTooltipPreferenceFromConfig(); bool checkSkinResolution(QString skin); // Because the CueDefault list is out of order, we have to set the combo @@ -73,7 +74,10 @@ class DlgPrefInterface : public DlgPreferencePage, public Ui::DlgPrefControlsDlg PlayerManager* m_pPlayerManager; QString m_skin; + QString m_skinOnUpdate; QString m_colorScheme; + QString m_locale; + QString m_localeOnUpdate; mixxx::TooltipsPreference m_tooltipMode; double m_dScaleFactorAuto; bool m_bUseAutoScaleFactor;