diff --git a/include/ConfigManager.h b/include/ConfigManager.h index 3ad94e185..8d213b3d7 100644 --- a/include/ConfigManager.h +++ b/include/ConfigManager.h @@ -228,6 +228,7 @@ public: const QString & _attribute ) const; void setValue( const QString & _class, const QString & _attribute, const QString & _value ); + void deleteValue( const QString & cls, const QString & attribute); void loadConfigFile(); void saveConfigFile(); @@ -256,7 +257,8 @@ private: ConfigManager( const ConfigManager & _c ); ~ConfigManager(); - + void upgrade_1_1_90(); + void upgrade_1_2_0(); void upgrade(); const QString m_lmmsRcFile; diff --git a/src/core/ConfigManager.cpp b/src/core/ConfigManager.cpp index 34cf6e0ea..0dc5a25e4 100644 --- a/src/core/ConfigManager.cpp +++ b/src/core/ConfigManager.cpp @@ -104,7 +104,31 @@ ConfigManager::~ConfigManager() } +void ConfigManager::upgrade_1_1_90() +{ + // Remove trailing " (bad latency!)" string which was once saved with PulseAudio + if( value( "mixer", "audiodev" ).startsWith( "PulseAudio (" ) ) + { + setValue("mixer", "audiodev", "PulseAudio"); + } +} +void ConfigManager::upgrade_1_2_0() +{ + // MidiAlsaRaw used to store the device info as "Device" instead of "device" + if ( value( "MidiAlsaRaw", "device" ).isNull() ) + { + // copy "device" = "Device" and then delete the old "Device" (further down) + QString oldDevice = value( "MidiAlsaRaw", "Device" ); + setValue("MidiAlsaRaw", "device", oldDevice); + } + if ( !value( "MidiAlsaRaw", "device" ).isNull() ) + { + // delete the old "Device" in the case that we just copied it to "device" + // or if the user somehow set both the "Device" and "device" fields + deleteValue("MidiAlsaRaw", "Device"); + } +} void ConfigManager::upgrade() { @@ -116,13 +140,14 @@ void ConfigManager::upgrade() ProjectVersion createdWith = m_version; - // Remove trailing " (bad latency!)" string which was once saved with PulseAudio if ( createdWith.setCompareType(Build) < "1.1.90" ) { - if( value( "mixer", "audiodev" ).startsWith( "PulseAudio (" ) ) - { - setValue("mixer", "audiodev", "PulseAudio"); - } + upgrade_1_1_90(); + } + + if ( createdWith.setCompareType(Build) < "1.2.0" ) + { + upgrade_1_2_0(); } // Don't use old themes as they break the UI (i.e. 0.4 != 1.0, etc) @@ -295,6 +320,22 @@ void ConfigManager::setValue( const QString & _class, } +void ConfigManager::deleteValue( const QString & cls, const QString & attribute) +{ + if( m_settings.contains( cls ) ) + { + for( stringPairVector::iterator it = m_settings[cls].begin(); + it != m_settings[cls].end(); ++it ) + { + if( ( *it ).first == attribute ) + { + m_settings[cls].erase(it); + return; + } + } + } +} + void ConfigManager::loadConfigFile() {