--- a/QTfrontend/ui/widget/selectWeapon.cpp Sun Jun 10 18:56:51 2018 +0200
+++ b/QTfrontend/ui/widget/selectWeapon.cpp Sun Jun 10 19:12:26 2018 +0200
@@ -21,6 +21,7 @@
#include "weaponItem.h"
#include "hwconsts.h"
+#include <QDebug>
#include <QPushButton>
#include <QGridLayout>
#include <QHBoxLayout>
@@ -84,16 +85,63 @@
QFrame(parent),
m_numItems(numItems)
{
- wconf = new QSettings(cfgdir->absolutePath() + "/weapons.ini", QSettings::IniFormat, this);
+ wconf = new QMap<QString, QString>();
+ for(int i = 0; i < cDefaultAmmos.size(); ++i)
+ {
+ wconf->insert(cDefaultAmmos[i].first, cDefaultAmmos[i].second);
+ }
- for(int i = 0; i < cDefaultAmmos.size(); ++i)
- wconf->setValue(cDefaultAmmos[i].first, cDefaultAmmos[i].second);
+ if (!QDir(cfgdir->absolutePath() + "/Schemes").exists()) {
+ QDir().mkdir(cfgdir->absolutePath() + "/Schemes");
+ }
+ if (!QDir(cfgdir->absolutePath() + "/Schemes/Ammo").exists()) {
+ qDebug("No /Schemes/Ammo directory found. Trying to import weapon schemes from weapons.ini.");
+ QDir().mkdir(cfgdir->absolutePath() + "/Schemes/Ammo");
+
+ QSettings old_wconf(cfgdir->absolutePath() + "/weapons.ini", QSettings::IniFormat);
+
+ QStringList defaultAmmos;
+ for(int i = 0; i < cDefaultAmmos.size(); ++i)
+ {
+ defaultAmmos.append(cDefaultAmmos[i].first);
+ }
- QStringList keys = 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()));
+ QStringList keys = old_wconf.allKeys();
+ int imported = 0;
+ for(int i = 0; i < keys.size(); i++)
+ {
+ if (!defaultAmmos.contains(keys[i])) {
+ wconf->insert(keys[i], fixWeaponSet(old_wconf.value(keys[i]).toString()));
+ 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;
+ file.close();
+ }
+ imported++;
+ }
+ }
+ qDebug("%d weapon scheme(s) imported.", imported);
+ } else {
+ QStringList schemes = QDir(cfgdir->absolutePath() + "/Schemes/Ammo").entryList(QDir::Files);
+
+ for(int i = 0; i < schemes.size(); i++)
+ {
+ QFile file(cfgdir->absolutePath() + "/Schemes/Ammo/" + schemes[i]);
+ QString config;
+ if (file.open(QIODevice::ReadOnly)) {
+ QTextStream stream( &file );
+ stream >> config;
+ file.close();
+ }
+
+ // Chop off file name suffix
+ QString schemeName = schemes[i];
+ if (schemeName.endsWith(".hwa", Qt::CaseInsensitive)) {
+ schemeName.chop(4);
+ }
+ wconf->insert(schemeName, fixWeaponSet(config));
+ }
}
QString currentState = *cDefaultAmmoStore;
@@ -159,10 +207,13 @@
{
bool enable = true;
for(int i = 0; i < cDefaultAmmos.size(); i++)
+ {
if (!cDefaultAmmos[i].first.compare(m_name->text()))
{
enable = false;
+ break;
}
+ }
for(int i = 0; i < m_numItems; ++i)
{
twi::iterator it = weaponItems.find(i);
@@ -182,10 +233,12 @@
void SelWeaponWidget::setDefault()
{
for(int i = 0; i < cDefaultAmmos.size(); i++)
+ {
if (!cDefaultAmmos[i].first.compare(m_name->text()))
{
return;
}
+ }
setWeapons(*cDefaultAmmoStore);
}
@@ -250,7 +303,13 @@
// remove old entry
wconf->remove(curWeaponsName);
}
- wconf->setValue(m_name->text(), stateFull);
+ wconf->insert(m_name->text(), stateFull);
+ QFile file(cfgdir->absolutePath() + "/Schemes/Ammo/" + m_name->text()+ ".hwa");
+ if (file.open(QIODevice::WriteOnly)) {
+ QTextStream stream( &file );
+ stream << stateFull << endl;
+ file.close();
+ }
emit weaponsEdited(curWeaponsName, m_name->text(), stateFull);
}
@@ -262,7 +321,7 @@
QString SelWeaponWidget::getWeaponsString(const QString& name) const
{
- return wconf->value(name).toString();
+ return wconf->find(name).value();
}
void SelWeaponWidget::deleteWeaponsName()
@@ -271,6 +330,7 @@
if (delWeaponsName == "") return;
for(int i = 0; i < cDefaultAmmos.size(); i++)
+ {
if (!cDefaultAmmos[i].first.compare(delWeaponsName))
{
QMessageBox deniedMsg(this);
@@ -281,6 +341,7 @@
deniedMsg.exec();
return;
}
+ }
QMessageBox reallyDeleteMsg(this);
reallyDeleteMsg.setIcon(QMessageBox::Question);
@@ -293,6 +354,7 @@
{
isDeleting = true;
wconf->remove(delWeaponsName);
+ QFile(cfgdir->absolutePath() + "/Schemes/Ammo/" + curWeaponsName + ".hwa").remove();
emit weaponsDeleted(delWeaponsName);
}
}
@@ -308,7 +370,7 @@
while(wconf->contains(newName = tr("New (%1)").arg(i++))) ;
}
setWeaponsName(newName);
- wconf->setValue(newName, *cEmptyAmmoStore);
+ wconf->insert(newName, *cEmptyAmmoStore);
emit weaponsAdded(newName, *cEmptyAmmoStore);
}
@@ -320,7 +382,7 @@
if(name != "" && wconf->contains(name))
{
- setWeapons(wconf->value(name).toString());
+ setWeapons(wconf->find(name).value());
}
else
{
@@ -337,7 +399,7 @@
QStringList SelWeaponWidget::getWeaponNames() const
{
- return wconf->allKeys();
+ return wconf->keys();
}
void SelWeaponWidget::copy()
@@ -355,7 +417,7 @@
}
setWeaponsName(newName);
setWeapons(ammo);
- wconf->setValue(newName, ammo);
+ wconf->insert(newName, ammo);
emit weaponsAdded(newName, ammo);
}
}
@@ -374,7 +436,9 @@
;
for(int i = sl.length() - 1; i >= 0; --i)
+ {
sl[i] = sl[i].leftJustified(neededLength, '0', true);
+ }
return sl.join(QString());
}