# HG changeset patch # User KoBeWi # Date 1518077660 -3600 # Node ID 305f3667af202a313cf96691ce6e20a7b44f4f81 # Parent c0320d66310dfd8b420cefd1c457ff8fd801d51c Fix how scheme files behave diff -r c0320d66310d -r 305f3667af20 QTfrontend/model/ammoSchemeModel.cpp --- a/QTfrontend/model/ammoSchemeModel.cpp Thu Feb 08 08:50:45 2018 +0100 +++ b/QTfrontend/model/ammoSchemeModel.cpp Thu Feb 08 09:14:20 2018 +0100 @@ -680,7 +680,7 @@ schemes.append(construction); schemes.append(hedgeeditor); - + if (!QDir(cfgdir->absolutePath() + "/Schemes").exists()) QDir().mkdir(cfgdir->absolutePath() + "/Schemes"); if (!QDir(directory).exists()) { QDir().mkdir(directory); @@ -692,7 +692,7 @@ if (!predefSchemesNames.contains(fileConfig.value(spNames[0]).toString())) { QList scheme; - QSettings file(directory + "/" + fileConfig.value(spNames[0]).toString() + ".ini", QSettings::IniFormat); + QSettings file(directory + "/" + fileConfig.value(spNames[0]).toString() + ".hwg", QSettings::IniFormat); for (int k = 0; k < spNames.size(); ++k) { scheme << fileConfig.value(spNames[k], defaultScheme[k]); @@ -833,7 +833,7 @@ QList scheme = schemes[row]; int j = spNames.indexOf("name"); - QFile(cfgdir->absolutePath() + "/Game Settings/" + scheme[j].toString() + ".ini").remove(); + QFile(cfgdir->absolutePath() + "/Schemes/Game/" + scheme[j].toString() + ".hwg").remove(); schemes.removeAt(row); endRemoveRows(); @@ -859,7 +859,7 @@ { QList scheme = schemes[i + numberOfDefaultSchemes]; int j = spNames.indexOf("name"); - QSettings file(cfgdir->absolutePath() + "/Game Settings/" + scheme[j].toString() + ".ini", QSettings::IniFormat); + QSettings file(cfgdir->absolutePath() + "/Schemes/Game/" + scheme[j].toString() + ".hwg", QSettings::IniFormat); for (int k = 0; k < scheme.size(); ++k) file.setValue(spNames[k], scheme[k]); diff -r c0320d66310d -r 305f3667af20 QTfrontend/ui/widget/selectWeapon.cpp --- a/QTfrontend/ui/widget/selectWeapon.cpp Thu Feb 08 08:50:45 2018 +0100 +++ b/QTfrontend/ui/widget/selectWeapon.cpp Thu Feb 08 09:14:20 2018 +0100 @@ -85,36 +85,46 @@ QFrame(parent), m_numItems(numItems) { - if (!QDir(cfgdir->absolutePath() + "/Weapon Settings").exists()) { - QDir().mkdir(cfgdir->absolutePath() + "/Weapon Settings"); - wconf = new QSettings(cfgdir->absolutePath() + "/weapons.ini", QSettings::IniFormat, this); + if (!QDir(cfgdir->absolutePath() + "/Schemes").exists()) QDir().mkdir(cfgdir->absolutePath() + "/Schemes"); + if (!QDir(cfgdir->absolutePath() + "/Schemes/Ammo").exists()) { + QDir().mkdir(cfgdir->absolutePath() + "/Schemes/Ammo"); + wconf = new QSettings("Hedgewars", "Hedgewars"); + wconf->clear(); + QSettings old_wconf(cfgdir->absolutePath() + "/weapons.ini", QSettings::IniFormat); - for(int i = 0; i < cDefaultAmmos.size(); ++i) + QList defaultAmmos; + for(int i = 0; i < cDefaultAmmos.size(); ++i) { wconf->setValue(cDefaultAmmos[i].first, cDefaultAmmos[i].second); + defaultAmmos.append(cDefaultAmmos[i].first); + } - QStringList keys = wconf->allKeys(); + QStringList keys = old_wconf.allKeys(); for(int i = 0; i < keys.size(); i++) { - if (wconf->value(keys[i]).toString().size() != cDefaultAmmoStore->size()) - wconf->setValue(keys[i], fixWeaponSet(wconf->value(keys[i]).toString())); + wconf->setValue(keys[i], fixWeaponSet(old_wconf.value(keys[i]).toString())); - QFile file(cfgdir->absolutePath() + "/Weapon Settings/" + keys[i] + ".hww"); - if (file.open(QIODevice::WriteOnly)) { - QTextStream stream( &file ); - stream << wconf->value(keys[i]).toString() << endl; + if (!defaultAmmos.contains(keys[i])) { + QFile file(cfgdir->absolutePath() + "/Schemes/Ammo/" + keys[i] + ".hwa"); + if (file.open(QIODevice::WriteOnly)) { + QTextStream stream( &file ); + stream << old_wconf.value(keys[i]).toString() << endl; + } } } } else { wconf = new QSettings("Hedgewars", "Hedgewars"); wconf->clear(); - QStringList schemes = QDir(cfgdir->absolutePath() + "/Weapon Settings").entryList(); + for(int i = 0; i < cDefaultAmmos.size(); ++i) + wconf->setValue(cDefaultAmmos[i].first, cDefaultAmmos[i].second); + + QStringList schemes = QDir(cfgdir->absolutePath() + "/Schemes/Ammo").entryList(); for(int i = 0; i < schemes.size(); i++) { if (schemes[i] == "." || schemes[i] == "..") continue; - QFile file(cfgdir->absolutePath() + "/Weapon Settings/" + schemes[i]); + QFile file(cfgdir->absolutePath() + "/Schemes/Ammo/" + schemes[i]); QString config; if (file.open(QIODevice::ReadOnly)) { @@ -122,7 +132,7 @@ stream >> config; } - wconf->setValue(schemes[i].remove(".hww"), fixWeaponSet(config)); + wconf->setValue(schemes[i].remove(".hwa"), fixWeaponSet(config)); } } @@ -281,7 +291,7 @@ wconf->remove(curWeaponsName); } wconf->setValue(m_name->text(), stateFull); - QFile file(cfgdir->absolutePath() + "/Weapon Settings/" + m_name->text()+ ".hww"); + QFile file(cfgdir->absolutePath() + "/Schemes/Ammo/" + m_name->text()+ ".hwa"); if (file.open(QIODevice::WriteOnly)) { QTextStream stream( &file ); stream << stateFull << endl; @@ -328,7 +338,7 @@ { isDeleting = true; wconf->remove(delWeaponsName); - QFile(cfgdir->absolutePath() + "/Weapon Settings/" + curWeaponsName + ".hww").remove(); + QFile(cfgdir->absolutePath() + "/Schemes/Ammo/" + curWeaponsName + ".hwa").remove(); emit weaponsDeleted(delWeaponsName); } }