HDL Home App 第二版本 旧平台金堂用 正在使用
黄学彪
2019-10-28 8b4d79ca03495e522a1953e04ca17527f33c853a
ZigbeeApp/Shared/Phone/Device/Logic/DoorLockLogic/LockLogicCommunalPage.cs
@@ -7,15 +7,15 @@
using Shared.R;
using ZigBee.Device;
namespace Shared.Phone.Logic.DoorLockLogic
namespace Shared.Phone.Device.Logic.DoorLockLogic
{
    public class LockLogicCommunalPage : FrameLayout
    {
        public LockLogicCommunalPage()
        {
            UserView.HomePage.Instance.RemoveViewByTag("Logic");
            Tag = "Logic";
            UserView.HomePage.Instance.RemoveViewByTag("LockLogic");
            Tag = "LockLogic";
        }
        EditText logicTextBox;
        public void Show(Action action)
@@ -44,11 +44,11 @@
            topRowLayout.AddChidren(titleName);
            if (Common.Logic.CurrentLogic.LogicId != 0)
            {
                titleName.Text = Language.StringByID(MyInternationalizationString.editautomation);
                titleName.Text = Language.StringByID(MyInternationalizationString.editlinkageevent);
            }
            else
            {
                titleName.Text = Language.StringByID(MyInternationalizationString.newautomation);
                titleName.Text = Language.StringByID(MyInternationalizationString.addlinkageevent);
            }
            var clickBtn = new Button
@@ -78,9 +78,9 @@
                action();
                RemoveFromParent();
            };
            #endregion
            var middle = new VerticalScrolViewLayout
            {
@@ -192,17 +192,11 @@
            ///添加条件的点击事件
            EventHandler<MouseEventArgs> conditionaddclick = (sender, e) =>
            {
                if (Common.Logic.CurrentLogic.Conditions.Count == 1)
                {
                    ConditionView(false);
                }
                else
                {
                    var addCondition = new AddCondition();
                    UserView.HomePage.Instance.AddChidren(addCondition);
                    UserView.HomePage.Instance.PageIndex += 1;
                    addCondition.Show();
                }
                var addCondition = new AddCondition();
                addCondition.conditionsIndex = -1;
                UserView.HomePage.Instance.AddChidren(addCondition);
                UserView.HomePage.Instance.PageIndex += 1;
                addCondition.Show();
            };
            conditionadd.MouseUpEventHandler += conditionaddclick;
            conditionadd1.MouseUpEventHandler += conditionaddclick;
@@ -210,40 +204,6 @@
            ListConditions.Clear();
            ListConditions.AddRange(Common.Logic.CurrentLogic.Conditions);
            ListConditions.Add(new Dictionary<string, string>());
            if (Common.Logic.CurrentLogic.Conditions.Count > 1)
            {
                var row = new FrameLayout
                {
                    Height = Application.GetRealHeight(60),
                    BackgroundColor = ZigbeeColor.Current.LogicBlankBackgroundColor,
                };
                middle.AddChidren(row);
                var relationship = new Button
                {
                    Width = Application.GetRealWidth(600),
                    Height = Application.GetRealHeight(60),
                    TextAlignment = TextAlignment.CenterLeft,
                    X = Application.GetRealWidth(58),
                    TextColor = ZigbeeColor.Current.LogicBtnCompleteColor,
                };
                row.AddChidren(relationship);
                if (Common.Logic.CurrentLogic.Relationship == 0)
                {
                    relationship.Text = Language.StringByID(MyInternationalizationString.followingconditions) + Language.StringByID(MyInternationalizationString.Allconditions);
                }
                else
                {
                    relationship.Text = Language.StringByID(MyInternationalizationString.followingconditions) + Language.StringByID(MyInternationalizationString.anycondition);
                }
                EventHandler<MouseEventArgs> editclick = (sender, e) =>
                {
                    ConditionView(true);
                };
                row.MouseUpEventHandler += editclick;
                relationship.MouseUpEventHandler += editclick;
            }
            for (int i = 0; i < ListConditions.Count; i++)
            {
                if (i == (ListConditions.Count - 1))
@@ -272,24 +232,19 @@
                        Width = Application.GetRealWidth(300),
                        Y = Application.GetRealHeight(45 + 30),
                        TextColor = ZigbeeColor.Current.LogicBlankBackgroundColor,
                        TextID = MyInternationalizationString.addconditions,
                        TextID = MyInternationalizationString.selectunlockingmode,
                        X = Application.GetRealWidth(390),
                    };
                    addfl.AddChidren(addtextbtn);
                    EventHandler<MouseEventArgs> addconditionsclick = (sender, e) =>
                    {
                        if (Common.Logic.CurrentLogic.Conditions.Count == 1)
                        {
                            ConditionView(false);
                        }
                        else
                        {
                            var addCondition = new AddCondition();
                            UserView.HomePage.Instance.AddChidren(addCondition);
                            UserView.HomePage.Instance.PageIndex += 1;
                            addCondition.Show();
                        }
                        var addCondition = new AddCondition();
                        ///记录索引
                        addCondition.conditionsIndex = -1;
                        UserView.HomePage.Instance.AddChidren(addCondition);
                        UserView.HomePage.Instance.PageIndex += 1;
                        addCondition.Show();
                    };
                    addbtn.MouseUpEventHandler += addconditionsclick;
                    addtextbtn.MouseUpEventHandler += addconditionsclick;
@@ -368,26 +323,17 @@
                                    BackgroundColor = ZigbeeColor.Current.LogicEditBlackColor1,
                                    Text = Language.StringByID(MyInternationalizationString.edit),
                                    TextColor = ZigbeeColor.Current.LogicBtnSaveTextColor,
                                    Tag=i,
                                };
                                conditionsRowLayout.AddRightView(deviceedit);
                                deviceedit.MouseUpEventHandler += (sender, e) =>
                                {
                                    if (deviceinof.Type != DeviceType.DoorLock)
                                    {
                                        var flMain = new FrameLayout { BackgroundColor = ZigbeeColor.Current.LogicViewBackgroundColor };
                                        this.AddChidren(flMain);
                                      //  DeviceStateCondition.CurrentDeviceView(flMain, deviceinof, true);
                                    }
                                    else
                                    {
                                        //var memberList = new MemberList();
                                        //UserView.HomePage.Instance.AddChidren(memberList);
                                        //UserView.HomePage.Instance.PageIndex += 1;
                                        //MemberList.edit = true;
                                        //memberList.Show(deviceinof);
                                    }
                                    var addCondition = new AddCondition();
                                    ///记录索引
                                    addCondition.conditionsIndex = int.Parse(deviceedit.Tag.ToString());
                                    UserView.HomePage.Instance.AddChidren(addCondition);
                                    UserView.HomePage.Instance.PageIndex += 1;
                                    addCondition.Show();
                                };
                                ///显示设备条件状态控件
@@ -404,31 +350,48 @@
                                switch (deviceinof.Type)
                                {
                                    case DeviceType.DoorLock:
                                        {
                                            for (int a = 0; a < Common.Logic.CurrentLogic.Accounts.Count; a++)
                                            {
                                                if (Common.Logic.CurrentLogic.Accounts[a]["Type"] == "1")
                                                {
                                                    if (Common.Logic.CurrentLogic.Accounts[a]["UserId"] == conditions["AttriButeData2"])
                                                    {
                                                        devicestatus.Text = conditions["Account"];
                                                        break;
                                            conditionIcon.UnSelectedImagePath = "ZigeeLogic/doorlock.png";
                                            //for (int a = 0; a < Common.Logic.CurrentLogic.Accounts.Count; a++)
                                            //{
                                            //    if (Common.Logic.CurrentLogic.Accounts[a]["Type"] == "1")
                                            //    {
                                            //        if (Common.Logic.CurrentLogic.Accounts[a]["UserId"] == conditions["AttriButeData2"])
                                            //        {
                                            //            devicestatus.Text = conditions["Account"];
                                            //            break;
                                            //        }
                                            //    }
                                            //}
                                            //(0按键/3卡/15指纹)
                                            switch (conditions["AttriButeId"])
                                            {
                                                case "0":
                                                    {
                                                        devicestatus.Text = Language.StringByID(MyInternationalizationString.lockpassword);
                                                    }
                                                }
                                                    break;
                                                case "3":
                                                    {
                                                        devicestatus.Text = Language.StringByID(MyInternationalizationString.ic);
                                                    }
                                                    break;
                                                case "15":
                                                    {
                                                        devicestatus.Text = Language.StringByID(MyInternationalizationString.fingerprint);
                                                    }
                                                    break;
                                            }
                                        }
                                        break;
                                }
                            }
                            break;
                    }
                    ///删除控件
                    var del = new Button
@@ -450,7 +413,7 @@
                                var lockLogicCommunalPage = new LockLogicCommunalPage();
                                UserView.HomePage.Instance.AddChidren(lockLogicCommunalPage);
                                UserView.HomePage.Instance.PageIndex += 1;
                                lockLogicCommunalPage.Show(()=> { });
                                lockLogicCommunalPage.Show(() => { });
                            }
                        };
                        alert.Show();
@@ -519,7 +482,7 @@
            EventHandler<MouseEventArgs> btntargetaddclick = (sender, e) =>
            {
                Common.Logic.CurrentLogic.LogicName = logicTextBox.Text.Trim();
                var addAction = new Device.Logic.DoorLockLogic.AddAction();
                var addAction = new AddAction();
                UserView.HomePage.Instance.AddChidren(addAction);
                UserView.HomePage.Instance.PageIndex += 1;
                addAction.Show();
@@ -560,14 +523,14 @@
                        Width = Application.GetRealWidth(300),
                        Y = Application.GetRealHeight(45 + 30),
                        TextColor = ZigbeeColor.Current.LogicBlankBackgroundColor,
                        TextID = MyInternationalizationString.addfunction,
                        TextID = MyInternationalizationString.lockaddaction,
                        X = Application.GetRealWidth(390),
                    };
                    addfl.AddChidren(addtextbtn);
                    EventHandler<MouseEventArgs> addfunctionclick = (sender, e) =>
                    {
                        Common.Logic.CurrentLogic.LogicName = logicTextBox.Text.Trim();
                        var addAction = new Device.Logic.DoorLockLogic.AddAction();
                        var addAction = new AddAction();
                        UserView.HomePage.Instance.AddChidren(addAction);
                        UserView.HomePage.Instance.PageIndex += 1;
                        addAction.Show();
@@ -672,16 +635,10 @@
                                ///编辑点击事件
                                deviceedit.MouseUpEventHandler += (sender, e) =>
                                {
                                    //var deviceStatePage = new DeviceStatePage();
                                    //UserView.HomePage.Instance.AddChidren(deviceStatePage);
                                    //UserView.HomePage.Instance.PageIndex += 1;
                                    //deviceStatePage.IsDeviceEditor = true;
                                    //deviceStatePage.Show(deviceinof);
                                    //ActionModifyDeviceStateView(deviceinof);
                                    var flMain = new FrameLayout { BackgroundColor = ZigbeeColor.Current.LogicViewBackgroundColor };
                                    this.AddChidren(flMain);
                                    //LogicDevicePage.CurrentDeviceStateView(flMain, deviceinof, true);
                                    LockAddDevice.CurrentDeviceStateView(flMain, deviceinof, true);
                                };
@@ -976,7 +933,7 @@
                            }
                            break;
                    }
                    ///删除控件
                    var del = new Button
@@ -995,11 +952,7 @@
                            if (e1)
                            {
                                Common.Logic.CurrentLogic.Actions.Remove(actions);
                                //var logicCommunalPage = new LogicCommunalPage();
                                //UserView.HomePage.Instance.AddChidren(logicCommunalPage);
                                //UserView.HomePage.Instance.PageIndex += 1;
                                //logicCommunalPage.Show(() => { });
                            }
                                                          }
                        };
                        alert.Show();
@@ -1110,7 +1063,7 @@
            custompushRowLayout.AddChidren(custompushback);
            EventHandler<MouseEventArgs> customclick = (sender, e) =>
            {
                var CustomText = new Device.Logic.CustomText();
                var CustomText = new CustomText();
                UserView.HomePage.Instance.AddChidren(CustomText);
                UserView.HomePage.Instance.PageIndex += 1;
                CustomText.Show();
@@ -1145,16 +1098,12 @@
            btnsave.MouseUpEventHandler += async (sender, e) =>
            {
                var name = logicTextBox.Text.Trim();
                //if (Common.Logic.CurrentLogic.Conditions.Count != 0 && Common.Logic.CurrentLogic.Actions.Count != 0)
                //{
                //    AddChidren(btnsave);
                //}
                if (string.IsNullOrEmpty(logicTextBox.Text.Trim()))
                {
                    new Alert(Language.StringByID(MyInternationalizationString.Tip), Language.StringByID(MyInternationalizationString.PleaseEnterLogicName), Language.StringByID(MyInternationalizationString.Close)).Show();
                    return;
                }
                var logicname = Common.Logic.LogicList.Find((logic) => Common.Logic.CurrentLogic.LogicId != logic.LogicId && logic.LogicName == name);
                var logicname = Common.Logic.LockLogicList.Find((logic) => Common.Logic.CurrentLogic.LogicId != logic.LogicId && logic.LogicName == name);
                if (logicname != null)
                {
                    new Alert(Language.StringByID(MyInternationalizationString.Tip), Language.StringByID(MyInternationalizationString.Rename), Language.StringByID(MyInternationalizationString.Close)).Show();
@@ -1168,265 +1117,26 @@
                if (Common.Logic.CurrentLogic.LogicId == 0)
                {
                    //发送添加逻辑命令
                    var logicifon = await Device.Logic.Send.AddModifyLogic(Common.Logic.CurrentLogic);
                    var logicifon = await Send.AddModifyLogic(Common.Logic.CurrentLogic);
                    if (logicifon != null && logicifon.LogicId != 0)
                    {
                        Common.Logic.CurrentLogic.LogicId = logicifon.LogicId;
                        Common.Logic.LogicList.Add(Common.Logic.CurrentLogic);
                        Common.Logic.LockLogicList.Add(Common.Logic.CurrentLogic);
                    }
                }
                else
                {
                    //发送修改逻辑命令
                    Device.Logic.Send.AddModifyLogic(Common.Logic.CurrentLogic);
                    Send.AddModifyLogic(Common.Logic.CurrentLogic);
                }
                CommonPage.Loading.Hide();
                //UserView.HomePage.Instance.RemoveViewByTag("Logic");
                //Category.Category.instance?.RefreshBodyView();
                //UserView.HomePage.Instance.RemoveAt("Logic1");
                //Category.Category category = new Category.Category();
                //UserView.HomePage.Instance.AddChidren(category);
                //UserView.HomePage.Instance.PageIndex += 1;
                //category.Show(2);
            };
        }
        void ConditionView(bool edit)
        {
            Common.Logic.CurrentLogic.LogicName = logicTextBox.Text.Trim();
            #region 组合条件View
            FrameLayout flMain = new FrameLayout { BackgroundColor = 0x50000000 };
            this.AddChidren(flMain);
            flMain.MouseUpEventHandler += (sender2, e2) =>
            {
                flMain.RemoveFromParent();
            };
            var timetypeframelayout1 = new FrameLayout
            {
                Width = Application.GetRealWidth(1080),
                Height = Application.GetRealHeight(100),
                Y = Application.GetRealHeight(1920 - 100),
                BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
            };
            flMain.AddChidren(timetypeframelayout1);
            var framelayout = new FrameLayout
            {
                Width = Application.GetRealWidth(1080),
                Height = Application.GetRealHeight(530),
                Y = Application.GetRealHeight(1920 - 530),
                BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
                Radius = (uint)Application.GetRealHeight(60),
            };
            flMain.AddChidren(framelayout);
            #region  -------取消   完成
            var timetype = new RowLayout
            {
                Height = Application.GetRealHeight(140),
                LineColor = ZigbeeColor.Current.LogicRowLayoutLineColor,
            };
            framelayout.AddChidren(timetype);
            var Btncancel = new Button
            {
                TextID = MyInternationalizationString.cancel,
                TextColor = ZigbeeColor.Current.LogicBtnCancelColor,
                Height = Application.GetRealHeight(140),
                Width = Application.GetRealWidth(200),
                X = Application.GetRealWidth(80),
                TextAlignment = TextAlignment.CenterLeft,
            };
            timetype.AddChidren(Btncancel);
            Btncancel.MouseUpEventHandler += (sender16, e16) =>
            {
                flMain.RemoveFromParent();
                UserView.HomePage.Instance.ScrollEnabled = true;
            };
            var Btntitle = new Button
            {
                TextID = MyInternationalizationString.condition,
                TextColor = ZigbeeColor.Current.LogicBtnTypeColor,
                Height = Application.GetRealHeight(140),
                Width = Application.GetRealWidth(320),
                TextAlignment = TextAlignment.Center,
                X = Btncancel.Right + Application.GetRealWidth(100),
                TextSize = 16,
            };
            timetype.AddChidren(Btntitle);
            var Btncomplete = new Button
            {
                TextID = MyInternationalizationString.complete,
                TextColor = ZigbeeColor.Current.LogicBtnCompleteColor,
                Height = Application.GetRealHeight(140),
                Width = Application.GetRealWidth(200),
                TextAlignment = TextAlignment.CenterRight,
                X = Btntitle.Right + Application.GetRealWidth(100),
            };
            timetype.AddChidren(Btncomplete);
            #endregion
            #region  -------满足所有条件   满足其中一个条件
            #region  -------满足所有条件
            var andFrameLayout = new FrameLayout
            {
                Height = Application.GetRealHeight(160),
                Y = timetype.Bottom + Application.GetRealHeight(20),
            };
            framelayout.AddChidren(andFrameLayout);
            var androw = new RowLayout
            {
                Y = Application.GetRealHeight(30),
                Width = Application.GetRealWidth(920),
                Height = Application.GetRealHeight(130),
                X = Application.GetRealWidth(80),
                LineColor = ZigbeeColor.Current.LogicRowLayoutLineColor,
            };
            andFrameLayout.AddChidren(androw);
            var andbtn = new Button
            {
                Width = Application.GetRealWidth(600),
                TextID = MyInternationalizationString.Allconditions,
                TextAlignment = TextAlignment.CenterLeft,
                TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor,
            };
            androw.AddChidren(andbtn);
            var andSelected = new Device.Logic.SelectedButton();
            androw.AddChidren(andSelected);
            #endregion
            #region  -------满足其中一个条件
            var orFrameLayout = new FrameLayout
            {
                Height = Application.GetRealHeight(160),
                Y = andFrameLayout.Bottom,
            };
            framelayout.AddChidren(orFrameLayout);
            var orrow = new RowLayout
            {
                Y = Application.GetRealHeight(30),
                Width = Application.GetRealWidth(920),
                Height = Application.GetRealHeight(130),
                X = Application.GetRealWidth(80),
                LineColor = ZigbeeColor.Current.LogicBackgroundColor,
            };
            orFrameLayout.AddChidren(orrow);
            var orbtn = new Button
            {
                Width = Application.GetRealWidth(600),
                TextID = MyInternationalizationString.anycondition,
                TextAlignment = TextAlignment.CenterLeft,
                TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor,
            };
            orrow.AddChidren(orbtn);
            var orSelected = new Device.Logic.SelectedButton();
            orrow.AddChidren(orSelected);
            #endregion
            ///满足所有条件点击事件
            EventHandler<MouseEventArgs> andclick = (sedner14, e14) =>
            {
                andSelected.Visible = true;
                orSelected.Visible = false;
                andbtn.TextColor = ZigbeeColor.Current.LogicBtnSelectedColor;
                orbtn.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor;
            };
            androw.MouseUpEventHandler += andclick;
            andbtn.MouseUpEventHandler += andclick;
            andSelected.MouseUpEventHandler += andclick;
            andFrameLayout.MouseUpEventHandler += andclick;
            ///满足其中一个条件点击事件
            EventHandler<MouseEventArgs> orclick = (sedner15, e15) =>
            {
                andSelected.Visible = false;
                orSelected.Visible = true;
                andbtn.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor;
                orbtn.TextColor = ZigbeeColor.Current.LogicBtnSelectedColor;
            };
            orrow.MouseUpEventHandler += orclick;
            orbtn.MouseUpEventHandler += orclick;
            orSelected.MouseUpEventHandler += orclick;
            orFrameLayout.MouseUpEventHandler += orclick;
            #endregion
            #endregion
            if (edit)
            {
                if (Common.Logic.CurrentLogic.Relationship == 0)
                {
                    andSelected.Visible = true;
                    orSelected.Visible = false;
                    andbtn.TextColor = ZigbeeColor.Current.LogicBtnSelectedColor;
                    orbtn.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor;
                }
                else
                {
                    andSelected.Visible = false;
                    orSelected.Visible = true;
                    andbtn.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor;
                    orbtn.TextColor = ZigbeeColor.Current.LogicBtnSelectedColor;
                }
            }
            Btncomplete.MouseUpEventHandler += (sender, e) =>
            {
                if (!andSelected.Visible && !orSelected.Visible)
                {
                    ///可以提示未选中状态;
                    return;
                }
                flMain.RemoveFromParent();
                if (andSelected.Visible)
                {
                    Common.Logic.CurrentLogic.Relationship = 0;
                }
                if (orSelected.Visible)
                {
                    Common.Logic.CurrentLogic.Relationship = 1;
                }
                if (edit)
                {
                    if (Common.Logic.CurrentLogic.LogicId != 0)
                    {
                        Device.Logic.Send.LogicControlSwitch(Common.Logic.CurrentLogic);
                    }
                    var addCondition = new AddCondition();
                    UserView.HomePage.Instance.AddChidren(addCondition);
                    UserView.HomePage.Instance.PageIndex += 1;
                    addCondition.Show();
                }
                else
                {
                    var addCondition = new AddCondition();
                    UserView.HomePage.Instance.AddChidren(addCondition);
                    UserView.HomePage.Instance.PageIndex += 1;
                    addCondition.Show();
                }
                UserView.HomePage.Instance.RemoveViewByTag("LockLogic");
                UserView.HomePage.Instance.RemoveViewByTag("LockLogicList");
                var doorLockLogicList = new LockLogicList();
                UserView.HomePage.Instance.AddChidren(doorLockLogicList);
                UserView.HomePage.Instance.PageIndex += 1;
                doorLockLogicList.Show();
            };
        }