diff options
author | RJ Ryan <rryan@mixxx.org> | 2016-01-15 10:10:21 -0800 |
---|---|---|
committer | RJ Ryan <rryan@mixxx.org> | 2016-01-15 11:03:29 -0800 |
commit | 7c6987648c649b632c05fae6385c8a6d377875f5 (patch) | |
tree | 73cc11383fbc992344305010ba72d7a31c1af47e /src/mixer | |
parent | 0bb570394a0cec51861600145ab5f3077865e2cd (diff) |
Move menu logic and VC/Passthrough/Mic checking out of MixxxMainWindow.
Drops 1000+ lines from mixxx.h/mixxx.cpp -- now they're "only" 1400 lines!
Diffstat (limited to 'src/mixer')
-rw-r--r-- | src/mixer/basetrackplayer.cpp | 39 | ||||
-rw-r--r-- | src/mixer/basetrackplayer.h | 13 | ||||
-rw-r--r-- | src/mixer/deck.cpp | 2 | ||||
-rw-r--r-- | src/mixer/deck.h | 8 | ||||
-rw-r--r-- | src/mixer/microphone.cpp | 17 | ||||
-rw-r--r-- | src/mixer/microphone.h | 11 | ||||
-rw-r--r-- | src/mixer/playermanager.cpp | 7 | ||||
-rw-r--r-- | src/mixer/playermanager.h | 12 |
8 files changed, 102 insertions, 7 deletions
diff --git a/src/mixer/basetrackplayer.cpp b/src/mixer/basetrackplayer.cpp index 03ecc8bd5e..a28c60ec7a 100644 --- a/src/mixer/basetrackplayer.cpp +++ b/src/mixer/basetrackplayer.cpp @@ -14,6 +14,7 @@ #include "analyzer/analyzerqueue.h" #include "util/sandbox.h" #include "effects/effectsmanager.h" +#include "vinylcontrol/defs_vinylcontrol.h" BaseTrackPlayer::BaseTrackPlayer(QObject* pParent, const QString& group) : BasePlayer(pParent, group) { @@ -24,7 +25,7 @@ BaseTrackPlayerImpl::BaseTrackPlayerImpl(QObject* pParent, EngineMaster* pMixingEngine, EffectsManager* pEffectsManager, EngineChannel::ChannelOrientation defaultOrientation, - QString group, + const QString& group, bool defaultMaster, bool defaultHeadphones) : BaseTrackPlayer(pParent, group), @@ -44,6 +45,15 @@ BaseTrackPlayerImpl::BaseTrackPlayerImpl(QObject* pParent, m_pChannel = new EngineDeck(channelGroup, pConfig, pMixingEngine, pEffectsManager, defaultOrientation); + m_pInputEnabled.reset(new ControlObjectSlave(group, "input_enabled", this)); + m_pPassthroughEnabled.reset(new ControlObjectSlave(group, "passthrough", this)); + m_pPassthroughEnabled->connectValueChanged(SLOT(slotPassthroughEnabled(double))); +#ifdef __VINYLCONTROL__ + m_pVinylControlEnabled.reset(new ControlObjectSlave(group, "vinylcontrol_enabled", this)); + m_pVinylControlEnabled->connectValueChanged(SLOT(slotVinylControlEnabled(double))); + m_pVinylControlStatus.reset(new ControlObjectSlave(group, "vinylcontrol_status", this)); +#endif + EngineBuffer* pEngineBuffer = m_pChannel->getEngineBuffer(); pMixingEngine->addChannel(m_pChannel); @@ -335,3 +345,30 @@ void BaseTrackPlayerImpl::setupEqControls() { m_pSpeed = new ControlObjectSlave(group, "rate", this); m_pPitchAdjust = new ControlObjectSlave(group, "pitch_adjust", this); } + +void BaseTrackPlayerImpl::slotPassthroughEnabled(double v) { + bool configured = m_pInputEnabled->toBool(); + bool passthrough = v > 0.0; + + // Warn the user if they try to enable passthrough on a player with no + // configured input. + if (!configured && passthrough) { + m_pPassthroughEnabled->set(0.0); + emit(noPassthroughInputConfigured()); + } +} + +void BaseTrackPlayerImpl::slotVinylControlEnabled(double v) { +#ifdef __VINYLCONTROL__ + bool configured = m_pInputEnabled->toBool(); + bool vinylcontrol_enabled = v > 0.0; + + // Warn the user if they try to enable vinyl control on a player with no + // configured input. + if (!configured && vinylcontrol_enabled) { + m_pVinylControlEnabled->set(0.0); + m_pVinylControlStatus->set(VINYL_STATUS_DISABLED); + emit(noVinylControlInputConfigured()); + } +#endif +} diff --git a/src/mixer/basetrackplayer.h b/src/mixer/basetrackplayer.h index 52e168afe6..8225dce24a 100644 --- a/src/mixer/basetrackplayer.h +++ b/src/mixer/basetrackplayer.h @@ -2,6 +2,7 @@ #define MIXER_BASETRACKPLAYER_H #include <QObject> +#include <QScopedPointer> #include <QString> #include "configobject.h" @@ -41,6 +42,8 @@ class BaseTrackPlayer : public BasePlayer { void loadTrackFailed(TrackPointer pTrack); void newTrackLoaded(TrackPointer pLoadedTrack); void unloadingTrack(TrackPointer pAboutToBeUnloaded); + void noPassthroughInputConfigured(); + void noVinylControlInputConfigured(); }; class BaseTrackPlayerImpl : public BaseTrackPlayer { @@ -51,7 +54,7 @@ class BaseTrackPlayerImpl : public BaseTrackPlayer { EngineMaster* pMixingEngine, EffectsManager* pEffectsManager, EngineChannel::ChannelOrientation defaultOrientation, - QString group, + const QString& group, bool defaultMaster, bool defaultHeadphones); virtual ~BaseTrackPlayerImpl(); @@ -72,6 +75,10 @@ class BaseTrackPlayerImpl : public BaseTrackPlayer { void slotSetReplayGain(Mixxx::ReplayGain replayGain); void slotPlayToggled(double); + private slots: + void slotPassthroughEnabled(double v); + void slotVinylControlEnabled(double v); + private: ConfigObject<ConfigValue>* m_pConfig; TrackPointer m_pLoadedTrack; @@ -100,6 +107,10 @@ class BaseTrackPlayerImpl : public BaseTrackPlayer { ControlObjectSlave* m_pPreGain; ControlObjectSlave* m_pSpeed; ControlObjectSlave* m_pPitchAdjust; + QScopedPointer<ControlObjectSlave> m_pInputEnabled; + QScopedPointer<ControlObjectSlave> m_pPassthroughEnabled; + QScopedPointer<ControlObjectSlave> m_pVinylControlEnabled; + QScopedPointer<ControlObjectSlave> m_pVinylControlStatus; EngineDeck* m_pChannel; bool m_replaygainPending; diff --git a/src/mixer/deck.cpp b/src/mixer/deck.cpp index 3b05c986dd..6f47274fad 100644 --- a/src/mixer/deck.cpp +++ b/src/mixer/deck.cpp @@ -5,7 +5,7 @@ Deck::Deck(QObject* pParent, EngineMaster* pMixingEngine, EffectsManager* pEffectsManager, EngineChannel::ChannelOrientation defaultOrientation, - QString group) : + const QString& group) : BaseTrackPlayerImpl(pParent, pConfig, pMixingEngine, pEffectsManager, defaultOrientation, group, true, false) { } diff --git a/src/mixer/deck.h b/src/mixer/deck.h index af194f3c9f..0a7f86b294 100644 --- a/src/mixer/deck.h +++ b/src/mixer/deck.h @@ -1,5 +1,5 @@ -#ifndef DECK_H -#define DECK_H +#ifndef MIXER_DECK_H +#define MIXER_DECK_H #include <QObject> @@ -13,8 +13,8 @@ class Deck : public BaseTrackPlayerImpl { EngineMaster* pMixingEngine, EffectsManager* pEffectsManager, EngineChannel::ChannelOrientation defaultOrientation, - QString group); + const QString& group); virtual ~Deck(); }; -#endif // DECK_H +#endif // MIXER_DECK_H diff --git a/src/mixer/microphone.cpp b/src/mixer/microphone.cpp index 701a48a707..404a644894 100644 --- a/src/mixer/microphone.cpp +++ b/src/mixer/microphone.cpp @@ -1,5 +1,6 @@ #include "mixer/microphone.h" +#include "controlobjectslave.h" #include "engine/enginemaster.h" #include "engine/enginemicrophone.h" #include "soundio/soundmanager.h" @@ -15,7 +16,23 @@ Microphone::Microphone(QObject* pParent, const QString& group, int index, pEngine->addChannel(pMicrophone); AudioInput micInput = AudioInput(AudioPath::MICROPHONE, 0, 0, index); pSoundManager->registerInput(micInput, pMicrophone); + + m_pInputEnabled.reset(new ControlObjectSlave(group, "enabled", this)); + m_pTalkoverEnabled.reset(new ControlObjectSlave(group, "talkover", this)); + m_pTalkoverEnabled->connectValueChanged(SLOT(slotTalkoverEnabled(double))); } Microphone::~Microphone() { } + +void Microphone::slotTalkoverEnabled(double v) { + bool configured = m_pInputEnabled->toBool(); + bool talkover = v > 0.0; + + // Warn the user if they try to enable talkover on a microphone with no + // configured input. + if (!configured && talkover) { + m_pTalkoverEnabled->set(0.0); + emit(noMicrophoneInputConfigured()); + } +} diff --git a/src/mixer/microphone.h b/src/mixer/microphone.h index ea76367706..72f2921184 100644 --- a/src/mixer/microphone.h +++ b/src/mixer/microphone.h @@ -2,10 +2,12 @@ #define MIXER_MICROPHONE_H #include <QObject> +#include <QScopedPointer> #include <QString> #include "mixer/baseplayer.h" +class ControlObjectSlave; class EffectsManager; class EngineMaster; class SoundManager; @@ -21,6 +23,15 @@ class Microphone : public BasePlayer { EffectsManager* pEffectsManager); virtual ~Microphone(); + signals: + void noMicrophoneInputConfigured(); + + private slots: + void slotTalkoverEnabled(double v); + + private: + QScopedPointer<ControlObjectSlave> m_pInputEnabled; + QScopedPointer<ControlObjectSlave> m_pTalkoverEnabled; }; #endif /* MIXER_MICROPHONE_H */ diff --git a/src/mixer/playermanager.cpp b/src/mixer/playermanager.cpp index ae4481ea05..a408ee01da 100644 --- a/src/mixer/playermanager.cpp +++ b/src/mixer/playermanager.cpp @@ -337,6 +337,11 @@ void PlayerManager::addDeckInner() { Deck* pDeck = new Deck(this, m_pConfig, m_pEngine, m_pEffectsManager, orientation, group); + connect(pDeck, SIGNAL(noPassthroughInputConfigured()), + this, SIGNAL(noDeckPassthroughInputConfigured())); + connect(pDeck, SIGNAL(noVinylControlInputConfigured()), + this, SIGNAL(noVinylControlInputConfigured())); + if (m_pAnalyzerQueue) { connect(pDeck, SIGNAL(newTrackLoaded(TrackPointer)), m_pAnalyzerQueue, SLOT(slotAnalyseTrack(TrackPointer))); @@ -440,6 +445,8 @@ void PlayerManager::addMicrophoneInner() { QString group = groupForMicrophone(index); Microphone* pMicrophone = new Microphone(this, group, index, m_pSoundManager, m_pEngine, m_pEffectsManager); + connect(pMicrophone, SIGNAL(noMicrophoneInputConfigured()), + this, SIGNAL(noMicrophoneInputConfigured())); m_microphones.append(pMicrophone); } diff --git a/src/mixer/playermanager.h b/src/mixer/playermanager.h index 19ed303b2d..a9c05838ff 100644 --- a/src/mixer/playermanager.h +++ b/src/mixer/playermanager.h @@ -191,6 +191,18 @@ class PlayerManager : public QObject, public PlayerManagerInterface { signals: void loadLocationToPlayer(QString location, QString group); + // Emitted when the user tries to enable a microphone talkover control when + // there is no input configured. + void noMicrophoneInputConfigured(); + + // Emitted when the user tries to enable deck passthrough when there is no + // input configured. + void noDeckPassthroughInputConfigured(); + + // Emitted when the user tries to enable vinyl control when there is no + // input configured. + void noVinylControlInputConfigured(); + private: TrackPointer lookupTrack(QString location); // Must hold m_mutex before calling this method. Internal method that |