83 |
83 |
84 SelWeaponWidget::SelWeaponWidget(int numItems, QWidget* parent) : |
84 SelWeaponWidget::SelWeaponWidget(int numItems, QWidget* parent) : |
85 QFrame(parent), |
85 QFrame(parent), |
86 m_numItems(numItems) |
86 m_numItems(numItems) |
87 { |
87 { |
|
88 wconf = new QMap<QString, QString>(); |
|
89 for(int i = 0; i < cDefaultAmmos.size(); ++i) |
|
90 wconf->insert(cDefaultAmmos[i].first, cDefaultAmmos[i].second); |
|
91 |
88 if (!QDir(cfgdir->absolutePath() + "/Schemes").exists()) { |
92 if (!QDir(cfgdir->absolutePath() + "/Schemes").exists()) { |
89 QDir().mkdir(cfgdir->absolutePath() + "/Schemes"); |
93 QDir().mkdir(cfgdir->absolutePath() + "/Schemes"); |
90 } |
94 } |
91 if (!QDir(cfgdir->absolutePath() + "/Schemes/Ammo").exists()) { |
95 if (!QDir(cfgdir->absolutePath() + "/Schemes/Ammo").exists()) { |
92 qDebug("No /Schemes/Ammo directory found. Trying to import weapon schemes from weapons.ini."); |
96 qDebug("No /Schemes/Ammo directory found. Trying to import weapon schemes from weapons.ini."); |
93 QDir().mkdir(cfgdir->absolutePath() + "/Schemes/Ammo"); |
97 QDir().mkdir(cfgdir->absolutePath() + "/Schemes/Ammo"); |
94 wconf = new QSettings("Hedgewars", "Hedgewars"); |
98 |
95 wconf->clear(); |
|
96 QSettings old_wconf(cfgdir->absolutePath() + "/weapons.ini", QSettings::IniFormat); |
99 QSettings old_wconf(cfgdir->absolutePath() + "/weapons.ini", QSettings::IniFormat); |
97 |
100 |
98 QStringList defaultAmmos; |
101 QStringList defaultAmmos; |
99 for(int i = 0; i < cDefaultAmmos.size(); ++i) { |
102 for(int i = 0; i < cDefaultAmmos.size(); ++i) |
100 wconf->setValue(cDefaultAmmos[i].first, cDefaultAmmos[i].second); |
103 defaultAmmos.append(cDefaultAmmos[i].first); |
101 defaultAmmos.append(cDefaultAmmos[i].first); |
|
102 } |
|
103 |
104 |
104 QStringList keys = old_wconf.allKeys(); |
105 QStringList keys = old_wconf.allKeys(); |
105 int imported = 0; |
106 int imported = 0; |
106 for(int i = 0; i < keys.size(); i++) |
107 for(int i = 0; i < keys.size(); i++) |
107 { |
108 { |
108 if (!defaultAmmos.contains(keys[i])) { |
109 if (!defaultAmmos.contains(keys[i])) { |
109 wconf->setValue(keys[i], fixWeaponSet(old_wconf.value(keys[i]).toString())); |
110 wconf->insert(keys[i], fixWeaponSet(old_wconf.value(keys[i]).toString())); |
110 QFile file(cfgdir->absolutePath() + "/Schemes/Ammo/" + keys[i] + ".hwa"); |
111 QFile file(cfgdir->absolutePath() + "/Schemes/Ammo/" + keys[i] + ".hwa"); |
111 if (file.open(QIODevice::WriteOnly)) { |
112 if (file.open(QIODevice::WriteOnly)) { |
112 QTextStream stream( &file ); |
113 QTextStream stream( &file ); |
113 stream << old_wconf.value(keys[i]).toString() << endl; |
114 stream << old_wconf.value(keys[i]).toString() << endl; |
114 file.close(); |
115 file.close(); |
115 } |
116 } |
116 imported++; |
117 imported++; |
117 } |
118 } |
118 } |
119 } |
119 qDebug("%d weapon scheme(s) imported.", imported); |
120 qDebug("%d weapon scheme(s) imported.", imported); |
120 } else { |
121 } else { |
121 wconf = new QSettings("Hedgewars", "Hedgewars"); |
|
122 wconf->clear(); |
|
123 |
|
124 for(int i = 0; i < cDefaultAmmos.size(); ++i) |
|
125 wconf->setValue(cDefaultAmmos[i].first, cDefaultAmmos[i].second); |
|
126 |
|
127 QStringList schemes = QDir(cfgdir->absolutePath() + "/Schemes/Ammo").entryList(); |
122 QStringList schemes = QDir(cfgdir->absolutePath() + "/Schemes/Ammo").entryList(); |
128 |
123 |
129 for(int i = 0; i < schemes.size(); i++) |
124 for(int i = 0; i < schemes.size(); i++) |
130 { |
125 { |
131 if (schemes[i] == "." || schemes[i] == "..") continue; |
126 if (schemes[i] == "." || schemes[i] == "..") continue; |
299 if (curWeaponsName != "") |
294 if (curWeaponsName != "") |
300 { |
295 { |
301 // remove old entry |
296 // remove old entry |
302 wconf->remove(curWeaponsName); |
297 wconf->remove(curWeaponsName); |
303 } |
298 } |
304 wconf->setValue(m_name->text(), stateFull); |
299 wconf->insert(m_name->text(), stateFull); |
305 QFile file(cfgdir->absolutePath() + "/Schemes/Ammo/" + m_name->text()+ ".hwa"); |
300 QFile file(cfgdir->absolutePath() + "/Schemes/Ammo/" + m_name->text()+ ".hwa"); |
306 if (file.open(QIODevice::WriteOnly)) { |
301 if (file.open(QIODevice::WriteOnly)) { |
307 QTextStream stream( &file ); |
302 QTextStream stream( &file ); |
308 stream << stateFull << endl; |
303 stream << stateFull << endl; |
309 file.close(); |
304 file.close(); |
364 //name already used -> look for an appropriate name: |
359 //name already used -> look for an appropriate name: |
365 int i=2; |
360 int i=2; |
366 while(wconf->contains(newName = tr("New (%1)").arg(i++))) ; |
361 while(wconf->contains(newName = tr("New (%1)").arg(i++))) ; |
367 } |
362 } |
368 setWeaponsName(newName); |
363 setWeaponsName(newName); |
369 wconf->setValue(newName, *cEmptyAmmoStore); |
364 wconf->insert(newName, *cEmptyAmmoStore); |
370 emit weaponsAdded(newName, *cEmptyAmmoStore); |
365 emit weaponsAdded(newName, *cEmptyAmmoStore); |
371 } |
366 } |
372 |
367 |
373 void SelWeaponWidget::setWeaponsName(const QString& name) |
368 void SelWeaponWidget::setWeaponsName(const QString& name) |
374 { |
369 { |