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();
        }