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:
@@ -44,7 +44,7 @@ class MainWindow;
|
||||
class mixer;
|
||||
class pianoRoll;
|
||||
class projectNotes;
|
||||
class UnifiedResourceProvider;
|
||||
class ResourceDB;
|
||||
class song;
|
||||
class songEditor;
|
||||
class ladspa2LMMS;
|
||||
@@ -100,9 +100,19 @@ public:
|
||||
return s_projectJournal;
|
||||
}
|
||||
|
||||
static UnifiedResourceProvider * resourceProvider()
|
||||
static ResourceDB * workingDirResourceDB()
|
||||
{
|
||||
return s_resourceProvider;
|
||||
return s_workingDirResourceDB;
|
||||
}
|
||||
|
||||
static ResourceDB * webResourceDB()
|
||||
{
|
||||
return s_webResourceDB;
|
||||
}
|
||||
|
||||
static ResourceDB * mergedResourceDB()
|
||||
{
|
||||
return s_mergedResourceDB;
|
||||
}
|
||||
|
||||
// GUI
|
||||
@@ -200,7 +210,9 @@ private:
|
||||
static mixer * s_mixer;
|
||||
static fxMixer * s_fxMixer;
|
||||
static song * s_song;
|
||||
static UnifiedResourceProvider * s_resourceProvider;
|
||||
static ResourceDB * s_workingDirResourceDB;
|
||||
static ResourceDB * s_webResourceDB;
|
||||
static ResourceDB * s_mergedResourceDB;
|
||||
static bbTrackContainer * s_bbTrackContainer;
|
||||
static projectJournal * s_projectJournal;
|
||||
static dummyTrackContainer * s_dummyTC;
|
||||
|
||||
@@ -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