private void btnCreateResourceLink_Click(object sender, RoutedEventArgs e) { Resourcelink rl = rlcvm.Resourcelink; bool result = rlcvm.IsEditing ? BridgesManager.Instance.SelectedBridge.ModifyObject(rl) : BridgesManager.Instance.SelectedBridge.CreateObject(rl); if (result) { id = rlcvm.IsEditing ? rl.Id : BridgesManager.Instance.SelectedBridge.LastCommandMessages.LastSuccess.value; DialogResult = true; Close(); } else { MessageBoxError.ShowLastErrorMessages(BridgesManager.Instance.SelectedBridge); } }
private void lvMainObjects_SelectionChanged(object sender, SelectionChangedEventArgs e) { log.Debug("Clearing light bg color."); ClearBackgroundColor(); if (lvMainObjects.SelectedItem == null) { return; } if (lvMainObjects.SelectedItem is Resourcelink) { Resourcelink rl = (Resourcelink)lvMainObjects.SelectedItem; List <HueObject> listhue = new List <HueObject>(); List <HueObject> bo = new List <HueObject>(lvMainObjects.Items.OfType <HueObject>()); foreach (string s in rl.links) { string[] objbreak = s.Split('/'); string classname = objbreak[1].TrimEnd('s'); classname = "HueLib2." + classname.First().ToString().ToUpper() + string.Join("", classname.Skip(1)); Type objtype = Type.GetType(classname + ", HueLib2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"); listhue.Add(bo.Find(x => x.Id == objbreak[2] && x.GetType() == objtype)); } SetObjectBackground(listhue); return; } if (!lvMainObjects.SelectedItem.HasProperty("lights")) { return; } List <string> list = (List <string>) lvMainObjects.SelectedItem.GetType().GetProperty("lights").GetValue(lvMainObjects.SelectedItem); log.Debug("Settings light BG color for lights : " + list); SetLightBackground(list); }
public static HelperResult GetObject <T>(Bridge bridge, string id) where T : HueObject { CommandResult bresult = bridge.GetObject <T>(id); HelperResult hr = new HelperResult() { Success = bresult.Success }; if (bresult.Success) { if (typeof(T) == typeof(Light)) { Light light = (Light)bresult.resultobject; log.Debug("Light : " + light); light.Id = id; light.Image = GetImageForLight( (bool)light.state.reachable ? (bool)light.state.on ? LightImageState.On : LightImageState.Off : LightImageState.Unr, light.modelid); hr.Hrobject = light; } else if (typeof(T) == typeof(Group)) { Group group = (Group)bresult.resultobject; log.Debug("Group : " + group); group.Id = id; group.Image = GDIManager.CreateImageSourceFromImage((bool)group.action.on ? Properties.Resources.HueGroupOn_Large : Properties.Resources.HueGroupOff_Large); hr.Hrobject = group; } else if (typeof(T) == typeof(Sensor) || typeof(T).BaseType == typeof(Sensor)) { Sensor sensor = (Sensor)bresult.resultobject; sensor.Id = id; sensor.Image = GDIManager.CreateImageSourceFromImage(sensor.type == "ZGPSwitch" ? Properties.Resources.huetap : Properties.Resources.sensor); hr.Hrobject = sensor; } else if (typeof(T) == typeof(Rule)) { Rule rule = (Rule)bresult.resultobject; log.Debug("Rule : " + rule); rule.Id = id; rule.Image = GDIManager.CreateImageSourceFromImage(Properties.Resources.rules); hr.Hrobject = rule; } else if (typeof(T) == typeof(Scene)) { Scene scene = (Scene)bresult.resultobject; log.Debug("Scene : " + scene); scene.Id = id; scene.Image = GDIManager.CreateImageSourceFromImage(Properties.Resources.SceneLarge); hr.Hrobject = scene; } else if (typeof(T) == typeof(Schedule)) { Schedule schedule = (Schedule)bresult.resultobject; schedule.Id = id; ImageSource imgsource; if (schedule.localtime.Contains("PT")) { log.Debug("Schedule is type Timer."); imgsource = GDIManager.CreateImageSourceFromImage(Properties.Resources.timer_clock); } else if (schedule.localtime.Contains('W')) { log.Debug("Schedule is type Alarm."); imgsource = GDIManager.CreateImageSourceFromImage(Properties.Resources.stock_alarm); } else if (schedule.localtime.Contains('T')) { log.Debug("Schedule is type Schedule."); imgsource = GDIManager.CreateImageSourceFromImage(Properties.Resources.SchedulesLarge); } else { log.Debug("Schedule is unknown type."); imgsource = GDIManager.CreateImageSourceFromImage(Properties.Resources.schedules); } schedule.Image = imgsource; hr.Hrobject = schedule; } else if (typeof(T) == typeof(Resourcelink)) { Resourcelink rl = (Resourcelink)bresult.resultobject; rl.Id = id; rl.Image = GDIManager.CreateImageSourceFromImage(Properties.Resources.resource); hr.Hrobject = rl; } } else { hr.Hrobject = bresult.resultobject; } return(hr); }
public ResourceLinkCreatorView() { rl = new Resourcelink(); }
public async Task Initialize(Resourcelink rl = null) { rlcvm.LinkCreatorModel.ShowID = WinHueSettings.settings.ShowID; rlcvm.LinkCreatorModel.Wrap = WinHueSettings.settings.WrapText; List <IHueObject> hr = await BridgesManager.Instance.SelectedBridge.GetAllObjectsAsync(); if (hr == null) { return; } ObservableCollection <IHueObject> listbrobj = new ObservableCollection <IHueObject>(); List <IHueObject> listobj = hr; switch (WinHueSettings.settings.Sort) { case WinHueSortOrder.Default: listbrobj = new ObservableCollection <IHueObject>(hr); break; case WinHueSortOrder.Ascending: listbrobj.AddRange(from item in listobj where item is Light orderby item.name ascending select item); listbrobj.AddRange(from item in listobj where item is Group orderby item.name ascending select item); listbrobj.AddRange(from item in listobj where item is Schedule orderby item.name ascending select item); listbrobj.AddRange(from item in listobj where item is Scene orderby item.name ascending select item); listbrobj.AddRange(from item in listobj where item is Sensor orderby item.name ascending select item); listbrobj.AddRange(from item in listobj where item is Rule orderby item.name ascending select item); listbrobj.AddRange(from item in listobj where item is Resourcelink orderby item.name ascending select item); break; case WinHueSortOrder.Descending: listbrobj.AddRange(from item in listobj where item is Light orderby item.name descending select item); listbrobj.AddRange(from item in listobj where item is Group orderby item.name descending select item); listbrobj.AddRange(from item in listobj where item is Schedule orderby item.name descending select item); listbrobj.AddRange(from item in listobj where item is Scene orderby item.name descending select item); listbrobj.AddRange(from item in listobj where item is Sensor orderby item.name descending select item); listbrobj.AddRange(from item in listobj where item is Rule orderby item.name descending select item); listbrobj.AddRange(from item in listobj where item is Resourcelink orderby item.name descending select item); break; default: goto case WinHueSortOrder.Default; } rlcvm.ListHueObjects = listbrobj; CollectionView view = (CollectionView)CollectionViewSource.GetDefaultView(rlcvm.ListHueObjects); view.GroupDescriptions?.Clear(); PropertyGroupDescription groupDesc = new TypeGroupDescription(); view.GroupDescriptions?.Add(groupDesc); CollectionView view2 = (CollectionView)CollectionViewSource.GetDefaultView(rlcvm.LinkCreatorModel.ListlinkObject); view2.GroupDescriptions?.Clear(); PropertyGroupDescription groupDesc2 = new TypeGroupDescription(); view2.GroupDescriptions?.Add(groupDesc2); if (rl != null) { rlcvm.Resourcelink = rl; } }