diff --git a/include/ResourcePreviewer.h b/include/ResourcePreviewer.h new file mode 100644 index 000000000..5aa0fd239 --- /dev/null +++ b/include/ResourcePreviewer.h @@ -0,0 +1,59 @@ +/* + * ResourcePreviewer.h - header file for ResourcePreviewer + * + * Copyright (c) 2009 Tobias Doerffel + * + * This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program (see COPYING); if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA. + * + */ + + +#ifndef _RESOURCE_PREVIEWER_H +#define _RESOURCE_PREVIEWER_H + +#include "track_container.h" + +class ResourceItem; +class instrumentTrack; + + +class ResourcePreviewer +{ +public: + ResourcePreviewer(); + ~ResourcePreviewer(); + + void preview( ResourceItem * _item ); + + +private: + class PreviewTrackContainer : public trackContainer + { + virtual QString nodeName( void ) const + { + return( "PreviewTrackContainer" ); + } + } ; + + PreviewTrackContainer m_previewTrackContainer; + instrumentTrack * m_previewTrack; + +} ; + + +#endif diff --git a/src/core/ResourcePreviewer.cpp b/src/core/ResourcePreviewer.cpp new file mode 100644 index 000000000..8509135fe --- /dev/null +++ b/src/core/ResourcePreviewer.cpp @@ -0,0 +1,67 @@ +/* + * ResourcePreviewer.cpp - implementation of ResourcePreviewer + * + * Copyright (c) 2009 Tobias Doerffel + * + * This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program (see COPYING); if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA. + * + */ + + +#include "ResourcePreviewer.h" +#include "ResourceItem.h" +#include "instrument_track.h" +#include "mmp.h" + + +ResourcePreviewer::ResourcePreviewer() : + m_previewTrackContainer(), + m_previewTrack( NULL ) +{ + // do not clutter global journal with items due to changing settings + // in preview classes + m_previewTrackContainer.setJournalling( false ); + m_previewTrack = dynamic_cast( + track::create( track::InstrumentTrack, + &m_previewTrackContainer ) ); + m_previewTrack->setJournalling( false ); + +} + + + + +void ResourcePreviewer::preview( ResourceItem * _item ) +{ + switch( _item->type() ) + { + case ResourceItem::TypePreset: + // fetch data, load into multimedia project and + // load it as preset + m_previewTrack->loadTrackSpecificSettings( + multimediaProject( _item->fetchData() ). + content().firstChild().toElement() ); + m_previewTrack->getMidiPort()->setMode( + midiPort::Disabled ); + break; + } +} + + +#include "moc_ResourcePreviewer.cxx" +