HDL Home App 第二版本 旧平台金堂用 正在使用
黄学彪
2019-10-28 8b4d79ca03495e522a1953e04ca17527f33c853a
ZigbeeApp/Shared/Phone/Device/Category/Category.cs
@@ -90,7 +90,7 @@
        /// <summary>
        /// 设备类型RowLayout
        /// </summary>
        private RowLayout typeRowLayout;
        private FrameLayout typeRowLayout;
        /// <summary>
        /// 楼层
        /// </summary>
@@ -162,10 +162,10 @@
                            {
                                case DeviceType.OnOffOutput:
                                    //开关功能
                                    if ((common as ToggleLight).DeviceStatusReport.CluterID == 6)
                                    if (common.DeviceStatusReport.CluterID == 6)
                                    {
                                        var light = deviceUI.CommonDevice as ToggleLight;
                                        light.DeviceStatusReport = (common as ToggleLight).DeviceStatusReport;
                                        light.DeviceStatusReport = common.DeviceStatusReport;
                                        for (int j = 0; j < rowLayout.ChildrenCount; j++)
                                        {
                                            var tempView = rowLayout.GetChildren(j);
@@ -187,7 +187,7 @@
                                            }
                                        }
                                    }
                                    if ((common as ToggleLight).DeviceStatusReport.CluterID == 3)
                                    if (common.DeviceStatusReport.CluterID == 3)
                                    {
                                        var light = deviceUI.CommonDevice as ToggleLight;
                                        light.IsOnline = 1;
@@ -210,10 +210,10 @@
                                case DeviceType.AirSwitch:
                                    //开关功能
                                    if ((common as ZigBee.Device.AirSwitch).DeviceStatusReport.CluterID == 6)
                                    if (common.DeviceStatusReport.CluterID == 6)
                                    {
                                        var airSwitch = deviceUI.CommonDevice as ZigBee.Device.AirSwitch;
                                        airSwitch.DeviceStatusReport = (common as ZigBee.Device.AirSwitch).DeviceStatusReport;
                                        airSwitch.DeviceStatusReport = common.DeviceStatusReport;
                                        for (int j = 0; j < rowLayout.ChildrenCount; j++)
                                        {
                                            var tempView = rowLayout.GetChildren(j);
@@ -235,7 +235,7 @@
                                            }
                                        }
                                    }
                                    if ((common as ZigBee.Device.AirSwitch).DeviceStatusReport.CluterID == 3)
                                    if (common.DeviceStatusReport.CluterID == 3)
                                    {
                                        var airSwitch = deviceUI.CommonDevice as ZigBee.Device.AirSwitch;
                                        airSwitch.IsOnline = 1;
@@ -256,7 +256,7 @@
                                    }
                                    break;
                                case DeviceType.WindowCoveringDevice:
                                    if ((common as Rollershade).DeviceStatusReport.CluterID == 3)
                                    if (common.DeviceStatusReport.CluterID == 3)
                                    {
                                        var rollerShape = deviceUI.CommonDevice as Rollershade;
                                        //记录回复时间
@@ -279,15 +279,15 @@
                                case DeviceType.Thermostat:
                                    //AC功能
                                    if ((common as ZigBee.Device.AC).DeviceStatusReport.CluterID == 513)
                                    if (common.DeviceStatusReport.CluterID == 513)
                                    {
                                        var attriButeList = (common as ZigBee.Device.AC).DeviceStatusReport.AttriBute;
                                        var attriButeList = common.DeviceStatusReport.AttriBute;
                                        if (attriButeList == null || attriButeList.Count == 0)
                                        {
                                            return;
                                        }
                                        var ac = deviceUI.CommonDevice as ZigBee.Device.AC;
                                        ac.DeviceStatusReport = (common as ZigBee.Device.AC).DeviceStatusReport;
                                        ac.DeviceStatusReport = common.DeviceStatusReport;
                                        switch (attriButeList[0].AttributeId)
                                        {
                                            case 0:
@@ -336,7 +336,7 @@
                                        }
                                    }
                                    if ((common as ZigBee.Device.AC).DeviceStatusReport.CluterID == 3)
                                    if (common.DeviceStatusReport.CluterID == 3)
                                    {
                                        var ac = deviceUI.CommonDevice as ZigBee.Device.AC;
                                        ac.IsOnline = 1;
@@ -358,10 +358,10 @@
                                    break;
                                case DeviceType.DimmableLight:
                                    //调光灯功能
                                    if ((common as ZigBee.Device.DimmableLight).DeviceStatusReport.CluterID == 6)
                                    if (common.DeviceStatusReport.CluterID == 6)
                                    {
                                        var dimmableLight = deviceUI.CommonDevice as ZigBee.Device.DimmableLight;
                                        dimmableLight.DeviceStatusReport = (common as ZigBee.Device.DimmableLight).DeviceStatusReport;
                                        dimmableLight.DeviceStatusReport = common.DeviceStatusReport;
                                        for (int j = 0; j < rowLayout.ChildrenCount; j++)
                                        {
                                            var tempView = rowLayout.GetChildren(j);
@@ -383,7 +383,7 @@
                                            }
                                        }
                                    }
                                    if ((common as ZigBee.Device.DimmableLight).DeviceStatusReport.CluterID == 3)
                                    if (common.DeviceStatusReport.CluterID == 3)
                                    {
                                        var dimmableLight = deviceUI.CommonDevice as ZigBee.Device.DimmableLight;
                                        dimmableLight.IsOnline = 1;
@@ -705,7 +705,7 @@
        {
            var floors = new SelectFloor ();
            AddChidren(floors);
            floors.Init(599,357,Direction.Right);
            floors.Init(580,330,Direction.Right);
            floors.FloorAction += (floorName) =>
            {
                floorBtn.Text = floorName;
@@ -1006,8 +1006,8 @@
                                sendedControlCommand = false;
                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice);
                                (send2 as CommonForm.SelectedStatuButton).IsSelected = !(send2 as CommonForm.SelectedStatuButton).IsSelected;
                                if ((send2 as CommonForm.SelectedStatuButton).IsSelected)
                                (send2 as Button).IsSelected = !(send2 as Button).IsSelected;
                                if ((send2 as Button).IsSelected)
                                {
                                    light.SwitchControl(1);
                                }
@@ -1418,10 +1418,9 @@
                foreach (var deviceType in Common.Room.GetdeviceTypes(room))
                {
                    typeRowLayout = new RowLayout()
                    typeRowLayout = new FrameLayout()
                    {
                        Width = Application.GetRealWidth(CommonPage.AppRealWidth / 5),
                        LineColor = ZigbeeColor.Current.GXCBackgroundColor,
                        Tag = deviceType
                    };
                    functionTypeScrowView.AddChidren(typeRowLayout);
@@ -1434,19 +1433,14 @@
                    functionTypeIMG.SetTitle(DeviceUI.GetDeviceTypeName(deviceType));
                    typeRowLayout.AddChidren(functionTypeIMG);
                    functionTypeIMG.ImageBtn.MouseUpEventHandler += ShowSameTypeFunction;
                    functionTypeIMG.NameBtn.MouseUpEventHandler += ShowSameTypeFunction;
                    functionTypeIMG.ImageBG.MouseUpEventHandler += ShowSameTypeFunction;
                    functionTypeIMG.ClickBtn.MouseUpEventHandler += ShowSameTypeFunction;
                    if (deviceType == room.DeviceUIList[0].CommonDevice.Type)
                    {
                        ShowSameTypeFunction(functionTypeIMG.ImageBtn, null);
                    }
                }
            }
        }
@@ -1476,11 +1470,10 @@
            Button curBtn = new Button();
            foreach (var room in Common.Room.CurrentRoom.GetRoomsByCurrentFloorIdAppendLoveRoom())
            {
                var row = new RowLayout()
                var row = new FrameLayout()
                {
                    Width = Application.GetRealWidth(187 + 50),
                    Height = Application.GetRealHeight(167),
                    LineColor = ZigbeeColor.Current.GXCGrayBackgroundColor
                    Height = Application.GetRealHeight(167)
                };
                roomFL.AddChidren(row);
@@ -1553,6 +1546,7 @@
        /// <param name="room"></param>
        public void RefreshScene(Common.Room room)
        {
            functionSceneBodyView.RemoveAll();
            var sceneList = room.SceneUIList;
            if (sceneList.Count == 0)
            {
@@ -1612,20 +1606,48 @@
                        Width = Application.GetMinRealAverage(65),
                        Height = Application.GetMinRealAverage(65),
                        UnSelectedImagePath = "Item/Collection.png",
                        SelectedImagePath = "Item/CollectionSelected.png"
                        SelectedImagePath = "Item/CollectionSelected.png",
                        IsSelected = Common.Room.CurrentRoom.GetLoveRoom().SceneUIFilePathList.Contains(scene.FileName),
                        Tag = scene
                    };
                    leftFL.AddChidren(collectionBtn);
                    var sceneNameBtn = new Button()
                    {
                        Width = Application.GetRealWidth(176),
                        Height = Application.GetRealHeight(200),
                        Height = Application.GetRealHeight(150),
                        TextColor = ZigbeeColor.Current.GXCTextWhiteColor,
                        Text = scene.Name,
                        Gravity = Gravity.Center,
                        IsMoreLines = true
                    };
                    leftFL.AddChidren(sceneNameBtn);
                    var collection = new Button
                    {
                        Tag=scene
                    };
                    leftFL.AddChidren(collection);
                    collection.MouseUpEventHandler += (sender, e) =>
                    {
                        if (room.IsLove)
                        {
                            Common.Room.CurrentRoom.GetLoveRoom().DeleteScene(scene);
                            sceneScrolView.RemoveViewByTag(collectionBtn.Tag);
                        }
                        else
                        {
                            collectionBtn.IsSelected = !collectionBtn.IsSelected;
                            if (collectionBtn.IsSelected)
                            {
                                Common.Room.CurrentRoom.GetLoveRoom().AddScene(scene);
                            }
                            else
                            {
                                Common.Room.CurrentRoom.GetLoveRoom().DeleteScene(scene);
                            }
                        }
                    };
                    //定时
                    var delayBtn = new RowLayoutDeleteButton
@@ -1638,7 +1660,7 @@
                    //编辑
                    var settingBtn = new Device.CommonForm.RowLayoutEditButton()
                    {
                        TextID = R.MyInternationalizationString.Setting,
                        TextID = R.MyInternationalizationString.Editor,
                        Tag = scene.SceneDelayTime
                    };
                    //删除
@@ -1688,83 +1710,75 @@
                    //删除场景
                    EventHandler<MouseEventArgs> delEvent = (sender, e) =>
                    {
                        var tip = new CustomAlert { };
                        AddChidren(tip);
                        tip.Show(Language.StringByID(R.MyInternationalizationString.ConfirmDelete));
                        //var alert = new Alert(Language.StringByID(R.MyInternationalizationString.TIP), Language.StringByID(R.MyInternationalizationString.ConfirmDelete), Language.StringByID(R.MyInternationalizationString.Cancel), Language.StringByID(R.MyInternationalizationString.Confrim));
                        //alert.Show();
                        tip.ResultEventHandler += async (e1) =>
                        if(room.IsLove)
                        {
                            if (e1)
                            Shared.Common.Room.CurrentRoom.GetLoveRoom().DeleteScene(scene);
                            sceneScrolView.RemoveViewByTag((sender as Button).Tag);
                        }
                        else
                        {
                            var tip = new CustomAlert { };
                            AddChidren(tip);
                            tip.Show(Language.StringByID(R.MyInternationalizationString.ConfirmDelete));
                            //var alert = new Alert(Language.StringByID(R.MyInternationalizationString.TIP), Language.StringByID(R.MyInternationalizationString.ConfirmDelete), Language.StringByID(R.MyInternationalizationString.Cancel), Language.StringByID(R.MyInternationalizationString.Confrim));
                            //alert.Show();
                            tip.ResultEventHandler += async (e1) =>
                            {
                                //0 移除失败 1 移除成功 2 没有该场景
                                var removeSceneAllData = await ZigBee.Device.Scene.DeleteSceneAsync(scene.Id);
                                if (removeSceneAllData == null || removeSceneAllData.removeSceneData == null)
                                if (e1)
                                {
                                    //CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.TheMainGatewayIsNotOnLine);
                                    CommonPage.Instance.FailureToServer();
                                    return;
                                    //0 移除失败 1 移除成功 2 没有该场景
                                    var removeSceneAllData = await ZigBee.Device.Scene.DeleteSceneAsync(scene.Id);
                                    if (removeSceneAllData == null || removeSceneAllData.removeSceneData == null)
                                    {
                                        //CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.TheMainGatewayIsNotOnLine);
                                        CommonPage.Instance.FailureToServer();
                                        return;
                                    }
                                    //1成功
                                    if (removeSceneAllData.removeSceneData.Result == 1)
                                    {
                                        room.RemoveScene(scene);
                                        //RefreshBodyView();
                                        sceneScrolView.RemoveViewByTag((sender as Button).Tag);
                                    }
                                    //0 移除失败
                                    else if (removeSceneAllData.removeSceneData.Result == 0)
                                    {
                                        CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.FailedPleaseTryAgain);
                                        return;
                                    }
                                    //2 没有该场景
                                    else if (removeSceneAllData.removeSceneData.Result == 2)
                                    {
                                        room.RemoveScene(scene);
                                        //RefreshBodyView();
                                        sceneScrolView.RemoveViewByTag((sender as Button).Tag);
                                        CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.TheSceneIsNull);
                                        return;
                                    }
                                }
                                //1成功
                                if (removeSceneAllData.removeSceneData.Result == 1)
                                {
                                    room.RemoveScene(scene);
                                    //RefreshBodyView();
                                    sceneScrolView.RemoveViewByTag((sender as Button).Tag);
                                }
                                //0 移除失败
                                else if (removeSceneAllData.removeSceneData.Result == 0)
                                {
                                    CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.FailedPleaseTryAgain);
                                    return;
                                }
                                //2 没有该场景
                                else if (removeSceneAllData.removeSceneData.Result == 2)
                                {
                                    room.RemoveScene(scene);
                                    //RefreshBodyView();
                                    sceneScrolView.RemoveViewByTag((sender as Button).Tag);
                                    CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.TheSceneIsNull);
                                    return;
                                }
                            }
                        };
                            };
                        }
                    };
                    deleteBtn.MouseUpEventHandler += delEvent;
                    //编辑场景
                    settingBtn.MouseUpEventHandler += (sender, e) =>
                    {
                        SceneRoomUI.EditScene(scene,room);
                        SceneUI.EditScene(scene, room);
                    };
                    //编辑延时
                    delayBtn.MouseUpEventHandler += (sender, e) =>
                    {
                        var tList = new List<string>() { };
                        for (int i = 0; i < 60; i++)
                        var timeSelect = new SelectTime();
                        CommonPage.Instance.AddChidren(timeSelect);
                        timeSelect.TempTime = scene.SceneDelayTime;
                        timeSelect.Init();
                        timeSelect.TimeAction = (t) =>
                        {
                            tList.Add($"{i} {Language.StringByID(R.MyInternationalizationString.Second)}");
                        }
                        //int beforeIndex = (int)(sender as CommonForm.RowLayoutEditButton).Tag;
                        //PickerView.Show(tList, (obj) =>
                        //{
                        //    var tempRoom = Shared.Common.Room.GetRoomByFilePath(sceneRoomUI.room.FileName);
                        //    if (tempRoom == null)
                        //    {
                        //        return;
                        //    }
                        //    foreach (var ss in tempRoom.SceneUIList)
                        //    {
                        //        if (ss.Id == sceneRoomUI.sceneUI.Id)
                        //        {
                        //            //ss.SceneDelayTime = int.Parse(obj.Split(' ')[0]);
                        //            sceneRoomUI.room.Save();
                        //            RefreshBodyView();
                        //            return;
                        //        }
                        //    }
                        //}, Language.StringByID(R.MyInternationalizationString.Confrim), tList[(int)(sender as CommonForm.RowLayoutEditButton).Tag]);
                            scene.SceneDelayTime = t;
                        };
                    };
                }
            }
@@ -1807,7 +1821,7 @@
        /// <summary>
        /// 自动化
        /// </summary>
        public async void ShowAutotion()
        private async void ShowAutotion()
        {
            functionSceneAutoBodyView.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor;
@@ -1975,34 +1989,19 @@
            CommonPage.Loading.Start();
            if (Common.Logic.LogicList.Count == 0)
            {
                //var Idlist = await Logic.Send.GetLogicId();
                //if (Idlist.Count != 0)
                //{
                //    foreach (var LogicId in Idlist)
                //    {
                //        var logic = await Logic.Send.GetLogic(LogicId);
                //        if (logic != null)
                //        {
                //            Common.Logic.LogicList.Add(logic);
                //        }
                //    }
                //}
                var Idlist = await Logic.Send.GetLogicId();
                var Idlist = await Logic.Send.GetLogicId(0);
                if (Idlist.Count != 0)
                {
                    var listlogic = await Logic.Send.ReadList(Idlist.Count);
                    for (int i = 0; i < Idlist.Count; i++)
                    var listlogic = await Logic.Send.ReadList(Idlist.Count,0);
                    //foreach可能集合已被修改,枚举操作可能不会执行,可能出现崩溃(建议for)。
                    for (int j = 0; j < listlogic.Count; j++)
                    {
                        var LogicId = Idlist[i];
                        //foreach可能集合已被修改,枚举操作可能不会执行,可能出现崩溃(建议for)。
                        for (int j = 0; j < listlogic.Count; j++)
                        var logic = listlogic[j];
                        if (logic.LogicType != 0)
                        {
                            var logic = listlogic[j];
                            if (logic.LogicId == LogicId)
                            {
                                Common.Logic.LogicList.Add(logic);
                            }
                            continue;
                        }
                        Common.Logic.LogicList.Add(logic);
                    }
                }
            }
@@ -2015,7 +2014,7 @@
        /// 自动化列表界面
        /// </summary>
        /// <param name="refresview">Refresview.</param>
        public async void Automationview(VerticalScrolViewLayout refresview)
        private async void Automationview(VerticalScrolViewLayout refresview)
        {
            refresview.RemoveAll();
            foreach (var logic in Common.Logic.LogicList)
@@ -2100,7 +2099,7 @@
                    Text = Language.StringByID(MyInternationalizationString.edit),
                    TextColor = ZigbeeColor.Current.LogicBtnSaveTextColor,
                };
                bjRow.AddRightView(edit);
                logicRowlayout.AddRightView(edit);
                edit.MouseUpEventHandler += (sender, e) =>
                {
                    Common.Logic.LogicDviceList.Clear();
@@ -2124,7 +2123,7 @@
                    Text = Language.StringByID(MyInternationalizationString.del),
                    TextColor = ZigbeeColor.Current.LogicBtnSaveTextColor,
                };
                bjRow.AddRightView(del);
                logicRowlayout.AddRightView(del);
                del.MouseUpEventHandler += (sender, e) =>
                {
                    var alert = new Alert(Language.StringByID(MyInternationalizationString.tip), Language.StringByID(MyInternationalizationString.doyouwanttodelete),
@@ -2146,8 +2145,6 @@
        }
        #endregion
        #region ◆ 控制状态_________________________
@@ -2614,5 +2611,6 @@
                }
            }
        }
        #endregion
    }
}