diff --git a/CMakeLists.txt b/CMakeLists.txt index e9ff9d5b9f01..9b6f33d3f6ea 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -684,6 +684,7 @@ add_library(mixxx-lib STATIC EXCLUDE_FROM_ALL src/preferences/dialog/dlgprefeffectsdlg.ui src/preferences/dialog/dlgprefeq.cpp src/preferences/dialog/dlgprefeqdlg.ui + src/preferences/dialog/dlgpreferencepage.cpp src/preferences/dialog/dlgpreferences.cpp src/preferences/dialog/dlgpreferencesdlg.ui src/preferences/dialog/dlgprefinterface.cpp @@ -706,7 +707,6 @@ add_library(mixxx-lib STATIC EXCLUDE_FROM_ALL src/preferences/dialog/dlgprefvinyldlg.ui src/preferences/dialog/dlgprefwaveform.cpp src/preferences/dialog/dlgprefwaveformdlg.ui - src/preferences/dlgpreferencepage.cpp src/preferences/effectsettingsmodel.cpp src/preferences/colorpaletteeditor.cpp src/preferences/colorpaletteeditormodel.cpp diff --git a/res/images/ic_custom.svg b/res/images/ic_custom.svg deleted file mode 100644 index 44a0fe3f680b..000000000000 --- a/res/images/ic_custom.svg +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - diff --git a/res/images/ic_mixxx_symbolic.svg b/res/images/ic_mixxx_symbolic.svg deleted file mode 100644 index c51004a4556d..000000000000 --- a/res/images/ic_mixxx_symbolic.svg +++ /dev/null @@ -1,1308 +0,0 @@ - - - - - - - - image/svg+xml - - Mixxx application icon - - - - - - - Mixxx application icon - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/res/images/ic_none.svg b/res/images/ic_none.svg deleted file mode 100644 index 1d4ae648d3aa..000000000000 --- a/res/images/ic_none.svg +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/res/images/preferences/dark/ic_custom.svg b/res/images/preferences/dark/ic_custom.svg new file mode 100644 index 000000000000..afb9881b2e68 --- /dev/null +++ b/res/images/preferences/dark/ic_custom.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/res/images/preferences/dark/ic_mixxx_symbolic.svg b/res/images/preferences/dark/ic_mixxx_symbolic.svg new file mode 100644 index 000000000000..348a1f128747 --- /dev/null +++ b/res/images/preferences/dark/ic_mixxx_symbolic.svg @@ -0,0 +1,186 @@ + + Mixxx application icon + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/res/images/preferences/dark/ic_none.svg b/res/images/preferences/dark/ic_none.svg new file mode 100644 index 000000000000..ba2cb6a54267 --- /dev/null +++ b/res/images/preferences/dark/ic_none.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/res/images/preferences/light/ic_custom.svg b/res/images/preferences/light/ic_custom.svg new file mode 100644 index 000000000000..0bb9cee123c7 --- /dev/null +++ b/res/images/preferences/light/ic_custom.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/res/images/preferences/light/ic_mixxx_symbolic.svg b/res/images/preferences/light/ic_mixxx_symbolic.svg new file mode 100644 index 000000000000..968670f7d25a --- /dev/null +++ b/res/images/preferences/light/ic_mixxx_symbolic.svg @@ -0,0 +1,186 @@ + + Mixxx application icon + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/res/images/preferences/light/ic_none.svg b/res/images/preferences/light/ic_none.svg new file mode 100644 index 000000000000..680b54637bdb --- /dev/null +++ b/res/images/preferences/light/ic_none.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/res/mixxx.qrc b/res/mixxx.qrc index 5ec55237df63..b73a94d650ae 100644 --- a/res/mixxx.qrc +++ b/res/mixxx.qrc @@ -9,6 +9,7 @@ images/library/ic_library_locked_tracklist.svg images/library/cover_default.svg + images/library/ic_library_autodj.svg images/library/ic_library_banshee.svg images/library/ic_library_computer.svg @@ -28,15 +29,14 @@ images/library/ic_library_traktor.svg images/library/ic_library_rekordbox.svg images/library/ic_library_serato.svg - images/mixxx_logo.svg - images/mixxx_icon.svg + + images/mixxx_logo.svg + images/mixxx_icon.svg images/mixxx-icon-logo-symbolic.svg images/skin_preview_placeholder.png images/ic_checkmark.svg - images/ic_custom.svg images/ic_delete.svg - images/ic_mixxx_symbolic.svg - images/ic_none.svg + images/preferences/dark/ic_preferences_autodj.svg images/preferences/dark/ic_preferences_bpmdetect.svg images/preferences/dark/ic_preferences_broadcast.svg @@ -56,6 +56,10 @@ images/preferences/dark/ic_preferences_soundhardware.svg images/preferences/dark/ic_preferences_vinyl.svg images/preferences/dark/ic_preferences_waveforms.svg + images/preferences/dark/ic_custom.svg + images/preferences/dark/ic_mixxx_symbolic.svg + images/preferences/dark/ic_none.svg + images/preferences/light/ic_preferences_autodj.svg images/preferences/light/ic_preferences_bpmdetect.svg images/preferences/light/ic_preferences_broadcast.svg @@ -75,6 +79,9 @@ images/preferences/light/ic_preferences_soundhardware.svg images/preferences/light/ic_preferences_vinyl.svg images/preferences/light/ic_preferences_waveforms.svg + images/preferences/light/ic_custom.svg + images/preferences/light/ic_mixxx_symbolic.svg + images/preferences/light/ic_none.svg images/preferences/ic_preferences_warning.svg schema.xml shaders/filteredsignal.frag diff --git a/src/controllers/dlgprefcontroller.cpp b/src/controllers/dlgprefcontroller.cpp index f6ca3580e390..073636b67000 100644 --- a/src/controllers/dlgprefcontroller.cpp +++ b/src/controllers/dlgprefcontroller.cpp @@ -1,6 +1,7 @@ #include "controllers/dlgprefcontroller.h" #include +#include #include #include #include @@ -319,15 +320,23 @@ void DlgPrefController::enumeratePresets(const QString& selectedPresetPath) { // qDebug() << "Enumerating presets for controller" << m_pController->getName(); + // Check the text color of the palette for whether to use dark or light icons + QDir iconsPath; + if (!Color::isDimColor(palette().text().color())) { + iconsPath.setPath(":/images/preferences/light/"); + } else { + iconsPath.setPath(":/images/preferences/dark/"); + } + // Insert a dummy item at the top to try to make it less confusing. // (We don't want the first found file showing up as the default item when a // user has their controller plugged in) - QIcon noPresetIcon(":/images/ic_none.svg"); - m_ui.comboBoxPreset->addItem(noPresetIcon, "No Preset"); + QIcon noPresetIcon(iconsPath.filePath("ic_none.svg")); + m_ui.comboBoxPreset->addItem(noPresetIcon, tr("No Preset")); PresetInfo match; // Enumerate user presets - QIcon userPresetIcon(":/images/ic_custom.svg"); + QIcon userPresetIcon(iconsPath.filePath("ic_custom.svg")); // Reload user presets to detect added, changed or removed mappings m_pControllerManager->getMainThreadUserPresetEnumerator()->loadSupportedPresets(); @@ -343,7 +352,7 @@ void DlgPrefController::enumeratePresets(const QString& selectedPresetPath) { m_ui.comboBoxPreset->insertSeparator(m_ui.comboBoxPreset->count()); // Enumerate system presets - QIcon systemPresetIcon(":/images/ic_mixxx_symbolic.svg"); + QIcon systemPresetIcon(iconsPath.filePath("ic_mixxx_symbolic.svg")); PresetInfo systemPresetsMatch = enumeratePresetsFromEnumerator( m_pControllerManager->getMainThreadSystemPresetEnumerator(), systemPresetIcon); diff --git a/src/controllers/dlgprefcontroller.h b/src/controllers/dlgprefcontroller.h index 75407f616a2b..78885bd0b56c 100644 --- a/src/controllers/dlgprefcontroller.h +++ b/src/controllers/dlgprefcontroller.h @@ -9,8 +9,8 @@ #include "controllers/controllerpresetinfo.h" #include "controllers/dlgcontrollerlearning.h" #include "controllers/ui_dlgprefcontrollerdlg.h" +#include "preferences/dialog/dlgpreferencepage.h" #include "preferences/usersettings.h" -#include "preferences/dlgpreferencepage.h" // Forward declarations class Controller; diff --git a/src/controllers/dlgprefcontrollers.cpp b/src/controllers/dlgprefcontrollers.cpp index 9adef3a00c8a..803059890e6d 100644 --- a/src/controllers/dlgprefcontrollers.cpp +++ b/src/controllers/dlgprefcontrollers.cpp @@ -10,22 +10,24 @@ #include "preferences/dialog/dlgpreferences.h" DlgPrefControllers::DlgPrefControllers(DlgPreferences* pPreferences, - UserSettingsPointer pConfig, - ControllerManager* pControllerManager, - QTreeWidgetItem* pControllerTreeItem) + UserSettingsPointer pConfig, + ControllerManager* pControllerManager, + QTreeWidgetItem* pControllersRootItem) : DlgPreferencePage(pPreferences), m_pDlgPreferences(pPreferences), m_pConfig(pConfig), m_pControllerManager(pControllerManager), - m_pControllerTreeItem(pControllerTreeItem) { + m_pControllersRootItem(pControllersRootItem) { setupUi(this); // Create text color for the cue mode link "?" to the manual createLinkColor(); setupControllerWidgets(); const QString presetsPath = userPresetsPath(m_pConfig); - connect(btnOpenUserPresets, &QPushButton::clicked, - this, [this, presetsPath] { slotOpenLocalFile(presetsPath); }); + connect(btnOpenUserPresets, + &QPushButton::clicked, + this, + [this, presetsPath] { slotOpenLocalFile(presetsPath); }); // Connections connect(m_pControllerManager, @@ -79,26 +81,26 @@ void DlgPrefControllers::slotOpenLocalFile(const QString& file) { } void DlgPrefControllers::slotUpdate() { - for (DlgPrefController* pControllerWindows : qAsConst(m_controllerWindows)) { - pControllerWindows->slotUpdate(); + for (DlgPrefController* pControllerDlg : qAsConst(m_controllerPages)) { + pControllerDlg->slotUpdate(); } } void DlgPrefControllers::slotCancel() { - for (DlgPrefController* pControllerWindows : qAsConst(m_controllerWindows)) { - pControllerWindows->slotCancel(); + for (DlgPrefController* pControllerDlg : qAsConst(m_controllerPages)) { + pControllerDlg->slotCancel(); } } void DlgPrefControllers::slotApply() { - for (DlgPrefController* pControllerWindows : qAsConst(m_controllerWindows)) { - pControllerWindows->slotApply(); + for (DlgPrefController* pControllerDlg : qAsConst(m_controllerPages)) { + pControllerDlg->slotApply(); } } void DlgPrefControllers::slotResetToDefaults() { - for (DlgPrefController* pControllerWindows : qAsConst(m_controllerWindows)) { - pControllerWindows->slotResetToDefaults(); + for (DlgPrefController* pControllerDlg : qAsConst(m_controllerPages)) { + pControllerDlg->slotResetToDefaults(); } } @@ -109,12 +111,12 @@ QUrl DlgPrefControllers::helpUrl() const { bool DlgPrefControllers::handleTreeItemClick(QTreeWidgetItem* clickedItem) { int controllerIndex = m_controllerTreeItems.indexOf(clickedItem); if (controllerIndex >= 0) { - DlgPrefController* controllerWidget = m_controllerWindows.value(controllerIndex); - if (controllerWidget) { - m_pDlgPreferences->switchToPage(controllerWidget); + DlgPrefController* pControllerDlg = m_controllerPages.value(controllerIndex); + if (pControllerDlg) { + m_pDlgPreferences->switchToPage(pControllerDlg); } return true; - } else if (clickedItem == m_pControllerTreeItem) { + } else if (clickedItem == m_pControllersRootItem) { // Switch to the root page and expand the controllers tree item. m_pDlgPreferences->expandTreeItem(clickedItem); m_pDlgPreferences->switchToPage(this); @@ -129,16 +131,16 @@ void DlgPrefControllers::rescanControllers() { } void DlgPrefControllers::destroyControllerWidgets() { - while (!m_controllerWindows.isEmpty()) { - DlgPrefController* controllerDlg = m_controllerWindows.takeLast(); - m_pDlgPreferences->removePageWidget(controllerDlg); - delete controllerDlg; + while (!m_controllerPages.isEmpty()) { + DlgPrefController* pControllerDlg = m_controllerPages.takeLast(); + m_pDlgPreferences->removePageWidget(pControllerDlg); + delete pControllerDlg; } m_controllerTreeItems.clear(); - while(m_pControllerTreeItem->childCount() > 0) { - QTreeWidgetItem* controllerWindowLink = m_pControllerTreeItem->takeChild(0); - delete controllerWindowLink; + while (m_pControllersRootItem->childCount() > 0) { + QTreeWidgetItem* pControllerTreeItem = m_pControllersRootItem->takeChild(0); + delete pControllerTreeItem; } } @@ -147,63 +149,65 @@ void DlgPrefControllers::setupControllerWidgets() { // treepane on the left. QList controllerList = m_pControllerManager->getControllerList(false, true); + if (controllerList.isEmpty()) { + // If no controllers are available, show the "No controllers available" message. + txtNoControllersAvailable->setVisible(true); + return; + } + + txtNoControllersAvailable->setVisible(false); std::sort(controllerList.begin(), controllerList.end(), controllerCompare); foreach (Controller* pController, controllerList) { - DlgPrefController* controllerDlg = new DlgPrefController( - this, pController, m_pControllerManager, m_pConfig); - connect(controllerDlg, + DlgPrefController* pControllerDlg = new DlgPrefController( + this, pController, m_pControllerManager, m_pConfig); + connect(pControllerDlg, &DlgPrefController::mappingStarted, m_pDlgPreferences, &DlgPreferences::hide); - connect(controllerDlg, + connect(pControllerDlg, &DlgPrefController::mappingEnded, m_pDlgPreferences, &DlgPreferences::show); - m_controllerWindows.append(controllerDlg); - m_pDlgPreferences->addPageWidget(controllerDlg); + m_controllerPages.append(pControllerDlg); connect(pController, &Controller::openChanged, - [this, controllerDlg](bool bOpen) { - slotHighlightDevice(controllerDlg, bOpen); + [this, pControllerDlg](bool bOpen) { + slotHighlightDevice(pControllerDlg, bOpen); }); - QTreeWidgetItem * controllerWindowLink = new QTreeWidgetItem(QTreeWidgetItem::Type); - controllerWindowLink->setIcon(0, QIcon(":/images/preferences/ic_preferences_controllers.png")); - QString curDeviceName = pController->getName(); - controllerWindowLink->setText(0, curDeviceName); - controllerWindowLink->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); - controllerWindowLink->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); - m_pControllerTreeItem->addChild(controllerWindowLink); - m_controllerTreeItems.append(controllerWindowLink); - - // Set the font correctly - QFont temp = controllerWindowLink->font(0); + QTreeWidgetItem* pControllerTreeItem = new QTreeWidgetItem( + QTreeWidgetItem::Type); + m_pDlgPreferences->addPageWidget(pControllerDlg, + pControllerTreeItem, + pController->getName(), + "ic_preferences_controllers.svg"); + + m_pControllersRootItem->addChild(pControllerTreeItem); + m_controllerTreeItems.append(pControllerTreeItem); + + // If controller is open make controller label bold + QFont temp = pControllerTreeItem->font(0); temp.setBold(pController->isOpen()); - controllerWindowLink->setFont(0, temp); + pControllerTreeItem->setFont(0, temp); } - - // If no controllers are available, show the "No controllers available" - // message. - txtNoControllersAvailable->setVisible(controllerList.empty()); } -void DlgPrefControllers::slotHighlightDevice(DlgPrefController* dialog, bool enabled) { - int dialogIndex = m_controllerWindows.indexOf(dialog); - if (dialogIndex < 0) { +void DlgPrefControllers::slotHighlightDevice(DlgPrefController* pControllerDlg, bool enabled) { + int controllerPageIndex = m_controllerPages.indexOf(pControllerDlg); + if (controllerPageIndex < 0) { return; } - QTreeWidgetItem * controllerWindowLink = - m_controllerTreeItems.at(dialogIndex); - - if (!controllerWindowLink) { + QTreeWidgetItem* pControllerTreeItem = + m_controllerTreeItems.at(controllerPageIndex); + if (!pControllerTreeItem) { return; } - QFont temp = controllerWindowLink->font(0); + QFont temp = pControllerTreeItem->font(0); temp.setBold(enabled); - controllerWindowLink->setFont(0,temp); + pControllerTreeItem->setFont(0, temp); } diff --git a/src/controllers/dlgprefcontrollers.h b/src/controllers/dlgprefcontrollers.h index 82f1530e8083..7e3039291924 100644 --- a/src/controllers/dlgprefcontrollers.h +++ b/src/controllers/dlgprefcontrollers.h @@ -2,9 +2,9 @@ #include -#include "preferences/usersettings.h" #include "controllers/ui_dlgprefcontrollersdlg.h" -#include "preferences/dlgpreferencepage.h" +#include "preferences/dialog/dlgpreferencepage.h" +#include "preferences/usersettings.h" class DlgPreferences; class DlgPrefController; @@ -18,9 +18,9 @@ class DlgPrefControllers : public DlgPreferencePage, public Ui::DlgPrefControlle Q_OBJECT public: DlgPrefControllers(DlgPreferences* pDlgPreferences, - UserSettingsPointer pConfig, - ControllerManager* pControllerManager, - QTreeWidgetItem* pControllerTreeItem); + UserSettingsPointer pConfig, + ControllerManager* pControllerManager, + QTreeWidgetItem* pControllersRootItem); virtual ~DlgPrefControllers(); bool handleTreeItemClick(QTreeWidgetItem* clickedItem); @@ -48,7 +48,7 @@ class DlgPrefControllers : public DlgPreferencePage, public Ui::DlgPrefControlle DlgPreferences* m_pDlgPreferences; UserSettingsPointer m_pConfig; ControllerManager* m_pControllerManager; - QTreeWidgetItem* m_pControllerTreeItem; - QList m_controllerWindows; + QTreeWidgetItem* m_pControllersRootItem; + QList m_controllerPages; QList m_controllerTreeItems; }; diff --git a/src/preferences/dialog/dlgprefautodj.h b/src/preferences/dialog/dlgprefautodj.h index 56dc245ad77e..f7c324ae05c1 100644 --- a/src/preferences/dialog/dlgprefautodj.h +++ b/src/preferences/dialog/dlgprefautodj.h @@ -2,9 +2,9 @@ #include +#include "preferences/dialog/dlgpreferencepage.h" #include "preferences/dialog/ui_dlgprefautodjdlg.h" #include "preferences/usersettings.h" -#include "preferences/dlgpreferencepage.h" class DlgPrefAutoDJ : public DlgPreferencePage, public Ui::DlgPrefAutoDJDlg { Q_OBJECT diff --git a/src/preferences/dialog/dlgprefbeats.h b/src/preferences/dialog/dlgprefbeats.h index 69a6bf2db2dc..fea83f484e31 100644 --- a/src/preferences/dialog/dlgprefbeats.h +++ b/src/preferences/dialog/dlgprefbeats.h @@ -1,14 +1,14 @@ #pragma once -#include -#include #include +#include +#include #include "analyzer/plugins/analyzerplugin.h" #include "preferences/beatdetectionsettings.h" -#include "preferences/usersettings.h" -#include "preferences/dlgpreferencepage.h" +#include "preferences/dialog/dlgpreferencepage.h" #include "preferences/dialog/ui_dlgprefbeatsdlg.h" +#include "preferences/usersettings.h" class DlgPrefBeats : public DlgPreferencePage, public Ui::DlgBeatsDlg { Q_OBJECT diff --git a/src/preferences/dialog/dlgprefbroadcast.h b/src/preferences/dialog/dlgprefbroadcast.h index f8e78c1862f8..a8a1b301a020 100644 --- a/src/preferences/dialog/dlgprefbroadcast.h +++ b/src/preferences/dialog/dlgprefbroadcast.h @@ -3,13 +3,13 @@ #include #include -#include "preferences/dialog/ui_dlgprefbroadcastdlg.h" -#include "control/controlobject.h" -#include "preferences/usersettings.h" #include "broadcast/defs_broadcast.h" -#include "preferences/dlgpreferencepage.h" +#include "control/controlobject.h" #include "preferences/broadcastsettings.h" #include "preferences/broadcastsettingsmodel.h" +#include "preferences/dialog/dlgpreferencepage.h" +#include "preferences/dialog/ui_dlgprefbroadcastdlg.h" +#include "preferences/usersettings.h" class ControlProxy; diff --git a/src/preferences/dialog/dlgprefcolors.h b/src/preferences/dialog/dlgprefcolors.h index ee6fada3023f..eec7fd3e1c71 100644 --- a/src/preferences/dialog/dlgprefcolors.h +++ b/src/preferences/dialog/dlgprefcolors.h @@ -5,8 +5,8 @@ #include "control/controlproxy.h" #include "preferences/colorpaletteeditor.h" #include "preferences/colorpalettesettings.h" +#include "preferences/dialog/dlgpreferencepage.h" #include "preferences/dialog/ui_dlgprefcolorsdlg.h" -#include "preferences/dlgpreferencepage.h" #include "preferences/usersettings.h" #include "util/parented_ptr.h" diff --git a/src/preferences/dialog/dlgprefcrossfader.h b/src/preferences/dialog/dlgprefcrossfader.h index a6b1a3290db4..ccf2e92646b8 100644 --- a/src/preferences/dialog/dlgprefcrossfader.h +++ b/src/preferences/dialog/dlgprefcrossfader.h @@ -2,11 +2,10 @@ #include +#include "control/controlproxy.h" +#include "preferences/dialog/dlgpreferencepage.h" #include "preferences/dialog/ui_dlgprefcrossfaderdlg.h" #include "preferences/usersettings.h" -#include "control/controlproxy.h" -#include "preferences/dlgpreferencepage.h" - class DlgPrefCrossfader : public DlgPreferencePage, public Ui::DlgPrefCrossfaderDlg { Q_OBJECT diff --git a/src/preferences/dialog/dlgprefdeck.h b/src/preferences/dialog/dlgprefdeck.h index 7a97c668f8f5..ac885b5c981a 100644 --- a/src/preferences/dialog/dlgprefdeck.h +++ b/src/preferences/dialog/dlgprefdeck.h @@ -6,8 +6,8 @@ #include "engine/controls/cuecontrol.h" #include "engine/controls/ratecontrol.h" #include "preferences/constants.h" +#include "preferences/dialog/dlgpreferencepage.h" #include "preferences/dialog/ui_dlgprefdeckdlg.h" -#include "preferences/dlgpreferencepage.h" #include "preferences/usersettings.h" #include "util/parented_ptr.h" diff --git a/src/preferences/dialog/dlgprefeffects.h b/src/preferences/dialog/dlgprefeffects.h index c787804bc1bf..8d254a3496b0 100644 --- a/src/preferences/dialog/dlgprefeffects.h +++ b/src/preferences/dialog/dlgprefeffects.h @@ -2,8 +2,8 @@ #include +#include "preferences/dialog/dlgpreferencepage.h" #include "preferences/dialog/ui_dlgprefeffectsdlg.h" -#include "preferences/dlgpreferencepage.h" #include "preferences/effectsettingsmodel.h" #include "preferences/usersettings.h" diff --git a/src/preferences/dialog/dlgprefeq.h b/src/preferences/dialog/dlgprefeq.h index f6c10c96291c..3beb233b5853 100644 --- a/src/preferences/dialog/dlgprefeq.h +++ b/src/preferences/dialog/dlgprefeq.h @@ -1,14 +1,14 @@ #pragma once -#include #include +#include -#include "preferences/dialog/ui_dlgprefeqdlg.h" -#include "preferences/usersettings.h" #include "control/controlproxy.h" -#include "preferences/dlgpreferencepage.h" -#include "effects/effectsmanager.h" #include "effects/effectrack.h" +#include "effects/effectsmanager.h" +#include "preferences/dialog/dlgpreferencepage.h" +#include "preferences/dialog/ui_dlgprefeqdlg.h" +#include "preferences/usersettings.h" class DlgPrefEQ : public DlgPreferencePage, public Ui::DlgPrefEQDlg { Q_OBJECT diff --git a/src/preferences/dlgpreferencepage.cpp b/src/preferences/dialog/dlgpreferencepage.cpp similarity index 83% rename from src/preferences/dlgpreferencepage.cpp rename to src/preferences/dialog/dlgpreferencepage.cpp index 61b912b4419e..fc4b3eddd69d 100644 --- a/src/preferences/dlgpreferencepage.cpp +++ b/src/preferences/dialog/dlgpreferencepage.cpp @@ -1,4 +1,4 @@ -#include "preferences/dlgpreferencepage.h" +#include "preferences/dialog/dlgpreferencepage.h" #include "defs_urls.h" #include "moc_dlgpreferencepage.cpp" diff --git a/src/preferences/dlgpreferencepage.h b/src/preferences/dialog/dlgpreferencepage.h similarity index 96% rename from src/preferences/dlgpreferencepage.h rename to src/preferences/dialog/dlgpreferencepage.h index 7e8134eca872..59b993a31b09 100644 --- a/src/preferences/dlgpreferencepage.h +++ b/src/preferences/dialog/dlgpreferencepage.h @@ -44,10 +44,12 @@ class DlgPreferencePage : public QWidget { /// Called when the preferences dialog is shown to the user (not necessarily /// when this PreferencePage is shown to the user). - virtual void slotShow() {} + virtual void slotShow() { + } /// Called when the preferences dialog is hidden from the user. - virtual void slotHide() {} + virtual void slotHide() { + } // Supply a readable text color for all file and website links inline void createLinkColor() { diff --git a/src/preferences/dialog/dlgpreferences.cpp b/src/preferences/dialog/dlgpreferences.cpp index e0b48a338423..a8598aec63c8 100644 --- a/src/preferences/dialog/dlgpreferences.cpp +++ b/src/preferences/dialog/dlgpreferences.cpp @@ -16,7 +16,7 @@ #ifdef __VINYLCONTROL__ #include "preferences/dialog/dlgprefvinyl.h" -#else +#else /* __VINYLCONTROL__ */ #include "preferences/dialog/dlgprefnovinyl.h" #endif @@ -34,7 +34,7 @@ #ifdef __BROADCAST__ #include "preferences/dialog/dlgprefbroadcast.h" -#endif +#endif /* __BROADCAST__ */ #include "preferences/dialog/dlgprefrecord.h" #include "preferences/dialog/dlgprefbeats.h" @@ -43,24 +43,28 @@ #ifdef __MODPLUG__ #include "preferences/dialog/dlgprefmodplug.h" -#endif +#endif /* __MODPLUG__ */ #include "controllers/controllermanager.h" #include "library/library.h" #include "library/trackcollectionmanager.h" #include "mixxx.h" #include "skin/skinloader.h" +#include "util/color/color.h" #include "util/widgethelper.h" -DlgPreferences::DlgPreferences(MixxxMainWindow * mixxx, SkinLoader* pSkinLoader, - SoundManager * soundman, PlayerManager* pPlayerManager, - ControllerManager * controllers, VinylControlManager *pVCManager, - LV2Backend* pLV2Backend, - EffectsManager* pEffectsManager, - SettingsManager* pSettingsManager, - Library *pLibrary) - : m_pConfig(pSettingsManager->settings()), - m_pageSizeHint(QSize(0, 0)) { +DlgPreferences::DlgPreferences( + MixxxMainWindow* pMixxx, + SkinLoader* pSkinLoader, + SoundManager* pSoundManager, + PlayerManager* pPlayerManager, + ControllerManager* pControllerManager, + VinylControlManager* pVCManager, + LV2Backend* pLV2Backend, + EffectsManager* pEffectsManager, + SettingsManager* pSettingsManager, + Library* pLibrary) + : m_pConfig(pSettingsManager->settings()), m_pageSizeHint(QSize(0, 0)) { #ifndef __LILV__ Q_UNUSED(pLV2Backend); #endif /* __LILV__ */ @@ -73,80 +77,180 @@ DlgPreferences::DlgPreferences(MixxxMainWindow * mixxx, SkinLoader* pSkinLoader, this, &DlgPreferences::slotButtonPressed); - createIcons(); - while (pagesWidget->count() > 0) { pagesWidget->removeWidget(pagesWidget->currentWidget()); } - // Construct widgets for use in tabs. - m_soundPage = new DlgPrefSound(this, soundman, m_pConfig); - addPageWidget(m_soundPage); + // Construct widgets for use in tabs: + // * check the text color of the palette for whether to use dark or light icons + // * create the tree view button first (important for 'Controllers' page!) + // * instantiate preferences page + if (!Color::isDimColor(palette().text().color())) { + m_iconsPath.setPath(":/images/preferences/light/"); + } else { + m_iconsPath.setPath(":/images/preferences/dark/"); + } + + m_pSoundButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); + m_soundPage = new DlgPrefSound(this, pSoundManager, m_pConfig); + addPageWidget(m_soundPage, + m_pSoundButton, + tr("Sound Hardware"), + "ic_preferences_soundhardware.svg"); + + m_pLibraryButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); m_libraryPage = new DlgPrefLibrary(this, m_pConfig, pLibrary); - addPageWidget(m_libraryPage); + addPageWidget(m_libraryPage, + m_pLibraryButton, + tr("Library"), + "ic_preferences_library.svg"); connect(m_libraryPage, &DlgPrefLibrary::scanLibrary, pLibrary->trackCollections(), &TrackCollectionManager::startLibraryScan); - m_controllersPage = new DlgPrefControllers(this, m_pConfig, controllers, - m_pControllerTreeItem); - addPageWidget(m_controllersPage); + + m_pControllersRootButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); + m_controllersPage = new DlgPrefControllers( + this, m_pConfig, pControllerManager, m_pControllersRootButton); + addPageWidget(m_controllersPage, + m_pControllersRootButton, + tr("Controllers"), + "ic_preferences_controllers.svg"); #ifdef __VINYLCONTROL__ // It's important for this to be before the connect for wsound. // TODO(rryan) determine why/if this is still true + m_pVinylControlButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); m_vinylControlPage = new DlgPrefVinyl(this, pVCManager, m_pConfig); - addPageWidget(m_vinylControlPage); - Q_UNUSED(m_noVinylControlPage); -#else - m_noVinylControlPage = new DlgPrefNoVinyl(this, soundman, m_pConfig); - addPageWidget(m_noVinylControlPage); - Q_UNUSED(m_vinylControlPage); + addPageWidget(m_vinylControlPage, + m_pVinylControlButton, + tr("Vinyl Control"), + "ic_preferences_vinyl.svg"); +#else /* __VINYLCONTROL__ */ + + m_pVinylControlButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); + m_noVinylControlPage = new DlgPrefNoVinyl(this, pSoundManager, m_pConfig); + addPageWidget(m_noVinylControlPage, + m_pVinylControlButton, + tr("Vinyl Control"), + "ic_preferences_vinyl.svg"); #endif - m_interfacePage = new DlgPrefInterface(this, mixxx, pSkinLoader, m_pConfig); - addPageWidget(m_interfacePage); - m_waveformPage = new DlgPrefWaveform(this, mixxx, m_pConfig, pLibrary); - addPageWidget(m_waveformPage); + m_pInterfaceButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); + m_interfacePage = new DlgPrefInterface(this, pMixxx, pSkinLoader, m_pConfig); + addPageWidget(m_interfacePage, + m_pInterfaceButton, + tr("Interface"), + "ic_preferences_interface.svg"); + + m_pWaveformButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); + m_waveformPage = new DlgPrefWaveform(this, pMixxx, m_pConfig, pLibrary); + addPageWidget(m_waveformPage, + m_pWaveformButton, + tr("Waveforms"), + "ic_preferences_waveforms.svg"); + + m_pDecksButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); m_deckPage = new DlgPrefDeck(this, m_pConfig); - addPageWidget(m_deckPage); + addPageWidget(m_deckPage, + m_pDecksButton, + tr("Decks"), + "ic_preferences_decks.svg"); + + m_pColorsButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); m_colorsPage = new DlgPrefColors(this, m_pConfig, pLibrary); - addPageWidget(m_colorsPage); + addPageWidget(m_colorsPage, + m_pColorsButton, + tr("Colors"), + "ic_preferences_colors.svg"); + + m_pEqButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); m_equalizerPage = new DlgPrefEQ(this, pEffectsManager, m_pConfig); - addPageWidget(m_equalizerPage); + addPageWidget(m_equalizerPage, + m_pEqButton, + tr("Equalizers"), + "ic_preferences_equalizers.svg"); + + m_pCrossfaderButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); m_crossfaderPage = new DlgPrefCrossfader(this, m_pConfig); - addPageWidget(m_crossfaderPage); + addPageWidget(m_crossfaderPage, + m_pCrossfaderButton, + tr("Crossfader"), + "ic_preferences_crossfader.svg"); + + m_pEffectsButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); m_effectsPage = new DlgPrefEffects(this, m_pConfig, pEffectsManager); - addPageWidget(m_effectsPage); + addPageWidget(m_effectsPage, + m_pEffectsButton, + tr("Effects"), + "ic_preferences_effects.svg"); + #ifdef __LILV__ + m_pLV2Button = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); m_lv2Page = new DlgPrefLV2(this, pLV2Backend, m_pConfig, pEffectsManager); - addPageWidget(m_lv2Page); + addPageWidget(m_lv2Page, + m_pLV2Button, + tr("LV2 Plugins"), + "ic_preferences_lv2.svg"); #endif /* __LILV__ */ + + m_pAutoDJButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); m_autoDjPage = new DlgPrefAutoDJ(this, m_pConfig); - addPageWidget(m_autoDjPage); + addPageWidget(m_autoDjPage, + m_pAutoDJButton, + tr("Auto DJ"), + "ic_preferences_autodj.svg"); #ifdef __BROADCAST__ - m_broadcastingPage = new DlgPrefBroadcast(this, - pSettingsManager->broadcastSettings()); - addPageWidget(m_broadcastingPage); -#endif + m_pBroadcastButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); + m_broadcastingPage = new DlgPrefBroadcast(this, pSettingsManager->broadcastSettings()); + addPageWidget(m_broadcastingPage, + m_pBroadcastButton, + tr("Live Broadcasting"), + "ic_preferences_broadcast.svg"); +#endif /* __BROADCAST__ */ + m_pRecordingButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); m_recordingPage = new DlgPrefRecord(this, m_pConfig); - addPageWidget(m_recordingPage); + addPageWidget(m_recordingPage, + m_pRecordingButton, + tr("Recording"), + "ic_preferences_recording.svg"); + m_pBeatDetectionButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); m_beatgridPage = new DlgPrefBeats(this, m_pConfig); - addPageWidget (m_beatgridPage); + addPageWidget(m_beatgridPage, + m_pBeatDetectionButton, + tr("Beat Detection"), + "ic_preferences_bpmdetect.svg"); + m_pKeyDetectionButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); m_musicalKeyPage = new DlgPrefKey(this, m_pConfig); - addPageWidget(m_musicalKeyPage); + addPageWidget(m_musicalKeyPage, + m_pKeyDetectionButton, + tr("Key Detection"), + "ic_preferences_keydetect.svg"); + m_pReplayGainButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); m_replayGainPage = new DlgPrefReplayGain(this, m_pConfig); - addPageWidget(m_replayGainPage); + addPageWidget(m_replayGainPage, + m_pReplayGainButton, + tr("Normalization"), + "ic_preferences_replaygain.svg"); #ifdef __MODPLUG__ + m_pModplugButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); m_modplugPage = new DlgPrefModplug(this, m_pConfig); - addPageWidget(m_modplugPage); -#endif + addPageWidget(m_modplugPage, + m_pModplugButton, + tr("Modplug Decoder"), + "ic_preferences_modplug.svg"); +#endif /* __MODPLUG__ */ + + connect(contentsTreeWidget, + &QTreeWidget::currentItemChanged, + this, + &DlgPreferences::changePage); // Install event handler to generate closeDlg signal installEventFilter(this); @@ -170,206 +274,60 @@ DlgPreferences::~DlgPreferences() { delete m_controllersPage; } -void DlgPreferences::createIcons() { - QString iconSetPath(":/images/preferences/"); - // If the text of the OS theme is bright let's also pick a bright icon set. - QString iconSetColor = QStringLiteral("dark/"); - if (!Color::isDimColor(palette().text().color())) { - iconSetColor = QStringLiteral("light/"); - } - iconSetPath += iconSetColor; - m_pSoundButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); - m_pSoundButton->setIcon(0, QIcon(iconSetPath + "ic_preferences_soundhardware.svg")); - m_pSoundButton->setText(0, tr("Sound Hardware")); - m_pSoundButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); - m_pSoundButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); - - m_pLibraryButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); - m_pLibraryButton->setIcon(0, QIcon(iconSetPath + "ic_preferences_library.svg")); - m_pLibraryButton->setText(0, tr("Library")); - m_pLibraryButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); - m_pLibraryButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); - - m_pControllerTreeItem = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); - m_pControllerTreeItem->setIcon(0, QIcon(iconSetPath + "ic_preferences_controllers.svg")); - m_pControllerTreeItem->setText(0, tr("Controllers")); - m_pControllerTreeItem->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); - m_pControllerTreeItem->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(iconSetPath + "ic_preferences_vinyl.svg")); - 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(iconSetPath + "ic_preferences_vinyl.svg")); - 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(iconSetPath + "ic_preferences_interface.svg")); - 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(iconSetPath + "ic_preferences_waveforms.svg")); - 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(iconSetPath + "ic_preferences_decks.svg")); - m_pDecksButton->setText(0, tr("Decks")); - m_pDecksButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); - m_pDecksButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); - - m_pColorsButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); - m_pColorsButton->setIcon(0, QIcon(iconSetPath + "ic_preferences_colors.svg")); - m_pColorsButton->setText(0, tr("Colors")); - m_pColorsButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); - m_pColorsButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); - - m_pEqButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); - m_pEqButton->setIcon(0, QIcon(iconSetPath + "ic_preferences_equalizers.svg")); - m_pEqButton->setText(0, tr("Equalizers")); - 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(iconSetPath + "ic_preferences_crossfader.svg")); - m_pCrossfaderButton->setText(0, tr("Crossfader")); - m_pCrossfaderButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); - m_pCrossfaderButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); - - m_pEffectsButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); - m_pEffectsButton->setIcon(0, QIcon(iconSetPath + "ic_preferences_effects.svg")); - m_pEffectsButton->setText(0, tr("Effects")); - m_pEffectsButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); - m_pEffectsButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); - -#ifdef __LILV__ - m_pLV2Button = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); - m_pLV2Button->setIcon(0, QIcon(iconSetPath + "ic_preferences_lv2.svg")); - m_pLV2Button->setText(0, tr("LV2 Plugins")); - m_pLV2Button->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); - m_pLV2Button->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); -#endif /* __LILV__ */ - - m_pAutoDJButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); - m_pAutoDJButton->setIcon(0, QIcon(iconSetPath + "ic_preferences_autodj.svg")); - 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(iconSetPath + "ic_preferences_broadcast.svg")); - 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(iconSetPath + "ic_preferences_recording.svg")); - m_pRecordingButton->setText(0, tr("Recording")); - m_pRecordingButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); - m_pRecordingButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); - - m_pBeatDetectionButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); - m_pBeatDetectionButton->setIcon(0, QIcon(iconSetPath + "ic_preferences_bpmdetect.svg")); - m_pBeatDetectionButton->setText(0, tr("Beat Detection")); - m_pBeatDetectionButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); - m_pBeatDetectionButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); - - m_pKeyDetectionButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); - m_pKeyDetectionButton->setIcon(0, QIcon(iconSetPath + "ic_preferences_keydetect.svg")); - m_pKeyDetectionButton->setText(0, tr("Key Detection")); - m_pKeyDetectionButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); - m_pKeyDetectionButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); - - m_pReplayGainButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); - m_pReplayGainButton->setIcon(0, QIcon(iconSetPath + "ic_preferences_replaygain.svg")); - m_pReplayGainButton->setText(0, tr("Normalization")); - m_pReplayGainButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); - m_pReplayGainButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); - -#ifdef __MODPLUG__ - m_pModplugButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); - m_pModplugButton->setIcon(0, QIcon(iconSetPath + "ic_preferences_modplug.svg")); - m_pModplugButton->setText(0, tr("Modplug Decoder")); - m_pModplugButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); - m_pModplugButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); -#endif - - connect(contentsTreeWidget, - &QTreeWidget::currentItemChanged, - this, - &DlgPreferences::changePage); -} - -void DlgPreferences::changePage(QTreeWidgetItem* current, QTreeWidgetItem* previous) { - if (!current) { - current = previous; +void DlgPreferences::changePage(QTreeWidgetItem* pCurrent, QTreeWidgetItem* pPrevious) { + if (!pCurrent) { + pCurrent = pPrevious; } - if (current == m_pSoundButton) { + if (pCurrent == m_pSoundButton) { switchToPage(m_soundPage); - } else if (current == m_pLibraryButton) { + } else if (pCurrent == m_pLibraryButton) { switchToPage(m_libraryPage); - } else if (m_controllersPage->handleTreeItemClick(current)) { + } else if (m_controllersPage->handleTreeItemClick(pCurrent)) { // Do nothing. m_controllersPage handled this click. #ifdef __VINYLCONTROL__ - } else if (current == m_pVinylControlButton) { + } else if (pCurrent == m_pVinylControlButton) { switchToPage(m_vinylControlPage); -#else - } else if (current == m_pVinylControlButton) { +#else /* __VINYLCONTROL__ */ + } else if (pCurrent == m_pVinylControlButton) { switchToPage(m_noVinylControlPage); #endif - } else if (current == m_pInterfaceButton) { + } else if (pCurrent == m_pInterfaceButton) { switchToPage(m_interfacePage); - } else if (current == m_pWaveformButton) { + } else if (pCurrent == m_pWaveformButton) { switchToPage(m_waveformPage); - } else if (current == m_pDecksButton) { + } else if (pCurrent == m_pDecksButton) { switchToPage(m_deckPage); - } else if (current == m_pColorsButton) { + } else if (pCurrent == m_pColorsButton) { switchToPage(m_colorsPage); - } else if (current == m_pEqButton) { + } else if (pCurrent == m_pEqButton) { switchToPage(m_equalizerPage); - } else if (current == m_pCrossfaderButton) { + } else if (pCurrent == m_pCrossfaderButton) { switchToPage(m_crossfaderPage); - } else if (current == m_pEffectsButton) { + } else if (pCurrent == m_pEffectsButton) { switchToPage(m_effectsPage); #ifdef __LILV__ - } else if (current == m_pLV2Button) { + } else if (pCurrent == m_pLV2Button) { switchToPage(m_lv2Page); #endif /* __LILV__ */ - } else if (current == m_pAutoDJButton) { + } else if (pCurrent == m_pAutoDJButton) { switchToPage(m_autoDjPage); #ifdef __BROADCAST__ - } else if (current == m_pBroadcastButton) { + } else if (pCurrent == m_pBroadcastButton) { switchToPage(m_broadcastingPage); -#endif - } else if (current == m_pRecordingButton) { +#endif /* __BROADCAST__ */ + } else if (pCurrent == m_pRecordingButton) { switchToPage(m_recordingPage); - } else if (current == m_pBeatDetectionButton) { + } else if (pCurrent == m_pBeatDetectionButton) { switchToPage(m_beatgridPage); - } else if (current == m_pKeyDetectionButton) { + } else if (pCurrent == m_pKeyDetectionButton) { switchToPage(m_musicalKeyPage); - } else if (current == m_pReplayGainButton) { + } else if (pCurrent == m_pReplayGainButton) { switchToPage(m_replayGainPage); #ifdef __MODPLUG__ - } else if (current == m_pModplugButton) { + } else if (pCurrent == m_pModplugButton) { switchToPage(m_modplugPage); -#endif +#endif /* __MODPLUG__ */ } } @@ -433,10 +391,11 @@ void DlgPreferences::onShow() { // Update geometry with last values #ifdef __WINDOWS__ resize(m_geometry[2].toInt(), m_geometry[3].toInt()); -#else - // On linux, when the window is opened for the first time by the window manager, QT does not have - // information about the frame size so the offset is zero. As such, the first time it opens the window - // does not include the offset, so it is moved from the last position it had. +#else /* __WINDOWS__ */ + // On linux, when the window is opened for the first time by the window manager, + // QT does not have information about the frame size so the offset is zero. + // As such, the first time it opens the window does not include the offset, + // so it is moved from the last position it had. // Excluding the offset from the saved value tries to fix that. int offsetX = geometry().left() - frameGeometry().left(); int offsetY = geometry().top() - frameGeometry().top(); @@ -490,11 +449,19 @@ void DlgPreferences::slotButtonPressed(QAbstractButton* pButton) { } } -void DlgPreferences::addPageWidget(DlgPreferencePage* pWidget) { +void DlgPreferences::addPageWidget(DlgPreferencePage* pWidget, + QTreeWidgetItem* pTreeItem, + const QString& pageTitle, + const QString& iconFile) { + // Configure the tree button linked to the page + pTreeItem->setIcon(0, QIcon(m_iconsPath.filePath(iconFile))); + pTreeItem->setText(0, pageTitle); + pTreeItem->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); + pTreeItem->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); + connect(this, &DlgPreferences::showDlg, pWidget, &DlgPreferencePage::slotShow); connect(this, &DlgPreferences::closeDlg, pWidget, &DlgPreferencePage::slotHide); connect(this, &DlgPreferences::showDlg, pWidget, &DlgPreferencePage::slotUpdate); - connect(this, &DlgPreferences::applyPreferences, pWidget, &DlgPreferencePage::slotApply); connect(this, &DlgPreferences::cancelPreferences, pWidget, &DlgPreferencePage::slotCancel); connect(this, @@ -502,16 +469,15 @@ void DlgPreferences::addPageWidget(DlgPreferencePage* pWidget) { pWidget, &DlgPreferencePage::slotResetToDefaults); + // Add a new scroll area to the stacked pages widget containing the page QScrollArea* sa = new QScrollArea(pagesWidget); sa->setWidgetResizable(true); - sa->setWidget(pWidget); pagesWidget->addWidget(sa); int iframe = 2 * sa->frameWidth(); m_pageSizeHint = m_pageSizeHint.expandedTo( pWidget->sizeHint()+QSize(iframe, iframe)); - } DlgPreferencePage* DlgPreferences::currentPage() { @@ -558,7 +524,7 @@ void DlgPreferences::moveEvent(QMoveEvent* e) { Q_UNUSED(e); m_geometry[0] = QString::number(frameGeometry().left()); m_geometry[1] = QString::number(frameGeometry().top()); -#else +#else /* __WINDOWS__ */ // Warning! geometry does NOT include the frame/title. int offsetX = geometry().left() - frameGeometry().left(); int offsetY = geometry().top() - frameGeometry().top(); diff --git a/src/preferences/dialog/dlgpreferences.h b/src/preferences/dialog/dlgpreferences.h index f19b7b955eb2..b57d3db257c3 100644 --- a/src/preferences/dialog/dlgpreferences.h +++ b/src/preferences/dialog/dlgpreferences.h @@ -1,15 +1,16 @@ #pragma once #include +#include #include #include #include -#include "preferences/dialog/ui_dlgpreferencesdlg.h" -#include "preferences/usersettings.h" #include "control/controlpushbutton.h" -#include "preferences/dlgpreferencepage.h" +#include "preferences/dialog/dlgpreferencepage.h" +#include "preferences/dialog/ui_dlgpreferencesdlg.h" #include "preferences/settingsmanager.h" +#include "preferences/usersettings.h" class MixxxMainWindow; class SoundManager; @@ -49,11 +50,11 @@ class DlgPrefModplug; class DlgPreferences : public QDialog, public Ui::DlgPreferencesDlg { Q_OBJECT public: - DlgPreferences(MixxxMainWindow* mixxx, + DlgPreferences(MixxxMainWindow* pMixxx, SkinLoader* pSkinLoader, - SoundManager* soundman, + SoundManager* pSoundManager, PlayerManager* pPlayerManager, - ControllerManager* controllers, + ControllerManager* pControllerManager, VinylControlManager* pVCManager, LV2Backend* pLV2Backend, EffectsManager* pEffectsManager, @@ -61,13 +62,16 @@ class DlgPreferences : public QDialog, public Ui::DlgPreferencesDlg { Library* pLibrary); virtual ~DlgPreferences(); - void addPageWidget(DlgPreferencePage* pWidget); + void addPageWidget(DlgPreferencePage* pWidget, + QTreeWidgetItem* pTreeItem, + const QString& pageTitle, + const QString& iconFile); void removePageWidget(DlgPreferencePage* pWidget); void expandTreeItem(QTreeWidgetItem* pItem); void switchToPage(DlgPreferencePage* pWidget); public slots: - void changePage(QTreeWidgetItem* current, QTreeWidgetItem* previous); + void changePage(QTreeWidgetItem* pCurrent, QTreeWidgetItem* pPrevious); void showSoundHardwarePage(); void slotButtonPressed(QAbstractButton* pButton); signals: @@ -88,7 +92,6 @@ class DlgPreferences : public QDialog, public Ui::DlgPreferencesDlg { private: DlgPreferencePage* currentPage(); - void createIcons(); void onShow(); void onHide(); QRect getDefaultGeometry(); @@ -98,8 +101,11 @@ class DlgPreferences : public QDialog, public Ui::DlgPreferencesDlg { DlgPrefSound* m_soundPage; DlgPrefLibrary* m_libraryPage; DlgPrefControllers *m_controllersPage; +#ifdef __VINYLCONTROL__ DlgPrefVinyl* m_vinylControlPage; +#else /* __VINYLCONTROL__ */ DlgPrefNoVinyl* m_noVinylControlPage; +#endif DlgPrefInterface* m_interfacePage; DlgPrefWaveform* m_waveformPage; DlgPrefDeck* m_deckPage; @@ -118,11 +124,11 @@ class DlgPreferences : public QDialog, public Ui::DlgPreferencesDlg { #endif /* __LILV__ */ #ifdef __MODPLUG__ DlgPrefModplug* m_modplugPage; -#endif +#endif /* __MODPLUG__ */ QTreeWidgetItem* m_pSoundButton; QTreeWidgetItem* m_pLibraryButton; - QTreeWidgetItem* m_pControllerTreeItem; + QTreeWidgetItem* m_pControllersRootButton; QTreeWidgetItem* m_pVinylControlButton; QTreeWidgetItem* m_pInterfaceButton; QTreeWidgetItem* m_pWaveformButton; @@ -134,7 +140,6 @@ class DlgPreferences : public QDialog, public Ui::DlgPreferencesDlg { #endif /* __LILV__ */ QTreeWidgetItem* m_pEffectsButton; QTreeWidgetItem* m_pCrossfaderButton; - //QTreeWidgetItem* m_pEffectsButton; QTreeWidgetItem* m_pAutoDJButton; QTreeWidgetItem* m_pBroadcastButton; QTreeWidgetItem* m_pRecordingButton; @@ -143,7 +148,9 @@ class DlgPreferences : public QDialog, public Ui::DlgPreferencesDlg { QTreeWidgetItem* m_pReplayGainButton; #ifdef __MODPLUG__ QTreeWidgetItem* m_pModplugButton; -#endif +#endif /* __MODPLUG__ */ QSize m_pageSizeHint; + + QDir m_iconsPath; }; diff --git a/src/preferences/dialog/dlgprefinterface.h b/src/preferences/dialog/dlgprefinterface.h index 1dfe7aaf6e20..0b635abc9237 100644 --- a/src/preferences/dialog/dlgprefinterface.h +++ b/src/preferences/dialog/dlgprefinterface.h @@ -3,9 +3,9 @@ #include #include "preferences/constants.h" +#include "preferences/dialog/dlgpreferencepage.h" #include "preferences/dialog/ui_dlgprefinterfacedlg.h" #include "preferences/usersettings.h" -#include "preferences/dlgpreferencepage.h" class ControlProxy; class ControlPotmeter; diff --git a/src/preferences/dialog/dlgprefkey.h b/src/preferences/dialog/dlgprefkey.h index f76a02babc0d..fa541a6533e7 100644 --- a/src/preferences/dialog/dlgprefkey.h +++ b/src/preferences/dialog/dlgprefkey.h @@ -7,8 +7,8 @@ #include "analyzer/plugins/analyzerplugin.h" #include "control/controlproxy.h" #include "defs_urls.h" +#include "preferences/dialog/dlgpreferencepage.h" #include "preferences/dialog/ui_dlgprefkeydlg.h" -#include "preferences/dlgpreferencepage.h" #include "preferences/keydetectionsettings.h" #include "preferences/usersettings.h" #include "track/keyutils.h" diff --git a/src/preferences/dialog/dlgpreflibrary.h b/src/preferences/dialog/dlgpreflibrary.h index 09bbd9a33601..341b7e61f1bc 100644 --- a/src/preferences/dialog/dlgpreflibrary.h +++ b/src/preferences/dialog/dlgpreflibrary.h @@ -7,8 +7,8 @@ #include "defs_urls.h" #include "library/library.h" #include "library/library_preferences.h" +#include "preferences/dialog/dlgpreferencepage.h" #include "preferences/dialog/ui_dlgpreflibrarydlg.h" -#include "preferences/dlgpreferencepage.h" #include "preferences/usersettings.h" class DlgPrefLibrary : public DlgPreferencePage, public Ui::DlgPrefLibraryDlg { diff --git a/src/preferences/dialog/dlgpreflv2.h b/src/preferences/dialog/dlgpreflv2.h index b3c9318d6c96..fe37ca05f565 100644 --- a/src/preferences/dialog/dlgpreflv2.h +++ b/src/preferences/dialog/dlgpreflv2.h @@ -1,12 +1,12 @@ #pragma once -#include #include +#include +#include "effects/lv2/lv2backend.h" +#include "preferences/dialog/dlgpreferencepage.h" #include "preferences/dialog/ui_dlgpreflv2dlg.h" #include "preferences/usersettings.h" -#include "preferences/dlgpreferencepage.h" -#include "effects/lv2/lv2backend.h" class EffectsManager; diff --git a/src/preferences/dialog/dlgprefmodplug.h b/src/preferences/dialog/dlgprefmodplug.h index 1e59f528f6a6..34855047d716 100644 --- a/src/preferences/dialog/dlgprefmodplug.h +++ b/src/preferences/dialog/dlgprefmodplug.h @@ -3,8 +3,9 @@ #pragma once #include + +#include "preferences/dialog/dlgpreferencepage.h" #include "preferences/usersettings.h" -#include "preferences/dlgpreferencepage.h" namespace Ui { class DlgPrefModplug; diff --git a/src/preferences/dialog/dlgprefnovinyl.h b/src/preferences/dialog/dlgprefnovinyl.h index b03d9237b8e8..e6987fa972cc 100644 --- a/src/preferences/dialog/dlgprefnovinyl.h +++ b/src/preferences/dialog/dlgprefnovinyl.h @@ -2,9 +2,9 @@ #include +#include "preferences/dialog/dlgpreferencepage.h" #include "preferences/dialog/ui_dlgprefnovinyldlg.h" #include "preferences/usersettings.h" -#include "preferences/dlgpreferencepage.h" class SoundManager; diff --git a/src/preferences/dialog/dlgprefrecord.h b/src/preferences/dialog/dlgprefrecord.h index c6ff03eb2524..1f2df3f647f3 100644 --- a/src/preferences/dialog/dlgprefrecord.h +++ b/src/preferences/dialog/dlgprefrecord.h @@ -4,10 +4,10 @@ #include #include +#include "encoder/encoder.h" +#include "preferences/dialog/dlgpreferencepage.h" #include "preferences/dialog/ui_dlgprefrecorddlg.h" #include "preferences/usersettings.h" -#include "preferences/dlgpreferencepage.h" -#include "encoder/encoder.h" class ControlObject; class ControlProxy; diff --git a/src/preferences/dialog/dlgprefreplaygain.h b/src/preferences/dialog/dlgprefreplaygain.h index 6153a51f2ad3..5266f413ea0a 100644 --- a/src/preferences/dialog/dlgprefreplaygain.h +++ b/src/preferences/dialog/dlgprefreplaygain.h @@ -3,10 +3,10 @@ #include #include +#include "control/controlproxy.h" +#include "preferences/dialog/dlgpreferencepage.h" #include "preferences/dialog/ui_dlgprefreplaygaindlg.h" #include "preferences/replaygainsettings.h" -#include "control/controlproxy.h" -#include "preferences/dlgpreferencepage.h" class DlgPrefReplayGain: public DlgPreferencePage, public Ui::DlgPrefReplayGainDlg { diff --git a/src/preferences/dialog/dlgprefsound.h b/src/preferences/dialog/dlgprefsound.h index 8eea151afe01..63cdfa12e31b 100644 --- a/src/preferences/dialog/dlgprefsound.h +++ b/src/preferences/dialog/dlgprefsound.h @@ -1,8 +1,8 @@ #pragma once #include "defs_urls.h" +#include "preferences/dialog/dlgpreferencepage.h" #include "preferences/dialog/ui_dlgprefsounddlg.h" -#include "preferences/dlgpreferencepage.h" #include "preferences/usersettings.h" #include "soundio/sounddevice.h" #include "soundio/sounddeviceerror.h" diff --git a/src/preferences/dialog/dlgprefvinyl.h b/src/preferences/dialog/dlgprefvinyl.h index 16f6fd20c1cd..5c388c6ea04b 100644 --- a/src/preferences/dialog/dlgprefvinyl.h +++ b/src/preferences/dialog/dlgprefvinyl.h @@ -3,8 +3,8 @@ #include #include +#include "preferences/dialog/dlgpreferencepage.h" #include "preferences/dialog/ui_dlgprefvinyldlg.h" -#include "preferences/dlgpreferencepage.h" #include "preferences/usersettings.h" #include "vinylcontrol/vinylcontrolsignalwidget.h" diff --git a/src/preferences/dialog/dlgprefwaveform.h b/src/preferences/dialog/dlgprefwaveform.h index e3325cf1ec60..a400e0b92902 100644 --- a/src/preferences/dialog/dlgprefwaveform.h +++ b/src/preferences/dialog/dlgprefwaveform.h @@ -2,9 +2,9 @@ #include +#include "preferences/dialog/dlgpreferencepage.h" #include "preferences/dialog/ui_dlgprefwaveformdlg.h" #include "preferences/usersettings.h" -#include "preferences/dlgpreferencepage.h" class MixxxMainWindow; class Library;