From 9a4b76398009cf76c508d61f7e48fb6f5cb7ac2d Mon Sep 17 00:00:00 2001
From: xm <1271024303@qq.com>
Date: 星期二, 21 七月 2020 09:46:53 +0800
Subject: [PATCH] 请合并最新多功能面板代码

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

diff --git a/ZigbeeApp/Shared/Phone/Device/Logic/Method.cs b/ZigbeeApp/Shared/Phone/Device/Logic/Method.cs
new file mode 100755
index 0000000..6fba6f9
--- /dev/null
+++ b/ZigbeeApp/Shared/Phone/Device/Logic/Method.cs
@@ -0,0 +1,922 @@
+锘縰sing System;
+using System.Collections.Generic;
+using Newtonsoft.Json.Linq;
+using ZigBee.Device;
+using ZigBee.Common;
+using Shared.Common;
+using System.Collections.Specialized;
+using System.Net;
+using System.IO;
+using Shared.R;
+
+namespace Shared.Phone.Device.Logic
+{
+    public class Method
+    {
+
+        // <summary>
+        /// 閫氳繃璁惧鎵惧埌鍖哄煙(鎴块棿)鍚嶇О
+        /// </summary>
+        /// <param name="button">Btnregionname.</param>
+        /// <param name="device">Device.</param>
+        public static void RoomNmae(Button button, CommonDevice device)
+        {
+            button.Text = UserCenter.HdlRoomLogic.Current.GetRoomNameByDevice(device);
+        }
+        /// <summary>
+        /// 杩斿洖妤煎眰鎵�鏈夌殑鎴块棿鐨勫垪琛�
+        /// </summary>
+        /// <param name="type">鍒ゆ柇瀛楃涓�</param>
+        /// <param name="floorId">妤煎眰ID</param>
+        /// <returns></returns>
+        public static List<Common.Room> GetRoomList(string type, string floorId = null)
+        {
+            var list = new List<Common.Room>();
+            var listAllRoom = UserCenter.HdlRoomLogic.Current.GetAllListRooms();
+            for (int i = 0; i < listAllRoom.Count; i++)
+            {
+                if (type == "action_logicscene" || type == "action_lockscene")
+                {
+                    if (listAllRoom[i].ListSceneId.Count == 0)
+                    {   ///杩囨护鎺夋病鏈夊満鏅殑鎴块棿
+                        continue;
+                    }
+                }
+                else
+                {
+                    ///鍖哄垎鍑鸿緭鍏ユ潯浠跺拰杈撳嚭鐩爣璁惧
+                    var listdevicetype = GetDevice(type);
+                    var listdevice = GetDeviceUIList(listAllRoom[i], listdevicetype);
+                    if (listdevice.Count == 0)
+                    {
+                        ///杩囨护鎺夋病鏈夎澶囩殑鎴块棿
+                        continue;
+                    }
+                }
+                list.Add(listAllRoom[i]);
+            }
+            if (string.IsNullOrEmpty(floorId))
+            {
+                //娌℃湁妤煎眰鐩存帴杩斿洖鎵�鏈夌殑鎴块棿;
+                return list;
+            }
+            //鏌愭ゼ灞傛墍鏈夌殑鎴块棿;
+            return list.FindAll((obj) => obj.FloorId == floorId);
+        }
+        /// <summary>
+        /// 鑾峰彇鎴块棿鐨勮澶囧垪琛�
+        /// </summary>
+        /// <param name="room">褰撳墠鎴块棿</param>
+        /// <param name="deviceTypelist">璁惧绫诲瀷</param>
+        /// <returns></returns>
+        public static List<CommonDevice> GetDeviceUIList(Common.Room room, List<DeviceType> deviceTypelist)
+        {
+            var deviceUIlist = new List<CommonDevice>();
+            foreach (var deviceKey in room.ListDevice)
+            {
+                var device = LocalDevice.Current.GetDevice(deviceKey);
+                if (device == null)
+                {
+                    continue;
+                }
+                if (!deviceTypelist.Contains(device.Type))
+                {
+                    //杩囨护鎺変笉鏀寔鐨勮澶�
+                    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;
+                    }
+                }
+                deviceUIlist.Add(device);
+            }
+            return deviceUIlist;
+        }
+        /// <summary>
+        /// 鎺掑垪鎵�鏈夎澶囩被鍨嬬殑鍒楄〃
+        /// </summary>
+        /// <param name="devicelist">璁惧鍒楄〃</param>
+        /// <returns></returns>
+        public static List<string> GetDeviceTypeList(List<CommonDevice> devicelist)
+        {
+            List<string> devicetypelist = new List<string>();
+            devicetypelist.Clear();
+
+            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));
+            }
+
+            var curtainjosn = devicelist.Find((device) => device.Type == DeviceType.WindowCoveringDevice);
+            if (curtainjosn != null)
+            {
+                devicetypelist.Add(Language.StringByID(MyInternationalizationString.Curtains));
+            }
+
+            var ac = devicelist.Find((device) => device.Type == DeviceType.Thermostat);
+            if (ac != null)
+            {
+                devicetypelist.Add(Language.StringByID(MyInternationalizationString.AC));
+            }
+
+            var onOffSwitchjson = devicelist.Find((device) => device.Type == DeviceType.OnOffSwitch);
+            if (onOffSwitchjson != null)
+            {
+                devicetypelist.Add(Language.StringByID(MyInternationalizationString.OnOffSwitch));
+            }
+
+            var doorLock = devicelist.Find((device) => device.Type == DeviceType.DoorLock);
+            if (doorLock != null)
+            {
+                devicetypelist.Add(Language.StringByID(MyInternationalizationString.doorLock));
+            }
+
+            var airSwitch = devicelist.Find((device) => device.Type == DeviceType.AirSwitch);
+            if (airSwitch != null)
+            {
+                devicetypelist.Add(Language.StringByID(MyInternationalizationString.Airswitch));
+            }
+
+            var iASZonejosn = devicelist.Find((device) => device.Type == DeviceType.IASZone || device.Type == DeviceType.TemperatureSensor);
+            if (iASZonejosn != null)
+            {
+                devicetypelist.Add(Language.StringByID(MyInternationalizationString.sensor));
+            }
+
+            return devicetypelist;
+
+        }
+        /// <summary>
+        /// 鏌愪釜璁惧绫诲瀷鐨勫垪琛�
+        /// </summary>
+        /// <param name="devicetype">鍒ゆ柇瀛楃涓�</param>
+        /// <returns></returns>
+        public static List<DeviceType> GetDeviceType(string devicetype)
+        {
+            List<DeviceType> DeviceTypeList = new List<DeviceType>();
+            DeviceTypeList.Clear();
+            if (devicetype == Language.StringByID(MyInternationalizationString.Lights))
+            {
+                DeviceTypeList.Add(DeviceType.OnOffOutput);//0x0101鍗佽繘鍒�257
+                DeviceTypeList.Add(DeviceType.DimmableLight);
+                DeviceTypeList.Add(DeviceType.ColorTemperatureLight);
+            }
+            else if (devicetype == Language.StringByID(MyInternationalizationString.Curtains))
+            {
+                DeviceTypeList.Add(DeviceType.WindowCoveringDevice);
+            }
+            else if (devicetype == Language.StringByID(MyInternationalizationString.OnOffSwitch))
+            {
+                DeviceTypeList.Add(DeviceType.OnOffSwitch);
+            }
+            else if (devicetype == Language.StringByID(MyInternationalizationString.sensor))
+            {
+                DeviceTypeList.Add(DeviceType.IASZone);
+                DeviceTypeList.Add(DeviceType.TemperatureSensor);
+            }
+            else if (devicetype == Language.StringByID(MyInternationalizationString.doorLock))
+            {
+                DeviceTypeList.Add(DeviceType.DoorLock);
+            }
+            else if (devicetype == Language.StringByID(MyInternationalizationString.Curtains))
+            {
+                DeviceTypeList.Add(DeviceType.WindowCoveringDevice);
+            }
+            else if (devicetype == Language.StringByID(MyInternationalizationString.AC))
+            {
+                DeviceTypeList.Add(DeviceType.Thermostat);
+            }
+            else if (devicetype == Language.StringByID(MyInternationalizationString.Airswitch))
+            {
+                DeviceTypeList.Add(DeviceType.AirSwitch);
+            }
+            return DeviceTypeList;
+        }
+        /// <summary>
+        /// 鏄剧ず鏌愪釜绫诲瀷璁惧鐨勫浘鏍�
+        /// </summary>
+        /// <param name="devicetype">鍒ゆ柇瀛楃涓�</param>
+        /// <returns></returns>
+        public static string GetDeviceTypeIcon(string devicetype)
+        {
+            string patm = "";
+            if (devicetype == Language.StringByID(MyInternationalizationString.OnOffSwitch))
+            {
+                patm = "ZigeeLogic/selectedpanel.png";
+            }
+            else if (devicetype == Language.StringByID(MyInternationalizationString.sensor))
+            {
+                patm = "ZigeeLogic/selectedsenor.png";
+            }
+            else if (devicetype == Language.StringByID(MyInternationalizationString.doorLock))
+            {
+                patm = "ZigeeLogic/selecteddoorlock.png";
+            }
+            else if (devicetype == Language.StringByID(MyInternationalizationString.Lights))
+            {
+                patm = "ZigeeLogic/selectedlight.png";
+            }
+            else if (devicetype == Language.StringByID(MyInternationalizationString.Curtains))
+            {
+                patm = "ZigeeLogic/selectedcurtain.png";
+            }
+            else if (devicetype == Language.StringByID(MyInternationalizationString.AC))
+            {
+                patm = "ZigeeLogic/selectedac.png";
+            }
+            else if (devicetype == Language.StringByID(MyInternationalizationString.Airswitch))
+            {
+                patm = "ZigeeLogic/selectedairswitch.png";
+            }
+            return patm;
+        }
+        /// <summary>
+        /// 鏄剧ず璁惧鐨勫浘鏍�
+        /// </summary>
+        /// <param name="device">璁惧瀵硅薄</param>
+        /// <param name="button">鏄剧ず鍥炬爣鐨勬帶浠�</param>
+        public static void GetDeviceIcon(CommonDevice device, Button button)
+        {
+            string patm = "";
+            string selectedpatm = "";
+            switch (device.Type)
+            {
+                case DeviceType.OnOffOutput:
+                    {
+                        patm = "ZigeeLogic/light.png";
+                        selectedpatm = "ZigeeLogic/selectedlight.png";
+                    }
+                    break;
+                case DeviceType.IASZone:
+                    {
+                        var iASZonedevice = device as IASZone;
+                        if (iASZonedevice.DeviceID != 1026)
+                        {
+                            break;
+                        }
+                        patm = $"ZigeeLogic/sensor{iASZonedevice.IasDeviceType}.png";
+                        selectedpatm = $"ZigeeLogic/selectedsensor{iASZonedevice.IasDeviceType}.png";
+                    }
+                    break;
+                case DeviceType.TemperatureSensor:
+                    {
+                        var temperatureSensor = device as TemperatureSensor;
+                        if (temperatureSensor.SensorDiv == 1)
+                        {
+                            patm = $"ZigeeLogic/temperature.png";
+                            selectedpatm = $"ZigeeLogic/selectedtemperature.png";
+                        }
+                        else
+                        {
+                            patm = "ZigeeLogic/humidity.png";
+                            selectedpatm = "ZigeeLogic/selectedhumidity.png";
+                        }
+                    }
+                    break;
+                case DeviceType.OnOffSwitch:
+                    {
+                        patm = "ZigeeLogic/panel.png";
+                        selectedpatm = "ZigeeLogic/selectedpanel.png";
+                    }
+                    break;
+                case DeviceType.DoorLock:
+                    {
+                        patm = "ZigeeLogic/doorlock.png";
+                        selectedpatm = "ZigeeLogic/selecteddoorlock.png";
+                    }
+                    break;
+                case DeviceType.DimmableLight:
+                    {
+
+                        patm = "ZigeeLogic/dimmableLight.png";
+                        selectedpatm = "ZigeeLogic/selecteddimmableLight.png";
+                    }
+                    break;
+                case DeviceType.WindowCoveringDevice:
+                    {
+                        patm = "ZigeeLogic/curtain.png";
+                        selectedpatm = "ZigeeLogic/selectedcurtain.png";
+                    }
+                    break;
+                case DeviceType.Thermostat:
+                    {
+                        patm = "ZigeeLogic/ac.png";
+                        selectedpatm = "ZigeeLogic/selectedac.png";
+                    }
+                    break;
+                case DeviceType.AirSwitch:
+                    {
+                        patm = "ZigeeLogic/airswitch.png";
+                        selectedpatm = "ZigeeLogic/selectedairswitch.png";
+                    }
+                    break;
+                case DeviceType.ColorTemperatureLight:
+                    {
+                        patm = "ZigeeLogic/nightLight.png";
+                        selectedpatm = "ZigeeLogic/nightLightSelected.png";
+                    }
+                    break;
+            }
+            button.UnSelectedImagePath = patm;
+            button.SelectedImagePath = selectedpatm;
+        }
+        /// <summary>
+        /// 鏀寔鐨勮澶�
+        /// </summary>
+        /// <param name="type">鍒ゆ柇瀛楃涓�</param>
+        /// <returns></returns>
+        public static List<DeviceType> GetDevice(string type)
+        {
+            /// 璁惧绫诲瀷鍒楄〃
+            List<DeviceType> deviceTypeList = new List<DeviceType>();
+            deviceTypeList.Clear();
+            switch (type)
+            {
+                case "condition_logic":
+                    {//鑷姩鍖栨敮鎸佺殑鏉′欢璁惧
+                        deviceTypeList.Add(DeviceType.IASZone);
+                        deviceTypeList.Add(DeviceType.OnOffSwitch);
+                        deviceTypeList.Add(DeviceType.OnOffOutput);
+                        deviceTypeList.Add(DeviceType.DoorLock);
+                        deviceTypeList.Add(DeviceType.TemperatureSensor);
+                    }
+                    break;
+                case "action_logic":
+                    {
+
+                        //鑷姩鍖栨敮鎸佺殑鐩爣璁惧
+                        deviceTypeList.Add(DeviceType.OnOffOutput);
+                        deviceTypeList.Add(DeviceType.DimmableLight);
+                        deviceTypeList.Add(DeviceType.WindowCoveringDevice);
+                        deviceTypeList.Add(DeviceType.Thermostat);
+                        deviceTypeList.Add(DeviceType.AirSwitch);
+                        deviceTypeList.Add(DeviceType.ColorTemperatureLight);
+                        ///闂ㄩ攣鐗规畩
+                       // deviceTypeList.Add(DeviceType.DoorLock);
+                    }
+                    break;
+                case "condition_mould":
+                    {
+                        //鑷姩鍖栨ā鏉挎敮鎸佺殑鏉′欢璁惧
+                        deviceTypeList.Add(DeviceType.IASZone);
+                    }
+                    break;
+                case "action_mould":
+                    { //鑷姩鍖栨ā鏉挎敮鎸佺殑鐩爣璁惧
+                        deviceTypeList.Add(DeviceType.OnOffOutput);
+                    }
+                    break;
+                case "action_lockaction":
+                    {//闂ㄩ攣鑱斿姩浜嬩欢鏀寔鐨勭洰鏍囪澶�
+                        deviceTypeList.Add(DeviceType.OnOffOutput);
+                        deviceTypeList.Add(DeviceType.DimmableLight);
+                        deviceTypeList.Add(DeviceType.WindowCoveringDevice);
+                        deviceTypeList.Add(DeviceType.Thermostat);
+                        deviceTypeList.Add(DeviceType.AirSwitch);
+                        deviceTypeList.Add(DeviceType.ColorTemperatureLight);
+                        ///闂ㄩ攣鐗规畩
+                      // deviceTypeList.Add(DeviceType.DoorLock);
+                    }
+                    break;
+
+            }
+            return deviceTypeList;
+        }
+
+        /// <summary>
+        /// 鏇存柊鎵ц鍛ㄦ湡鐨勬柟娉�
+        /// </summary>
+        /// <param name="button">鏄剧ず鍛ㄦ湡鏂囨湰</param>
+        /// <param name="currentLogic">褰撳墠閫昏緫瀵硅薄</param>
+        public static void UpdateWeek(Button button, Common.Logic currentLogic)
+        {
+
+            switch (currentLogic.TimeAttribute.Repeat)
+            {
+                ///0:鍙墽琛屼竴娆★紝鎵ц鍚嶪sEnable鍊肩疆;1,浠婂勾鍐呮墽琛�;2锛氭瘡澶╂墽琛�;3锛氭瘡鏈堟墽琛�;4锛氭瘡骞存墽琛�;5锛氬懆閲嶅銆�
+                case 0:
+                    {
+                        button.Text = Language.StringByID(MyInternationalizationString.executeonce);
+                    }; break;
+                case 1: { }; break;
+                case 2:
+                    {
+                        button.Text = Language.StringByID(MyInternationalizationString.everyday);
+                    }; break;
+                case 3:
+                    {
+
+                        string len = "", value = "";
+                        var stringvalue = Convert.ToString(currentLogic.TimeAttribute.MonthDate, 2);
+                        var str = stringvalue.Insert(0, new string('0', 32 - stringvalue.Length));
+                        for (int j = 31; j >= 0; j--)
+                        {
+                            len += str.Substring(j, 1);
+                        }
+                        for (int j = 0; j < len.Length; j++)
+                        {
+                            var strvalue = len.Substring(j, 1);
+                            if (strvalue == "1")
+                            {
+                                value += (j + 1).ToString() + ",";
+                            }
+                        }
+                        button.Text = Language.StringByID(MyInternationalizationString.monthly) + value.TrimEnd(',') + Language.StringByID(MyInternationalizationString.day);
+
+                    }; break;
+                case 4:
+                    {
+
+                        Dictionary<int, int> dictionary = new Dictionary<int, int>();
+                        ///鎵惧嚭鎵ц鐨勬湀浠藉拰澶╂暟
+                        if (currentLogic.TimeAttribute.SelectMonDate.Count != 0)
+                        {
+                            for (int i = 0; i < currentLogic.TimeAttribute.SelectMonDate.Count; i++)
+                            {
+                                var dayvalue = currentLogic.TimeAttribute.SelectMonDate[i];
+                                if (dayvalue != 0)
+                                {
+                                    dictionary.Add(i + 1, dayvalue);
+                                }
+                            }
+                        }
+                        if (dictionary.Count != 0 && dictionary.Count == 1)
+                        {
+                            string len = "", leng = "";
+                            int minvalue = 0, Maximum = 0;
+                            foreach (var value in dictionary)
+                            {
+                                ///鍙栧嚭鏈堜唤
+                                var month = value.Key;
+                                ///鍙栧嚭鏃ユ暟
+                                var day = value.Value;
+                                var maxvalue = Convert.ToString(day, 2);
+                                var str = maxvalue.Insert(0, new string('0', 32 - maxvalue.Length));
+                                for (int j = 31; j >= 0; j--)
+                                {
+                                    len += str.Substring(j, 1);
+                                }
+
+                                for (int j = 0; j < len.Length; j++)
+                                {
+                                    var strvalue = len.Substring(j, 1);
+                                    if (strvalue == "1")
+                                    {
+                                        minvalue = j + 1;
+                                        break;
+                                    }
+                                }
+                                for (int j = 0; j < len.Length; j++)
+                                {
+                                    var strvalue = len.Substring(j, 1);
+                                    if (strvalue == "1")
+                                    {
+                                        Maximum = j + 1;
+                                    }
+                                }
+
+                                if (month.ToString().Length < 2)
+                                {
+                                    leng = "0" + month.ToString();
+                                }
+                                else
+                                {
+                                    leng = month.ToString();
+                                }
+                                if (minvalue == Maximum)
+                                {
+                                    button.Text = Language.StringByID(MyInternationalizationString.everyyear) + leng + "/" + (minvalue.ToString().Length < 2 ? "0" + minvalue.ToString() : minvalue.ToString());
+                                }
+                                else
+                                {
+                                    button.Text = Language.StringByID(MyInternationalizationString.everyyear) + leng + "/" + (minvalue.ToString().Length < 2 ? "0" + minvalue.ToString() : minvalue.ToString()) + "-" + leng + "/" + (Maximum.ToString().Length < 2 ? "0" + Maximum.ToString() : Maximum.ToString());
+                                }
+                            }
+
+                        }
+                        else
+                        {
+                            int b = 0;
+                            string stringtext = "";
+                            foreach (var value in dictionary)
+                            {
+                                string len = "", leng = "";
+                                int minvalue = 0, Maximum = 0;
+                                ///鍙栧嚭鏈堜唤
+                                var month = value.Key;
+                                ///鍙栧嚭鏃ユ暟
+                                var day = value.Value;
+                                var maxvalue = Convert.ToString(day, 2);
+                                var str = maxvalue.Insert(0, new string('0', 32 - maxvalue.Length));
+                                for (int j = 31; j >= 0; j--)
+                                {
+                                    len += str.Substring(j, 1);
+                                }
+
+
+                                if (month.ToString().Length < 2)
+                                {
+                                    leng = "0" + month.ToString();
+                                }
+                                else
+                                {
+                                    leng = month.ToString();
+                                }
+
+
+
+                                if (b == 0)
+                                {
+                                    for (int j = 0; j < len.Length; j++)
+                                    {
+                                        var strvalue = len.Substring(j, 1);
+                                        if (strvalue == "1")
+                                        {
+                                            minvalue = j + 1;
+                                            break;
+                                        }
+                                    }
+                                    stringtext += leng + "/" + (minvalue.ToString().Length < 2 ? "0" + minvalue.ToString() : minvalue.ToString()) + "-";
+
+                                }
+
+                                if (b == dictionary.Count - 1)
+                                {
+                                    for (int j = 0; j < len.Length; j++)
+                                    {
+                                        var strvalue = len.Substring(j, 1);
+                                        if (strvalue == "1")
+                                        {
+                                            Maximum = j + 1;
+                                        }
+                                    }
+                                    stringtext += leng + "/" + (Maximum.ToString().Length < 2 ? "0" + Maximum.ToString() : Maximum.ToString());
+
+                                }
+                                b++;
+                            }
+                            button.Text = Language.StringByID(MyInternationalizationString.everyyear) + stringtext;
+                        }
+
+                    }; break;
+                case 5:
+                    {
+                        string len = "", text = "";
+                        List<int> listvalueInt = new List<int>();
+                        listvalueInt.Clear();
+                        var maxvalue = Convert.ToString(currentLogic.TimeAttribute.WeekDay, 2);
+                        var str = maxvalue.Insert(0, new string('0', 8 - maxvalue.Length));
+                        for (int j = 7; j >= 0; j--)
+                        {
+                            len += str.Substring(j, 1);
+                        }
+
+                        for (int j = 0; j < len.Length; j++)
+                        {
+                            var strvalue = len.Substring(j, 1);
+                            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) + ",";
+                                }
+                                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) + ",";
+                                }
+
+
+                            }
+                        }
+                        //鏆傛椂闅愯棌鎺夛紝闇�瑕佹樉绀哄懆鏈拰宸ヤ綔鏃ュ啀鏀惧紑锛�
+                        //if (listvalueInt.Count == 5 && !listvalueInt.Contains(6) && !listvalueInt.Contains(7))
+                        //{
+                        //    btndisplaycycle.Text = Language.StringByID(MyInternationalizationString.workingday);
+                        //}
+                        //else if (listvalueInt.Count == 2 && listvalueInt.Contains(6) && listvalueInt.Contains(7))
+                        //{
+                        //    btndisplaycycle.Text = Language.StringByID(MyInternationalizationString.weekend);
+                        //}
+                        //else if (listvalueInt.Count == 7)
+                        //{
+                        //    btndisplaycycle.Text = Language.StringByID(MyInternationalizationString.everyday);
+                        //}
+                        //else
+                        //{
+                        //    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(',');
+                    }; break;
+            }
+
+
+        }
+        /// <summary>
+        ///杩斿洖璁惧鐨勬柟娉�
+        /// </summary>
+        /// <param name="DeviceAddr">璁惧Mac</param>
+        /// <param name="Epoint">璁惧绔彛</param>
+        /// <returns></returns>
+        public static ZigBee.Device.CommonDevice GetCommonDevice(string DeviceAddr, string Epoint)
+        {
+
+            var device = Common.Logic.LogicDviceList.Find((obj) => { return ((obj.DeviceAddr == DeviceAddr) && (obj.DeviceEpoint.ToString() == Epoint)); });
+            if (device == null)
+            {
+                device = new ZigBee.Device.CommonDevice();
+            }
+            return device;
+        }
+        /// <summary>
+        /// 鎺ㄩ�佽缃殑鏂规硶
+        /// </summary>
+        /// <param name="middle"></param>
+        public static void Push(VerticalScrolViewLayout middle)
+        {
+            LogicView.Addview pushview = new LogicView.Addview();
+            pushview.switchBtn.Visible = true;
+            pushview.titleBtn.TextID = MyInternationalizationString.pushswitch;
+            middle.AddChidren(pushview.AddDeviceView());
+
+            LogicView.Addview custompushview = new LogicView.Addview();
+            custompushview.iconBtn.Visible = true;
+            custompushview.iconBtn.UnSelectedImagePath = "ZigeeLogic/next.png";
+            custompushview.titleBtn.TextID = MyInternationalizationString.custompush;
+            custompushview.lineBtn.BackgroundColor = ZigbeeColor.Current.LogicBlankBackgroundColor;
+            middle.AddChidren(custompushview.AddDeviceView());
+
+            EventHandler<MouseEventArgs> customclick = (sender, e) =>
+            {
+                var CustomText = new CustomText();
+                UserView.HomePage.Instance.AddChidren(CustomText);
+                UserView.HomePage.Instance.PageIndex += 1;
+                CustomText.Show();
+            };
+            custompushview.frameLayout.MouseUpEventHandler += customclick;
+            custompushview.clickBtn.MouseUpEventHandler += customclick;
+            // bool tag = false;//鏍囪寮�鍏崇姸鎬�;
+            pushview.clickBtn.MouseUpEventHandler += (sender1, e1) =>
+            {
+                pushview.switchBtn.IsSelected = !pushview.switchBtn.IsSelected;
+                if (pushview.switchBtn.IsSelected)
+                {
+                    LogicView.IfString.Tag = true;
+                    custompushview.frameLayout.Height = Application.GetRealHeight(160);
+                    Common.Logic.CurrentLogic.LogicIsCustomPushText = 1;
+                    pushview.lineBtn.BackgroundColor = ZigbeeColor.Current.LogicRowLayoutLineColor;
+
+                }
+                else
+                {
+                    LogicView.IfString.Tag = false;
+                    custompushview.frameLayout.Height = Application.GetRealHeight(0);
+                    Common.Logic.CurrentLogic.LogicIsCustomPushText = 0;
+                    pushview.lineBtn.BackgroundColor = ZigbeeColor.Current.LogicBlankBackgroundColor;
+                }
+                if (!Config.Instance.Home.IsVirtually)
+                {
+                    Send.Zj(LogicView.IfString.Tag, Common.Logic.CurrentLogic);
+
+                }
+            };
+
+            if (Common.Logic.CurrentLogic.LogicIsCustomPushText == 0)
+            {
+                LogicView.IfString.Tag = false;
+                pushview.switchBtn.IsSelected = false;
+                custompushview.frameLayout.Height = Application.GetRealHeight(0);
+                pushview.lineBtn.BackgroundColor = ZigbeeColor.Current.LogicBlankBackgroundColor;
+            }
+            else
+            {
+                LogicView.IfString.Tag = true;
+                pushview.switchBtn.IsSelected = true;
+                custompushview.frameLayout.Height = Application.GetRealHeight(160);
+                pushview.lineBtn.BackgroundColor = ZigbeeColor.Current.LogicRowLayoutLineColor;
+            }
+        }
+        /// <summary>
+        /// 淇濆瓨鑷姩鍖栫殑鏂规硶
+        /// </summary>
+        /// <param name="if_logic">鍒ゆ柇璺宠浆鐣岄潰鐨勫瓧绗︿覆</param>
+        /// <param name="name">閫昏緫鍚嶇О</param>
+        /// <param name="tag"></param>
+        /// <param name="CurrentLogic">褰撳墠閫昏緫</param>
+        public async static void SaveLogic(string if_logic, string name, bool tag, Common.Logic CurrentLogic)
+        {
+
+            if (CurrentLogic.Conditions.Count == 0 || CurrentLogic.Actions.Count == 0)
+            {
+                var alert = new UserCenter.ShowMsgControl(UserCenter.ShowMsgType.Normal,
+                  Language.StringByID(MyInternationalizationString.addnull),
+                  Language.StringByID(MyInternationalizationString.confrim));
+                alert.Show();
+                return;
+            }
+
+            if (string.IsNullOrEmpty(name))
+            {
+                var alert = new UserCenter.ShowMsgControl(UserCenter.ShowMsgType.Normal,
+                  Language.StringByID(MyInternationalizationString.PleaseEnterLogicName),
+                  Language.StringByID(MyInternationalizationString.confrim));
+                alert.Show();
+                return;
+            }
+            ///鍏堥殣钘忓垽鏂悕瀛楃浉鍚岀殑鍔熻兘锛�
+            //var logicname = Common.Logic.LogicList.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();
+            //    return;
+            //}
+
+            CurrentLogic.LogicName = name;
+            bool succeed = false;
+            //鍒ゆ柇鏄柊娣诲姞閫昏緫(榛樿0)杩樻槸淇敼閫昏緫
+            CommonPage.Loading.Start();
+
+            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
+            {
+                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();
+
+            if (!succeed)//succeed鏍囪鏄坊鍔犳垚鍔熻繕鏄け璐�
+            {
+                //缃戝叧鍥炲澶辫触锛屼笉鍏抽棴鐣岄潰锛岃瀹冨仠鐣欏綋鍓嶇晫闈紱
+                //锛堝師鍥狅細鑰冭檻鍒板け璐ラ噸鏂扮紪杈戝師鏉ユ暟鎹粰鐢ㄦ埛甯︽潵浜嗛夯鐑︼級
+                ///鎻愮ず锛氭坊鍔犺嚜鍔ㄥ寲澶辫触锛�
+                //TipView("娣诲姞鑷姩鍖栧け璐�");
+                //return;
+            }
+
+            UserView.HomePage.Instance.RemoveViewByTag("Logic");//绉婚櫎鎵�鏈夋爣璁癓ogic鐣岄潰
+            if (LogicView.IfString._Logic == if_logic)
+            {
+                //鍙埛鏂板垎绫�-鑷姩鍖栦笂涓嬫粦鍔╲iew锛�
+                Phone.Category.CategoryMainForm.instance?.RefreshBodyView();
+                // Category.Category.instance?.RefreshBodyView();
+            }
+            else if (LogicView.IfString._LockLogic == if_logic)
+            {
+                //璺冲埌闂ㄩ攣鑱斿姩浜嬩欢鍒楄〃鐣岄潰
+                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();
+            }
+
+        }
+        /// <summary>
+        /// 璺冲叆杈撳嚭鐩爣鍔熻兘鐣岄潰鐨勬柟娉�
+        /// </summary>
+        /// <param name="str1">璁惧鐣岄潰璇嗗埆瀛楃涓�</param>
+        /// <param name="str2">鍦烘櫙鐣岄潰璇嗗埆瀛楃涓�</param>
+        public static void View(string str1, string str2)
+        {
+            var deviceTarget = new DeviceTarget();
+            UserView.HomePage.Instance.AddChidren(deviceTarget);
+            UserView.HomePage.Instance.PageIndex += 1;
+            deviceTarget.Show(str1, str2);
+        }
+
+        /// <summary>
+        /// 鐣岄潰楂樺害
+        /// </summary>
+        public static int H = 1922;
+    }
+}

--
Gitblit v1.8.0