protected void CallWaterLevelGroupSettingsDialog(bool forceNew = false) { WaterLevelGroupSettings settings; if (groupName.IsNotEmpty() && !forceNew) { settings = WaterLevel.GetWaterLevelGroupSettings(groupName); } else { settings = new WaterLevelGroupSettings(); } var parent = Toplevel as Window; var s = new WaterGroupSettings(WaterLevel.GetWaterLevelGroupSettings(groupName), parent); s.Run(); var newGroupName = s.groupName; var outcome = s.outcome; if ((outcome == TouchSettingsOutcome.Modified) && (newGroupName != groupName)) { var index = groupCombo.comboList.IndexOf(groupName); groupCombo.comboList[index] = newGroupName; groupCombo.activeText = newGroupName; } else if (outcome == TouchSettingsOutcome.Added) { groupName = newGroupName; groupCombo.comboList.Insert(groupCombo.comboList.Count - 1, groupName); groupCombo.activeText = groupName; analogSensorWidget.sensorCombo.comboList.Clear(); analogSensorWidget.sensorCombo.comboList.Add("New level sensor..."); analogSensorWidget.sensorCombo.activeIndex = 0; analogSensorWidget.sensorCombo.QueueDraw(); analogSensorWidget.sensorName = string.Empty; switchCombo.comboList.Clear(); switchCombo.comboList.Add("New switch..."); switchCombo.activeIndex = 0; switchCombo.QueueDraw(); switchName = string.Empty; } else if (outcome == TouchSettingsOutcome.Deleted) { groupCombo.comboList.Remove(groupName); groupName = WaterLevel.firstWaterLevelGroup; groupCombo.activeText = groupName; analogSensorWidget.sensorCombo.comboList.Clear(); if (groupName.IsNotEmpty()) { var groupsWaterLevelSensors = WaterLevel.GetAllWaterLevelSensorsForWaterLevelGroup(groupName); analogSensorWidget.sensorCombo.comboList.AddRange(groupsWaterLevelSensors); if (groupsWaterLevelSensors.Length > 0) { analogSensorWidget.sensorName = groupsWaterLevelSensors[0]; } else { analogSensorWidget.sensorName = string.Empty; } } analogSensorWidget.sensorCombo.comboList.Add("New level sensor..."); analogSensorWidget.sensorCombo.activeIndex = 0; analogSensorWidget.sensorCombo.QueueDraw(); switchCombo.comboList.Clear(); if (groupName.IsNotEmpty()) { var groupsFloatSwitches = WaterLevel.GetAllFloatSwitchesForWaterLevelGroup(groupName); switchCombo.comboList.AddRange(groupsFloatSwitches); if (groupsFloatSwitches.Length > 0) { switchName = groupsFloatSwitches[0]; } else { switchName = string.Empty; } } switchCombo.comboList.Add("New switch..."); switchCombo.activeIndex = 0; switchCombo.QueueDraw(); } groupCombo.QueueDraw(); GetGroupData(); analogSensorWidget.GetSensorData(); GetSwitchData(); }