private void btn_AddDevice_Tapped(object sender, TappedRoutedEventArgs e)
        {
            switch (cbx_DeviceType.SelectedIndex)
            {
            case 0:
                Core.Classes.Device NewDevice = new Core.Classes.Device();
                NewDevice.Name = "My Device";
                NewDevice.Pin  = Core.Classes.Device.PinsEnum.D0;
                MainPage.MyHome.Rooms[lb_Rooms.SelectedIndex].AddDevice(NewDevice);
                break;

            case 1:
                Core.Classes.WindowShutter NewWindowShutter = new Core.Classes.WindowShutter();
                NewWindowShutter.Name         = "My Window Shutter";
                NewWindowShutter.Pin          = Core.Classes.Device.PinsEnum.D0;
                NewWindowShutter.SecondaryPin = Core.Classes.Device.PinsEnum.D1;
                MainPage.MyHome.Rooms[lb_Rooms.SelectedIndex].AddWindowShutter(NewWindowShutter);
                break;

            case 2:
                Core.Classes.Sensor NewSensor = new Core.Classes.Sensor();
                NewSensor.Name = "My Sensor";
                NewSensor.Pin  = Core.Classes.Sensor.PinsEnum.D0;
                MainPage.MyHome.Rooms[lb_Rooms.SelectedIndex].AddSensor(NewSensor);
                break;
            }

            // Only update device listbox
            UpdateListBox(2);
        }
示例#2
0
        private void lv_Devices_Tapped(object sender, TappedRoutedEventArgs e)
        {
            SelectedDevice = (Core.Classes.Device)lv_Devices.SelectedItem;

            if (SelectedDevice.Status == Core.Classes.Device.StatusEnum.Off)
            {
                Task.Factory.StartNew(() =>
                {
                    SelectedDevice.TurnOn();
                }).Wait(1000);
                SelectedDevice.Status = Core.Classes.Device.StatusEnum.On;
            }
            else
            {
                Task.Factory.StartNew(() =>
                {
                    SelectedDevice.TurnOff();
                }).Wait(1000);
                SelectedDevice.Status = Core.Classes.Device.StatusEnum.Off;
            }
        }
        private void UpdateDeviceDetailPane(Core.Classes.Room SelectedRoom, bool SelectFirst = false, bool SkipClear = false)
        {
            if (SkipClear == false)
            {
                ClearDeviceDetailPane();
            }
            if (SelectedRoom.Devices.Count > 0 || SelectedRoom.Sensors.Count > 0 || SelectedRoom.WindowShutters.Count > 0)
            {
                if (SkipClear == false)
                {
                    try {
                        foreach (var _Device in SelectedRoom.Devices)
                        {
                            lb_Devices.Items.Add(_Device);
                        }
                    }
                    catch { }
                    try {
                        foreach (var _Sensor in SelectedRoom.Sensors)
                        {
                            lb_Devices.Items.Add(_Sensor);
                        }
                    }
                    catch { }
                    try {
                        foreach (var _WindowShutter in SelectedRoom.WindowShutters)
                        {
                            lb_Devices.Items.Add(_WindowShutter);
                        }
                    }
                    catch { }
                }

                if (SelectFirst)
                {
                    lb_Devices.SelectedIndex = 0;
                }

                var type = lb_Devices.SelectedItem.GetType();

                if (type == typeof(Core.Classes.Device))
                {
                    Core.Classes.Device SelectedDevice = (Core.Classes.Device)lb_Devices.SelectedItem;
                    try
                    {
                        tbx_DeviceName.Text        = SelectedDevice.Name;
                        cbx_DevicePin.SelectedItem = SelectedDevice.Pin.ToString();
                    }
                    catch
                    {
                        tbx_DeviceName.Text        = "";
                        cbx_DevicePin.SelectedItem = "D0";
                    }
                }
                else if (type == typeof(Core.Classes.WindowShutter))
                {
                    Core.Classes.WindowShutter SelectedDevice = (Core.Classes.WindowShutter)lb_Devices.SelectedItem;
                    try
                    {
                        tbx_DeviceName.Text           = SelectedDevice.Name;
                        cbx_DevicePin.SelectedItem    = SelectedDevice.Pin.ToString();
                        cbx_DevicePinSec.SelectedItem = SelectedDevice.SecondaryPin.ToString();
                    }
                    catch
                    {
                        tbx_DeviceName.Text        = "";
                        cbx_DevicePin.SelectedItem = "D0";
                        cbx_DevicePin.SelectedItem = "D1";
                    }
                }
                else if (type == typeof(Core.Classes.Sensor))
                {
                    Core.Classes.Sensor SelectedDevice = (Core.Classes.Sensor)lb_Devices.SelectedItem;
                    try
                    {
                        tbx_DeviceName.Text        = SelectedDevice.Name;
                        cbx_DevicePin.SelectedItem = SelectedDevice.Pin.ToString();
                    }
                    catch
                    {
                        tbx_DeviceName.Text        = "";
                        cbx_DevicePin.SelectedItem = "A2";
                    }
                }
            }
        }
        private void btn_Save_Tapped(object sender, TappedRoutedEventArgs e)
        {
            if (lb_Rooms.Items.Count > 0 && lb_Rooms.SelectedIndex != -1)
            {
                // Update Room Detail
                Core.Classes.Room SelectedRoom = (Core.Classes.Room)lb_Rooms.SelectedItem;

                SelectedRoom.Name = tbx_RoomName.Text.ToString();

                int             NewAddress = 0;
                IFormatProvider _Culture   = new CultureInfo("en-US");
                int.TryParse(tbx_I2CslaveAddress.Text.Replace("0x", ""), System.Globalization.NumberStyles.HexNumber, _Culture, out NewAddress);
                SelectedRoom.I2C_SlaveAdress = NewAddress;

                // Update Device Detail
                if (lb_Devices.Items.Count > 0)
                {
                    if (lb_Devices.SelectedIndex != -1)
                    {
                        System.Type type = lb_Devices.SelectedItem.GetType();
                        if (type == typeof(Core.Classes.Device))
                        {
                            Core.Classes.Device SelectedDevice = (Core.Classes.Device)lb_Devices.SelectedItem;

                            SelectedDevice.Name = tbx_DeviceName.Text.ToString();
                            try
                            {
                                SelectedDevice.Pin = (Core.Classes.Device.PinsEnum)Enum.Parse(typeof(Core.Classes.Device.PinsEnum), cbx_DevicePin.SelectedItem.ToString());
                            }
                            catch
                            {
                                SelectedDevice.Pin = (Core.Classes.Device.PinsEnum)Enum.Parse(typeof(Core.Classes.Device.PinsEnum), "D0");
                            }
                        }
                        else if (type == typeof(Core.Classes.WindowShutter))
                        {
                            Core.Classes.WindowShutter SelectedDevice = (Core.Classes.WindowShutter)lb_Devices.SelectedItem;

                            SelectedDevice.Name = tbx_DeviceName.Text.ToString();
                            try
                            {
                                SelectedDevice.Pin          = (Core.Classes.Device.PinsEnum)Enum.Parse(typeof(Core.Classes.Device.PinsEnum), cbx_DevicePin.SelectedItem.ToString());
                                SelectedDevice.SecondaryPin = (Core.Classes.Device.PinsEnum)Enum.Parse(typeof(Core.Classes.Device.PinsEnum), cbx_DevicePinSec.SelectedItem.ToString());
                            }
                            catch
                            {
                                SelectedDevice.Pin          = (Core.Classes.Device.PinsEnum)Enum.Parse(typeof(Core.Classes.Device.PinsEnum), "D0");
                                SelectedDevice.SecondaryPin = (Core.Classes.Device.PinsEnum)Enum.Parse(typeof(Core.Classes.Device.PinsEnum), "D1");
                            }
                        }
                        else if (type == typeof(Core.Classes.Sensor))
                        {
                            Core.Classes.Sensor SelectedDevice = (Core.Classes.Sensor)lb_Devices.SelectedItem;

                            SelectedDevice.Name = tbx_DeviceName.Text.ToString();
                            try
                            {
                                SelectedDevice.Pin = (Core.Classes.Device.PinsEnum)Enum.Parse(typeof(Core.Classes.Device.PinsEnum), cbx_DevicePin.SelectedItem.ToString());
                            }
                            catch
                            {
                                SelectedDevice.Pin = (Core.Classes.Device.PinsEnum)Enum.Parse(typeof(Core.Classes.Device.PinsEnum), "A1");
                            }
                        }
                    }
                }
            }

            // Save
            Core.Classes.Home.SaveHome(MainPage.MyHome);
        }