diff --git a/include/resources_db.h b/include/resources_db.h index cfb94797a..5c25daeea 100644 --- a/include/resources_db.h +++ b/include/resources_db.h @@ -27,6 +27,7 @@ #include #include +#include #include #include @@ -81,6 +82,48 @@ private: QDomElement & _de ); void loadTreeItem( ResourcesTreeItem * _i, QDomElement & _de ); + static inline QString typeName( ResourcesItem::Type _t ) + { + return s_typeNames[_t]; + } + + static inline QString baseDirName( ResourcesItem::BaseDirectory _bd ) + { + return s_baseDirNames[_bd]; + } + + static inline ResourcesItem::Type typeFromName( const QString & _n ) + { + for( TypeStringMap::ConstIterator it = s_typeNames.begin(); + it != s_typeNames.end(); ++it ) + { + if( it.value() == _n ) + { + return it.key(); + } + } + return ResourcesItem::TypeUnknown; + } + + static inline ResourcesItem::BaseDirectory baseDirFromName( + const QString & _n ) + { + for( BaseDirStringMap::ConstIterator it = + s_baseDirNames.begin(); + it != s_baseDirNames.end(); ++it ) + { + if( it.value() == _n ) + { + return it.key(); + } + } + return ResourcesItem::BaseRoot; + } + + typedef QMap TypeStringMap; + typedef QMap BaseDirStringMap; + static TypeStringMap s_typeNames; + static BaseDirStringMap s_baseDirNames; ResourcesProvider * m_provider; ItemList m_items; diff --git a/src/core/resources_db.cpp b/src/core/resources_db.cpp index ea83d8b2f..aa4cab6c6 100644 --- a/src/core/resources_db.cpp +++ b/src/core/resources_db.cpp @@ -30,6 +30,10 @@ #include "mmp.h" +QMap ResourcesDB::s_typeNames; +QMap ResourcesDB::s_baseDirNames; + + ResourcesDB::ResourcesDB( ResourcesProvider * _provider ) : m_provider( _provider ) @@ -37,6 +41,30 @@ ResourcesDB::ResourcesDB( ResourcesProvider * _provider ) : connect( m_provider, SIGNAL( itemsChanged() ), this, SIGNAL( itemsChanged() ) ); + if( s_typeNames.isEmpty() ) + { + s_typeNames[ResourcesItem::TypeUnknown] = "Unknown"; + s_typeNames[ResourcesItem::TypeDirectory] = "Directory"; + s_typeNames[ResourcesItem::TypeSample] = "Sample"; + s_typeNames[ResourcesItem::TypeSoundFont] = "SoundFont"; + s_typeNames[ResourcesItem::TypePreset] = "Preset"; + s_typeNames[ResourcesItem::TypeProject] = "Project"; + s_typeNames[ResourcesItem::TypeMidiFile] = "MidiFile"; + s_typeNames[ResourcesItem::TypeForeignProject] = "ForeignProject"; + s_typeNames[ResourcesItem::TypePlugin] = "Plugin"; + s_typeNames[ResourcesItem::TypeImage] = "Image"; + } + + if( s_baseDirNames.isEmpty() ) + { + s_baseDirNames[ResourcesItem::BaseRoot] = "Root"; + s_baseDirNames[ResourcesItem::BaseWorkingDir] = "WorkingDir"; + s_baseDirNames[ResourcesItem::BaseDataDir] = "DataDir"; + s_baseDirNames[ResourcesItem::BaseHome] = "Home"; + s_baseDirNames[ResourcesItem::BaseURL] = "URL"; + } + + } @@ -107,8 +135,8 @@ void ResourcesDB::saveTreeItem( const ResourcesTreeItem * _i, { const ResourcesItem * it = _i->item(); e.setAttribute( "name", it->name() ); - e.setAttribute( "type", it->type() ); - e.setAttribute( "basedir", it->baseDir() ); + e.setAttribute( "type", typeName( it->type() ) ); + e.setAttribute( "basedir", baseDirName( it->baseDir() ) ); e.setAttribute( "path", it->path() ); e.setAttribute( "hash", it->hash() ); e.setAttribute( "size", it->size() ); @@ -135,9 +163,8 @@ void ResourcesDB::loadTreeItem( ResourcesTreeItem * _i, QDomElement & _de ) { ResourcesItem * item = new ResourcesItem( m_provider, e.attribute( "name" ), - static_cast( e.attribute( "type" ).toInt() ), - static_cast( - e.attribute( "basedir" ).toInt() ), + typeFromName( e.attribute( "type" ) ), + baseDirFromName( e.attribute( "basedir" ) ), e.attribute( "path" ), h, e.attribute( "tags" ),