From 7467a843644aee00e5a4d91dd967cdb9e30f1985 Mon Sep 17 00:00:00 2001
From: wei <kaede@kaededeMacBook-Air.local>
Date: 星期二, 15 十二月 2020 17:20:06 +0800
Subject: [PATCH] 20201215-3

---
 HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs |  264 ++++++++++++++++++++++++++--------------------------
 1 files changed, 133 insertions(+), 131 deletions(-)

diff --git a/HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs b/HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs
index d562d05..e1695e9 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs
@@ -10,21 +10,19 @@
     {
         FrameLayout bodyView;
         VerticalScrolViewLayout contentView;
+        Button btnOnText;
 
         Scene scene;
 
         Action refreshAction;
         SceneFunction sceneFunction;
-        //Function localFunction;
         public SceneFunctionInfoEditPage(Scene s, SceneFunction fc,Action action)
         {
             bodyView = this;
             scene = s;
-            //localFunction = fc;
             sceneFunction = fc;
             refreshAction = action;
         }
-
 
         public void LoadPage()
         {
@@ -40,35 +38,58 @@
             };
             bodyView.AddChidren(contentView);
 
-            //鍔犺浇寮�鍏砇ow
-            LoadFunctionRow(sceneFunction.localFunction.trait_on_off);
+            LoadFunctionRow(sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.OnOff));
 
-            switch (sceneFunction.localFunction.functionType)
+            foreach (var attr in sceneFunction.status)
             {
-                case FunctionType.AC:
-                    LoadFunctionRow(sceneFunction.localFunction.attributes.Find((obj) => obj.key == "set_temp"));
-                    LoadFunctionRow(sceneFunction.localFunction.attributes.Find((obj) => obj.key == "mode"));
-                    LoadFunctionRow(sceneFunction.localFunction.attributes.Find((obj) => obj.key == "fan"));
-                    break;
-                case FunctionType.FloorHeating:
-                    LoadFunctionRow(sceneFunction.localFunction.attributes.Find((obj) => obj.key == "set_temp"));
-                    LoadFunctionRow(sceneFunction.localFunction.attributes.Find((obj) => obj.key == "mode"));
-                    break;
-                case FunctionType.Curtain:
-                    //鏃犳搷浣�
-                    break;
-                case FunctionType.MotorCurtain:
-                case FunctionType.RollingShutter:
-                    LoadFunctionRow(sceneFunction.localFunction.attributes.Find((obj) => obj.key == "percent"));
-                    break;
-                case FunctionType.Relay:
-                    //鏃犳搷浣�
-                    break;
-                case FunctionType.Dimmer:
-                case FunctionType.RGB:
-                    LoadFunctionRow(sceneFunction.localFunction.attributes.Find((obj) => obj.key == "brightness"));
-                    break;
+                switch (attr.key)
+                {
+                    case FunctionAttributeKey.SetTemp:
+                        LoadFunctionRow(sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.SetTemp));
+                        break;
+                    case FunctionAttributeKey.Mode:
+                        LoadFunctionRow(sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Mode));
+                        break;
+                    case FunctionAttributeKey.FanSpeed:
+                        LoadFunctionRow(sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.FanSpeed));
+                        break;
+                    case FunctionAttributeKey.Percent:
+                        LoadFunctionRow(sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Percent));
+                        break;
+                    case FunctionAttributeKey.Brightness:
+                        LoadFunctionRow(sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Brightness));
+                        break;
+                }
             }
+
+            //鍔犺浇寮�鍏砇ow
+            //LoadFunctionRow(sceneFunction.localFunction.trait_on_off);
+            //switch (sceneFunction.localFunction.functionType)
+            //{
+            //    case FunctionType.AC:
+            //        LoadFunctionRow(sceneFunction.localFunction.attributes.Find((obj) => obj.key == "set_temp"));
+            //        LoadFunctionRow(sceneFunction.localFunction.attributes.Find((obj) => obj.key == "mode"));
+            //        LoadFunctionRow(sceneFunction.localFunction.attributes.Find((obj) => obj.key == "fan"));
+            //        break;
+            //    case FunctionType.FloorHeating:
+            //        LoadFunctionRow(sceneFunction.localFunction.attributes.Find((obj) => obj.key == "set_temp"));
+            //        LoadFunctionRow(sceneFunction.localFunction.attributes.Find((obj) => obj.key == "mode"));
+            //        break;
+            //    case FunctionType.Curtain:
+            //        //鏃犳搷浣�
+            //        break;
+            //    case FunctionType.MotorCurtain:
+            //    case FunctionType.RollingShutter:
+            //        LoadFunctionRow(sceneFunction.localFunction.attributes.Find((obj) => obj.key == "percent"));
+            //        break;
+            //    case FunctionType.Relay:
+            //        //鏃犳搷浣�
+            //        break;
+            //    case FunctionType.Dimmer:
+            //    case FunctionType.RGB:
+            //        LoadFunctionRow(sceneFunction.localFunction.attributes.Find((obj) => obj.key == "brightness"));
+            //        break;
+            //}
 
             //鍔犺浇寤舵椂Row
             LoadDelayRow();
@@ -100,7 +121,6 @@
 
             btnConfrim.MouseUpEventHandler = (sender, e) =>
             {
-                //var temp = localFunction.ConvertSceneFunction();
                 var temp = scene.functions.Find((obj) => obj.sid == sceneFunction.sid);
                 if (temp != null)
                 {
@@ -110,9 +130,19 @@
                 {
                     scene.functions.Add(sceneFunction);
                 }
-                scene.SaveSceneData(true);
-                refreshAction();
-                this.RemoveFromParent();
+                if (!string.IsNullOrEmpty(scene.userSceneId))
+                {
+                    var result = scene.UpdateScene();
+                    if (result == DAL.Server.StateCode.SUCCESS)
+                    {
+                        refreshAction();
+                        this.RemoveFromParent();
+                    }
+                    else
+                    {
+                        DAL.Server.IMessageCommon.Current.ShowErrorInfoAlter(result);
+                    }
+                }
             };
         }
 
@@ -120,9 +150,9 @@
         /// <summary>
         /// 鍔犺浇鍔熻兘Row
         /// </summary>
-        void LoadFunctionRow(FunctionAttributes trait)
+        void LoadFunctionRow(SceneFunctionStatus sceneStatus)
         {
-            if (trait == null)
+            if (sceneStatus == null)
                 return;
             #region Row code
             var row = new FrameLayout()
@@ -131,7 +161,7 @@
                 BackgroundColor = CSS_Color.MainBackgroundColor,
             };
             contentView.AddChidren(row);
-            if (trait.key != "on_off")
+            if (sceneStatus.key != FunctionAttributeKey.OnOff)
             {
                 row.AddChidren(new Button() { X = Application.GetRealWidth(16), Height = Application.GetRealHeight(1), Width = Application.GetRealWidth(343), BackgroundColor = CSS_Color.DividingLineColor });
             }
@@ -151,9 +181,11 @@
                 TextAlignment = TextAlignment.CenterRight,
                 TextColor = CSS_Color.PromptingColor1,
                 TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-                Text = trait.GetCurValueText() + trait.uintString
+                Text = FunctionList.List.GetValueText(sceneStatus.key,sceneStatus.value) + FunctionList.List.GetUintString(sceneStatus.key)
             };
             row.AddChidren(btnFunctionText);
+            if (sceneStatus.key == FunctionAttributeKey.OnOff)
+                btnOnText = btnFunctionText;
 
             var btnFunctionName = new Button()
             {
@@ -161,62 +193,48 @@
                 TextAlignment = TextAlignment.CenterLeft,
                 TextColor = CSS_Color.FirstLevelTitleColor,
                 TextSize = CSS_FontSize.SubheadingFontSize,
-                Text = trait.name_text
+                Text = FunctionList.List.GetNameText(sceneStatus.key)
             };
             row.AddChidren(btnFunctionName);
             btnFunctionName.MouseUpEventHandler = (sender, e) =>
             {
-                switch (trait.key)
+                switch (sceneStatus.key)
                 {
-                    case "on_off":
-                        LoadEditDialog_OnOff(trait, btnFunctionText);
+                    case FunctionAttributeKey.OnOff:
+                        LoadEditDialog_OnOff(sceneStatus, btnFunctionText);
                         break;
-                    case "brightness":
-                        LoadEditDialog_Percent(trait, btnFunctionText);
+                    case FunctionAttributeKey.Brightness:
+                        LoadEditDialog_Percent(sceneStatus, btnFunctionText);
                         break;
-                    //case "color":
-                    //    break;
-                    case "mode":
-                        LoadEditDialog_FunctionPar(trait, btnFunctionText);
+                    case FunctionAttributeKey.Mode:
+                        var statusList = new List<string>();
+                        var tr = sceneFunction.localFunction.attributes.Find((obj) => obj.key == FunctionAttributeKey.Mode);
+                        foreach(var t in tr.value)
+                        {
+                            statusList.Add(t);
+                        }
+                        LoadEditDialog_FunctionPar(sceneStatus, btnFunctionText,statusList);
                         break;
-                    case "fan":
-                        LoadEditDialog_FunctionPar(trait, btnFunctionText);
+                    case FunctionAttributeKey.FanSpeed:
+                        var fanStatusList = new List<string>();
+                        var tr1 = sceneFunction.localFunction.attributes.Find((obj) => obj.key == FunctionAttributeKey.FanSpeed);
+                        foreach (var t in tr1.value)
+                        {
+                            fanStatusList.Add(t);
+                        }
+                        LoadEditDialog_FunctionPar(sceneStatus, btnFunctionText, fanStatusList);
                         break;
-                    case "set_temp":
-                        LoadEditDialog_Temp(trait, btnFunctionText);
+                    case FunctionAttributeKey.SetTemp:
+                        LoadEditDialog_Temp(sceneStatus, btnFunctionText);
                         break;
                     case "delay":
                         break;
                     case "cct":
                         break;
-                    //case "fade_time":
-                    case "percent":
-                        LoadEditDialog_Percent(trait, btnFunctionText);
+                    case FunctionAttributeKey.Percent:
+                        LoadEditDialog_Percent(sceneStatus, btnFunctionText);
                         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":
                 }
-                //LoadEditDialog_Temp(trait, btnFunctionText);
             };
 
             #endregion
@@ -286,7 +304,7 @@
         /// </summary>
         /// <param name="function"></param>
         /// <param name="btn"></param>
-        void LoadEditDialog_OnOff(FunctionAttributes trait, Button btn)
+        void LoadEditDialog_OnOff(SceneFunctionStatus trait, Button btn)
         {
             Dialog dialog = new Dialog();
 
@@ -324,7 +342,7 @@
                 SelectedTextColor = CSS_Color.MainColor,
                 TextSize = CSS_FontSize.SubheadingFontSize,
                 TextID = StringId.On,
-                IsSelected = trait.curValue.ToString() == "on"
+                IsSelected = trait.value.ToString() == "on"
             };
             optionView.AddChidren(btnOn);
 
@@ -338,7 +356,7 @@
                 SelectedTextColor = CSS_Color.MainColor,
                 TextSize = CSS_FontSize.SubheadingFontSize,
                 TextID = StringId.OFF,
-                IsSelected = trait.curValue.ToString() == "off"
+                IsSelected = trait.value.ToString() == "off"
             };
             optionView.AddChidren(btnOff);
 
@@ -367,15 +385,15 @@
             };
             btnOn.MouseUpEventHandler = (sender, e) => {
                 dialog.Close();
-                trait.curValue = "on";
+                trait.value = "on";
                 sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.OnOff).value = "on";
-                btn.Text = trait.GetCurValueText() + trait.uintString;
+                btn.Text = FunctionList.List.GetValueText(trait.key, trait.value) + FunctionList.List.GetUintString(trait.key);
             };
             btnOff.MouseUpEventHandler = (sender,e) =>{
                 dialog.Close();
-                trait.curValue = "off";
+                trait.value = "off";
                 sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.OnOff).value = "off";
-                btn.Text= trait.GetCurValueText() + trait.uintString;
+                btn.Text= FunctionList.List.GetValueText(trait.key,trait.value) + FunctionList.List.GetUintString(trait.key);
             };
 
         }
@@ -385,7 +403,7 @@
         /// </summary>
         /// <param name="function"></param>
         /// <param name="btn"></param>
-        void LoadEditDialog_Temp(FunctionAttributes trait, Button btn)
+        void LoadEditDialog_Temp(SceneFunctionStatus trait, Button btn)
         {
             List<string> pickerItems = new List<string>();
             if(trait == null)
@@ -452,33 +470,14 @@
                 Height = Application.GetRealHeight(210),
                 Radius = (uint)Application.GetRealWidth(12),
             };
-            if(trait!=null)
+            for (int i = 16; i <= 32; i += 1)
             {
-                if (trait.data_type == "float")
-                {
-                    for (double i = trait.min; i <= trait.max; i += 0.5)
-                    {
-                        pickerItems.Add(i.ToString() + trait.uintString);
-                    }
-                }
-                else
-                {
-                    for (int i = trait.min; i <= trait.max; i += 1)
-                    {
-                        pickerItems.Add(i.ToString() + trait.uintString);
-                    }
-                }
-            }else
-            {
-                for (int i = 16; i <= 32; i += 1)
-                {
-                    pickerItems.Add(i.ToString() + trait.uintString);
-                }
+                pickerItems.Add(i.ToString() + FunctionList.List.GetUintString(trait.key));
             }
             uIPickerView.setNPicker(pickerItems, null, null);
             optionBaseView.AddChidren(uIPickerView);
-            uIPickerView.setCurrentItems(pickerItems.IndexOf(trait.curValue.ToString()), 4, 5);
-            string selectItem = trait.curValue.ToString() + trait.uintString;
+            uIPickerView.setCurrentItems(pickerItems.IndexOf(trait.value.ToString()), 4, 5);
+            string selectItem = trait.value.ToString() + FunctionList.List.GetUintString(trait.key);
 
             dialog.Show();
 
@@ -495,19 +494,18 @@
             btnConfrim.MouseUpEventHandler = (sender, e) => {
                 dialog.Close();
                 btn.Text = selectItem;
-                sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.OnOff).value = trait.curValue.ToString() ;
-                trait.curValue = selectItem.Replace(trait.uintString,"");
+                //sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.OnOff).value = trait.value.ToString() ;
+                trait.value = selectItem.Replace(FunctionList.List.GetUintString(trait.key),"");
             };
 
         }
-
 
         /// <summary>
         /// 鍔犺浇浜害閫夋嫨寮圭獥
         /// </summary>
         /// <param name="function"></param>
         /// <param name="btn"></param>
-        void LoadEditDialog_Percent(FunctionAttributes trait, Button btn)
+        void LoadEditDialog_Percent(SceneFunctionStatus trait, Button btn)
         {
             if (trait == null)
             {
@@ -546,13 +544,12 @@
             optionBaseView.AddChidren(topView);
             topView.AddChidren(new Button() { Y = Application.GetRealHeight(39), Height = Application.GetRealHeight(1), BackgroundColor = CSS_Color.DividingLineColor });
 
-
             var btnTitle = new Button()
             {
                 Gravity = Gravity.CenterHorizontal,
                 TextAlignment = TextAlignment.Center,
                 Width = Application.GetRealWidth(100),
-                Text = trait.name_text,
+                Text = FunctionList.List.GetNameText(trait.key),
                 IsBold = true,
                 TextColor = CSS_Color.FirstLevelTitleColor,
                 TextSize = CSS_FontSize.SubheadingFontSize,
@@ -580,8 +577,6 @@
             };
             topView.AddChidren(btnConfrim);
 
-
-
             Button btnMinusSignIcon = new Button()
             {
                 X = Application.GetRealWidth(26),
@@ -605,7 +600,7 @@
                 ProgressTextColor = CSS_Color.FirstLevelTitleColor,
                 ProgressTextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                 MaxValue = 100,
-                Progress = trait.curValue.ToString().Replace("{}", "") == "" ? 0 : Convert.ToInt32( trait.curValue),
+                Progress = trait.value.ToString().Replace("{}", "") == "" ? 0 : Convert.ToInt32( trait.value.Replace("{}","")),
                 SeekBarPadding = Application.GetRealWidth(20),
             };
             optionBaseView.AddChidren(controlBar);
@@ -627,7 +622,6 @@
                 controlBar.Progress++;
             };
 
-
             dialog.Show();
             pView.MouseUpEventHandler = (sender, e) => {
                 dialog.Close();
@@ -638,9 +632,17 @@
             };
             btnConfrim.MouseUpEventHandler = (sender, e) => {
                 dialog.Close();
-                trait.curValue = controlBar.Progress;
-                sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.OnOff).value = trait.curValue.ToString() ;
-                btn.Text = trait.curValue + trait.uintString;
+                trait.value = controlBar.Progress.ToString();
+                btn.Text = trait.value + FunctionList.List.GetUintString(trait.key);
+                if (controlBar.Progress > 0)
+                {
+                    var temp = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.OnOff);
+                    if (temp != null)
+                    {
+                        temp.value = "on";
+                        btnOnText.Text = FunctionList.List.GetValueText(temp.key, temp.value);
+                    }
+                }
             };
         }
 
@@ -649,7 +651,7 @@
         /// <summary>
         /// 鍔犺浇鍔熻兘灞炴�ф暟鎹�夋嫨寮圭獥
         /// </summary>
-        void LoadEditDialog_FunctionPar(FunctionAttributes trait, Button btn)
+        void LoadEditDialog_FunctionPar(SceneFunctionStatus trait, Button btn,List<string> statusList)
         {
             Button lastButton = new Button();
             var lastData = "";
@@ -664,10 +666,10 @@
 
             var optionBaseView = new FrameLayout()
             {
-                Y = Application.GetRealHeight(579 - 50 * trait.value.Count),
+                Y = Application.GetRealHeight(579 - 50 * statusList.Count),
                 Gravity = Gravity.CenterHorizontal,
                 Width = Application.GetRealWidth(343),
-                Height = Application.GetRealHeight(50 * trait.value.Count + 50),
+                Height = Application.GetRealHeight(50 * statusList.Count + 50),
                 AnimateSpeed = 0.3f,
                 Animate = Animate.DownToUp,
                 BackgroundColor = CSS_Color.MainBackgroundColor,
@@ -690,7 +692,7 @@
                 Gravity = Gravity.CenterHorizontal,
                 TextAlignment = TextAlignment.Center,
                 Width = Application.GetRealWidth(100),
-                Text = trait.name_text,
+                Text = FunctionList.List.GetNameText(trait.key),
                 IsBold = true,
                 TextColor = CSS_Color.FirstLevelTitleColor,
                 TextSize = CSS_FontSize.SubheadingFontSize,
@@ -718,7 +720,7 @@
             };
             topView.AddChidren(btnConfrim);
             int hei = 1;
-            foreach (var m in trait.value)
+            foreach (var m in statusList)
             {
                 var row = new FrameLayout()
                 {
@@ -726,7 +728,7 @@
                     Height = Application.GetRealHeight(50),
                 };
                 optionBaseView.AddChidren(row);
-                if (trait.value.Count > hei)
+                if (statusList.Count > hei)
                 {
                     optionBaseView.AddChidren(new Button()
                     {
@@ -750,7 +752,7 @@
 
                 };
                 row.AddChidren(btnChoose);
-                if (trait.curValue.ToString() == m)
+                if (trait.value == m)
                 {
                     lastButton = btnChoose;
                     btnChoose.IsSelected = true;
@@ -762,7 +764,7 @@
                     TextColor = CSS_Color.FirstLevelTitleColor,
                     TextSize = CSS_FontSize.TextFontSize,
                     Tag = m,
-                    Text = trait.GetValueText(m)
+                    Text = FunctionList.List.GetValueText(trait.key, m)
                 };
                 row.AddChidren(btnPropertyTitle);
 
@@ -792,8 +794,8 @@
             };
             btnConfrim.MouseUpEventHandler = (sender, e) => {
                 dialog.Close();
-                trait.curValue = lastData;
-                sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.OnOff).value = trait.curValue.ToString() ;
+                trait.value = lastData;
+                //sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.OnOff).value = trait.curValue.ToString() ;
                 btn.Text = lastText;
             };
 

--
Gitblit v1.8.0