# HG changeset patch # User IBBoard # Date 1252354240 0 # Node ID 7ace7d2249acdc532f6848d04c4c8ab35912b546 # Parent d06c2e390a14fa93705df0552bc3b08ecdc64d59 Fixes #117: Add percentage and number boxes to equipment item dialogs * Add value changing when changing radio button selection * Add logic to equipment amount editing control to perform value setting (but see #146) Also, fixes #114 by rebuilding everything in to a single control diff -r d06c2e390a14 -r 7ace7d2249ac FrmEditUnitEquipment.cs --- a/FrmEditUnitEquipment.cs Sun Sep 06 19:58:39 2009 +0000 +++ b/FrmEditUnitEquipment.cs Mon Sep 07 20:10:40 2009 +0000 @@ -134,53 +134,50 @@ private void bttnOkay_Click(object sender, System.EventArgs e) { - if (setValue()) + if (SetValue()) { this.Close(); } } - private bool setValue() + private bool SetValue() { - return false; - //if (!bttnOkay.Enabled) - //{ - // if (equipItem.IsRequired) - // { - // MessageBox.Show(this, "This item is required and cannot be removed. It must have a quantity of at least one or be replaced by an alternative.", "Required item", MessageBoxButtons.OK, MessageBoxIcon.Warning); - // return false; - // } - // else - // { - // DialogResult dr = MessageBox.Show(this, "This will remove the item from the unit. Continue?", "Confirm remove", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1); + bool setValue = true; + double amount = equipmentAmount.EquipmentAmount; - // if (dr!=DialogResult.Yes) - // { - // return false; - // } - // } - //} + if (amount == 0) + { + if (equipItem.IsRequired) + { + MessageBox.Show(this, "This item is required and cannot be removed. It must have a quantity of at least one or be replaced by an alternative.", "Required item", MessageBoxButtons.OK, MessageBoxIcon.Warning); + setValue = false; + } + else + { + DialogResult dr = MessageBox.Show(this, "This will remove the item from the unit. Continue?", "Confirm remove", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1); - //if (cbEquipAll.Checked) - //{ - // if (equipAmount != WarFoundryCore.INFINITY) - // { - // commandStack.Execute(new SetUnitEquipmentNumericAmountCommand(unit, equipItem, WarFoundryCore.INFINITY)); - // } - //} - //else if (numEquipAmount.Value != (decimal)equipAmount) - //{ - // if (equipItem.IsRatioLimit) - // { - // commandStack.Execute(new SetUnitEquipmentRatioAmountCommand(unit, equipItem, (double)numEquipAmount.Value)); - // } - // else - // { - // commandStack.Execute(new SetUnitEquipmentNumericAmountCommand(unit, equipItem, (int)numEquipAmount.Value)); - // } - //} + if (dr != DialogResult.Yes) + { + setValue = false; + } + } + } + + double oldAmount = unit.GetEquipmentAmount(equipItem); - //return true; + if (setValue && oldAmount != amount) + { + if (equipmentAmount.IsRatioEquipmentAmount) + { + commandStack.Execute(new SetUnitEquipmentRatioAmountCommand(unit, equipItem, amount)); + } + else + { + commandStack.Execute(new SetUnitEquipmentNumericAmountCommand(unit, equipItem, (int)amount)); + } + } + + return setValue; } private void bttnCancel_Click(object sender, System.EventArgs e) @@ -190,7 +187,7 @@ private void setOkayButton() { - double equipAmount = 0;// equipmentAmount.EquipmentAmount; + double equipAmount = equipmentAmount.EquipmentAmount; bttnOkay.Enabled = equipAmount > 0 || equipAmount == WarFoundryCore.INFINITY || !equipItem.IsRequired; } diff -r d06c2e390a14 -r 7ace7d2249ac UI/EquipmentAmountControl.Designer.cs --- a/UI/EquipmentAmountControl.Designer.cs Sun Sep 06 19:58:39 2009 +0000 +++ b/UI/EquipmentAmountControl.Designer.cs Mon Sep 07 20:10:40 2009 +0000 @@ -34,8 +34,8 @@ this.numeric = new System.Windows.Forms.NumericUpDown(); this.percentage = new System.Windows.Forms.NumericUpDown(); this.lblPercentSign = new System.Windows.Forms.Label(); - ((System.ComponentModel.ISupportInitialize) (this.numeric)).BeginInit(); - ((System.ComponentModel.ISupportInitialize) (this.percentage)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.numeric)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.percentage)).BeginInit(); this.SuspendLayout(); // // rbNumeric @@ -48,6 +48,7 @@ this.rbNumeric.TabIndex = 0; this.rbNumeric.TabStop = true; this.rbNumeric.UseVisualStyleBackColor = true; + this.rbNumeric.CheckedChanged += new System.EventHandler(this.radioCheckedChanged); // // rbPercentage // @@ -59,6 +60,7 @@ this.rbPercentage.TabIndex = 1; this.rbPercentage.TabStop = true; this.rbPercentage.UseVisualStyleBackColor = true; + this.rbPercentage.CheckedChanged += new System.EventHandler(this.radioCheckedChanged); // // rbEquipAll // @@ -113,8 +115,8 @@ this.Controls.Add(this.rbNumeric); this.Name = "EquipmentAmountControl"; this.Size = new System.Drawing.Size(155, 77); - ((System.ComponentModel.ISupportInitialize) (this.numeric)).EndInit(); - ((System.ComponentModel.ISupportInitialize) (this.percentage)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.numeric)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.percentage)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); diff -r d06c2e390a14 -r 7ace7d2249ac UI/EquipmentAmountControl.cs --- a/UI/EquipmentAmountControl.cs Sun Sep 06 19:58:39 2009 +0000 +++ b/UI/EquipmentAmountControl.cs Mon Sep 07 20:10:40 2009 +0000 @@ -125,13 +125,13 @@ percentage.Value = 100; } - OnValueChanged(); + radioCheckedChanged(sender, e); } private void percentage_ValueChanged(object sender, EventArgs e) { SetNumericValueFromPercentage(); - rbEquipAll.Checked = (percentage.Value == 100); + rbEquipAll.Checked = (percentage.Value == 100 && !rbNumeric.Checked); OnValueChanged(); } @@ -184,9 +184,9 @@ { val = (double) numeric.Value; } - else if (rbPercentage.Enabled) + else if (rbPercentage.Checked) { - val = (double) percentage.Value / 100.0; + val = (double) percentage.Value; } else if (rbEquipAll.Checked) { @@ -224,5 +224,10 @@ numeric.Value = (int)equipAmountNum; } } + + private void radioCheckedChanged(object sender, EventArgs e) + { + OnValueChanged(); + } } }