1 2 #include "conversionoptionsmanager.h" 3 #include "core/conversionoptions.h" 4 #include "pluginloader.h" 5 ConversionOptionsManager(PluginLoader * _pluginLoader,QObject * parent)6ConversionOptionsManager::ConversionOptionsManager( PluginLoader *_pluginLoader, QObject *parent ) 7 : QObject( parent ), 8 pluginLoader( _pluginLoader ) 9 { 10 idCounter = 0; 11 } 12 ~ConversionOptionsManager()13ConversionOptionsManager::~ConversionOptionsManager() 14 { 15 foreach( const ConversionOptionsElement& element, elements.values() ) 16 { 17 delete element.conversionOptions; 18 } 19 elements.clear(); 20 } 21 addConversionOptions(ConversionOptions * conversionOptions)22int ConversionOptionsManager::addConversionOptions( ConversionOptions *conversionOptions ) 23 { 24 if( !conversionOptions ) 25 { 26 // FIXME error message, null pointer for conversion options 27 return -1; 28 } 29 30 foreach( const ConversionOptionsElement& element, elements ) 31 { 32 if( element.conversionOptions->pluginName == conversionOptions->pluginName ) 33 { 34 if( element.conversionOptions->equals(conversionOptions) ) // NOTE equals gets reimplemented by the plugins 35 { 36 elements[element.id].references++; 37 return element.id; 38 } 39 } 40 } 41 42 ConversionOptionsElement element; 43 element.id = idCounter++; 44 element.conversionOptions = conversionOptions; 45 element.references = 1; 46 elements.insert( element.id, element ); 47 return element.id; 48 } 49 increaseReferences(int id)50int ConversionOptionsManager::increaseReferences( int id ) 51 { 52 if( elements.contains(id) ) 53 { 54 elements[id].references++; 55 return id; 56 } 57 58 return -1; 59 } 60 getConversionOptions(int id) const61const ConversionOptions *ConversionOptionsManager::getConversionOptions( int id ) const 62 { 63 if( elements.contains(id) ) 64 { 65 return elements[id].conversionOptions; 66 } 67 68 return 0; 69 } 70 removeConversionOptions(int id)71void ConversionOptionsManager::removeConversionOptions( int id ) 72 { 73 if( elements.contains(id) ) 74 { 75 elements[id].references--; 76 77 if( elements.value(id).references <= 0 ) 78 { 79 delete elements.value(id).conversionOptions; 80 elements.remove(id); 81 } 82 } 83 } 84 updateConversionOptions(int id,ConversionOptions * conversionOptions)85int ConversionOptionsManager::updateConversionOptions( int id, ConversionOptions *conversionOptions ) 86 { 87 removeConversionOptions( id ); 88 return addConversionOptions( conversionOptions ); 89 } 90 getAllIds() const91QList<int> ConversionOptionsManager::getAllIds() const 92 { 93 return elements.keys(); 94 } 95