From 4a9e843715560493d8598dad532056005989aad1 Mon Sep 17 00:00:00 2001 From: Tobias Doerffel Date: Mon, 25 Feb 2008 23:28:08 +0000 Subject: [PATCH] splitted into meterModel and meterDialog git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/branches/lmms-mv@717 0778d3d1-df1d-0410-868b-ea421aaaa00d --- include/meter_dialog.h | 37 +++++++++++----- src/core/meter_dialog.cpp | 93 ++++++++++++++++++++++++--------------- 2 files changed, 84 insertions(+), 46 deletions(-) diff --git a/include/meter_dialog.h b/include/meter_dialog.h index 5fdba0d3d..013ce5e7c 100644 --- a/include/meter_dialog.h +++ b/include/meter_dialog.h @@ -1,7 +1,7 @@ /* * meter_dialog.h - dialog for entering meter settings * - * Copyright (c) 2006-2007 Danny McRae + * Copyright (c) 2006-2008 Danny McRae * * This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net * @@ -30,12 +30,12 @@ #include "lcd_spinbox.h" -class meterDialog : public QWidget +class meterModel : public model { Q_OBJECT public: - meterDialog( QWidget * _parent, track * _track ); - ~meterDialog(); + meterModel( ::model * _parent, track * _track ); + ~meterModel(); void saveSettings( QDomDocument & _doc, QDomElement & _this, const QString & _name ); @@ -44,26 +44,43 @@ public: inline int getNumerator( void ) { - return( m_numeratorModel->value() ); + return( m_numeratorModel.value() ); } inline int getDenominator( void ) { - return( m_denominatorModel->value() ); + return( m_denominatorModel.value() ); } private: - lcdSpinBox * m_numerator; - lcdSpinBox * m_denominator; - lcdSpinBoxModel * m_numeratorModel; - lcdSpinBoxModel * m_denominatorModel; + lcdSpinBoxModel m_numeratorModel; + lcdSpinBoxModel m_denominatorModel; signals: void numeratorChanged( void ); void denominatorChanged( void ); + + friend class meterDialog; + +} ; + + +class meterDialog : public QWidget, public modelView +{ +public: + meterDialog( QWidget * _parent ); + ~meterDialog(); + + virtual void modelChanged( void ); + + +private: + lcdSpinBox * m_numerator; + lcdSpinBox * m_denominator; + } ; #endif diff --git a/src/core/meter_dialog.cpp b/src/core/meter_dialog.cpp index 1c85be4d2..ead0eb36b 100644 --- a/src/core/meter_dialog.cpp +++ b/src/core/meter_dialog.cpp @@ -34,10 +34,54 @@ #include "automatable_model_templates.h" -meterDialog::meterDialog( QWidget * _parent, track * _track ): +meterModel::meterModel( ::model * _parent, track * _track ) : + model( _parent ), + m_numeratorModel( 4, 1, 32, 1, this ), + m_denominatorModel( 4, 1, 32, 1, this ) +{ + m_numeratorModel.setTrack( _track ); + m_denominatorModel.setTrack( _track ); + + connect( &m_numeratorModel, SIGNAL( dataChanged() ), + this, SIGNAL( numeratorChanged() ) ); + connect( &m_denominatorModel, SIGNAL( dataChanged() ), + this, SIGNAL( denominatorChanged() ) ); +} + + + + +meterModel::~meterModel() +{ +} + + + + +void meterModel::saveSettings( QDomDocument & _doc, QDomElement & _this, + const QString & _name ) +{ + m_numeratorModel.saveSettings( _doc, _this, _name + "_numerator" ); + m_denominatorModel.saveSettings( _doc, _this, _name + "_denominator" ); +} + + + + +void meterModel::loadSettings( const QDomElement & _this, + const QString & _name ) +{ + m_numeratorModel.loadSettings( _this, _name + "_numerator" ); + m_denominatorModel.loadSettings( _this, _name + "_denominator" ); +} + + + + + +meterDialog::meterDialog( QWidget * _parent ) : QWidget( _parent ), - m_numeratorModel( new lcdSpinBoxModel( /* this */ ) ), - m_denominatorModel( new lcdSpinBoxModel( /* this */ ) ) + modelView( NULL ) { QVBoxLayout * vlayout = new QVBoxLayout( this ); vlayout->setSpacing( 5 ); @@ -46,17 +90,11 @@ meterDialog::meterDialog( QWidget * _parent, track * _track ): QWidget * num = new QWidget( this ); QHBoxLayout * num_layout = new QHBoxLayout( num ); - num_layout->setSpacing( 10 ); + num_layout->setSpacing( 0 ); + num_layout->setMargin( 0 ); - m_numeratorModel->setTrack( _track ); - m_numeratorModel->setRange( 1, 32 ); - m_numeratorModel->setValue( 4 ); - connect( m_numeratorModel, SIGNAL( dataChanged() ), - this, SIGNAL( numeratorChanged() ) ); - m_numerator = new lcdSpinBox( 2, num, tr( "Meter Numerator" ) ); - m_numerator->setModel( m_numeratorModel ); num_layout->addWidget( m_numerator ); @@ -66,19 +104,13 @@ meterDialog::meterDialog( QWidget * _parent, track * _track ): num_label->setFont( pointSize<7>( f ) ); num_layout->addWidget( num_label ); - + QWidget * den = new QWidget( this ); QHBoxLayout * den_layout = new QHBoxLayout( den ); - den_layout->setSpacing( 10 ); - - m_denominatorModel->setTrack( _track ); - m_denominatorModel->setRange( 1, 32 ); - m_denominatorModel->setValue( 4 ); - connect( m_denominatorModel, SIGNAL( dataChanged() ), - this, SIGNAL( denominatorChanged() ) ); + den_layout->setSpacing( 0 ); + den_layout->setMargin( 0 ); m_denominator = new lcdSpinBox( 2, den, tr( "Meter Denominator" ) ); - m_denominator->setModel( m_denominatorModel ); den_layout->addWidget( m_denominator ); @@ -91,7 +123,7 @@ meterDialog::meterDialog( QWidget * _parent, track * _track ): vlayout->addWidget( num ); vlayout->addWidget( den ); - setFixedSize( den_label->width() + m_denominator->width() + 10, + resize( den_label->width() + m_denominator->width() + 10, m_numerator->height() + m_denominator->height() + 15 ); } @@ -105,25 +137,14 @@ meterDialog::~meterDialog() -void meterDialog::saveSettings( QDomDocument & _doc, QDomElement & _this, - const QString & _name ) +void meterDialog::modelChanged( void ) { - m_numeratorModel->saveSettings( _doc, _this, _name + "_numerator" ); - m_denominatorModel->saveSettings( _doc, _this, _name + "_denominator" ); + meterModel * mm = castModel(); + m_numerator->setModel( &mm->m_numeratorModel ); + m_denominator->setModel( &mm->m_denominatorModel ); } - - -void meterDialog::loadSettings( const QDomElement & _this, - const QString & _name ) -{ - m_numeratorModel->loadSettings( _this, _name + "_numerator" ); - m_denominatorModel->loadSettings( _this, _name + "_denominator" ); -} - - - #include "meter_dialog.moc" #endif