ResourcePreviewer: save and restore default settings of InstrumentTrack

After instantiation of InstrumentTrack save its settings so we can
restore it each time before previewing resources. Otherwise preview
of incomplete presets or just samples could be distorted by settings
of previosly loaded preset.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
This commit is contained in:
Tobias Doerffel
2009-06-11 15:17:25 +02:00
parent 22716bccf1
commit 9804cb7db8
2 changed files with 16 additions and 2 deletions

View File

@@ -27,6 +27,7 @@
#define _RESOURCE_PREVIEWER_H
#include "track_container.h"
#include "mmp.h"
class Piano;
class ResourceItem;
@@ -57,6 +58,8 @@ private:
PreviewTrackContainer m_previewTrackContainer;
instrumentTrack * m_previewTrack;
multimediaProject m_defaultSettings;
} ;

View File

@@ -37,7 +37,8 @@
ResourcePreviewer::ResourcePreviewer() :
m_previewTrackContainer(),
m_previewTrack( NULL )
m_previewTrack( NULL ),
m_defaultSettings( multimediaProject::InstrumentTrackSettings )
{
// do not clutter global journal with items due to changing settings
// in preview classes
@@ -45,10 +46,14 @@ ResourcePreviewer::ResourcePreviewer() :
m_previewTrack = dynamic_cast<instrumentTrack *>(
track::create( track::InstrumentTrack,
&m_previewTrackContainer ) );
// save default settings so we can restore them later
m_previewTrack->saveSettings( m_defaultSettings,
m_defaultSettings.content() );
// make sure a default instrument is loaded
m_previewTrack->loadInstrument( "tripleoscillator" );
m_previewTrack->setJournalling( false );
}
@@ -72,6 +77,12 @@ void ResourcePreviewer::preview( ResourceItem * _item )
engine::getProjectJournal()->setJournalling( false );
engine::setSuppressMessages( true );
// restore default settings, in case we're going to load an incomplete
// preset or are going to preview a sample (which should be played at
// a default instrument track)
m_previewTrack->loadTrackSpecificSettings(
m_defaultSettings.content().firstChild().toElement() );
switch( _item->type() )
{
case ResourceItem::TypePreset: