splitted into meterModel and meterDialog

git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/branches/lmms-mv@717 0778d3d1-df1d-0410-868b-ea421aaaa00d
This commit is contained in:
Tobias Doerffel
2008-02-25 23:28:08 +00:00
parent f61c989e71
commit 4a9e843715
2 changed files with 84 additions and 46 deletions

View File

@@ -1,7 +1,7 @@
/*
* meter_dialog.h - dialog for entering meter settings
*
* Copyright (c) 2006-2007 Danny McRae <khjklujn/at/yahoo.com>
* Copyright (c) 2006-2008 Danny McRae <khjklujn/at/yahoo.com>
*
* 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

View File

@@ -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<meterModel>();
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