diff UIControl/AddEquipmentUIControl.cs @ 61:e7ad676a7344

Re #60: Add UI to add/remove/edit weapons in GTK * Add events to track equipment amount and amount changing * Select most appropriate equipment type by default * Add methods an implementation for enabling/disabling Okay button
author IBBoard <dev@ibboard.co.uk>
date Sun, 29 Aug 2010 15:09:34 +0000
parents 293d204e40db
children f733073967a2
line wrap: on
line diff
--- a/UIControl/AddEquipmentUIControl.cs	Fri Aug 27 14:44:48 2010 +0000
+++ b/UIControl/AddEquipmentUIControl.cs	Sun Aug 29 15:09:34 2010 +0000
@@ -28,7 +28,15 @@
 			ui.SetUnitEquipmentLimitsEnabled(false);
 			UnitEquipmentItem[] items = Arrays.Subtract(UnitEquipmentUtil.GetAllowedEquipmentItems(unit), unit.GetEquipment());
 			ui.SetUnitEquipmentItems(items);
+			ui.SetOkayEnabledState(false);
 			ui.UnitEquipmentItemChoiceChanged += HandleUiUnitEquipmentItemChoiceChanged;
+			ui.UnitEquipmentAmountChanged += HandleUnitEquipmentAmountChanged;
+			ui.UnitEquipmentAmountTypeChanged += HandleUnitEquipmentAmountChanged;
+		}
+
+		private void HandleUnitEquipmentAmountChanged ()
+		{
+			ui.SetOkayEnabledState(ui.SelectedUnitEquipmentItem != null && HasNonZeroEquipmentAmount());
 		}
 		
 		//TODO Make abstract
@@ -53,14 +61,33 @@
 			
 				ui.SetUnitEquipmentLimits(equipIsRatioLimit, minPercent, maxPercent, minNumber, maxNumber);
 				ui.SetUnitEquipmentLimitsEnabled(true);
+				ui.SetOkayEnabledState(HasNonZeroEquipmentAmount());
 			}
 			else
 			{
 				ui.SetUnitEquipmentLimits(true, 0, 0, 0, 0);
 				ui.SetUnitEquipmentLimitsEnabled(false);
+				ui.SetOkayEnabledState(false);
 			}
 		}
 		
+		private bool HasNonZeroEquipmentAmount()
+		{
+			bool nonZero;
+			
+			if (ui.IsRatioEquipmentAmount)
+			{
+				nonZero = (ui.EquipmentPercentageAmount > 0);
+			}
+
+			else
+			{
+				nonZero = (ui.EquipmentNumericAmount > 0);
+			}
+			
+			return nonZero;
+		}
+
 		private double RoundPercentage(double percent)
 		{
 			return Math.Round(percent, 1);