From ff3cfcf62632bf43e51a6b6098c203bf0f5cddbc Mon Sep 17 00:00:00 2001
From: gxc <guoxuecheng@guoxuechengdeMacBook-Pro.local>
Date: 星期二, 24 十二月 2019 19:53:29 +0800
Subject: [PATCH] 2019.12.24

---
 ZigbeeApp/Shared/Phone/UserCenter/DoorLock/FunctionSetting.cs |  349 +++++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 251 insertions(+), 98 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/FunctionSetting.cs b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/FunctionSetting.cs
index c3cd244..0fbe09b 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/FunctionSetting.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/FunctionSetting.cs
@@ -1,4 +1,5 @@
 锘縰sing System;
+using System.Collections.Generic;
 using Shared.Common;
 using ZigBee.Device;
 
@@ -19,6 +20,27 @@
 
         #region 鈼� 鍙橀噺鐢虫槑__________________________
         ZigBee.Device.DoorLock doorLock;
+        /// <summary>
+        /// 璁惧闇�瑕佷繚瀛樼殑璁惧鍚嶅瓧
+        /// </summary>
+        private Dictionary<int, string> dicDeviceSaveName = new Dictionary<int, string>();
+        /// <summary>
+        /// 褰撳墠閫夋嫨鐨勮澶�
+        /// </summary>
+        private CommonDevice nowSelectDevice = null;
+        /// <summary>
+        /// 璁惧澶囨敞鐨勬帶浠�
+        /// </summary>
+        private FrameCaptionInputControl btnDeviceName = null;
+        /// <summary>
+        /// 璁惧鐨勬煇涓�鍥炶矾
+        /// </summary>
+        private CommonDevice deviceObj = null;
+        Action action;
+        Action actionNone;
+        string modifyDeviceName = "";
+        bool IsModifyName = true;
+        public Action<string> devicNameAction;
         #endregion
 
         /// <summary>
@@ -26,7 +48,7 @@
         /// </summary>
         public void Show()
         {
-            this.TopFrameLayout(this, Language.StringByID(R.MyInternationalizationString.FunctionSetting));
+            this.TopFrameLayout(this, Language.StringByID(R.MyInternationalizationString.DoorLockFunctionSetting));
 
             EventHandler<MouseEventArgs> eHandlerBack = (sender, e) =>
             {
@@ -42,7 +64,6 @@
 
         public void MidFrameLayoutContent()
         {
-
             var MidTopFrameLayout = new FrameLayout()
             {
                 X = Application.GetRealWidth(449),
@@ -77,7 +98,7 @@
 
             var bottomFrameLayout2 = new FrameLayout()
             {
-                Height = Application.GetRealHeight(1319),
+                Height = Application.GetRealHeight(1000),
                 Y = Application.GetRealHeight(418),
             };
             this.midFrameLayout.AddChidren(bottomFrameLayout2);
@@ -90,22 +111,28 @@
                 Text = Language.StringByID(R.MyInternationalizationString.InformationEdit),
                 TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
                 TextAlignment = TextAlignment.CenterLeft,
-                TextSize = 12,
+                TextSize = 15,
             };
             bottomFrameLayout2.AddChidren(informationEdit);
 
-            for (int i = 0; i < 7; i++)
+            for (int i = 0; i < 6; i++)
             {
+                var bottomRowLayout = new FrameLayout()
+                {
+                    Height = Application.GetRealHeight(58),
+                };
+                bottomFrameLayout2.AddChidren(bottomRowLayout);
+
                 var btnName = new Button()
                 {
                     Width = Application.GetRealWidth(233),
                     Height = Application.GetRealHeight(58),
                     X = Application.GetRealWidth(58),
-                    TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
+                    TextColor = Shared.Common.ZigbeeColor.Current.XMTopTitleText,
                     TextAlignment = TextAlignment.CenterLeft,
-                    TextSize = 12,
+                    TextSize = 14,
                 };
-                bottomFrameLayout2.AddChidren(btnName);
+                bottomRowLayout.AddChidren(btnName);
 
                 var btnNextFrameLayout = new FrameLayout()
                 {
@@ -113,19 +140,20 @@
                     Height = Application.GetRealHeight(58),
                     X = Application.GetRealWidth(861 + 58),
                 };
-                bottomFrameLayout2.AddChidren(btnNextFrameLayout);
+                bottomRowLayout.AddChidren(btnNextFrameLayout);
 
                 var btnNext = new Button()
                 {
-                    Width = Application.GetRealWidth(60),
-                    Height = Application.GetRealHeight(60),
+                    Width = Application.GetRealWidth(58),
+                    Height = Application.GetRealHeight(58),
+                    X = Application.GetRealWidth(46)
                 };
                 btnNextFrameLayout.AddChidren(btnNext);
 
                 var btnLine = new FrameLayout()
                 {
                     Width = Application.GetRealWidth(965),
-                    Height = Application.GetRealHeight(5),
+                    Height = 1,
                     X = Application.GetRealWidth(58),
                     BackgroundColor = Shared.Common.ZigbeeColor.Current.XMRowLine,
                     Visible = false,
@@ -134,76 +162,116 @@
 
                 if (i == 0)
                 {
-                    btnName.Y = Application.GetRealHeight(204);
-                    btnName.Text = Language.StringByID(R.MyInternationalizationString.DeviceName) + ":";
+                    bottomRowLayout.Y = Application.GetRealHeight(220);
+                    btnName.Text = Language.StringByID(R.MyInternationalizationString.DeviceRemarkXm);
                     btnNextFrameLayout.Width = btnNext.Width = Application.GetRealWidth(789 - 58);
-                    btnNextFrameLayout.Y = btnName.Y;
-                    btnNextFrameLayout.X = btnName.Right;
-                    btnNext.TextAlignment = TextAlignment.CenterLeft;
-                    btnNext.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
-                    btnNext.Text = "鏅鸿兘闂ㄩ攣";
+                    btnNextFrameLayout.X = Application.GetRealWidth(233);
+                    btnNext.Text = doorLock.DeviceName;
+                    var btnDeviceNameEditText = new EditText()
+                    {
+                        X = Application.GetRealWidth(46),
+                        Width = Application.GetRealWidth(731),
+                        Height = Application.GetRealHeight(58),
+                        TextColor = ZigbeeColor.Current.XMGray3,
+                        PlaceholderTextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor2,
+                        TextAlignment = TextAlignment.CenterLeft,
+                        Text = string.IsNullOrEmpty(doorLock.DeviceName) ? Language.StringByID(R.MyInternationalizationString.UNKnown) : doorLock.DeviceName,
+                    };
+                    btnNextFrameLayout.AddChidren(btnDeviceNameEditText);
+
+                    btnDeviceNameEditText.TextChangeEventHandler += (sender, e) =>
+                    {
+                        modifyDeviceName = btnDeviceNameEditText.Text;
+                    };
+                    Action<Shared.View> actionEdit = async (obj) =>
+                     {
+                         try
+                         {
+                             Application.RunOnMainThread(() => { CommonPage.Loading.Start("Loading..."); });
+                             var doorLockDeviceList = new List<CommonDevice> { };
+                             doorLockDeviceList.Add(doorLock);
+                             var result = await Common.LocalDevice.Current.ReMacName(doorLockDeviceList, btnDeviceNameEditText.Text);
+                             if (result)
+                             {
+                                 IsModifyName = false;
+                             }
+                             else
+                             {
+                                 IsModifyName = true;
+                             }
+                         }
+                         catch { }
+                         finally
+                         {
+                             Application.RunOnMainThread(() =>
+                             {
+                                 CommonPage.Loading.Hide();
+                             });
+                         }
+                     };
+                    btnDeviceNameEditText.EditorEnterAction += actionEdit;
+
                     btnLine.Visible = true;
-                    btnLine.Y = Application.GetRealHeight(308);
+                    btnLine.Y = Application.GetRealHeight(303);
+
                 }
                 else if (i == 1)
                 {
-                    btnName.Y = Application.GetRealHeight(343);
-                    btnName.Text = Language.StringByID(R.MyInternationalizationString.BelongZone) + ":";
-                    var btnArea = new Button()
+                    bottomRowLayout.Y = Application.GetRealHeight(312);
+                    bottomRowLayout.Height = Application.GetRealHeight(127);
+                    btnName.Width = Application.GetRealWidth(0);
+                    btnNextFrameLayout.Width = Application.GetRealWidth(0);
+                    //鎵�灞炲尯鍩�
+                    var rowBeloneArea = new BelongAreaControl(0);
+                    bottomRowLayout.AddChidren(rowBeloneArea);
+
+                    rowBeloneArea.InitControl(Language.StringByID(R.MyInternationalizationString.uBelongArea), doorLock);
+                    //搴曠嚎
+                    rowBeloneArea.AddBottomLine();
+                    rowBeloneArea.SelectRoomEvent += (roomKeys) =>
                     {
-                        Width = Application.GetRealWidth(789 - 109 - 58),
-                        Height = Application.GetRealHeight(58),
-                        X = btnName.Right,
-                        Y = btnName.Y,
-                        TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
-                        Text = "涓�妤硷紝瀹㈠巺",
-                        TextAlignment = TextAlignment.CenterLeft,
+                        //鍙樻洿鎴块棿
+                        Common.Room.CurrentRoom.ChangedRoom(doorLock, roomKeys);
                     };
-                    bottomFrameLayout2.AddChidren(btnArea);
-                    btnNextFrameLayout.Y = btnName.Y;
-                    btnNext.UnSelectedImagePath = "DoorLock/RightIcon.png";
-                    btnLine.Visible = true;
-                    btnLine.Y = Application.GetRealHeight(446);
+                    btnLine.Visible = false;
                 }
                 else if (i == 2)
                 {
-                    btnName.Y = Application.GetRealHeight(481);
+                    bottomRowLayout.Y = Application.GetRealHeight(481);
                     btnName.Text = Language.StringByID(R.MyInternationalizationString.BelongModel) + ":";
                     btnNextFrameLayout.Width = btnNext.Width = Application.GetRealWidth(789 - 58);
-                    btnNextFrameLayout.Y = btnName.Y;
-                    btnNextFrameLayout.X = btnName.Right;
+                    btnNextFrameLayout.X = Application.GetRealWidth(233);
 
                     btnNext.TextAlignment = TextAlignment.CenterLeft;
                     btnNext.Height = Application.GetRealHeight(58);
-                    btnNext.Text = "HDL-Doorlock";
-                    btnNext.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
+                    btnNext.Text = doorLock.DeviceName;
+                    btnNext.TextColor = Shared.Common.ZigbeeColor.Current.XMGray3;
 
                     btnLine.Visible = true;
-                    btnLine.Y = Application.GetRealHeight(1025 - 449);
+                    btnLine.Y = Application.GetRealHeight(575);
                 }
                 else if (i == 3)
                 {
-                    btnName.Y = Application.GetRealHeight(585 + 35);
+                    bottomRowLayout.Y = Application.GetRealHeight(585 + 35);
                     btnName.Text = Language.StringByID(R.MyInternationalizationString.TemporaryPassword);
 
-                    btnNextFrameLayout.Y = btnName.Y;
                     btnNext.UnSelectedImagePath = "DoorLock/RightIcon.png";
 
                     btnLine.Visible = true;
-                    btnLine.Y = Application.GetRealHeight(619 + 58 + 35);
+                    btnLine.Y = Application.GetRealHeight(714);
                 }
                 else if (i == 4)
                 {
-                    btnName.Y = Application.GetRealHeight(723 + 35);
+                    bottomRowLayout.Y = Application.GetRealHeight(723 + 35);
+                    btnNext.X = Application.GetRealWidth(0);
                     btnName.Text = Language.StringByID(R.MyInternationalizationString.RemotelyUnlock);
-                    btnNextFrameLayout.Y = btnName.Y;
                     btnNext.Width = Application.GetRealWidth(104);
                     btnNext.Height = Application.GetRealHeight(63);
                     btnNext.UnSelectedImagePath = "DoorLock/Switch.png";
                     btnNext.SelectedImagePath = "DoorLock/SwitchOn.png";
                     btnLine.Visible = true;
-                    btnLine.Y = Application.GetRealHeight(723 + 127);
-                    if (ZigBee.Device.DoorLock.RemoteUnlockPassword == "")
+                    btnLine.Y = Application.GetRealHeight(853);
+                    if (doorLock.RemoteUnlockPassword == "")
                     {
                         btnNext.IsSelected = false;
                     }
@@ -214,66 +282,151 @@
                 }
                 else if (i == 5)
                 {
-                    btnName.Y = Application.GetRealHeight(861 + 35);
+                    bottomRowLayout.Y = Application.GetRealHeight(861 + 35);
                     btnName.Text = Language.StringByID(R.MyInternationalizationString.DoorLockTime);
                     btnNextFrameLayout.Y = btnName.Y;
                     btnNext.UnSelectedImagePath = "DoorLock/RightIcon.png";
-                    btnLine.Visible = true;
-                    btnLine.Y = Application.GetRealHeight(861 + 127);
-                }
-                else if (i == 6)
-                {
-                    btnName.Y = Application.GetRealHeight(999 + 35);
-                    btnName.Text = Language.StringByID(R.MyInternationalizationString.Shared);
-                    btnNextFrameLayout.Y = btnName.Y;
-                    btnNext.UnSelectedImagePath = "DoorLock/RightIcon.png";
-                    btnLine.Visible = true;
-                    btnLine.Y = Application.GetRealHeight(999 + 127);
+                    btnLine.Visible = false;
+                    btnLine.Y = Application.GetRealHeight(992);
                 }
                 int currentIndex = i;
-                EventHandler<MouseEventArgs> eHandler = (sender, e) =>
-                {
-                    if (currentIndex == 1)
-                    {
-                    }
-                    else if (currentIndex == 3)
-                    {
-                        var temporaryPassword = new Shared.Phone.UserCenter.DoorLock.TemporaryPassword(doorLock);
-                        Shared.Phone.UserView.HomePage.Instance.AddChidren(temporaryPassword);
-                        Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
-                        temporaryPassword.Show();
-                    }
-                    else if (currentIndex == 4)
-                    {
-                        btnNext.IsSelected = !btnNext.IsSelected;
-                        if (btnNext.IsSelected)
-                        {
-                            if (ZigBee.Device.DoorLock.RemoteUnlockPassword == "")
-                            {
-                                RemotePasswordDialog(doorLock, btnNext);
-                            }
-                        }
-                        else
-                        {
-                            ZigBee.Device.DoorLock.RemoteUnlockPassword = "";
-                        }
-                    }
-                    else if (currentIndex == 5)
-                    {
-                        var tempPage = new Shared.Phone.UserCenter.DoorLock.TimeSettignPage(doorLock, "DoorLockTime");
-                        Shared.Phone.UserView.HomePage.Instance.AddChidren(tempPage);
-                        Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
-                        tempPage.Show();
-                    }
-                    else if (currentIndex == 6)
-                    {
-                    }
-                };
+                EventHandler<MouseEventArgs> eHandler = async (sender, e) =>
+                 {
+                     if (currentIndex == 3)
+                     {
+                         action = async () =>
+                         {
+                             var temporaryPassword = new Shared.Phone.UserCenter.DoorLock.TemporaryPassword(doorLock);
+                             Shared.Phone.UserView.HomePage.Instance.AddChidren(temporaryPassword);
+                             Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
+                             temporaryPassword.Show();
+                         };
+                         actionNone = async () =>
+                         {
+                             Shared.Phone.UserCenter.DoorLock.DoorLockCommonLayout.SecurityRequest(doorLock, action);
+                         };
+                         HdlCheckLogic.Current.CheckSecondarySecurity(action, actionNone);
+                     }
+                     else if (currentIndex == 4)
+                     {
+                         if (UserCenterResourse.UserInfo.AuthorityNo != 1)
+                         {
+                             var result = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockOperateAccess(doorLock, Shared.Common.Config.Instance.Guid);
+                             if (result == false)
+                             {
+                                 var result1 = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockUnlockAccess(doorLock, Shared.Common.Config.Instance.Guid);
+                                 if (result1 == true)
+                                 {
+                                     btnNext.IsSelected = !btnNext.IsSelected;
+                                     if (btnNext.IsSelected)
+                                     {
+                                         if (doorLock.RemoteUnlockPassword == "")
+                                         {
+                                             RemotePasswordDialog(doorLock, btnNext);
+                                         }
+                                     }
+                                     else
+                                     {
+                                         doorLock.RemoteUnlockPassword = "";
+                                     }
+                                 }
+                                 else
+                                 {
+                                     new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.NoAccess), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
+                                 }
+                             }
+                             else
+                             {
+                                 new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.AccountIsFreezed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
+                             }
+                         }
+                         else
+                         {
+                             btnNext.IsSelected = !btnNext.IsSelected;
+                             if (btnNext.IsSelected)
+                             {
+                                 if (doorLock.RemoteUnlockPassword == "")
+                                 {
+                                     RemotePasswordDialog(doorLock, btnNext);
+                                 }
+                             }
+                             else
+                             {
+                                 doorLock.RemoteUnlockPassword = "";
+                             }
+                         }
+                     }
+                     else if (currentIndex == 5)
+                     {
+                         var result = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockOperateAccess(doorLock, Shared.Common.Config.Instance.Guid);
+                         if (result == false)
+                         {
+                             var tempPage = new Shared.Phone.UserCenter.DoorLock.TimeSettignPage(doorLock, "DoorLockTime");
+                             Shared.Phone.UserView.HomePage.Instance.AddChidren(tempPage);
+                             Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
+                             tempPage.Show();
+                         }
+                         else
+                         {
+                             new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.AccountIsFreezed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
+                         }
+                     }
+                 };
+                bottomRowLayout.MouseDownEventHandler += eHandler;
                 btnNext.MouseDownEventHandler += eHandler;
                 btnName.MouseDownEventHandler += eHandler;
                 btnNextFrameLayout.MouseDownEventHandler += eHandler;
                 #endregion
             }
+
+            //淇濆瓨
+            var btnFinifh = new Button()
+            {
+                Width = Application.GetRealWidth(907),
+                Height = Application.GetRealHeight(127),
+                Y = Application.GetRealHeight(1472),
+                Gravity = Gravity.CenterHorizontal,
+                Radius = (uint)Application.GetRealHeight(127) / 2,
+                TextID = R.MyInternationalizationString.Save,
+                BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack,
+                TextColor = Shared.Common.ZigbeeColor.Current.XMWhite,
+                TextSize = 16,
+            };
+            this.midFrameLayout.AddChidren(btnFinifh);
+            btnFinifh.MouseUpEventHandler += (sender, e) =>
+            {
+                System.Threading.Tasks.Task.Run(async () =>
+                {
+                    Application.RunOnMainThread(() => { CommonPage.Loading.Start("Loading..."); });
+                    try
+                    {
+                        if (IsModifyName)
+                        {
+                            var doorLockDeviceList = new List<CommonDevice> { };
+                            doorLockDeviceList.Add(doorLock);
+                            var result = await Common.LocalDevice.Current.ReMacName(doorLockDeviceList, modifyDeviceName);
+                            if (result)
+                            {
+                                if (devicNameAction != null)
+                                {
+                                    devicNameAction(modifyDeviceName);
+                                }
+                            }
+                        }
+                    }
+                    catch (Exception ex)
+                    {
+                        var mess = ex.Message;
+                    }
+                    finally
+                    {
+                        Application.RunOnMainThread(() =>
+                        {
+                            CommonPage.Loading.Hide();
+                        });
+                    }
+                });
+            };
         }
 
         #region 鈼� 鎺ュ彛瀹炵幇__________________________

--
Gitblit v1.8.0