From db6164ca91f671cba81e3c603a99db1176a44db6 Mon Sep 17 00:00:00 2001 From: Paul Giblock Date: Wed, 30 Sep 2009 03:12:25 -0400 Subject: [PATCH] Requested improvements to new FxMixerView$ * lock fx mixer height Done. channelArea->setFixedHeight and proper sizeConstraints * width: pick a good min. size. keep max. size off. Done. Set to 6 fx-lines. * effects chain should align to the right Done. * get rid of padding in mixer Done. setSpacing and setMargin on chLayout * scroll area so that vert scrollbar is never seen. Done. setVerticalScrollBarPolicy and proper height calculation * Get rid of scroll bar area border Done. FrameStyle. The biggest change, however, was removing the multiple EffectRackViews that were being used. Now just a single EffectRackView exists and it is shared by all models. --- include/FxMixerView.h | 5 +-- src/gui/FxMixerView.cpp | 62 +++++++++++++----------------- src/gui/widgets/EffectRackView.cpp | 2 +- 3 files changed, 30 insertions(+), 39 deletions(-) diff --git a/include/FxMixerView.h b/include/FxMixerView.h index f752672c9..5c4c2e0c8 100644 --- a/include/FxMixerView.h +++ b/include/FxMixerView.h @@ -39,7 +39,6 @@ #include "embed.h" #include "EffectRackView.h" -class QStackedLayout; class QButtonGroup; class FxLine; @@ -53,7 +52,7 @@ public: FxChannelView(QWidget * _parent, FxMixerView * _mv, int _chIndex ); FxLine * m_fxLine; - EffectRackView * m_rackView; + //EffectRackView * m_rackView; pixmapButton * m_muteBtn; fader * m_fader; } ; @@ -92,12 +91,12 @@ private: QVector m_fxChannelViews; - QStackedLayout * m_fxRacksLayout; FxLine * m_currentFxLine; QScrollArea * channelArea; QHBoxLayout * chLayout; QWidget * m_channelAreaWidget; + EffectRackView * m_rackView; } ; #endif diff --git a/src/gui/FxMixerView.cpp b/src/gui/FxMixerView.cpp index f41c9bba4..63a23c891 100644 --- a/src/gui/FxMixerView.cpp +++ b/src/gui/FxMixerView.cpp @@ -35,6 +35,7 @@ #include #include #include +#include #include "FxMixerView.h" #include "knob.h" @@ -52,55 +53,51 @@ FxMixerView::FxMixerView() : FxMixer * m = engine::fxMixer(); m->setHook( this ); - QPalette pal = palette(); + //QPalette pal = palette(); //pal.setColor( QPalette::Background, QColor( 72, 76, 88 ) ); //setPalette( pal ); setAutoFillBackground( true ); - setSizePolicy( QSizePolicy::MinimumExpanding, QSizePolicy::Fixed ); - setFixedSize(600, 300); - setWindowTitle( tr( "FX-Mixer" ) ); setWindowIcon( embed::getIconPixmap( "fx_mixer" ) ); - m_fxRacksLayout = new QStackedLayout; - m_fxRacksLayout->setSpacing( 0 ); - m_fxRacksLayout->setMargin( 0 ); - //m_fxRacksLayout->setAlignment(Qt::AlignRight); - // main-layout QHBoxLayout * ml = new QHBoxLayout; - ml->setMargin( 0 ); - ml->setSpacing( 0 ); - ml->addSpacing( 6 ); + //ml->setMargin( 0 ); + //ml->setSpacing( 0 ); + //ml->addSpacing( 6 ); + // Channel area m_channelAreaWidget = new QWidget; chLayout = new QHBoxLayout(m_channelAreaWidget); + chLayout->setSizeConstraint(QLayout::SetMinimumSize); + chLayout->setSpacing( 0 ); + chLayout->setMargin( 0 ); + m_channelAreaWidget->setLayout(chLayout); // add master channel m_fxChannelViews.resize(m->numChannels()); m_fxChannelViews[0] = new FxChannelView(this, this, 0); + FxChannelView * masterView = m_fxChannelViews[0]; - m_fxRacksLayout->addWidget( masterView->m_rackView ); + ml->addWidget( masterView->m_fxLine, 0, Qt::AlignTop ); - ml->addWidget(masterView->m_fxLine); - ml->addSpacing(5); QSize fxLineSize = masterView->m_fxLine->size(); - chLayout->setSizeConstraint(QLayout::SetMinimumSize); - // add mixer channels for( int i = 1; i < m_fxChannelViews.size(); ++i ) { m_fxChannelViews[i] = new FxChannelView(m_channelAreaWidget, this, i); chLayout->addWidget(m_fxChannelViews[i]->m_fxLine); - m_fxRacksLayout->addWidget( m_fxChannelViews[i]->m_rackView ); } // add the scrolling section to the main layout - m_channelAreaWidget->setLayout(chLayout); channelArea = new QScrollArea(this); channelArea->setWidget(m_channelAreaWidget); - //channelArea-> get rid of padding + channelArea->setVerticalScrollBarPolicy( Qt::ScrollBarAlwaysOff ); + channelArea->setFrameStyle( QFrame::NoFrame ); + channelArea->setMinimumWidth( fxLineSize.width() * 6 ); + channelArea->setFixedHeight( fxLineSize.height() + + style()->pixelMetric( QStyle::PM_ScrollBarExtent ) ); ml->addWidget(channelArea); // show the add new effect channel button @@ -108,16 +105,17 @@ FxMixerView::FxMixerView() : newChannelBtn->setFont(QFont("sans-serif", 10, 1, false)); newChannelBtn->setFixedSize(fxLineSize); connect( newChannelBtn, SIGNAL(clicked()), this, SLOT(addNewChannel())); - ml->addWidget( newChannelBtn ); - - ml->addLayout( m_fxRacksLayout ); + ml->addWidget( newChannelBtn, 0, Qt::AlignTop ); + + // Create EffectRack and set initial index to master channel + m_rackView = new EffectRackView( &m->m_fxChannels[0]->m_fxChain, this ); + ml->addWidget( m_rackView, 0, Qt::AlignTop ); + setCurrentFxLine( m_fxChannelViews[0]->m_fxLine ); setLayout( ml ); updateGeometry(); - setCurrentFxLine( m_fxChannelViews[0]->m_fxLine ); - // timer for updating faders connect( engine::mainWindow(), SIGNAL( periodicUpdate() ), this, SLOT( updateFaders() ) ); @@ -129,7 +127,8 @@ FxMixerView::FxMixerView() : Qt::WindowFlags flags = subWin->windowFlags(); flags &= ~Qt::WindowMaximizeButtonHint; subWin->setWindowFlags( flags ); - //subWin->layout()->setSizeConstraint(QLayout::SetMinimumSize); + layout()->setSizeConstraint( QLayout::SetMinAndMaxSize ); + subWin->layout()->setSizeConstraint( QLayout::SetMinAndMaxSize ); parentWidget()->setAttribute( Qt::WA_DeleteOnClose, false ); parentWidget()->move( 5, 310 ); @@ -153,7 +152,6 @@ void FxMixerView::addNewChannel() m_fxChannelViews.push_back(new FxChannelView(m_channelAreaWidget, this, newChannelIndex)); chLayout->addWidget(m_fxChannelViews[newChannelIndex]->m_fxLine); - m_fxRacksLayout->addWidget( m_fxChannelViews[newChannelIndex]->m_rackView ); updateFxLine(newChannelIndex); } @@ -195,9 +193,6 @@ FxMixerView::FxChannelView::FxChannelView(QWidget * _parent, FxMixerView * _mv, m_muteBtn->setCheckable( true ); m_muteBtn->move( 9, m_fader->y()-16); toolTip::add( m_muteBtn, tr( "Mute this FX channel" ) ); - - m_rackView = new EffectRackView( - &m->m_fxChannels[_chIndex]->m_fxChain, _mv ); } @@ -205,7 +200,7 @@ void FxMixerView::setCurrentFxLine( FxLine * _line ) { // select m_currentFxLine = _line; - m_fxRacksLayout->setCurrentIndex( _line->channelIndex() ); + m_rackView->setModel( &engine::fxMixer()->m_fxChannels[_line->channelIndex()]->m_fxChain ); // set up send knob for(int i = 0; i < m_fxChannelViews.size(); ++i) @@ -253,10 +248,7 @@ void FxMixerView::setCurrentFxLine( int _line ) void FxMixerView::clear() { - for( int i = 0; i < m_fxChannelViews.size(); ++i ) - { - m_fxChannelViews[i]->m_rackView->clearViews(); - } + m_rackView->clearViews(); } diff --git a/src/gui/widgets/EffectRackView.cpp b/src/gui/widgets/EffectRackView.cpp index f78c3d7e1..bd59656b6 100644 --- a/src/gui/widgets/EffectRackView.cpp +++ b/src/gui/widgets/EffectRackView.cpp @@ -43,7 +43,7 @@ EffectRackView::EffectRackView( EffectChain * _model, QWidget * _parent ) : m_mainLayout = new QVBoxLayout( this ); m_mainLayout->setSpacing( 0 ); - m_mainLayout->setMargin( 5 ); + m_mainLayout->setMargin( 0 ); m_effectsGroupBox = new groupBox( tr( "EFFECTS CHAIN" ) ); m_mainLayout->addWidget( m_effectsGroupBox );