QTfrontend/ui/widget/selectWeapon.cpp
changeset 7830 72e52da6ea7f
parent 7797 5aedd02e7230
child 8282 1f81bcce3ee6
child 9080 9b42757d7e71
--- a/QTfrontend/ui/widget/selectWeapon.cpp	Fri Oct 26 14:06:42 2012 -0400
+++ b/QTfrontend/ui/widget/selectWeapon.cpp	Fri Oct 26 20:37:18 2012 +0200
@@ -191,24 +191,15 @@
 
 void SelWeaponWidget::save()
 {
-    for(int i = 0; i < cDefaultAmmos.size(); i++)
-        if (!cDefaultAmmos[i].first.compare(m_name->text()))
-        {
-            QMessageBox deniedMsg(this);
-            deniedMsg.setIcon(QMessageBox::Warning);
-            deniedMsg.setWindowTitle(QMessageBox::tr("Weapons - Warning"));
-            deniedMsg.setText(QMessageBox::tr("Cannot overwrite default weapon set '%1'!").arg(cDefaultAmmos[i].first));
-            deniedMsg.setWindowModality(Qt::WindowModal);
-            deniedMsg.exec();
-            return;
-        }
-
+    // TODO make this return if success or not, so that the page can react
+    // properly and not goBack if saving failed
     if (m_name->text() == "") return;
 
     QString state1;
     QString state2;
     QString state3;
     QString state4;
+    QString stateFull;
 
     for(int i = 0; i < m_numItems; ++i)
     {
@@ -222,12 +213,33 @@
         int am = it == weaponItems.end() ? 0 : it.value()[3]->getItemsNum();
         state4.append(QString::number(am));
     }
+
+    stateFull = state1 + state2 + state3 + state4;
+
+    for(int i = 0; i < cDefaultAmmos.size(); i++)
+    {
+        if (cDefaultAmmos[i].first.compare(m_name->text()) == 0)
+        {
+            // don't show warning if no change
+            if (cDefaultAmmos[i].second.compare(stateFull) == 0)
+                return;
+
+            QMessageBox deniedMsg(this);
+            deniedMsg.setIcon(QMessageBox::Warning);
+            deniedMsg.setWindowTitle(QMessageBox::tr("Weapons - Warning"));
+            deniedMsg.setText(QMessageBox::tr("Cannot overwrite default weapon set '%1'!").arg(cDefaultAmmos[i].first));
+            deniedMsg.setWindowModality(Qt::WindowModal);
+            deniedMsg.exec();
+            return;
+        }
+    }
+
     if (curWeaponsName != "")
     {
         // remove old entry
         wconf->remove(curWeaponsName);
     }
-    wconf->setValue(m_name->text(), state1 + state2 + state3 + state4);
+    wconf->setValue(m_name->text(), stateFull);
     emit weaponsChanged();
 }