From 9f326f4000847e6167d8166fa2f6a66f53cb3734 Mon Sep 17 00:00:00 2001
From: 黄学彪 <hxb@hdlchina.com.cn>
Date: 星期四, 17 十二月 2020 09:07:13 +0800
Subject: [PATCH] 新云端Ver1.3

---
 ZigbeeApp/Shared/Phone/Device/Logic/Method.cs |  347 +++++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 246 insertions(+), 101 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/Device/Logic/Method.cs b/ZigbeeApp/Shared/Phone/Device/Logic/Method.cs
index 12f8acd..34bcb47 100755
--- a/ZigbeeApp/Shared/Phone/Device/Logic/Method.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Logic/Method.cs
@@ -21,7 +21,7 @@
         /// <param name="device">Device.</param>
         public static void RoomNmae(Button button, CommonDevice device)
         {
-            button.Text = UserCenter.HdlRoomLogic.Current.GetRoomNameByDevice(device);
+            button.Text = HdlRoomLogic.Current.GetRoomNameByDevice(device);
         }
         /// <summary>
         /// 杩斿洖妤煎眰鎵�鏈夌殑鎴块棿鐨勫垪琛�
@@ -32,7 +32,7 @@
         public static List<Common.Room> GetRoomList(string type, string floorId = null)
         {
             var list = new List<Common.Room>();
-            var listAllRoom = UserCenter.HdlRoomLogic.Current.GetAllListRooms();
+            var listAllRoom = HdlRoomLogic.Current.GetAllListRooms();
             for (int i = 0; i < listAllRoom.Count; i++)
             {
                 if (type == "action_logicscene" || type == "action_lockscene")
@@ -46,7 +46,7 @@
                 {
                     ///鍖哄垎鍑鸿緭鍏ユ潯浠跺拰杈撳嚭鐩爣璁惧
                     var listdevicetype = GetDevice(type);
-                    var listdevice = GetDeviceUIList(listAllRoom[i], listdevicetype);
+                    var listdevice = GetDeviceUIList(listAllRoom[i], listdevicetype, type);
                     if (listdevice.Count == 0)
                     {
                         ///杩囨护鎺夋病鏈夎澶囩殑鎴块棿
@@ -68,13 +68,14 @@
         /// </summary>
         /// <param name="room">褰撳墠鎴块棿</param>
         /// <param name="deviceTypelist">璁惧绫诲瀷</param>
+        ///  /// <param name="type">閫昏緫绫诲瀷</param>
         /// <returns></returns>
-        public static List<CommonDevice> GetDeviceUIList(Common.Room room, List<DeviceType> deviceTypelist)
+        public static List<CommonDevice> GetDeviceUIList(Common.Room room, List<DeviceType> deviceTypelist,string type)
         {
             var deviceUIlist = new List<CommonDevice>();
             foreach (var deviceKey in room.ListDevice)
             {
-                var device = LocalDevice.Current.GetDevice(deviceKey);
+                var device = HdlDeviceCommonLogic.Current.GetDevice(deviceKey);
                 if (device == null)
                 {
                     continue;
@@ -83,15 +84,31 @@
                 {
                     //杩囨护鎺変笉鏀寔鐨勮澶�
                     continue;
-                }
-                if (device.Type == DeviceType.DoorLock)
-                {
-                    var myInfo = LocalDevice.Current.GetMyDeviceEnumInfo(new List<CommonDevice>() { device });
-                    if (myInfo.ConcreteType == DeviceConcreteType.IntelligentLocks_Sone)
-                    {
-                        //鏆傛椂涓嶆敮鎸丼-one闂ㄩ攣;
-                        //杩囨护鎺変笉鏀寔S-one闂ㄩ攣璁惧;
-                        continue;
+                }
+                if (device.Type == DeviceType.DoorLock)
+                {
+                    var myInfo = HdlDeviceCommonLogic.Current.GetMyDeviceEnumInfo(new List<CommonDevice>() { device });
+                    if (myInfo.ConcreteType == DeviceConcreteType.IntelligentLocks_Sone)
+                    {
+                        //鏆傛椂涓嶆敮鎸丼-one闂ㄩ攣;
+                        //杩囨护鎺変笉鏀寔S-one闂ㄩ攣璁惧;
+                        continue;
+                    }
+                }
+                if (type == "condition_mould")
+                {
+                    if (device.Type == DeviceType.IASZone)
+                    {
+                        if (device.IasDeviceType != 13)
+                        {//鑷姩鍖栨ā鏉垮彧鏀寔绾㈠浼犳劅鍣�
+                            continue;
+                        }
+                        if (device.ModelIdentifier == "MSPIRB-ZB.10")
+                        {
+                            //鑷姩鍖栨ā鏉夸笉鏀寔鍏夌収搴�
+                            continue;
+                        }
+
                     }
                 }
                 deviceUIlist.Add(device);
@@ -108,7 +125,7 @@
             List<string> devicetypelist = new List<string>();
             devicetypelist.Clear();
 
-            var lightjosn = devicelist.Find((device) => device.Type == DeviceType.DimmableLight || device.Type == DeviceType.OnOffOutput);
+            var lightjosn = devicelist.Find((device) => device.Type == DeviceType.DimmableLight || device.Type == DeviceType.OnOffOutput || device.Type == DeviceType.ColorTemperatureLight);
             if (lightjosn != null)
             {
                 devicetypelist.Add(Language.StringByID(MyInternationalizationString.Lights));
@@ -166,6 +183,7 @@
             {
                 DeviceTypeList.Add(DeviceType.OnOffOutput);//0x0101鍗佽繘鍒�257
                 DeviceTypeList.Add(DeviceType.DimmableLight);
+                DeviceTypeList.Add(DeviceType.ColorTemperatureLight);
             }
             else if (devicetype == Language.StringByID(MyInternationalizationString.Curtains))
             {
@@ -260,8 +278,17 @@
                         {
                             break;
                         }
-                        patm = $"ZigeeLogic/sensor{iASZonedevice.IasDeviceType}.png";
-                        selectedpatm = $"ZigeeLogic/selectedsensor{iASZonedevice.IasDeviceType}.png";
+
+                        if (device.ModelIdentifier == "MSPIRB-ZB.10")
+                        {
+                            patm = $"ZigeeLogic/sensor541.png";
+                            selectedpatm = $"ZigeeLogic/selectedsensor541.png";
+                        }
+                        else
+                        {
+                            patm = $"ZigeeLogic/sensor{iASZonedevice.IasDeviceType}.png";
+                            selectedpatm = $"ZigeeLogic/selectedsensor{iASZonedevice.IasDeviceType}.png";
+                        }
                     }
                     break;
                 case DeviceType.TemperatureSensor:
@@ -316,6 +343,12 @@
                         selectedpatm = "ZigeeLogic/selectedairswitch.png";
                     }
                     break;
+                case DeviceType.ColorTemperatureLight:
+                    {
+                        patm = "ZigeeLogic/nightLight.png";
+                        selectedpatm = "ZigeeLogic/nightLightSelected.png";
+                    }
+                    break;
             }
             button.UnSelectedImagePath = patm;
             button.SelectedImagePath = selectedpatm;
@@ -350,6 +383,7 @@
                         deviceTypeList.Add(DeviceType.WindowCoveringDevice);
                         deviceTypeList.Add(DeviceType.Thermostat);
                         deviceTypeList.Add(DeviceType.AirSwitch);
+                        deviceTypeList.Add(DeviceType.ColorTemperatureLight);
                         ///闂ㄩ攣鐗规畩
                        // deviceTypeList.Add(DeviceType.DoorLock);
                     }
@@ -372,6 +406,7 @@
                         deviceTypeList.Add(DeviceType.WindowCoveringDevice);
                         deviceTypeList.Add(DeviceType.Thermostat);
                         deviceTypeList.Add(DeviceType.AirSwitch);
+                        deviceTypeList.Add(DeviceType.ColorTemperatureLight);
                         ///闂ㄩ攣鐗规畩
                       // deviceTypeList.Add(DeviceType.DoorLock);
                     }
@@ -559,7 +594,9 @@
                     }; break;
                 case 5:
                     {
-                        string len = "", text = "";
+                        string len = "";
+                         string   text = "";
+                        string weekStr = Language.StringByID(MyInternationalizationString.week1);
                         List<int> listvalueInt = new List<int>();
                         listvalueInt.Clear();
                         var maxvalue = Convert.ToString(currentLogic.TimeAttribute.WeekDay, 2);
@@ -575,44 +612,36 @@
                             if (strvalue == "1")
                             {
                                 listvalueInt.Add(j + 1);
-
-
-                                if ((j + 1) == 1)
-                                {
-                                    text += Language.StringByID(MyInternationalizationString.week1) + Language.StringByID(MyInternationalizationString.mon1) + ",";
-                                    //text += Language.StringByID(MyInternationalizationString.mon) + ",";
+                                switch ((j + 1)) {
+                                    case 1: {
+                                            text += weekStr + Language.StringByID(MyInternationalizationString.mon1) + ",";
+                                        }
+                                        break;
+                                    case 2: {
+                                            text += weekStr + Language.StringByID(MyInternationalizationString.tue1) + ",";
+                                        }
+                                        break;
+                                    case 3: {
+                                            text += weekStr + Language.StringByID(MyInternationalizationString.wed1) + ",";
+                                        }
+                                        break;
+                                    case 4: {
+                                            text += weekStr + Language.StringByID(MyInternationalizationString.thu1) + ",";
+                                        }
+                                        break;
+                                    case 5: {
+                                            text += weekStr + Language.StringByID(MyInternationalizationString.frl1) + ",";
+                                        }
+                                        break;
+                                    case 6: {
+                                            text += weekStr + Language.StringByID(MyInternationalizationString.sat1) + ",";
+                                        }
+                                        break;
+                                    case 7: {
+                                            text += weekStr + Language.StringByID(MyInternationalizationString.sun1) + ",";
+                                        }
+                                        break;
                                 }
-                                else if ((j + 1) == 2)
-                                {
-                                    text += Language.StringByID(MyInternationalizationString.week1) + Language.StringByID(MyInternationalizationString.tue1) + ",";
-                                    //text += Language.StringByID(MyInternationalizationString.tue) + ",";
-                                }
-                                else if ((j + 1) == 3)
-                                {
-                                    text += Language.StringByID(MyInternationalizationString.week1) + Language.StringByID(MyInternationalizationString.wed1) + ",";
-                                    //text += Language.StringByID(MyInternationalizationString.wed) + ",";
-                                }
-                                else if ((j + 1) == 4)
-                                {
-                                    text += Language.StringByID(MyInternationalizationString.week1) + Language.StringByID(MyInternationalizationString.thu1) + ",";
-                                    //text += Language.StringByID(MyInternationalizationString.thu) + ",";
-                                }
-                                else if ((j + 1) == 5)
-                                {
-                                    text += Language.StringByID(MyInternationalizationString.week1) + Language.StringByID(MyInternationalizationString.frl1) + ",";
-                                    //text += Language.StringByID(MyInternationalizationString.frl) + ",";
-                                }
-                                else if ((j + 1) == 6)
-                                {
-                                    text += Language.StringByID(MyInternationalizationString.week1) + Language.StringByID(MyInternationalizationString.sat1) + ",";
-                                    //text += Language.StringByID(MyInternationalizationString.sat) + ",";
-                                }
-                                else if ((j + 1) == 7)
-                                {
-                                    text += Language.StringByID(MyInternationalizationString.week1) + Language.StringByID(MyInternationalizationString.sun1) + ",";
-                                    //text += Language.StringByID(MyInternationalizationString.sun) + ",";
-                                }
-
 
                             }
                         }
@@ -633,8 +662,7 @@
                         //{
                         //    btndisplaycycle.Text = Language.StringByID(MyInternationalizationString.week1) + text.Replace(Language.StringByID(MyInternationalizationString.week1), "").TrimEnd(',');
                         //}
-                        button.Text = Language.StringByID(MyInternationalizationString.week1) + text.Replace(Language.StringByID(MyInternationalizationString.week1), "").TrimEnd(',');
-                        //btndisplaycycle.Text = text.TrimEnd(',');
+                        button.Text = weekStr + text.Replace(weekStr, "").TrimEnd(',');
                     }; break;
             }
 
@@ -702,7 +730,11 @@
                     Common.Logic.CurrentLogic.LogicIsCustomPushText = 0;
                     pushview.lineBtn.BackgroundColor = ZigbeeColor.Current.LogicBlankBackgroundColor;
                 }
-                Send.Zj(LogicView.IfString.Tag, Common.Logic.CurrentLogic);
+                if (!Config.Instance.Home.IsVirtually)
+                {
+                    Send.Zj(LogicView.IfString.Tag, Common.Logic.CurrentLogic);
+
+                }
             };
 
             if (Common.Logic.CurrentLogic.LogicIsCustomPushText == 0)
@@ -732,7 +764,7 @@
 
             if (CurrentLogic.Conditions.Count == 0 || CurrentLogic.Actions.Count == 0)
             {
-                var alert = new UserCenter.ShowMsgControl(UserCenter.ShowMsgType.Normal,
+                var alert = new ShowMsgControl(ShowMsgType.Normal,
                   Language.StringByID(MyInternationalizationString.addnull),
                   Language.StringByID(MyInternationalizationString.confrim));
                 alert.Show();
@@ -741,7 +773,7 @@
 
             if (string.IsNullOrEmpty(name))
             {
-                var alert = new UserCenter.ShowMsgControl(UserCenter.ShowMsgType.Normal,
+                var alert = new ShowMsgControl(ShowMsgType.Normal,
                   Language.StringByID(MyInternationalizationString.PleaseEnterLogicName),
                   Language.StringByID(MyInternationalizationString.confrim));
                 alert.Show();
@@ -759,38 +791,94 @@
             bool succeed = false;
             //鍒ゆ柇鏄柊娣诲姞閫昏緫(榛樿0)杩樻槸淇敼閫昏緫
             CommonPage.Loading.Start();
-            if (CurrentLogic.LogicId == 0)
-            {
-                //鍙戦�佹坊鍔犻�昏緫鍛戒护
-                var logicifon = await Send.AddModifyLogic(CurrentLogic);
-                if (logicifon != null && logicifon.LogicId != 0)
-                {
-                    succeed = true;
-                    CurrentLogic.LogicId = logicifon.LogicId;
-                    if (LogicView.IfString._LockLogic == if_logic)
-                    {
-                        //闂ㄩ攣鑱斿姩浜嬩欢閫昏緫鍒楄〃
-                        Common.Logic.LockLogicList.Add(CurrentLogic);
-                    }
-                    else
-                    {
-                        //鑷姩鍖栭�昏緫鍒楄〃
-                        Common.Logic.LogicList.Add(CurrentLogic);
 
-                    }
-                    if (tag)
-                    {
-                        Send.Zj(tag, CurrentLogic);
-                    }
+            if (Config.Instance.Home.IsVirtually)
+            {
+                if (Common.Logic.LogicList.Count == 0)
+                {
+                    CurrentLogic.LogicId = 1;
+                    Common.Logic.LogicList.Add(CurrentLogic);
                 }
+
+                if (CurrentLogic.LogicId == 0)
+                {
+                    bool d = false;
+                    for (int i = 1; i < 50; i++)
+                    {
+                       
+                        for (int j = 0; j < Common.Logic.LogicList.Count; j++)
+                        {
+                            if (i != Common.Logic.LogicList[j].LogicId)
+                            {
+                                CurrentLogic.LogicId = i;
+                                Common.Logic.LogicList.Add(CurrentLogic);
+                                d = true;
+                                break;
+                            }
+                        }
+                        if (d)
+                        {
+                            break;
+                        }
+                    }
+
+                }
+                else
+                {
+                    for (int j = 0; j < Common.Logic.LogicList.Count; j++)
+                    {
+                        if (CurrentLogic.LogicId == Common.Logic.LogicList[j].LogicId)
+                        {
+                            Common.Logic.LogicList.RemoveAt(j);
+                            Common.Logic.LogicList.Insert(j,CurrentLogic);
+                            break;
+                        }
+                    }
+
+                }
+
+                //鑷姩鍖栭�昏緫鍒楄〃
             }
             else
             {
-                //鍙戦�佷慨鏀归�昏緫鍛戒护锛�
-                //淇敼鍛戒护涓嶉渶瑕佺瓑寰呭洖澶嶏紱
-                Send.AddModifyLogic(CurrentLogic);
-                //缂栬緫榛樿鎴愬姛锛堜笉鑰冭檻缃戠粶鎯呭喌锛夛紱
-                succeed = true;
+                if (CurrentLogic.LogicId == 0)
+                {
+                    //鍙戦�佹坊鍔犻�昏緫鍛戒护
+                    var logicifon = await Send.AddModifyLogic(CurrentLogic);
+                    if (logicifon != null && logicifon.LogicId != 0)
+                    {
+                        succeed = true;
+                        CurrentLogic.LogicId = logicifon.LogicId;
+                        if (LogicView.IfString._Logic == if_logic || LogicView.IfString._SoneLogic == if_logic)
+                        {
+                            //鑷姩鍖栭�昏緫鍒楄〃
+                            Common.Logic.LogicList.Add(CurrentLogic);
+                        }
+                        if (LogicView.IfString._LockLogic == if_logic)
+                        {
+                            //闂ㄩ攣鑱斿姩浜嬩欢閫昏緫鍒楄〃
+                            Common.Logic.LockLogicList.Add(CurrentLogic);
+                        }
+                        if (LogicView.IfString._SoneLogic == if_logic)
+                        {
+                            //Sone闂ㄩ攣甯稿紑妯″紡閫昏緫鍒楄〃
+                            Common.Logic.SoneLogicList.Add(CurrentLogic);
+
+                        }
+                        if (tag)
+                        {
+                            Send.Zj(tag, CurrentLogic);
+                        }
+                    }
+                }
+                else
+                {
+                    //鍙戦�佷慨鏀归�昏緫鍛戒护锛�
+                    //淇敼鍛戒护涓嶉渶瑕佺瓑寰呭洖澶嶏紱
+                    Send.AddModifyLogic(CurrentLogic);
+                    //缂栬緫榛樿鎴愬姛锛堜笉鑰冭檻缃戠粶鎯呭喌锛夛紱
+                    succeed = true;
+                }
             }
             CommonPage.Loading.Hide();
 
@@ -802,33 +890,87 @@
                 //TipView("娣诲姞鑷姩鍖栧け璐�");
                 //return;
             }
-          
 
+            UserView.HomePage.Instance.RemoveViewByTag("Logic");//绉婚櫎鎵�鏈夋爣璁癓ogic鐣岄潰
             if (LogicView.IfString._Logic == if_logic)
             {
-                UserView.HomePage.Instance.RemoveViewByTag("Logic");
-                if (CurrentLogic.LogicType == 0)
-                {
-                    //鍙埛鏂板垎绫讳笂涓嬫粦鍔╲iew锛�
-                    Phone.Category.CategoryMainForm.instance?.RefreshBodyView();
-                    // Category.Category.instance?.RefreshBodyView();
-                }
-                else if (CurrentLogic.LogicType == 2)
-                {
-                    //鍒锋柊鏁翠釜鍒嗙被锛�
-                    //闂ㄩ攣甯稿紑妯″紡鐗规畩;
-                    UserView.UserPage.Instance.ShowCategoryAutoListForm();
 
+                //鏌ヨ-褰撳墠閫昏緫-鏄惁娣诲姞鍦扮悊浣嶇疆浣滀负鏉′欢
+                var exist = Common.Logic.CurrentLogic.Conditions.Find((obj) => obj["Type"] == "7");
+                if (exist==null)
+                {
+                    bool if_type = false;
+                    //鏌ヨ-閫昏緫鍒楄〃-鏄惁娣诲姞杩囧湴鐞嗕綅缃綔涓烘潯浠�
+                    for (int a = 0; a < Common.Logic.LogicList.Count; a++)
+                    {
+                        var logic = Common.Logic.LogicList[a];
+                        var exist_logic = logic.Conditions.Find((obj) => obj["Type"] == "7");
+                        if (exist_logic != null)
+                        {
+                            //鏄惁瀛樺湪鍦扮悊浣嶇疆鏉′欢
+                            if_type = true;
+                            //閫�鍑篺or寰幆
+                            break;
+                        }
+                    }
+                    if (if_type)
+                    {
+                        //鏌ヨ涔嬪墠鐘舵�佹槸鍚﹀凡缁忓紑鍚疓PS鏈嶅姟(浠ユ湰鍦板瓨鍌ㄧ姸鎬佷负涓� 0:娌″紑鍚�; 1锛氬紑鍚�)
+                        if (Send.If_Exist == "0")
+                        {
+                            //寮�鍚疓PS鏈嶅姟
+                            Application.StartGPSLocationService();
+                            //淇濆瓨GPS鏈嶅姟寮�鍚姸鎬�
+                            Send.SaveLocalFile(Config.Instance.HomeId + "_GPS_File", "1");
+                        }
+
+                    }
+                    else
+                    {
+                        //濡傛灉鎵句笉鍒板湴鐞嗕綅缃綔涓烘潯浠剁殑璇�,鍏抽棴GPS鏈嶅姟(鍑忓皯鑰楃數)
+                        if (Send.If_Exist == "1")
+                        {
+                            //鍏抽棴GPS鏈嶅姟
+                            Application.StopGPSLocationService();
+                            //淇濆瓨GPS鏈嶅姟鍏抽棴鐘舵��
+                            Send.SaveLocalFile(Config.Instance.HomeId + "_GPS_File", "0");
+                        }
+                    }
                 }
+                else
+                {
+                    //鏌ヨ涔嬪墠鐘舵�佹槸鍚﹀凡缁忓紑鍚疓PS鏈嶅姟(浠ユ湰鍦板瓨鍌ㄧ姸鎬佷负涓� 0:娌″紑鍚�; 1锛氬紑鍚�)
+                    if (Send.If_Exist == "0")
+                    {
+                        //寮�鍚疓PS鏈嶅姟
+                        Application.StartGPSLocationService();
+                        //淇濆瓨GPS鏈嶅姟寮�鍚姸鎬�
+                        Send.SaveLocalFile(Config.Instance.HomeId + "_GPS_File", "1");
+                    }
+                }
+                //鍙埛鏂板垎绫�-鑷姩鍖栦笂涓嬫粦鍔╲iew锛�
+                Phone.Category.CategoryMainForm.instance?.RefreshBodyView();
+                // Category.Category.instance?.RefreshBodyView();
             }
             else if (LogicView.IfString._LockLogic == if_logic)
             {
-                UserView.HomePage.Instance.RemoveViewByTag("Logic");//绉婚櫎鎵�鏈夋爣璁癓ogic鐣岄潰
+                //璺冲埌闂ㄩ攣鑱斿姩浜嬩欢鍒楄〃鐣岄潰
                 UserView.HomePage.Instance.RemoveViewByTag("LockListView");//绉婚櫎鎵�鏈夋爣璁癓ockListView鐣岄潰
                 var doorLockLogicList = new DoorLockLogic.LockLogicList();
                 UserView.HomePage.Instance.AddChidren(doorLockLogicList);
                 UserView.HomePage.Instance.PageIndex += 1;
                 doorLockLogicList.Show();
+            }
+            else if (LogicView.IfString._SoneLogic == if_logic)
+            {
+                //璺冲埌Sone闂ㄩ攣鑱斿姩浜嬩欢鍒楄〃鐣岄潰
+                //UserView.HomePage.Instance.RemoveViewByTag("SoneLogic");//绉婚櫎鎵�鏈夋爣璁癓ockListView鐣岄潰
+                //var soneLogicList = new SoneLogicList();
+                //UserView.HomePage.Instance.AddChidren(soneLogicList);
+                //UserView.HomePage.Instance.PageIndex += 1;
+                //soneLogicList.Show();
+
+                SoneLogicList.soneLogicList?.RefreshView();
             }
 
         }
@@ -849,5 +991,8 @@
         /// 鐣岄潰楂樺害
         /// </summary>
         public static int H = 1922;
+
+
+
     }
 }

--
Gitblit v1.8.0