ResourcePreviewer: no preview for unhandled resource types

Don't do anything in case a ResourceItem can't be previewed. Up to now
a default sine sound was played back even when just clicking a directory item.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
This commit is contained in:
Tobias Doerffel
2009-06-17 10:37:09 +02:00
parent 5930b23040
commit fe152801f6

View File

@@ -77,15 +77,16 @@ 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() );
// handle individual resource types
bool handledItem = true;
switch( _item->type() )
{
case ResourceItem::TypePreset:
// restore default settings, in case we're going to load
// an incomplete preset
m_previewTrack->loadTrackSpecificSettings(
m_defaultSettings.content().
firstChild().toElement() );
// fetch data, load into multimedia project and
// load it as preset
m_previewTrack->loadTrackSpecificSettings(
@@ -97,6 +98,14 @@ void ResourcePreviewer::preview( ResourceItem * _item )
case ResourceItem::TypeSample:
case ResourceItem::TypeSoundFont:
{
// restore default settings we are going to preview a
// sample (which should be played at a default
// instrument track)
m_previewTrack->loadTrackSpecificSettings(
m_defaultSettings.content().
firstChild().toElement() );
// if neccessary, load according instrument for the
// file to be previewed
instrument * i = m_previewTrack->getInstrument();
const QString ext = QFileInfo( _item->name() ).
suffix().toLower();
@@ -113,16 +122,22 @@ void ResourcePreviewer::preview( ResourceItem * _item )
}
break;
}
default:
handledItem = false;
break;
}
// re-enable journalling
engine::setSuppressMessages( false );
engine::getProjectJournal()->setJournalling( j );
// playback default note
m_previewTrack->processInEvent(
midiEvent( MidiNoteOn, 0, DefaultKey, MidiMaxVelocity ),
if( handledItem )
{
// playback default note
m_previewTrack->processInEvent(
midiEvent( MidiNoteOn, 0, DefaultKey, MidiMaxVelocity ),
midiTime() );
}
}