Skip to content

Commit

Permalink
Add mixer LCD channels for Instrument & Sample tracks (LMMS#6831)
Browse files Browse the repository at this point in the history
* Add mixer channel LCD to SampleTrackView

* Increase sizes to compensate for LCD box
The DEFAULT_SETTINGS_WIDGET_WIDTH and
DEFAULT_SETTINGS_WIDGET_WIDTH_COMPACT
were both increased by +32 pixels. TRACK_OP_WIDTH
 and TRACK_OP_WIDTH_COMPACT were then changed
 relative to that increase.

* Use Qt layout in SampleTrackView

* Add mixer channel LCD to InstrumentTrackView

* Move LCD box to the right of the track label

* Revert changes to TRACK_OP_WIDTH and TRACK_OP_WIDTH_COMPACT
  • Loading branch information
sakertooth authored Aug 28, 2023
1 parent e2fd288 commit 1e6a66f
Show file tree
Hide file tree
Showing 5 changed files with 42 additions and 26 deletions.
3 changes: 3 additions & 0 deletions include/InstrumentTrackView.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
#ifndef LMMS_GUI_INSTRUMENT_TRACK_VIEW_H
#define LMMS_GUI_INSTRUMENT_TRACK_VIEW_H

#include "MixerLineLcdSpinBox.h"
#include "TrackView.h"

#include "InstrumentTrack.h"
Expand Down Expand Up @@ -72,6 +73,7 @@ class InstrumentTrackView : public TrackView


protected:
void modelChanged() override;
void dragEnterEvent( QDragEnterEvent * _dee ) override;
void dropEvent( QDropEvent * _de ) override;

Expand All @@ -97,6 +99,7 @@ private slots:

// widgets in track-settings-widget
TrackLabelButton * m_tlb;
MixerLineLcdSpinBox* m_mixerChannelNumber;
Knob * m_volumeKnob;
Knob * m_panningKnob;
FadeButton * m_activityIndicator;
Expand Down
2 changes: 2 additions & 0 deletions include/SampleTrackView.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
#define LMMS_GUI_SAMPLE_TRACK_VIEW_H


#include "MixerLineLcdSpinBox.h"
#include "TrackView.h"

namespace lmms
Expand Down Expand Up @@ -90,6 +91,7 @@ private slots:

private:
SampleTrackWindow * m_window;
MixerLineLcdSpinBox* m_mixerChannelNumber;
Knob * m_volumeKnob;
Knob * m_panningKnob;
FadeButton * m_activityIndicator;
Expand Down
4 changes: 2 additions & 2 deletions include/TrackView.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,11 +48,11 @@ class FadeButton;
class TrackContainerView;


const int DEFAULT_SETTINGS_WIDGET_WIDTH = 224;
const int DEFAULT_SETTINGS_WIDGET_WIDTH = 256;
const int TRACK_OP_WIDTH = 78;
// This shaves 150-ish pixels off track buttons,
// ruled from config: ui.compacttrackbuttons
const int DEFAULT_SETTINGS_WIDGET_WIDTH_COMPACT = 96;
const int DEFAULT_SETTINGS_WIDGET_WIDTH_COMPACT = 128;
const int TRACK_OP_WIDTH_COMPACT = 62;


Expand Down
36 changes: 20 additions & 16 deletions src/gui/tracks/InstrumentTrackView.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,6 @@ InstrumentTrackView::InstrumentTrackView( InstrumentTrack * _it, TrackContainerV
m_tlb = new TrackLabelButton( this, getTrackSettingsWidget() );
m_tlb->setCheckable( true );
m_tlb->setIcon( embed::getIconPixmap( "instrument_track" ) );
m_tlb->move( 3, 1 );
m_tlb->show();

connect( m_tlb, SIGNAL(toggled(bool)),
Expand All @@ -75,32 +74,21 @@ InstrumentTrackView::InstrumentTrackView( InstrumentTrack * _it, TrackContainerV
connect(ConfigManager::inst(), SIGNAL(valueChanged(QString,QString,QString)),
this, SLOT(handleConfigChange(QString,QString,QString)));

// creation of widgets for track-settings-widget
int widgetWidth;
if( ConfigManager::inst()->value( "ui",
"compacttrackbuttons" ).toInt() )
{
widgetWidth = DEFAULT_SETTINGS_WIDGET_WIDTH_COMPACT;
}
else
{
widgetWidth = DEFAULT_SETTINGS_WIDGET_WIDTH;
}
m_mixerChannelNumber = new MixerLineLcdSpinBox(2, getTrackSettingsWidget(), tr("Mixer channel"), this);
m_mixerChannelNumber->show();

m_volumeKnob = new Knob( KnobType::Small17, getTrackSettingsWidget(),
tr( "Volume" ) );
m_volumeKnob->setVolumeKnob( true );
m_volumeKnob->setModel( &_it->m_volumeModel );
m_volumeKnob->setHintText( tr( "Volume:" ), "%" );
m_volumeKnob->move( widgetWidth-2*24, 2 );
m_volumeKnob->setLabel( tr( "VOL" ) );
m_volumeKnob->show();

m_panningKnob = new Knob( KnobType::Small17, getTrackSettingsWidget(),
tr( "Panning" ) );
m_panningKnob->setModel( &_it->m_panningModel );
m_panningKnob->setHintText(tr("Panning:"), "%");
m_panningKnob->move( widgetWidth-24, 2 );
m_panningKnob->setLabel( tr( "PAN" ) );
m_panningKnob->show();

Expand Down Expand Up @@ -151,9 +139,18 @@ InstrumentTrackView::InstrumentTrackView( InstrumentTrack * _it, TrackContainerV
QApplication::palette().color( QPalette::Active,
QPalette::BrightText).darker(),
getTrackSettingsWidget() );
m_activityIndicator->setGeometry(
widgetWidth-2*24-11, 2, 8, 28 );
m_activityIndicator->setFixedSize(8, 28);
m_activityIndicator->show();

auto layout = new QHBoxLayout(getTrackSettingsWidget());
layout->setContentsMargins(0, 0, 0, 0);
layout->setSpacing(0);
layout->addWidget(m_tlb);
layout->addWidget(m_mixerChannelNumber);
layout->addWidget(m_activityIndicator);
layout->addWidget(m_volumeKnob);
layout->addWidget(m_panningKnob);

connect( m_activityIndicator, SIGNAL(pressed()),
this, SLOT(activityIndicatorPressed()));
connect( m_activityIndicator, SIGNAL(released()),
Expand Down Expand Up @@ -268,6 +265,13 @@ void InstrumentTrackView::handleConfigChange(QString cls, QString attr, QString
}
}

void InstrumentTrackView::modelChanged()
{
TrackView::modelChanged();
auto st = castModel<InstrumentTrack>();
m_mixerChannelNumber->setModel(&st->m_mixerChannelModel);
}

void InstrumentTrackView::dragEnterEvent( QDragEnterEvent * _dee )
{
InstrumentTrackWindow::dragEnterEventGeneric( _dee );
Expand Down
23 changes: 15 additions & 8 deletions src/gui/tracks/SampleTrackView.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -56,28 +56,24 @@ SampleTrackView::SampleTrackView( SampleTrack * _t, TrackContainerView* tcv ) :
connect(m_tlb, SIGNAL(clicked(bool)),
this, SLOT(showEffects()));
m_tlb->setIcon(embed::getIconPixmap("sample_track"));
m_tlb->move(3, 1);
m_tlb->show();

m_mixerChannelNumber = new MixerLineLcdSpinBox(2, getTrackSettingsWidget(), tr("Mixer channel"), this);
m_mixerChannelNumber->show();

m_volumeKnob = new Knob( KnobType::Small17, getTrackSettingsWidget(),
tr( "Track volume" ) );
m_volumeKnob->setVolumeKnob( true );
m_volumeKnob->setModel( &_t->m_volumeModel );
m_volumeKnob->setHintText( tr( "Channel volume:" ), "%" );

int settingsWidgetWidth = ConfigManager::inst()->
value( "ui", "compacttrackbuttons" ).toInt()
? DEFAULT_SETTINGS_WIDGET_WIDTH_COMPACT
: DEFAULT_SETTINGS_WIDGET_WIDTH;
m_volumeKnob->move( settingsWidgetWidth - 2 * 24, 2 );
m_volumeKnob->setLabel( tr( "VOL" ) );
m_volumeKnob->show();

m_panningKnob = new Knob( KnobType::Small17, getTrackSettingsWidget(),
tr( "Panning" ) );
m_panningKnob->setModel( &_t->m_panningModel );
m_panningKnob->setHintText( tr( "Panning:" ), "%" );
m_panningKnob->move( settingsWidgetWidth - 24, 2 );
m_panningKnob->setLabel( tr( "PAN" ) );
m_panningKnob->show();

Expand All @@ -87,8 +83,18 @@ SampleTrackView::SampleTrackView( SampleTrack * _t, TrackContainerView* tcv ) :
QApplication::palette().color(QPalette::Active, QPalette::BrightText).darker(),
getTrackSettingsWidget()
);
m_activityIndicator->setGeometry(settingsWidgetWidth - 2 * 24 - 11, 2, 8, 28);
m_activityIndicator->setFixedSize(8, 28);
m_activityIndicator->show();

auto layout = new QHBoxLayout(getTrackSettingsWidget());
layout->setContentsMargins(0, 0, 0, 0);
layout->setSpacing(0);
layout->addWidget(m_tlb);
layout->addWidget(m_mixerChannelNumber);
layout->addWidget(m_activityIndicator);
layout->addWidget(m_volumeKnob);
layout->addWidget(m_panningKnob);

connect(_t, SIGNAL(playingChanged()), this, SLOT(updateIndicator()));

setModel( _t );
Expand Down Expand Up @@ -170,6 +176,7 @@ void SampleTrackView::modelChanged()
{
auto st = castModel<SampleTrack>();
m_volumeKnob->setModel(&st->m_volumeModel);
m_mixerChannelNumber->setModel(&st->m_mixerChannelModel);

TrackView::modelChanged();
}
Expand Down

0 comments on commit 1e6a66f

Please sign in to comment.