From 7d005a7618e3d7a80d8ede3baf6ecc4bf8019cd5 Mon Sep 17 00:00:00 2001
From: wxr <464027401@qq.com>
Date: 星期二, 01 九月 2020 15:22:09 +0800
Subject: [PATCH] 2020-09-01

---
 HDL_ON/Entity/Function/Function.cs |  434 ++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 355 insertions(+), 79 deletions(-)

diff --git a/HDL_ON/Entity/Function/Function.cs b/HDL_ON/Entity/Function/Function.cs
index 45f4951..0c3e88b 100644
--- a/HDL_ON/Entity/Function/Function.cs
+++ b/HDL_ON/Entity/Function/Function.cs
@@ -3,6 +3,7 @@
 using System.Linq;
 using Newtonsoft.Json.Linq;
 using HDL_ON;
+using Shared;
 
 namespace HDL_ON.Entity
 {
@@ -13,17 +14,24 @@
     public class Trait
     {
         /// <summary>
-        /// 灞炴�у唴瀹�
-        /// </summary>
-        public string attri;
-        /// <summary>
         /// 灞炴�у悕绉�
         /// </summary>
         public string name;
+        public List<string> _value_key;
         /// <summary>
-        /// 灞炴�х殑鍊�
+        /// 灞炴�х殑鍊煎垪琛�
         /// </summary>
-        public List<string> value;
+        [Newtonsoft.Json.JsonIgnore]
+        public List<string> value_key {
+            get
+            {
+                return _value_key;
+            }
+            set
+            {
+                _value_key = value;
+            }
+        }
         /// <summary>
         /// 鏈�澶у��
         /// </summary>
@@ -40,10 +48,268 @@
 
         /// <summary>
         /// 褰撳墠鍊�
-        /// app杞欢鑷畾涔夊睘鎬�
-        /// 鐢ㄦ潵璁板綍褰撳墠鐘舵��
         /// </summary>
-        public object curValues = new object();
+        public object value = new object();
+
+
+        //----app鑷畾涔�
+        /// <summary>
+        /// 灞炴�у�煎崟浣�
+        /// </summary>
+        public string _uintString;
+        public string uintString {
+            get
+            {
+                if(!string.IsNullOrEmpty( _uintString))
+                {
+                    return _uintString;
+                }
+                var us = "";
+                switch(name)
+                {
+                    case "temperature":
+                        us = "掳C";
+                        break;
+                    case "percent":
+                    case "brightness":
+                        us = "%";
+                        break;
+                }
+                return us;
+            }
+        }
+
+        /// <summary>
+        /// 灞炴�у悕绉版樉绀烘枃鏈�
+        /// 涓嫳鏂囨樉绀�
+        /// </summary>
+        public string name_text
+        {
+            get
+            {
+                string text = "";
+                switch (name)
+                {
+                    case "on_off":
+                        text = Language.StringByID(StringId.OnOff);
+                        break;
+                    case "brightness":
+                        text = Language.StringByID(StringId.Brightness);
+                        break;
+                    case "color":
+                        text = Language.StringByID(StringId.ColorValue);
+                        break;
+                    case "mode":
+                        text = Language.StringByID(StringId.Mode);
+                        break;
+                    case "fan":
+                        text = Language.StringByID(StringId.FanSpeed);
+                        break;
+                    case "temperature":
+                        text = Language.StringByID(StringId.Temp);
+                        break;
+                    case "delay":
+                        text = Language.StringByID(StringId.Delay);
+                        break;
+                    case "cct":
+                        text = "CCT";
+                        break;
+                    //case "fade_time":
+                    case "percent":
+                        text = Language.StringByID(StringId.PercentAdjustment);
+                        break;
+                        //case "lock":
+                        //case "ico":
+                        //case "swing":
+                        //case "set_ point":
+                        //case "pm25":
+                        //case "volume":
+                        //case "vol_step":
+                        //case "source":
+                        //case "treble":
+                        //case "bass":
+                        //case "playlist":
+                        //case "song_name":
+                        //case "current_status":
+                        //case "enable":
+                        //case "lux":
+                        //case "adjust_value":
+                        //case "range":
+                        //case "humidity":
+                        //case "type":
+                        //case "state":
+                        //case "sensitivity":
+                        //case "pm25value":
+                }
+                return text;
+            }
+        }
+
+        /// <summary>
+        /// 鑾峰彇褰撳墠灞炴�х殑鏄剧ず鏂囨湰
+        /// 涓嫳鏂囨樉绀�
+        /// </summary>
+        public string GetCurValueText()
+        {
+            return GetValueText(value.ToString());
+        }
+
+        /// <summary>
+        /// 鑾峰彇鎸囧畾灞炴�х殑鏄剧ず鏂囨湰
+        /// 涓嫳鏂囨樉绀�
+        /// </summary>
+        public string GetValueText(string value)
+        {
+            string text = "";
+            value = value.Replace("{}", "");
+            switch (name)
+            {
+                case "on_off":
+                    text = value == "on" ? Language.StringByID(StringId.On) : Language.StringByID(StringId.OFF);
+                    break;
+                case "temperature":
+                case "brightness":
+                case "percent":
+                    if (text == "")
+                    {
+                        this.value = this.min;
+                        text = this.min.ToString();
+                    }
+                    else
+                    {
+                        text = value;
+                    }
+                    break;
+                //case "color":
+                case "mode":
+                    switch (value)
+                    {
+                        //----绌鸿皟
+                        case "auto":
+                            text = Language.StringByID(StringId.Auto);
+                            break;
+                        case "cool":
+                            text = Language.StringByID(StringId.Cool);
+                            break;
+                        case "heat":
+                            text = Language.StringByID(StringId.Heat);
+                            break;
+                        case "dry":
+                            text = Language.StringByID(StringId.Dry);
+                            break;
+                        case "fan":
+                            text = Language.StringByID(StringId.AirSupply);
+                            break;
+                        //-----鍦扮儹
+                        case "day":
+                            text = Language.StringByID(StringId.Day);
+                            break;
+                        case "night":
+                            text = Language.StringByID(StringId.Night);
+                            break;
+                        case "away":
+                            text = Language.StringByID(StringId.Away);
+                            break;
+                        case "normal":
+                            text = Language.StringByID(StringId.Normal);
+                            break;
+                        case "timer":
+                            text = Language.StringByID(StringId.Timer);
+                            break;
+                        default:
+                            if (this.value_key.Contains("cool"))
+                            {
+                                this.value = "cool";
+                                text = Language.StringByID(StringId.Cool);
+                            }
+                            else if (this.value_key.Contains("day"))
+                            {
+                                this.value = "day";
+                                text = Language.StringByID(StringId.Day);
+                            }
+                            else
+                            {
+                                foreach (var v in this.value_key)
+                                {
+                                    this.value = v;
+                                    text = GetCurValueText();
+                                }
+                            }
+                            break;
+                    }
+                    break;
+                case "fan":
+                    switch (value)
+                    {
+                        case "high":
+                            text = Language.StringByID(StringId.HighWindSpeed);
+                            break;
+                        case "medium":
+                            text = Language.StringByID(StringId.MiddleWindSpeed);
+                            break;
+                        case "low":
+                            text = Language.StringByID(StringId.LowWindSpeed);
+                            break;
+                        case "auto":
+                            text = Language.StringByID(StringId.Auto);
+                            break;
+                        default:
+                            if (this.value_key.Contains("low"))
+                            {
+                                this.value = "low";
+                                text = Language.StringByID(StringId.LowWindSpeed);
+                            }
+                            else
+                            {
+                                foreach (var v in this.value_key)
+                                {
+                                    this.value = v;
+                                    text = GetCurValueText();
+                                }
+                            }
+                            break;
+                    }
+                    break;
+                //case "delay":
+                //case "cct":
+                //case "fade_time":
+                //case "lock":
+                //case "ico":
+                //case "swing":
+                //case "set_ point":
+                //case "pm25":
+                //case "volume":
+                //case "vol_step":
+                //case "source":
+                //case "treble":
+                //case "bass":
+                //case "playlist":
+                //case "song_name":
+                //case "current_status":
+                //case "enable":
+                //case "lux":
+                //case "adjust_value":
+                //case "range":
+                //case "humidity":
+                //case "type":
+                //case "state":
+                //case "sensitivity":
+                //case "pm25value":
+                case "high":
+                    text = Language.StringByID(StringId.HighWindSpeed);
+                    break;
+                case "medium":
+                    text = Language.StringByID(StringId.MiddleWindSpeed);
+                    break;
+                case "low":
+                    text = Language.StringByID(StringId.LowWindSpeed);
+                    break;
+                case "auto":
+                    text = Language.StringByID(StringId.Auto);
+                    break;
+            }
+            return text;
+        }
     }
     /// <summary>
     /// 璁惧鍔熻兘oid
@@ -56,6 +322,8 @@
         public string net_id;
         public string dev_id;
         public string channels;
+
+
     }
 
 
@@ -87,7 +355,7 @@
         /// 澶х被鍒�	1bytes	锛堥鐣欙級
         /// 灏忕被鍒�	1byte	锛堥鐣欙級
         /// </summary>
-        public string sid = "03010112345678010123012301230101";
+        public string sid = "0301011234567801012301230123";
 
         /// <summary>
         /// A鍗忚鍔熻兘鐨勭壒鎬�
@@ -107,6 +375,40 @@
         /// 浣跨敤A鍗忚鎺у埗鏃讹紝鏀瑰睘鎬т负绌�
         /// </summary>
         public BusData bus_Data;
+        /// <summary>
+        /// 寤舵椂
+        /// </summary>
+        public int delay = 0;
+        /// <summary>
+        /// 寤舵椂鏄剧ず鐨勬枃鏈�
+        /// </summary>
+        [Newtonsoft.Json.JsonIgnore]
+        public string delayText
+        {
+            get
+            {
+                string text = "";
+                switch (delay)
+                {
+                    case 0:
+                        text = Language.StringByID(StringId.NoDelay);
+                        break;
+                    case 30:
+                        text = "30s";
+                        break;
+                    case 60:
+                        text = "1min";
+                        break;
+                    case 120:
+                        text = "2min";
+                        break;
+                    case 300:
+                        text = "5min";
+                        break;
+                }
+                return text;
+            }
+        }
         #endregion
 
         /// <summary>
@@ -165,84 +467,45 @@
         [Newtonsoft.Json.JsonIgnore]
         public string lastState = "";
 
+        Trait _trait_on_off;
         [Newtonsoft.Json.JsonIgnore]
-        public Trait trait_on_off;
-        /// <summary>
-        /// 寮�鍏崇姸鎬�
-        /// 0:鍏�
-        /// 1:寮�
-        /// </summary>
-        [Newtonsoft.Json.JsonIgnore]
-        public string on_off
+        public Trait trait_on_off
         {
             get
             {
-                try
+                if (_trait_on_off == null)
                 {
-                    if (trait_on_off == null)
+                    _trait_on_off = function.Find((obj) => obj.name == "on_off");
+                    //鎵句笉鍒板睘鎬ч渶瑕佸0鏄庝竴涓紝闃叉鎶ラ敊闂��
+                    if (_trait_on_off == null)
                     {
-                        trait_on_off = function.Find((obj) => obj.attri == "on_off");
-                        //鎵句笉鍒板睘鎬ч渶瑕佸0鏄庝竴涓紝闃叉鎶ラ敊闂��
-                        if (trait_on_off == null)
+                        _trait_on_off = new Trait()
                         {
-                            trait_on_off = new Trait()
-                            {
-                                attri = "on_off",
-                                value = new List<string> { "on", "off" },
-                                max = 1,
-                                min = 0,
-                            };
-                        }
-                        trait_on_off.curValues = trait_on_off.value[trait_on_off.min];
+                            name = "on_off",
+                            value_key = new List<string> { "on", "off" },
+                            max = 1,
+                            min = 0,
+                        };
                     }
-                    return trait_on_off.curValues.ToString();
+                    _trait_on_off.value = "on";
                 }
-                catch
-                {
-                    MainPage.Log("on_off 鏁版嵁鑾峰彇澶辫触.");
-                    function.Add( new Trait()
-                    {
-                        attri = "on_off",
-                        value = new List<string> { "on", "off" },
-                        max = 1,
-                        min = 0,
-                    });
-                    return "off";
-                }
+                return _trait_on_off;
             }
-            set
+            //set
+            //{
+            //    _trait_on_off = value;
+            //}
+        }
+
+        /// <summary>
+        /// 寮�鍏崇姸鎬佹枃鏈�
+        /// </summary>
+        [Newtonsoft.Json.JsonIgnore]
+        public string on_off_text
+        {
+            get
             {
-                try
-                {
-                    if (trait_on_off == null)
-                    {
-                        trait_on_off = function.Find((obj) => obj.attri == "on_off");
-                        //鎵句笉鍒板睘鎬ч渶瑕佸0鏄庝竴涓紝闃叉鎶ラ敊闂��
-                        if (trait_on_off == null)
-                        {
-                            trait_on_off = new Trait()
-                            {
-                                attri = "on_off",
-                                value = new List<string> { "on", "off" },
-                                max = 1,
-                                min = 0,
-                            };
-                        }
-                        trait_on_off.curValues = trait_on_off.min;
-                    }
-                    trait_on_off.curValues = value;
-                }
-                catch (Exception ex)
-                {
-                    MainPage.Log($"on_off 鏁版嵁鍒锋柊澶辫触: {ex.Message}");
-                    function.Add(new Trait()
-                    {
-                        attri = "on_off",
-                        value = new List<string> { "on", "off" },
-                        max = 1,
-                        min = 0,
-                    });
-                }
+                return trait_on_off.value.ToString() == "on" ? Language.StringByID(StringId.On) : Language.StringByID(StringId.OFF);
             }
         }
 
@@ -301,17 +564,30 @@
             string roomNameList = "";
             foreach(var roomId in roomIdList)
             {
-                var findRoom = DB_ResidenceData.residenceData.rooms.Find(obj => obj.sid == roomId);
+                var findRoom = DB_ResidenceData.rooms.Find(obj => obj.sid == roomId);
                 if (findRoom == null)
                     continue;
                 if(roomNameList != "")
                 {
                     roomNameList += ",";
                 }
-                roomNameList += findRoom.floor + "路" + findRoom.name;
+                roomNameList += findRoom.floorName + findRoom.name;
+            }
+            if (roomNameList == "" && functionType == FunctionType.Scene)
+            {
+                roomNameList = Language.StringByID(StringId.WholeHouseScene);
             }
             return roomNameList;
         }
+        /// <summary>
+        /// 淇濆瓨鍔熻兘鏁版嵁
+        /// </summary>
+        public void SaveFunctionData()
+        {
+            var ssd = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(this));
+            FileUtils.WriteFileByBytes("FunctionData_" + this.sid, ssd);
+            MainPage.Log($"Save FunctionData {this.functionType} : {this.sid}");
+        }
 
         /// <summary>
         /// 鏇存柊鏃堕棿

--
Gitblit v1.8.0