Engine: provide individual ResourceDBs instead of one global provider
Pointers to individual ResourceDBs can be obtained from Engine now. This allows for more specialized views and reduces complexity when dealing with resources.
This commit is contained in:
@@ -62,7 +62,9 @@ fxMixerView * engine::s_fxMixerView = NULL;
|
||||
MainWindow * engine::s_mainWindow = NULL;
|
||||
bbTrackContainer * engine::s_bbTrackContainer = NULL;
|
||||
song * engine::s_song = NULL;
|
||||
UnifiedResourceProvider * engine::s_resourceProvider = NULL;
|
||||
ResourceDB * engine::s_workingDirResourceDB = NULL;
|
||||
ResourceDB * engine::s_webResourceDB = NULL;
|
||||
ResourceDB * engine::s_mergedResourceDB = NULL;
|
||||
songEditor * engine::s_songEditor = NULL;
|
||||
automationEditor * engine::s_automationEditor = NULL;
|
||||
AutomationRecorder * engine::s_automationRecorder = NULL;
|
||||
@@ -92,22 +94,22 @@ void engine::init( const bool _has_gui )
|
||||
|
||||
|
||||
// init resource framework
|
||||
LocalResourceProvider * workingDirResource =
|
||||
new LocalResourceProvider( ResourceItem::BaseWorkingDir,
|
||||
QString() );
|
||||
LocalResourceProvider * shippedResource =
|
||||
new LocalResourceProvider( ResourceItem::BaseDataDir,
|
||||
QString() );
|
||||
WebResourceProvider * webResource =
|
||||
new WebResourceProvider( "http://lmms.sourceforge.net" );
|
||||
s_workingDirResourceDB =
|
||||
( new LocalResourceProvider( ResourceItem::BaseWorkingDir,
|
||||
QString() ) )->database();
|
||||
ResourceDB * shippedResourceDB =
|
||||
( new LocalResourceProvider( ResourceItem::BaseDataDir,
|
||||
QString() ) )->database();
|
||||
s_webResourceDB =
|
||||
( new WebResourceProvider( "http://lmms.sourceforge.net" ) )
|
||||
->database();
|
||||
|
||||
UnifiedResourceProvider * unifiedResource =
|
||||
new UnifiedResourceProvider;
|
||||
unifiedResource->addDatabase( workingDirResource->database() );
|
||||
unifiedResource->addDatabase( shippedResource->database() );
|
||||
unifiedResource->addDatabase( webResource->database() );
|
||||
UnifiedResourceProvider * unifiedResource = new UnifiedResourceProvider;
|
||||
unifiedResource->addDatabase( s_workingDirResourceDB );
|
||||
unifiedResource->addDatabase( shippedResourceDB );
|
||||
unifiedResource->addDatabase( s_webResourceDB );
|
||||
|
||||
s_resourceProvider = unifiedResource;
|
||||
s_mergedResourceDB = unifiedResource->database();
|
||||
|
||||
|
||||
s_fxMixer = new fxMixer;
|
||||
@@ -191,8 +193,8 @@ void engine::destroy( void )
|
||||
delete s_automationRecorder;
|
||||
s_automationRecorder = NULL;
|
||||
|
||||
delete s_resourceProvider;
|
||||
s_resourceProvider = NULL;
|
||||
delete s_mergedResourceDB->provider();
|
||||
s_mergedResourceDB = NULL;
|
||||
|
||||
delete configManager::inst();
|
||||
}
|
||||
|
||||
@@ -29,7 +29,6 @@
|
||||
#include "instrument_track.h"
|
||||
#include "ResourceDB.h"
|
||||
#include "string_pair_drag.h"
|
||||
#include "UnifiedResourceProvider.h"
|
||||
|
||||
|
||||
InstrumentView::InstrumentView( instrument * _instrument, QWidget * _parent ) :
|
||||
@@ -84,7 +83,7 @@ void InstrumentView::dragEnterEvent( QDragEnterEvent * _dee )
|
||||
if( stringPairDrag::decodeKey( _dee ) == ResourceItem::mimeKey() )
|
||||
{
|
||||
const ResourceItem * item =
|
||||
engine::resourceProvider()->database()->
|
||||
engine::mergedResourceDB()->
|
||||
itemByHash( stringPairDrag::decodeValue( _dee ) );
|
||||
if( item &&
|
||||
model()->getDescriptor()->supportsFileType(
|
||||
@@ -103,7 +102,7 @@ void InstrumentView::dropEvent( QDropEvent * _de )
|
||||
if( stringPairDrag::decodeKey( _de ) == ResourceItem::mimeKey() )
|
||||
{
|
||||
const ResourceItem * item =
|
||||
engine::resourceProvider()->database()->
|
||||
engine::mergedResourceDB()->
|
||||
itemByHash( stringPairDrag::decodeValue( _de ) );
|
||||
model()->loadResource( item );
|
||||
_de->accept();
|
||||
|
||||
@@ -24,7 +24,6 @@
|
||||
|
||||
#include "QuickLoadDialog.h"
|
||||
#include "ResourceListModel.h"
|
||||
#include "UnifiedResourceProvider.h"
|
||||
#include "engine.h"
|
||||
|
||||
#include "ui_QuickLoadDialog.h"
|
||||
@@ -34,8 +33,7 @@
|
||||
QuickLoadDialog::QuickLoadDialog( QWidget * _parent ) :
|
||||
QDialog( _parent ),
|
||||
ui( new Ui::QuickLoadDialog ),
|
||||
m_listModel( new ResourceListModel(
|
||||
engine::resourceProvider()->database(), this ) )
|
||||
m_listModel( new ResourceListModel( engine::mergedResourceDB(), this ) )
|
||||
{
|
||||
ui->setupUi( this );
|
||||
|
||||
@@ -47,7 +45,7 @@ QuickLoadDialog::QuickLoadDialog( QWidget * _parent ) :
|
||||
|
||||
// connect filter edit with model
|
||||
connect( ui->filterEdit, SIGNAL( textChanged( const QString & ) ),
|
||||
m_listModel, SLOT( setFilter( const QString & ) ) );
|
||||
m_listModel, SLOT( setKeywordFilter( const QString & ) ) );
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -33,7 +33,6 @@
|
||||
#include "ResourceFileMapper.h"
|
||||
#include "ResourceTreeModel.h"
|
||||
#include "ResourceTreeView.h"
|
||||
#include "UnifiedResourceProvider.h"
|
||||
#include "engine.h"
|
||||
#include "embed.h"
|
||||
#include "MainWindow.h"
|
||||
@@ -79,7 +78,7 @@ ResourceBrowser::ResourceBrowser( QWidget * _parent ) :
|
||||
_parent ),
|
||||
m_previewer(),
|
||||
m_filterEdit( NULL ),
|
||||
m_treeModel( engine::resourceProvider()->database() )
|
||||
m_treeModel( engine::mergedResourceDB() )
|
||||
{
|
||||
// create a model which represents our database as a tree
|
||||
|
||||
|
||||
@@ -34,7 +34,6 @@
|
||||
#include "ResourceDB.h"
|
||||
#include "ResourceItem.h"
|
||||
#include "ResourceFileMapper.h"
|
||||
#include "UnifiedResourceProvider.h"
|
||||
|
||||
#include "track_container_view.h"
|
||||
#include "track_container.h"
|
||||
@@ -404,8 +403,7 @@ void trackContainerView::dropEvent( QDropEvent * _de )
|
||||
if( type == ResourceItem::mimeKey() )
|
||||
{
|
||||
const ResourceItem * item =
|
||||
engine::resourceProvider()->database()->
|
||||
itemByHash( value );
|
||||
engine::mergedResourceDB()->itemByHash( value );
|
||||
if( item )
|
||||
{
|
||||
ResourceAction action( item );
|
||||
@@ -415,15 +413,13 @@ void trackContainerView::dropEvent( QDropEvent * _de )
|
||||
case ResourceItem::TypePreset:
|
||||
action.loadPreset(
|
||||
dynamic_cast<instrumentTrack *>(
|
||||
track::create( track::InstrumentTrack,
|
||||
m_tc ) ) );
|
||||
track::create( track::InstrumentTrack, m_tc ) ) );
|
||||
break;
|
||||
case ResourceItem::TypeSample:
|
||||
case ResourceItem::TypePluginSpecificResource:
|
||||
action.loadByPlugin(
|
||||
dynamic_cast<instrumentTrack *>(
|
||||
track::create( track::InstrumentTrack,
|
||||
m_tc ) ) );
|
||||
track::create( track::InstrumentTrack, m_tc ) ) );
|
||||
break;
|
||||
case ResourceItem::TypeForeignProject:
|
||||
action.importProject( m_tc );
|
||||
|
||||
@@ -40,7 +40,6 @@
|
||||
|
||||
#include "ResourceAction.h"
|
||||
#include "ResourceDB.h"
|
||||
#include "UnifiedResourceProvider.h"
|
||||
|
||||
#include "instrument_track.h"
|
||||
#include "AudioPort.h"
|
||||
@@ -1505,8 +1504,7 @@ void instrumentTrackWindow::dropEvent( QDropEvent * _de )
|
||||
else if( type == ResourceItem::mimeKey() )
|
||||
{
|
||||
const ResourceItem * item =
|
||||
engine::resourceProvider()->database()->
|
||||
itemByHash( value );
|
||||
engine::mergedResourceDB()->itemByHash( value );
|
||||
if( !item )
|
||||
{
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user