Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
 public ResourceLinkCreatorView()
 {
     rl = new Resourcelink();
 }
Ejemplo n.º 5
0
        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;
            }
        }