diff --git a/src/widget/woverview.cpp b/src/widget/woverview.cpp index a6475491f791..1d86575c2903 100644 --- a/src/widget/woverview.cpp +++ b/src/widget/woverview.cpp @@ -54,6 +54,7 @@ WOverview::WOverview( m_group(group), m_pConfig(pConfig), m_endOfTrack(false), + m_bPassthroughEnabled(false), m_pCueMenuPopup(make_parented(pConfig, this)), m_bShowCueTimes(true), m_iPosSeconds(0), @@ -80,6 +81,11 @@ WOverview::WOverview( m_trackSamplesControl = new ControlProxy(m_group, "track_samples", this); m_playpositionControl = new ControlProxy(m_group, "playposition", this); + m_pPassthroughControl = + new ControlProxy(m_group, "passthrough", this); + m_pPassthroughControl->connectValueChanged(this, &WOverview::onPassthroughChange); + onPassthroughChange(m_pPassthroughControl->get()); + setAcceptDrops(true); setMouseTracking(true); @@ -236,6 +242,12 @@ void WOverview::onConnectedControlChanged(double dParameter, double dValue) { void WOverview::slotWaveformSummaryUpdated() { //qDebug() << "WOverview::slotWaveformSummaryUpdated()"; + + // Do not draw the waveform when passthrough is enabled + if (m_bPassthroughEnabled) { + return; + } + TrackPointer pTrack(m_pCurrentTrack); if (!pTrack) { return; @@ -342,6 +354,17 @@ void WOverview::onRateRatioChange(double v) { update(); } +void WOverview::onPassthroughChange(double v) { + m_bPassthroughEnabled = static_cast(v); + + if (!m_bPassthroughEnabled) { + slotWaveformSummaryUpdated(); + } + + // Always call this to trigger a repaint even if not track is loaded + update(); +} + void WOverview::updateCues(const QList &loadedCues) { m_marksToRender.clear(); for (CuePointer currentCue: loadedCues) { @@ -540,6 +563,11 @@ void WOverview::paintEvent(QPaintEvent* pEvent) { painter.drawPixmap(rect(), m_backgroundPixmap); } + if (m_bPassthroughEnabled) { + paintText(tr("Passthrough"), &painter); + return; + } + if (m_pCurrentTrack) { // Refer to util/ScopePainter.h to understand the semantics of // ScopePainter. diff --git a/src/widget/woverview.h b/src/widget/woverview.h index a3e6a93d44b7..85abc2cb812a 100644 --- a/src/widget/woverview.h +++ b/src/widget/woverview.h @@ -12,25 +12,23 @@ #ifndef WOVERVIEW_H #define WOVERVIEW_H -#include -#include -#include #include #include +#include +#include +#include #include "analyzer/analyzerprogress.h" +#include "skin/skincontext.h" #include "track/track.h" -#include "widget/wcuemenupopup.h" -#include "widget/trackdroptarget.h" -#include "widget/wwidget.h" - #include "util/color/color.h" #include "util/parented_ptr.h" - -#include "waveform/renderers/waveformsignalcolors.h" -#include "waveform/renderers/waveformmarkset.h" #include "waveform/renderers/waveformmarkrange.h" -#include "skin/skincontext.h" +#include "waveform/renderers/waveformmarkset.h" +#include "waveform/renderers/waveformsignalcolors.h" +#include "widget/trackdroptarget.h" +#include "widget/wcuemenupopup.h" +#include "widget/wwidget.h" class PlayerManager; class PainterScope; @@ -99,6 +97,7 @@ class WOverview : public WWidget, public TrackDropTarget { void onMarkChanged(double v); void onMarkRangeChange(double v); void onRateRatioChange(double v); + void onPassthroughChange(double v); void receiveCuesUpdated(); void slotWaveformSummaryUpdated(); @@ -133,10 +132,12 @@ class WOverview : public WWidget, public TrackDropTarget { UserSettingsPointer m_pConfig; ControlProxy* m_endOfTrackControl; bool m_endOfTrack; + bool m_bPassthroughEnabled; ControlProxy* m_pRateRatioControl; ControlProxy* m_trackSampleRateControl; ControlProxy* m_trackSamplesControl; ControlProxy* m_playpositionControl; + ControlProxy* m_pPassthroughControl; // Current active track TrackPointer m_pCurrentTrack;