From 2175a47849bfb435d8dd58f7825f44c35d20807f Mon Sep 17 00:00:00 2001 From: Colin Wallace Date: Wed, 15 Jul 2015 04:11:01 +0000 Subject: [PATCH] Separate DataFile::Upgrade into smaller functions --- include/DataFile.h | 14 + src/core/DataFile.cpp | 756 +++++++++++++++++++++++------------------- 2 files changed, 431 insertions(+), 339 deletions(-) diff --git a/include/DataFile.h b/include/DataFile.h index c8586fd9d..0bc06be8d 100644 --- a/include/DataFile.h +++ b/include/DataFile.h @@ -109,6 +109,20 @@ private: void cleanMetaNodes( QDomElement de ); + // helper upgrade routines + void upgrade_0_2_1_20070501(); + void upgrade_0_2_1_20070508(); + void upgrade_0_3_0_rc2(); + void upgrade_0_3_0(); + void upgrade_0_4_0_20080104(); + void upgrade_0_4_0_20080118(); + void upgrade_0_4_0_20080129(); + void upgrade_0_4_0_20080409(); + void upgrade_0_4_0_20080607(); + void upgrade_0_4_0_20080622(); + void upgrade_0_4_0_beta1(); + void upgrade_0_4_0_rc2(); + void upgrade(); void loadData( const QByteArray & _data, const QString & _sourceFile ); diff --git a/src/core/DataFile.cpp b/src/core/DataFile.cpp index 37acfffdb..7cc3c1bb2 100644 --- a/src/core/DataFile.cpp +++ b/src/core/DataFile.cpp @@ -385,6 +385,411 @@ void DataFile::cleanMetaNodes( QDomElement _de ) } +void DataFile::upgrade_0_2_1_20070501() +{ + // Upgrade to version 0.2.1-20070501 + QDomNodeList list = elementsByTagName( "arpandchords" ); + for( int i = 0; !list.item( i ).isNull(); ++i ) + { + QDomElement el = list.item( i ).toElement(); + if( el.hasAttribute( "arpdir" ) ) + { + int arpdir = el.attribute( "arpdir" ).toInt(); + if( arpdir > 0 ) + { + el.setAttribute( "arpdir", arpdir - 1 ); + } + else + { + el.setAttribute( "arpdisabled", "1" ); + } + } + } + + list = elementsByTagName( "sampletrack" ); + for( int i = 0; !list.item( i ).isNull(); ++i ) + { + QDomElement el = list.item( i ).toElement(); + if( el.attribute( "vol" ) != "" ) + { + el.setAttribute( "vol", el.attribute( + "vol" ).toFloat() * 100.0f ); + } + else + { + QDomNode node = el.namedItem( + "automation-pattern" ); + if( !node.isElement() || + !node.namedItem( "vol" ).isElement() ) + { + el.setAttribute( "vol", 100.0f ); + } + } + } + + list = elementsByTagName( "ladspacontrols" ); + for( int i = 0; !list.item( i ).isNull(); ++i ) + { + QDomElement el = list.item( i ).toElement(); + QDomNode anode = el.namedItem( "automation-pattern" ); + QDomNode node = anode.firstChild(); + while( !node.isNull() ) + { + if( node.isElement() ) + { + QString name = node.nodeName(); + if( name.endsWith( "link" ) ) + { + el.setAttribute( name, + node.namedItem( "time" ) + .toElement() + .attribute( "value" ) ); + QDomNode oldNode = node; + node = node.nextSibling(); + anode.removeChild( oldNode ); + continue; + } + } + node = node.nextSibling(); + } + } + + QDomNode node = m_head.firstChild(); + while( !node.isNull() ) + { + if( node.isElement() ) + { + if( node.nodeName() == "bpm" ) + { + int value = node.toElement().attribute( + "value" ).toInt(); + if( value > 0 ) + { + m_head.setAttribute( "bpm", + value ); + QDomNode oldNode = node; + node = node.nextSibling(); + m_head.removeChild( oldNode ); + continue; + } + } + else if( node.nodeName() == "mastervol" ) + { + int value = node.toElement().attribute( + "value" ).toInt(); + if( value > 0 ) + { + m_head.setAttribute( + "mastervol", value ); + QDomNode oldNode = node; + node = node.nextSibling(); + m_head.removeChild( oldNode ); + continue; + } + } + else if( node.nodeName() == "masterpitch" ) + { + m_head.setAttribute( "masterpitch", + -node.toElement().attribute( + "value" ).toInt() ); + QDomNode oldNode = node; + node = node.nextSibling(); + m_head.removeChild( oldNode ); + continue; + } + } + node = node.nextSibling(); + } +} + + +void DataFile::upgrade_0_2_1_20070508() +{ + // Upgrade to version 0.2.1-20070508 from some version greater than or equal to 0.2.1-20070501 + QDomNodeList list = elementsByTagName( "arpandchords" ); + for( int i = 0; !list.item( i ).isNull(); ++i ) + { + QDomElement el = list.item( i ).toElement(); + if( el.hasAttribute( "chorddisabled" ) ) + { + el.setAttribute( "chord-enabled", + !el.attribute( "chorddisabled" ) + .toInt() ); + el.setAttribute( "arp-enabled", + !el.attribute( "arpdisabled" ) + .toInt() ); + } + else if( !el.hasAttribute( "chord-enabled" ) ) + { + el.setAttribute( "chord-enabled", true ); + el.setAttribute( "arp-enabled", + el.attribute( "arpdir" ).toInt() != 0 ); + } + } + + while( !( list = elementsByTagName( "channeltrack" ) ).isEmpty() ) + { + QDomElement el = list.item( 0 ).toElement(); + el.setTagName( "instrumenttrack" ); + } + + list = elementsByTagName( "instrumenttrack" ); + for( int i = 0; !list.item( i ).isNull(); ++i ) + { + QDomElement el = list.item( i ).toElement(); + if( el.hasAttribute( "vol" ) ) + { + float value = el.attribute( "vol" ).toFloat(); + value = roundf( value * 0.585786438f ); + el.setAttribute( "vol", value ); + } + else + { + QDomNodeList vol_list = el.namedItem( + "automation-pattern" ) + .namedItem( "vol" ).toElement() + .elementsByTagName( "time" ); + for( int j = 0; !vol_list.item( j ).isNull(); + ++j ) + { + QDomElement timeEl = list.item( j ) + .toElement(); + int value = timeEl.attribute( "value" ) + .toInt(); + value = (int)roundf( value * + 0.585786438f ); + timeEl.setAttribute( "value", value ); + } + } + } +} + + +void DataFile::upgrade_0_3_0_rc2() +{ + // Upgrade to version 0.3.0-rc2 from some version greater than or equal to 0.2.1-20070508 + QDomNodeList list = elementsByTagName( "arpandchords" ); + for( int i = 0; !list.item( i ).isNull(); ++i ) + { + QDomElement el = list.item( i ).toElement(); + if( el.attribute( "arpdir" ).toInt() > 0 ) + { + el.setAttribute( "arpdir", + el.attribute( "arpdir" ).toInt() - 1 ); + } + } +} + + +void DataFile::upgrade_0_3_0() +{ + // Upgrade to version 0.3.0 (final) from some version greater than or equal to 0.3.0-rc2 + QDomNodeList list; + while( !( list = elementsByTagName( + "pluckedstringsynth" ) ).isEmpty() ) + { + QDomElement el = list.item( 0 ).toElement(); + el.setTagName( "vibedstrings" ); + el.setAttribute( "active0", 1 ); + } + + while( !( list = elementsByTagName( "lb303" ) ).isEmpty() ) + { + QDomElement el = list.item( 0 ).toElement(); + el.setTagName( "lb302" ); + } + + while( !( list = elementsByTagName( "channelsettings" ) ). + isEmpty() ) + { + QDomElement el = list.item( 0 ).toElement(); + el.setTagName( "instrumenttracksettings" ); + } +} + + +void DataFile::upgrade_0_4_0_20080104() +{ + // Upgrade to version 0.4.0-20080104 from some version greater than or equal to 0.3.0 (final) + QDomNodeList list = elementsByTagName( "fx" ); + for( int i = 0; !list.item( i ).isNull(); ++i ) + { + QDomElement el = list.item( i ).toElement(); + if( el.hasAttribute( "fxdisabled" ) && + el.attribute( "fxdisabled" ).toInt() == 0 ) + { + el.setAttribute( "enabled", 1 ); + } + } +} + + +void DataFile::upgrade_0_4_0_20080118() +{ + // Upgrade to version 0.4.0-20080118 from some version greater than or equal to 0.4.0-20080104 + QDomNodeList list; + while( !( list = elementsByTagName( "fx" ) ).isEmpty() ) + { + QDomElement fxchain = list.item( 0 ).toElement(); + fxchain.setTagName( "fxchain" ); + QDomNode rack = list.item( 0 ).firstChild(); + QDomNodeList effects = rack.childNodes(); + // move items one level up + while( effects.count() ) + { + fxchain.appendChild( effects.at( 0 ) ); + } + fxchain.setAttribute( "numofeffects", + rack.toElement().attribute( "numofeffects" ) ); + fxchain.removeChild( rack ); + } +} + + +void DataFile::upgrade_0_4_0_20080129() +{ + // Upgrade to version 0.4.0-20080129 from some version greater than or equal to 0.4.0-20080118 + QDomNodeList list; + while( !( list = + elementsByTagName( "arpandchords" ) ).isEmpty() ) + { + QDomElement aac = list.item( 0 ).toElement(); + aac.setTagName( "arpeggiator" ); + QDomNode cloned = aac.cloneNode(); + cloned.toElement().setTagName( "chordcreator" ); + aac.parentNode().appendChild( cloned ); + } +} + + +void DataFile::upgrade_0_4_0_20080409() +{ + // Upgrade to version 0.4.0-20080409 from some version greater than or equal to 0.4.0-20080129 + QStringList s; + s << "note" << "pattern" << "bbtco" << "sampletco" << "time"; + for( QStringList::iterator it = s.begin(); it < s.end(); ++it ) + { + QDomNodeList list = elementsByTagName( *it ); + for( int i = 0; !list.item( i ).isNull(); ++i ) + { + QDomElement el = list.item( i ).toElement(); + el.setAttribute( "pos", + el.attribute( "pos" ).toInt()*3 ); + el.setAttribute( "len", + el.attribute( "len" ).toInt()*3 ); + } + } + QDomNodeList list = elementsByTagName( "timeline" ); + for( int i = 0; !list.item( i ).isNull(); ++i ) + { + QDomElement el = list.item( i ).toElement(); + el.setAttribute( "lp0pos", + el.attribute( "lp0pos" ).toInt()*3 ); + el.setAttribute( "lp1pos", + el.attribute( "lp1pos" ).toInt()*3 ); + } +} + + +void DataFile::upgrade_0_4_0_20080607() +{ + // Upgrade to version 0.4.0-20080607 from some version greater than or equal to 0.3.0-20080409 + QDomNodeList list; + while( !( list = elementsByTagName( "midi" ) ).isEmpty() ) + { + QDomElement el = list.item( 0 ).toElement(); + el.setTagName( "midiport" ); + } +} + + +void DataFile::upgrade_0_4_0_20080622() +{ + // Upgrade to version 0.4.0-20080622 from some version greater than or equal to 0.3.0-20080607 + QDomNodeList list; + while( !( list = elementsByTagName( + "automation-pattern" ) ).isEmpty() ) + { + QDomElement el = list.item( 0 ).toElement(); + el.setTagName( "automationpattern" ); + } + + list = elementsByTagName( "bbtrack" ); + for( int i = 0; !list.item( i ).isNull(); ++i ) + { + QDomElement el = list.item( i ).toElement(); + QString s = el.attribute( "name" ); + s.replace( QRegExp( "^Beat/Baseline " ), + "Beat/Bassline " ); + el.setAttribute( "name", s ); + } +} + + +void DataFile::upgrade_0_4_0_beta1() +{ + // Upgrade to version 0.4.0-beta1 from some version greater than or equal to 0.4.0-20080622 + // convert binary effect-key-blobs to XML + QDomNodeList list; + list = elementsByTagName( "effect" ); + for( int i = 0; !list.item( i ).isNull(); ++i ) + { + QDomElement el = list.item( i ).toElement(); + QString k = el.attribute( "key" ); + if( !k.isEmpty() ) + { + const QList l = + base64::decode( k, QVariant::List ).toList(); + if( !l.isEmpty() ) + { + QString name = l[0].toString(); + QVariant u = l[1]; + EffectKey::AttributeMap m; + // VST-effect? + if( u.type() == QVariant::String ) + { + m["file"] = u.toString(); + } + // LADSPA-effect? + else if( u.type() == QVariant::StringList ) + { + const QStringList sl = u.toStringList(); + m["plugin"] = sl.value( 0 ); + m["file"] = sl.value( 1 ); + } + EffectKey key( NULL, name, m ); + el.appendChild( key.saveXML( *this ) ); + } + } + } +} + + +void DataFile::upgrade_0_4_0_rc2() +{ + // Upgrade to version 0.4.0-rc2 from some version greater than or equal to 0.4.0-beta1 + QDomNodeList list = elementsByTagName( "audiofileprocessor" ); + for( int i = 0; !list.item( i ).isNull(); ++i ) + { + QDomElement el = list.item( i ).toElement(); + QString s = el.attribute( "src" ); + s.replace( "drumsynth/misc ", "drumsynth/misc_" ); + s.replace( "drumsynth/r&b", "drumsynth/r_n_b" ); + s.replace( "drumsynth/r_b", "drumsynth/r_n_b" ); + el.setAttribute( "src", s ); + } + list = elementsByTagName( "lb302" ); + for( int i = 0; !list.item( i ).isNull(); ++i ) + { + QDomElement el = list.item( i ).toElement(); + int s = el.attribute( "shape" ).toInt(); + if( s >= 1 ) + { + s--; + } + el.setAttribute( "shape", QString("%1").arg(s) ); + } +} void DataFile::upgrade() @@ -395,387 +800,61 @@ void DataFile::upgrade() if( version < "0.2.1-20070501" ) { - QDomNodeList list = elementsByTagName( "arpandchords" ); - for( int i = 0; !list.item( i ).isNull(); ++i ) - { - QDomElement el = list.item( i ).toElement(); - if( el.hasAttribute( "arpdir" ) ) - { - int arpdir = el.attribute( "arpdir" ).toInt(); - if( arpdir > 0 ) - { - el.setAttribute( "arpdir", arpdir - 1 ); - } - else - { - el.setAttribute( "arpdisabled", "1" ); - } - } - } - - list = elementsByTagName( "sampletrack" ); - for( int i = 0; !list.item( i ).isNull(); ++i ) - { - QDomElement el = list.item( i ).toElement(); - if( el.attribute( "vol" ) != "" ) - { - el.setAttribute( "vol", el.attribute( - "vol" ).toFloat() * 100.0f ); - } - else - { - QDomNode node = el.namedItem( - "automation-pattern" ); - if( !node.isElement() || - !node.namedItem( "vol" ).isElement() ) - { - el.setAttribute( "vol", 100.0f ); - } - } - } - - list = elementsByTagName( "ladspacontrols" ); - for( int i = 0; !list.item( i ).isNull(); ++i ) - { - QDomElement el = list.item( i ).toElement(); - QDomNode anode = el.namedItem( "automation-pattern" ); - QDomNode node = anode.firstChild(); - while( !node.isNull() ) - { - if( node.isElement() ) - { - QString name = node.nodeName(); - if( name.endsWith( "link" ) ) - { - el.setAttribute( name, - node.namedItem( "time" ) - .toElement() - .attribute( "value" ) ); - QDomNode oldNode = node; - node = node.nextSibling(); - anode.removeChild( oldNode ); - continue; - } - } - node = node.nextSibling(); - } - } - - QDomNode node = m_head.firstChild(); - while( !node.isNull() ) - { - if( node.isElement() ) - { - if( node.nodeName() == "bpm" ) - { - int value = node.toElement().attribute( - "value" ).toInt(); - if( value > 0 ) - { - m_head.setAttribute( "bpm", - value ); - QDomNode oldNode = node; - node = node.nextSibling(); - m_head.removeChild( oldNode ); - continue; - } - } - else if( node.nodeName() == "mastervol" ) - { - int value = node.toElement().attribute( - "value" ).toInt(); - if( value > 0 ) - { - m_head.setAttribute( - "mastervol", value ); - QDomNode oldNode = node; - node = node.nextSibling(); - m_head.removeChild( oldNode ); - continue; - } - } - else if( node.nodeName() == "masterpitch" ) - { - m_head.setAttribute( "masterpitch", - -node.toElement().attribute( - "value" ).toInt() ); - QDomNode oldNode = node; - node = node.nextSibling(); - m_head.removeChild( oldNode ); - continue; - } - } - node = node.nextSibling(); - } + upgrade_0_2_1_20070501(); } if( version < "0.2.1-20070508" ) { - QDomNodeList list = elementsByTagName( "arpandchords" ); - for( int i = 0; !list.item( i ).isNull(); ++i ) - { - QDomElement el = list.item( i ).toElement(); - if( el.hasAttribute( "chorddisabled" ) ) - { - el.setAttribute( "chord-enabled", - !el.attribute( "chorddisabled" ) - .toInt() ); - el.setAttribute( "arp-enabled", - !el.attribute( "arpdisabled" ) - .toInt() ); - } - else if( !el.hasAttribute( "chord-enabled" ) ) - { - el.setAttribute( "chord-enabled", true ); - el.setAttribute( "arp-enabled", - el.attribute( "arpdir" ).toInt() != 0 ); - } - } - - while( !( list = elementsByTagName( "channeltrack" ) ).isEmpty() ) - { - QDomElement el = list.item( 0 ).toElement(); - el.setTagName( "instrumenttrack" ); - } - - list = elementsByTagName( "instrumenttrack" ); - for( int i = 0; !list.item( i ).isNull(); ++i ) - { - QDomElement el = list.item( i ).toElement(); - if( el.hasAttribute( "vol" ) ) - { - float value = el.attribute( "vol" ).toFloat(); - value = roundf( value * 0.585786438f ); - el.setAttribute( "vol", value ); - } - else - { - QDomNodeList vol_list = el.namedItem( - "automation-pattern" ) - .namedItem( "vol" ).toElement() - .elementsByTagName( "time" ); - for( int j = 0; !vol_list.item( j ).isNull(); - ++j ) - { - QDomElement timeEl = list.item( j ) - .toElement(); - int value = timeEl.attribute( "value" ) - .toInt(); - value = (int)roundf( value * - 0.585786438f ); - timeEl.setAttribute( "value", value ); - } - } - } + upgrade_0_2_1_20070508(); } - if( version < "0.3.0-rc2" ) { - QDomNodeList list = elementsByTagName( "arpandchords" ); - for( int i = 0; !list.item( i ).isNull(); ++i ) - { - QDomElement el = list.item( i ).toElement(); - if( el.attribute( "arpdir" ).toInt() > 0 ) - { - el.setAttribute( "arpdir", - el.attribute( "arpdir" ).toInt() - 1 ); - } - } + upgrade_0_3_0_rc2(); } if( version < "0.3.0" ) { - QDomNodeList list; - while( !( list = elementsByTagName( - "pluckedstringsynth" ) ).isEmpty() ) - { - QDomElement el = list.item( 0 ).toElement(); - el.setTagName( "vibedstrings" ); - el.setAttribute( "active0", 1 ); - } - - while( !( list = elementsByTagName( "lb303" ) ).isEmpty() ) - { - QDomElement el = list.item( 0 ).toElement(); - el.setTagName( "lb302" ); - } - - while( !( list = elementsByTagName( "channelsettings" ) ). - isEmpty() ) - { - QDomElement el = list.item( 0 ).toElement(); - el.setTagName( "instrumenttracksettings" ); - } + upgrade_0_3_0(); } if( version < "0.4.0-20080104" ) { - QDomNodeList list = elementsByTagName( "fx" ); - for( int i = 0; !list.item( i ).isNull(); ++i ) - { - QDomElement el = list.item( i ).toElement(); - if( el.hasAttribute( "fxdisabled" ) && - el.attribute( "fxdisabled" ).toInt() == 0 ) - { - el.setAttribute( "enabled", 1 ); - } - } + upgrade_0_4_0_20080104(); } if( version < "0.4.0-20080118" ) { - QDomNodeList list; - while( !( list = elementsByTagName( "fx" ) ).isEmpty() ) - { - QDomElement fxchain = list.item( 0 ).toElement(); - fxchain.setTagName( "fxchain" ); - QDomNode rack = list.item( 0 ).firstChild(); - QDomNodeList effects = rack.childNodes(); - // move items one level up - while( effects.count() ) - { - fxchain.appendChild( effects.at( 0 ) ); - } - fxchain.setAttribute( "numofeffects", - rack.toElement().attribute( "numofeffects" ) ); - fxchain.removeChild( rack ); - } + upgrade_0_4_0_20080118(); } if( version < "0.4.0-20080129" ) { - QDomNodeList list; - while( !( list = - elementsByTagName( "arpandchords" ) ).isEmpty() ) - { - QDomElement aac = list.item( 0 ).toElement(); - aac.setTagName( "arpeggiator" ); - QDomNode cloned = aac.cloneNode(); - cloned.toElement().setTagName( "chordcreator" ); - aac.parentNode().appendChild( cloned ); - } + upgrade_0_4_0_20080129(); } if( version < "0.4.0-20080409" ) { - QStringList s; - s << "note" << "pattern" << "bbtco" << "sampletco" << "time"; - for( QStringList::iterator it = s.begin(); it < s.end(); ++it ) - { - QDomNodeList list = elementsByTagName( *it ); - for( int i = 0; !list.item( i ).isNull(); ++i ) - { - QDomElement el = list.item( i ).toElement(); - el.setAttribute( "pos", - el.attribute( "pos" ).toInt()*3 ); - el.setAttribute( "len", - el.attribute( "len" ).toInt()*3 ); - } - } - QDomNodeList list = elementsByTagName( "timeline" ); - for( int i = 0; !list.item( i ).isNull(); ++i ) - { - QDomElement el = list.item( i ).toElement(); - el.setAttribute( "lp0pos", - el.attribute( "lp0pos" ).toInt()*3 ); - el.setAttribute( "lp1pos", - el.attribute( "lp1pos" ).toInt()*3 ); - } - + upgrade_0_4_0_20080409(); } if( version < "0.4.0-20080607" ) { - QDomNodeList list; - while( !( list = elementsByTagName( "midi" ) ).isEmpty() ) - { - QDomElement el = list.item( 0 ).toElement(); - el.setTagName( "midiport" ); - } + upgrade_0_4_0_20080607(); } if( version < "0.4.0-20080622" ) { - QDomNodeList list; - while( !( list = elementsByTagName( - "automation-pattern" ) ).isEmpty() ) - { - QDomElement el = list.item( 0 ).toElement(); - el.setTagName( "automationpattern" ); - } - - list = elementsByTagName( "bbtrack" ); - for( int i = 0; !list.item( i ).isNull(); ++i ) - { - QDomElement el = list.item( i ).toElement(); - QString s = el.attribute( "name" ); - s.replace( QRegExp( "^Beat/Baseline " ), - "Beat/Bassline " ); - el.setAttribute( "name", s ); - } + upgrade_0_4_0_20080622(); } if( version < "0.4.0-beta1" ) { - // convert binary effect-key-blobs to XML - QDomNodeList list; - list = elementsByTagName( "effect" ); - for( int i = 0; !list.item( i ).isNull(); ++i ) - { - QDomElement el = list.item( i ).toElement(); - QString k = el.attribute( "key" ); - if( !k.isEmpty() ) - { - const QList l = - base64::decode( k, QVariant::List ).toList(); - if( !l.isEmpty() ) - { - QString name = l[0].toString(); - QVariant u = l[1]; - EffectKey::AttributeMap m; - // VST-effect? - if( u.type() == QVariant::String ) - { - m["file"] = u.toString(); - } - // LADSPA-effect? - else if( u.type() == QVariant::StringList ) - { - const QStringList sl = u.toStringList(); - m["plugin"] = sl.value( 0 ); - m["file"] = sl.value( 1 ); - } - EffectKey key( NULL, name, m ); - el.appendChild( key.saveXML( *this ) ); - } - } - } + upgrade_0_4_0_beta1(); } if( version < "0.4.0-rc2" ) { - QDomNodeList list = elementsByTagName( "audiofileprocessor" ); - for( int i = 0; !list.item( i ).isNull(); ++i ) - { - QDomElement el = list.item( i ).toElement(); - QString s = el.attribute( "src" ); - s.replace( "drumsynth/misc ", "drumsynth/misc_" ); - s.replace( "drumsynth/r&b", "drumsynth/r_n_b" ); - s.replace( "drumsynth/r_b", "drumsynth/r_n_b" ); - el.setAttribute( "src", s ); - } - list = elementsByTagName( "lb302" ); - for( int i = 0; !list.item( i ).isNull(); ++i ) - { - QDomElement el = list.item( i ).toElement(); - int s = el.attribute( "shape" ).toInt(); - if( s >= 1 ) - { - s--; - } - el.setAttribute( "shape", QString("%1").arg(s) ); - } - + upgrade_0_4_0_rc2(); } // update document meta data @@ -798,7 +877,6 @@ void DataFile::upgrade() m_head.setAttribute( "mastervol", 100 ); } } -//printf("%s\n", toString( 2 ).toUtf8().constData()); }