From f8a1ffccb0e8d93d7ed923a29112b4a1ffbddb87 Mon Sep 17 00:00:00 2001 From: Tobias Doerffel Date: Mon, 20 Jan 2014 00:09:58 +0100 Subject: [PATCH] EffectRackView: added layouts for widget management Also tweaked overall appearance a bit so that we have less nested frames. --- include/EffectRackView.h | 17 +++---- src/gui/widgets/EffectRackView.cpp | 78 ++++++++++++++++-------------- 2 files changed, 50 insertions(+), 45 deletions(-) diff --git a/include/EffectRackView.h b/include/EffectRackView.h index f6e4197b6..11b57fdaa 100644 --- a/include/EffectRackView.h +++ b/include/EffectRackView.h @@ -43,15 +43,15 @@ class EffectRackView : public QWidget, public ModelView { Q_OBJECT public: - EffectRackView( EffectChain * _model, QWidget * _parent = NULL ); + EffectRackView( EffectChain* model, QWidget* parent = NULL ); virtual ~EffectRackView(); public slots: void clearViews(); - void moveUp( EffectView * _view ); - void moveDown( EffectView * _view ); - void deletePlugin( EffectView * _view ); + void moveUp( EffectView* view ); + void moveDown( EffectView* view ); + void deletePlugin( EffectView* view ); private slots: @@ -62,12 +62,12 @@ private slots: private: virtual void modelChanged(); - inline EffectChain * fxChain() + inline EffectChain* fxChain() { return castModel(); } - inline const EffectChain * fxChain() const + inline const EffectChain* fxChain() const { return castModel(); } @@ -75,9 +75,8 @@ private: QVector m_effectViews; - QVBoxLayout * m_mainLayout; - groupBox * m_effectsGroupBox; - QScrollArea * m_scrollArea; + groupBox* m_effectsGroupBox; + QScrollArea* m_scrollArea; int m_lastY; diff --git a/src/gui/widgets/EffectRackView.cpp b/src/gui/widgets/EffectRackView.cpp index 31ab4411e..2112033d1 100644 --- a/src/gui/widgets/EffectRackView.cpp +++ b/src/gui/widgets/EffectRackView.cpp @@ -2,7 +2,7 @@ * EffectRackView.cpp - view for effectChain model * * Copyright (c) 2006-2007 Danny McRae - * Copyright (c) 2008-2011 Tobias Doerffel + * Copyright (c) 2008-2014 Tobias Doerffel * * This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net * @@ -35,36 +35,40 @@ #include "group_box.h" -EffectRackView::EffectRackView( EffectChain * _model, QWidget * _parent ) : - QWidget( _parent ), +EffectRackView::EffectRackView( EffectChain* model, QWidget* parent ) : + QWidget( parent ), ModelView( NULL, this ) { - setFixedSize( 250, 250 ); - - m_mainLayout = new QVBoxLayout( this ); - m_mainLayout->setSpacing( 0 ); - m_mainLayout->setMargin( 5 ); + QVBoxLayout* mainLayout = new QVBoxLayout( this ); + mainLayout->setMargin( 5 ); m_effectsGroupBox = new groupBox( tr( "EFFECTS CHAIN" ) ); - m_mainLayout->addWidget( m_effectsGroupBox ); + mainLayout->addWidget( m_effectsGroupBox ); - m_scrollArea = new QScrollArea( m_effectsGroupBox ); - m_scrollArea->setFixedSize( 230, 184 ); + QVBoxLayout* effectsLayout = new QVBoxLayout( m_effectsGroupBox ); + effectsLayout->setSpacing( 0 ); + effectsLayout->setContentsMargins( 2, 12, 2, 2 ); + + m_scrollArea = new QScrollArea; m_scrollArea->setVerticalScrollBarPolicy( Qt::ScrollBarAlwaysOn ); m_scrollArea->setHorizontalScrollBarPolicy( Qt::ScrollBarAlwaysOff ); m_scrollArea->setPalette( QApplication::palette( m_scrollArea ) ); + m_scrollArea->setFrameStyle( QFrame::NoFrame ); m_scrollArea->setWidget( new QWidget ); - m_scrollArea->move( 6, 22 ); - QPushButton * addButton = new QPushButton( m_effectsGroupBox ); + effectsLayout->addWidget( m_scrollArea ); + + QPushButton* addButton = new QPushButton; addButton->setText( tr( "Add effect" ) ); - addButton->move( 8, 210 ); + + effectsLayout->addWidget( addButton ); + connect( addButton, SIGNAL( clicked() ), this, SLOT( addEffect() ) ); m_lastY = 0; - setModel( _model ); + setModel( model ); } @@ -91,26 +95,26 @@ void EffectRackView::clearViews() -void EffectRackView::moveUp( EffectView * _view ) +void EffectRackView::moveUp( EffectView* view ) { - fxChain()->moveUp( _view->effect() ); - if( _view != m_effectViews.first() ) + fxChain()->moveUp( view->effect() ); + if( view != m_effectViews.first() ) { int i = 0; for( QVector::Iterator it = m_effectViews.begin(); it != m_effectViews.end(); it++, i++ ) { - if( *it == _view ) + if( *it == view ) { break; } } - + EffectView * temp = m_effectViews[ i - 1 ]; - - m_effectViews[i - 1] = _view; + + m_effectViews[i - 1] = view; m_effectViews[i] = temp; - + update(); } } @@ -118,24 +122,23 @@ void EffectRackView::moveUp( EffectView * _view ) -void EffectRackView::moveDown( EffectView * _view ) +void EffectRackView::moveDown( EffectView* view ) { - if( _view != m_effectViews.last() ) + if( view != m_effectViews.last() ) { // moving next effect up is the same - moveUp( *( qFind( m_effectViews.begin(), m_effectViews.end(), _view ) + 1 ) ); + moveUp( *( qFind( m_effectViews.begin(), m_effectViews.end(), view ) + 1 ) ); } } -void EffectRackView::deletePlugin( EffectView * _view ) +void EffectRackView::deletePlugin( EffectView* view ) { - Effect * e = _view->effect(); - m_effectViews.erase( qFind( m_effectViews.begin(), m_effectViews.end(), - _view ) ); - delete _view; + Effect * e = view->effect(); + m_effectViews.erase( qFind( m_effectViews.begin(), m_effectViews.end(), view ) ); + delete view; fxChain()->removeEffect( e ); e->deleteLater(); update(); @@ -187,7 +190,11 @@ void EffectRackView::update() } } - int i = m_lastY = 0, nView = 0; + int i = 0, nView = 0; + + const int EffectViewMargin = 3; + m_lastY = EffectViewMargin; + for( QVector::Iterator it = m_effectViews.begin(); it != m_effectViews.end(); i++ ) { @@ -198,14 +205,14 @@ void EffectRackView::update() } else { - ( *it )->move( 0, m_lastY ); + ( *it )->move( EffectViewMargin, m_lastY ); m_lastY += ( *it )->height(); ++nView; ++it; } } - w->setFixedSize( 210, m_lastY ); + w->setFixedSize( 210 + 2*EffectViewMargin, m_lastY ); QWidget::update(); } @@ -251,8 +258,7 @@ void EffectRackView::modelChanged() { //clearViews(); m_effectsGroupBox->setModel( &fxChain()->m_enabledModel ); - connect( fxChain(), SIGNAL( aboutToClear() ), - this, SLOT( clearViews() ) ); + connect( fxChain(), SIGNAL( aboutToClear() ), this, SLOT( clearViews() ) ); update(); }