From 5d6626e390f7bccbbfbc0df1e95f8fb86a53af58 Mon Sep 17 00:00:00 2001
From: JLChen <551775569@qq.com>
Date: 星期二, 15 十二月 2020 18:25:47 +0800
Subject: [PATCH] Merge branch 'NewFilePath' into CJL

---
 HDL_ON/UI/UI2/3-Intelligence/Scene/SceneAddPage.cs | 1036 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 1,036 insertions(+), 0 deletions(-)

diff --git a/HDL_ON/UI/UI2/3-Intelligence/Scene/SceneAddPage.cs b/HDL_ON/UI/UI2/3-Intelligence/Scene/SceneAddPage.cs
new file mode 100644
index 0000000..8651933
--- /dev/null
+++ b/HDL_ON/UI/UI2/3-Intelligence/Scene/SceneAddPage.cs
@@ -0,0 +1,1036 @@
+锘縰sing System;
+using HDL_ON.UI.CSS;
+using Shared;
+using HDL_ON.Entity;
+using System.Collections.Generic;
+using System.Threading;
+using HDL_ON.DAL.Server;
+
+namespace HDL_ON.UI
+{
+    public  partial class SceneAddPage : FrameLayout
+    {
+        FrameLayout bodyView;
+        /// <summary>
+        /// 鍦烘櫙鑳屾櫙鏄剧ず鍖哄煙
+        /// </summary>
+        ImageView addSceneImageView;
+        /// <summary>
+        /// 鍦烘櫙鍔熻兘鍒楄〃鏄剧ず鍖哄煙
+        /// </summary>
+        VerticalScrolViewLayout functionListView;
+        /// <summary>
+        /// 鍦烘櫙鍚嶇Оrow
+        /// </summary>
+        FrameLayout sceneNameView;
+
+        /// <summary>
+        /// 鍦烘櫙鍚嶇О鏄剧ず鏂囨湰
+        /// </summary>
+        Button btnSceneName;
+        /// <summary>
+        /// 鍦烘櫙鍚嶇О淇敼鍥炬爣
+        /// </summary>
+        Button btnEditSceneNameIcon;
+
+        /// <summary>
+        /// 鎵�灞炲尯鍩焤ow
+        /// </summary>
+        FrameLayout belongToZoneRow;
+        Button btnBelongToZoneRight;
+        Button btnZoneName;
+
+        Button btnAddFunctionTitle;
+        /// <summary>
+        /// 搴曢儴瀹屾垚鎸夐挳
+        /// </summary>
+        Button btnComplete;
+
+
+        #region 鍥炬爣閫夋嫨閮ㄥ垎鍥炬爣
+        /// <summary>
+        /// 鑳屾櫙鍥鹃�夐」鍖哄煙
+        /// </summary>
+        FrameLayout pictureOptionView;
+        /// <summary>
+        /// 鑳屾櫙鍥鹃�夐」閫夋嫨鍖哄煙
+        /// </summary>
+        VerticalScrolViewLayout optionView;
+        /// <summary>
+        /// 榛樿鍥惧簱鎸夐挳
+        /// </summary>
+        Button btnDefaultGallery;
+        /// <summary>
+        /// 鎷嶇収鎸夐挳
+        /// </summary>
+        Button btnTakePicture;
+        /// <summary>
+        /// 鐩稿唽鎸夐挳
+        /// </summary>
+        Button btnAlbum;
+        /// <summary>
+        /// 鍙栨秷鎸夐挳
+        /// </summary>
+        Button btnCancel;
+        #endregion
+
+        Scene scene;
+
+        /// <summary>
+        /// 鏇存柊鍔熻兘row
+        /// </summary>
+        Action refreshFunctionRowAction;
+        /// <summary>
+        /// 鍥炴帀鏇存柊
+        /// </summary>
+        Action backAction;
+        public SceneAddPage(Scene s, Action act)
+        {
+            bodyView = this;
+            scene = s;
+            backAction = act;
+
+            refreshFunctionRowAction = () => {
+                LoadFunctionRow(functionListView);
+            };
+        }
+
+        public void LoadPage()
+        {
+            new TopViewDiv(bodyView, Language.StringByID(StringId.NewScene)).LoadTopView();
+     
+            bodyView.BackgroundColor = CSS_Color.MainBackgroundColor;
+
+            var contentView = new VerticalScrolViewLayout()
+            {
+                Y = Application.GetRealHeight(64),
+                Height = Application.GetRealHeight(603 - 50),
+            };
+            bodyView.AddChidren(contentView);
+            contentView.AddChidren(new Button() { Height = Application.GetRealWidth(12) });
+
+            var sceneBgView = new FrameLayout()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Width = Application.GetRealWidth(252),
+                Height = Application.GetRealWidth(188 + 24),
+                Radius = (uint)Application.GetRealWidth(12),
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+            };
+            contentView.AddChidren(sceneBgView);
+
+            addSceneImageView = new ImageView()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Height = Application.GetRealWidth(184),
+                Radius = (uint)Application.GetRealWidth(12),
+                //ImagePath = scene.ImagePath
+            };
+            sceneBgView.AddChidren(addSceneImageView);
+
+            //2020-12-03 淇敼鍥剧墖鍔犺浇鏂规硶
+            ImageUtlis.Current.LoadLocalOrNetworkImages(scene.ImagePath, addSceneImageView);
+
+            #region 鍦烘櫙鍚嶇Оrow
+            sceneNameView = new FrameLayout()
+            {
+                Height = Application.GetRealWidth(50),
+            };
+            contentView.AddChidren(sceneNameView);
+
+            Button btnSceneTitle = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                Width = Application.GetRealWidth(90),
+                TextAlignment = TextAlignment.CenterLeft,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = CSS_FontSize.TextFontSize,
+                TextID = StringId.SceneName,
+            };
+            sceneNameView.AddChidren(btnSceneTitle);
+
+            btnEditSceneNameIcon = new Button()
+            {
+                X = Application.GetRealWidth(333),
+                Gravity = Gravity.CenterVertical,
+                Width = Application.GetMinRealAverage(28),
+                Height = Application.GetMinRealAverage(28),
+                UnSelectedImagePath = "Public/EditIcon.png",
+            };
+            sceneNameView.AddChidren(btnEditSceneNameIcon);
+
+            btnSceneName = new Button()
+            {
+                X = Application.GetRealWidth(100),
+                Width = Application.GetRealWidth(230),
+                TextAlignment = TextAlignment.CenterRight,
+                TextColor = CSS_Color.PromptingColor1,
+                TextSize = CSS_FontSize.TextFontSize,
+                Text = scene.name
+            };
+            sceneNameView.AddChidren(btnSceneName);
+
+            Button btnSceneNameLine = new Button()
+            {
+                Y = Application.GetRealWidth(49),
+                Gravity = Gravity.CenterHorizontal,
+                Height = Application.GetRealHeight(1),
+                Width = Application.GetRealWidth(343),
+                BackgroundColor = CSS_Color.DividingLineColor,
+            };
+            sceneNameView.AddChidren(btnSceneNameLine);
+            #endregion
+
+            #region 鎵�灞炲尯鍩焤ow
+            belongToZoneRow = new FrameLayout()
+            {
+                Y = sceneNameView.Bottom,
+                Height = Application.GetRealWidth(50),
+            };
+            contentView.AddChidren(belongToZoneRow);
+
+            Button btnBelongToTitle = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                Width = Application.GetRealWidth(90),
+                TextAlignment = TextAlignment.CenterLeft,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = CSS_FontSize.TextFontSize,
+                TextID = StringId.BelongToZone,
+            };
+            belongToZoneRow.AddChidren(btnBelongToTitle);
+
+            btnBelongToZoneRight = new Button()
+            {
+                X = Application.GetRealWidth(339),
+                Gravity = Gravity.CenterVertical,
+                Width = Application.GetMinRealAverage(16),
+                Height = Application.GetMinRealAverage(16),
+                UnSelectedImagePath = "Public/Right.png",
+            };
+            belongToZoneRow.AddChidren(btnBelongToZoneRight);
+
+            btnZoneName = new Button()
+            {
+                X = Application.GetRealWidth(100),
+                Width = Application.GetRealWidth(230),
+                TextAlignment = TextAlignment.CenterRight,
+                TextColor = CSS_Color.PromptingColor1,
+                TextSize = CSS_FontSize.TextFontSize,
+                Text = scene.GetRoomListName() == "" ? Language.StringByID(StringId.WholeHouseScene) : scene.GetRoomListName()
+            };
+            belongToZoneRow.AddChidren(btnZoneName);
+
+            contentView.AddChidren(new Button()
+            {
+                Y = belongToZoneRow.Bottom,
+                Height = Application.GetRealHeight(8),
+                BackgroundColor = CSS_Color.DividingLineColor,
+            });
+            #endregion
+
+            #region 鍦烘櫙寤舵椂row
+            if (DB_ResidenceData.Instance.GatewayType == 1)
+            {
+                FrameLayout sceneDelayRow = new FrameLayout()
+                {
+                    Y = sceneNameView.Bottom,
+                    Height = Application.GetRealWidth(50),
+                };
+                contentView.AddChidren(sceneDelayRow);
+
+                Button btnSceneDelayRight = new Button()
+                {
+                    X = Application.GetRealWidth(339),
+                    Gravity = Gravity.CenterVertical,
+                    Width = Application.GetMinRealAverage(16),
+                    Height = Application.GetMinRealAverage(16),
+                    UnSelectedImagePath = "Public/Right.png",
+                };
+                sceneDelayRow.AddChidren(btnSceneDelayRight);
+
+                var btnSceneDelayInfo = new Button()
+                {
+                    Width = Application.GetRealWidth(327),
+                    TextAlignment = TextAlignment.CenterRight,
+                    TextColor = CSS_Color.PromptingColor1,
+                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                    Text = scene.delayText
+                };
+                sceneDelayRow.AddChidren(btnSceneDelayInfo);
+
+                Button btnSceneDelayTitle = new Button()
+                {
+                    X = Application.GetRealWidth(16),
+                    //Width = Application.GetRealWidth(90),
+                    TextAlignment = TextAlignment.CenterLeft,
+                    TextColor = CSS_Color.FirstLevelTitleColor,
+                    TextSize = CSS_FontSize.TextFontSize,
+                    TextID = StringId.SceneDelay,
+                };
+                sceneDelayRow.AddChidren(btnSceneDelayTitle);
+
+
+                btnSceneDelayTitle.MouseUpEventHandler = (sender, e) =>
+                {
+                    new PublicAssmebly().SetSceneDelayDialog(scene, btnSceneDelayInfo);
+                };
+
+                contentView.AddChidren(new Button()
+                {
+                    Y = sceneDelayRow.Bottom,
+                    Height = Application.GetRealHeight(8),
+                    BackgroundColor = CSS_Color.DividingLineColor,
+                });
+            }
+            #endregion
+
+            #region 娣诲姞鍔熻兘row
+            FrameLayout addFunctionRow = new FrameLayout()
+            {
+                Height = Application.GetRealWidth(44),
+            };
+            contentView.AddChidren(addFunctionRow);
+
+            Button btnAddIcon = new Button()
+            {
+                X = Application.GetRealWidth(333),
+                Gravity = Gravity.CenterVertical,
+                Width = Application.GetMinRealAverage(28),
+                Height = Application.GetMinRealAverage(28),
+                UnSelectedImagePath = "Public/AddIcon.png",
+            };
+            addFunctionRow.AddChidren(btnAddIcon);
+
+            btnAddFunctionTitle = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                TextAlignment = TextAlignment.CenterLeft,
+                TextColor = CSS_Color.MainColor,
+                TextSize = CSS_FontSize.SubheadingFontSize,
+                TextID = StringId.AddFunction,
+                IsBold = true,
+            };
+            addFunctionRow.AddChidren(btnAddFunctionTitle);
+
+            functionListView = new VerticalScrolViewLayout()
+            {
+                Height = 0,
+            };
+            contentView.AddChidren(functionListView);
+
+            LoadFunctionRow(functionListView);
+
+            Button btnLine1 = new Button()
+            {
+                //Y = sceneDelayRow.Bottom,
+                Height = Application.GetRealHeight(8),
+                BackgroundColor = CSS_Color.DividingLineColor,
+            };
+            contentView.AddChidren(btnLine1);
+
+            Button btnLine2 = new Button()
+            {
+                //Y = sceneDelayRow.Bottom,
+                Height = Application.GetRealHeight(228),
+                BackgroundColor = CSS_Color.DividingLineColor,
+            };
+            contentView.AddChidren(btnLine2);
+            #endregion
+
+            Button btnBottomLine = new Button()
+            {
+                Y = Application.GetRealHeight(667 - 50) - 1,
+                Height = 1,
+                BackgroundColor = CSS_Color.DividingLineColor,
+            };
+            bodyView.AddChidren(btnBottomLine);
+
+            btnComplete = new Button()
+            {
+                Y = Application.GetRealHeight(667 - 50),
+                Height = Application.GetRealHeight(50),
+                TextAlignment = TextAlignment.Center,
+                TextColor =  CSS_Color.MainColor,
+                TextSize = CSS_FontSize.SubheadingFontSize,
+                TextID = StringId.Complete,
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+                //IsBold = true
+            };
+            bodyView.AddChidren(btnComplete);
+
+            LoadEventList();
+        }
+        /// <summary>
+        /// 鍔犺浇鍔熻兘鍒楄〃
+        /// </summary>
+        void LoadFunctionRow(VerticalScrolViewLayout functionListView)
+        {
+            functionListView.RemoveAll();
+            functionListView.Height = Application.GetRealWidth(65 * scene.functions.Count);
+            foreach (var scenefunction in scene.functions)
+            {
+                var row = new RowLayout()
+                {
+                    Height = Application.GetRealWidth(65),
+                    BackgroundColor = CSS_Color.MainBackgroundColor,
+                    LineColor = 0x00000000
+                };
+                functionListView.AddChidren(row);
+
+                row.AddChidren(new Button()
+                {
+                    Gravity = Gravity.CenterHorizontal,
+                    Width = Application.GetRealWidth(343),
+                    Height = Application.GetRealWidth(1),
+                    BackgroundColor = CSS_Color.DividingLineColor,
+                });
+                Button btnRight = new Button()
+                {
+                    X = Application.GetRealWidth(339),
+                    Gravity = Gravity.CenterVertical,
+                    Width = Application.GetMinRealAverage(16),
+                    Height = Application.GetMinRealAverage(16),
+                    UnSelectedImagePath = "Public/Right.png",
+                };
+                row.AddChidren(btnRight);
+
+                var btnFunctionInfo = new Button()
+                {
+                    Width = Application.GetRealWidth(327),
+                    Height = Application.GetRealWidth(32),
+                    TextAlignment = TextAlignment.BottomRight,
+                    TextColor = CSS_Color.FirstLevelTitleColor,
+                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                    Text = GetFunctionScnenInfo(scenefunction),
+                };
+                row.AddChidren(btnFunctionInfo);
+
+                var btnFunctionDelayInfo = new Button()
+                {
+                    Width = Application.GetRealWidth(327),
+                    Y = Application.GetRealWidth(35),
+                    Height = Application.GetRealWidth(32),
+                    TextAlignment = TextAlignment.TopRight,
+                    TextColor = CSS_Color.PromptingColor1,
+                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                };
+                row.AddChidren(btnFunctionDelayInfo);
+
+                if (Convert.ToInt32(scenefunction.delay) > 0)
+                {
+                    btnFunctionDelayInfo.Text = Language.StringByID(StringId.Delay) + " " + scenefunction.localFunction.delayText;
+                }
+                else
+                {
+                    btnFunctionDelayInfo.Text = Language.StringByID(StringId.NoDelay);
+                }
+
+                var btnFunctionName = new Button()
+                {
+                    X = Application.GetRealWidth(16),
+                    Height = Application.GetRealWidth(44),
+                    TextAlignment = TextAlignment.CenterLeft,
+                    TextColor = CSS_Color.FirstLevelTitleColor,
+                    TextSize = CSS_FontSize.TextFontSize,
+                    Text = scenefunction.localFunction.name,
+                };
+                row.AddChidren(btnFunctionName);
+
+                var btnFunctionFloorAndRoom = new Button()
+                {
+                    X = Application.GetRealWidth(16),
+                    Y = Application.GetRealWidth(24),
+                    Height = Application.GetRealWidth(41),
+                    TextAlignment = TextAlignment.CenterLeft,
+                    TextColor = CSS_Color.PromptingColor1,
+                    TextSize = CSS_FontSize.TextFontSize,
+                    Text = scenefunction.localFunction.GetRoomListName(),
+                };
+                row.AddChidren(btnFunctionFloorAndRoom);
+
+                btnFunctionName.MouseUpEventHandler = (sender, e) =>
+                {
+                    var ssf = new SceneFunctionInfoEditPage(scene, scenefunction, refreshFunctionRowAction);
+                    MainPage.BasePageView.AddChidren(ssf);
+                    ssf.LoadPage();
+                    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                };
+                btnFunctionFloorAndRoom.MouseUpEventHandler = (sender, e) =>
+                {
+                    var ssf = new SceneFunctionInfoEditPage(scene, scenefunction, refreshFunctionRowAction);
+                    MainPage.BasePageView.AddChidren(ssf);
+                    ssf.LoadPage();
+                    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                };
+
+                Button btnDelSceneFunction = new Button()
+                {
+                    BackgroundColor = CSS_Color.WarningColor,
+                    TextColor = CSS_Color.MainBackgroundColor,
+                    TextID = StringId.Del,
+                };
+                row.AddRightView(btnDelSceneFunction);
+                btnDelSceneFunction.MouseUpEventHandler = (sender, e) => {
+                    scene.functions.Remove(scenefunction);
+                    scene.SaveSceneData(true);
+                    row.RemoveFromParent();
+                    functionListView.Height = Application.GetRealWidth(65 * scene.functions.Count);
+                };
+            }
+        }
+
+        /// <summary>
+        /// 瑙f瀽鍦烘櫙鍔熻兘鏁版嵁
+        /// </summary>
+        /// <param name="sceneFunction"></param>
+        string GetFunctionScnenInfo(SceneFunction sceneFunction)
+        {
+            var sceneFunctionInfo = "";
+            foreach (var sfs in sceneFunction.status)
+            {
+                if (sfs.key == FunctionAttributeKey.OnOff)
+                {
+                    if (sfs.value == "off")
+                        return Language.StringByID(StringId.Close);
+                }
+            }
+
+            if (sceneFunction.status.Count == 0)
+            {
+                return sceneFunctionInfo += Language.StringByID(StringId.Open);
+            }
+
+            var modeState = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Mode);
+            var tempState = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.SetTemp);
+            var fanState = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.FanSpeed);
+            if (modeState != null)
+            {
+                sceneFunctionInfo += FunctionList.List.GetValueText(modeState.key, modeState.value);
+            }
+            if (tempState != null)
+            {
+                sceneFunctionInfo += FunctionList.List.GetValueText(tempState.key, tempState.value);
+                sceneFunctionInfo += FunctionList.List.GetUintString(tempState.key);
+            }
+            if (fanState != null)
+            {
+                sceneFunctionInfo += FunctionList.List.GetValueText(fanState.key, fanState.value);
+            }
+            var briState = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Brightness);
+            if (briState != null)
+            {
+                sceneFunctionInfo += Language.StringByID(StringId.Open) + " " + sceneFunction.localFunction.attributes.Find((obj) => obj.key == "brightness").curValue.ToString() + "%";
+            }
+            else
+            {
+                sceneFunctionInfo += Language.StringByID(StringId.Open);
+            }
+            var perState = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Percent);
+            if (perState != null)
+            {
+                sceneFunctionInfo += Language.StringByID(StringId.Open) + " " + sceneFunction.localFunction.attributes.Find((obj) => obj.key == "brightness").curValue.ToString() + "%";
+            }
+            else
+            {
+                sceneFunctionInfo += Language.StringByID(StringId.Open);
+            }
+
+            //FunctionAttributes perTrait;
+
+            //switch (sceneFunction.localFunction.functionType)
+            //{
+                //case FunctionType.AC:
+                    //var acMode = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Mode);
+                    //var acTemp = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.SetTemp);
+                    //var acFan = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.FanSpeed);
+                    //if (acMode != null)
+                    //{
+                    //    sceneFunctionInfo += FunctionList.List.GetValueText(acMode.key, acMode.value);
+                    //}
+                    //if (acTemp != null)
+                    //{
+                    //    sceneFunctionInfo += FunctionList.List.GetValueText(acTemp.key, acTemp.value);
+                    //    sceneFunctionInfo += FunctionList.List.GetUintString(acTemp.key);
+                    //}
+                    //if (acFan!=null)
+                    //{
+                    //    sceneFunctionInfo += FunctionList.List.GetValueText(acFan.key, acFan.value);
+                    //}
+                //    break;
+                //case FunctionType.FloorHeating:
+                    //sceneFunctionInfo += sceneFunction.localFunction.attributes.Find((obj) => obj.key == "mode").GetCurValueText();
+                    //sceneFunctionInfo += " " + sceneFunction.localFunction.attributes.Find((obj) => obj.key == "set_temp").curValue.ToString() +
+                    //     sceneFunction.localFunction.attributes.Find((obj) => obj.key == "set_temp").uintString;
+                    //break;
+                //case FunctionType.Dimmer:
+                    //perTrait = sceneFunction.localFunction.attributes.Find((obj) => obj.key == "brightness");
+                    //if (perTrait != null)
+                    //{
+                    //    sceneFunctionInfo += Language.StringByID(StringId.Open) + " " + sceneFunction.localFunction.attributes.Find((obj) => obj.key == "brightness").curValue.ToString() + "%";
+                    //}
+                    //else
+                    //{
+                    //    sceneFunctionInfo += Language.StringByID(StringId.Open);
+                    //}
+                    //break;
+                //case FunctionType.Relay:
+                //    sceneFunctionInfo += Language.StringByID(StringId.Open);
+                //    break;
+                //case FunctionType.RGB:
+                //    perTrait = sceneFunction.localFunction.attributes.Find((obj) => obj.key == "percent");
+                //    if (perTrait != null)
+                //    {
+                //        sceneFunctionInfo += Language.StringByID(StringId.Open) + " " + sceneFunction.localFunction.attributes.Find((obj) => obj.key == "brightness").curValue.ToString() + "%";
+                //    }
+                //    else
+                //    {
+                //        sceneFunctionInfo += Language.StringByID(StringId.Open);
+                //    }
+                //    break;
+                //case FunctionType.Curtain:
+                //    sceneFunctionInfo += Language.StringByID(StringId.Open);
+                //    break;
+                //case FunctionType.MotorCurtain:
+                //    perTrait = sceneFunction.localFunction.attributes.Find((obj) => obj.key == "percent");
+                //    if (perTrait != null)
+                //    {
+                //        sceneFunctionInfo += Language.StringByID(StringId.Open) + " " + sceneFunction.localFunction.attributes.Find((obj) => obj.key == "percent").curValue.ToString() + "%";
+                //    }
+                //    else
+                //    {
+                //        sceneFunctionInfo += Language.StringByID(StringId.Open);
+                //    }
+                //    break;
+            //}
+            return sceneFunctionInfo;
+        }
+
+        /// <summary>
+        /// 鍔犺浇鍥炬爣閫夋嫨閫夐」
+        /// </summary>
+        void LoadPictureOptionView()
+        {
+            var pView = new FrameLayout()
+            {
+                BackgroundColor = CSS_Color.DialogTransparentColor1,
+            };
+            bodyView.AddChidren(pView);
+
+            pictureOptionView = new FrameLayout()
+            {
+                Y = Application.GetRealHeight(445),
+                Height = Application.GetRealHeight(250),
+                AnimateSpeed = 0.3f,
+                Animate = Animate.DownToUp,
+            };
+            pView.AddChidren(pictureOptionView);
+
+            optionView = new VerticalScrolViewLayout()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Width = Application.GetRealWidth(343),
+                Height = Application.GetRealHeight(150),
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+                Radius = (uint)Application.GetRealWidth(12),
+            };
+            pictureOptionView.AddChidren(optionView);
+
+            btnDefaultGallery = new Button()
+            {
+                Height = Application.GetRealHeight(50),
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS_Color.TextualColor,
+                SelectedTextColor = CSS_Color.MainColor,
+                TextSize = CSS_FontSize.SubheadingFontSize,
+                TextID = StringId.DefaultGallery,
+            };
+            optionView.AddChidren(btnDefaultGallery);
+
+            optionView.AddChidren(new Button() { Height = Application.GetRealHeight(1), Width = Application.GetRealWidth(343), BackgroundColor = CSS_Color.DividingLineColor });
+
+            btnTakePicture = new Button()
+            {
+                Height = Application.GetRealHeight(50),
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS_Color.TextualColor,
+                SelectedTextColor = CSS_Color.MainColor,
+                TextSize = CSS_FontSize.SubheadingFontSize,
+                TextID = StringId.TakePicture,
+            };
+            optionView.AddChidren(btnTakePicture);
+
+            optionView.AddChidren(new Button() { Height = Application.GetRealHeight(1), Width = Application.GetRealWidth(343), BackgroundColor = CSS_Color.DividingLineColor });
+
+            btnAlbum = new Button()
+            {
+                Height = Application.GetRealHeight(50),
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS_Color.TextualColor,
+                SelectedTextColor = CSS_Color.MainColor,
+                TextSize = CSS_FontSize.SubheadingFontSize,
+                TextID = StringId.Album,
+            };
+            optionView.AddChidren(btnAlbum);
+
+            optionView.AddChidren(new Button() { Height = Application.GetRealHeight(1), Width = Application.GetRealWidth(343), BackgroundColor = CSS_Color.DividingLineColor });
+
+            btnCancel = new Button()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealHeight(8) + optionView.Bottom,
+                Width = Application.GetRealWidth(343),
+                Height = Application.GetRealHeight(50),
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+                Radius = (uint)Application.GetRealWidth(12),
+                TextID = StringId.Cancel,
+                TextColor = CSS_Color.WarningColor,
+                TextSize = CSS_FontSize.SubheadingFontSize,
+            };
+            pictureOptionView.AddChidren(btnCancel);
+
+
+            LoadEvent_PictureOptionViewEventList(pView);
+        }
+
+
+    }
+    //--------------------------------------
+    public partial class SceneAddPage
+    {
+        void LoadEventList()
+        {
+            LoadEvent_ChangeSceneImage();
+            LoadEvent_ChangeSceneZone();
+            LoadEvent_ChangeFunctionList();
+            LoadEvent_CompleteEvent();
+            LoadEvent_EditRoomName();
+        }
+
+        /// <summary>
+        /// 淇敼鍦烘櫙鎵�灞炲尯鍩�
+        /// </summary>
+        void LoadEvent_ChangeSceneZone()
+        {
+            EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
+            {
+                Action backAction = () => {
+                    btnZoneName.Text = scene.GetRoomListName();
+                };
+                var ssl = new SetSceneLocationPage(scene, backAction);
+                MainPage.BasePageView.AddChidren(ssl);
+                ssl.LoadPage();
+                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+            };
+            btnZoneName.MouseUpEventHandler = eventHandler;
+            belongToZoneRow.MouseUpEventHandler = eventHandler;
+            btnBelongToZoneRight.MouseUpEventHandler = eventHandler;
+
+        }
+
+        /// <summary>
+        /// 淇敼鍦烘櫙鐨勫姛鑳藉垪琛�
+        /// </summary>
+        void LoadEvent_ChangeFunctionList()
+        {
+            btnAddFunctionTitle.MouseUpEventHandler = (sender, e) => {
+                var sefp = new SceneFunctionListEditPage(scene, refreshFunctionRowAction);
+                MainPage.BasePageView.AddChidren(sefp);
+                sefp.LoadPage();
+                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+            };
+        }
+
+        /// <summary>
+        /// 淇敼鍦烘櫙鑳屾櫙浜嬩欢
+        /// </summary>
+        void LoadEvent_ChangeSceneImage()
+        {
+            addSceneImageView.MouseUpEventHandler = (sender, e) => {
+                LoadPictureOptionView();
+            };
+        }
+
+        /// <summary>
+        /// 鍔犺浇鑳屾櫙鍥鹃�夋嫨鍖哄煙浜嬩欢鍒楄〃
+        /// </summary>
+        void LoadEvent_PictureOptionViewEventList(FrameLayout pView)
+        {
+            pictureOptionView.MouseUpEventHandler = (sender, e) =>
+            {
+                pictureOptionView.Parent.RemoveFromParent();
+            };
+            pView.MouseUpEventHandler = (sender, e) =>
+            {
+                pictureOptionView.Parent.RemoveFromParent();
+            };
+
+            btnCancel.MouseUpEventHandler = (sender, e) =>
+            {
+                pictureOptionView.Parent.RemoveFromParent();
+            };
+            btnTakePicture.MouseDownEventHandler = (sender, e) => {
+                btnTakePicture.IsSelected = true;
+            };
+            btnTakePicture.MouseUpEventHandler = (sender, e) =>
+            {
+                btnTakePicture.IsSelected = false;
+
+                //var pid = Guid.NewGuid();
+                //CropImage.TakePicture((imagePath) =>
+                //{
+                //    if (imagePath != null)
+                //    {
+                //        addSceneImageView.ImagePath = imagePath.ToString();
+                //        scene.ImagePath = addSceneImageView.ImagePath;
+                //        MainPage.Log("SelectPicture 瑁佸壀鍥剧墖杩斿洖璺緞: " + imagePath);
+                //    }
+                //}, pid.ToString(), 4, 3);
+
+
+                var imageName = Guid.NewGuid().ToString();
+                //var imageName = scene.sid;
+                CropImage.TakePicture((imagePath) =>
+                {
+                    CropImageCallBack(imagePath);
+
+                }, imageName, 4, 3);
+
+                //if (pageTitleId == StringId.EditScene)
+                //{
+                //    scene.SaveFunctionData();
+                //}
+                pictureOptionView.Parent.RemoveFromParent();
+            };
+            btnAlbum.MouseDownEventHandler = (sender, e) => {
+                btnAlbum.IsSelected = true;
+            };
+
+            btnAlbum.MouseUpEventHandler = (sender, e) =>
+            {
+                btnAlbum.IsSelected = false;
+                //var pid = Guid.NewGuid();
+                //CropImage.SelectPicture((imagePath) =>
+                //{
+                //    if (imagePath != null)
+                //    {
+                //        addSceneImageView.ImagePath = imagePath.ToString();
+                //        scene.ImagePath = addSceneImageView.ImagePath;
+                //        MainPage.Log("SelectPicture 瑁佸壀鍥剧墖杩斿洖璺緞: " + imagePath);
+                //    }
+                //}, pid.ToString(), 4, 3);
+
+                //浠庣浉鍐岄�夋嫨鍥剧墖瑁佸壀
+                var imageName = Guid.NewGuid().ToString();
+                //var imageName = scene.sid;
+                CropImage.SelectPicture((imagePath) =>
+                {
+                    CropImageCallBack(imagePath);
+                }, imageName, 4, 3);
+
+
+                //if (pageTitleId == StringId.EditScene)
+                //{
+                //    scene.SaveFunctionData();
+                //}
+                pictureOptionView.Parent.RemoveFromParent();
+            };
+
+            btnDefaultGallery.MouseUpEventHandler = (sender, e) => {
+                pictureOptionView.Parent.RemoveFromParent();
+                Action<string> action = (obj) => {
+                    scene.ImagePath = obj;
+                    addSceneImageView.ImagePath = scene.ImagePath;
+                };
+
+                var galleryPage = new GalleryPage(scene.ImagePath, action);
+                MainPage.BasePageView.AddChidren(galleryPage);
+                galleryPage.LoadPage(true);
+                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+            };
+
+        }
+
+        /// <summary>
+        /// 瑁佸壀瀹岀収鐗囧洖璋冿紝缁熶竴澶勭悊
+        /// </summary>
+        /// <param name="imagePath">瑁佸壀鍚庣殑鐪熷疄璺緞</param>
+        /// <param name="imageName">鑷畾涔夌殑鍥剧墖鍚嶇О</param>
+        void CropImageCallBack(string selectImagePath)
+        {
+            if (string.IsNullOrEmpty(selectImagePath) == true)
+            {
+                return;
+            }
+
+            //涓婁紶鎴愬姛鍒板洖璋�
+            Action<string> uploadSuccessAction = (imageUrl) =>
+            {
+                //2020-12-03 闇�瑕佽鏈�鏂扮殑鍥剧墖璺緞鍚屾鍒颁簯绔�
+                scene.ImagePath = imageUrl;
+            };
+            //涓婁紶鍥剧墖鍒颁簯绔�
+            UploadImage(selectImagePath, addSceneImageView, scene, uploadSuccessAction);
+        }
+
+        /// <summary>
+        /// 瀹屾垚鎸夐挳鐐瑰嚮浜嬩欢
+        /// </summary>
+        void LoadEvent_CompleteEvent()
+        {
+            btnComplete.MouseUpEventHandler += (sender, e) =>
+            {
+                if (string.IsNullOrEmpty(scene.name))
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.SceneNameCannotBeEmpty),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(bodyView);
+                    return;
+                }
+                foreach (var tempRoom in FunctionList.List.scenes)
+                {
+                    if (scene.name == tempRoom.name)
+                    {
+                        new PublicAssmebly().TipMsg(StringId.Tip, StringId.SceneNameAlreadyExists);
+                        return;
+                    }
+                }
+                var result = scene.AddScene();
+                if (result == StateCode.SUCCESS)
+                {
+                    FunctionList.List.scenes.Add(scene);
+                    backAction();
+                    this.RemoveFromParent();
+                }
+                else
+                {
+                    IMessageCommon.Current.ShowErrorInfoAlter(result);
+                }
+            };
+        }
+
+
+        /// <summary>
+        /// 鍔犺浇淇敼鍦烘櫙鍚嶇О绐楀彛浜嬩欢
+        /// </summary>
+        void LoadEvent_EditRoomName()
+        {
+            Action<string> callBack = (str) =>
+            {
+                //鍚嶇О涓嶈兘涓虹┖
+                if (string.IsNullOrEmpty(str))
+                {
+                    new Tip()
+                    {
+                        CloseTime = 1,
+                        Text = Language.StringByID(StringId.SceneNameCannotBeEmpty),
+                        Direction = AMPopTipDirection.None,
+                    }.Show(bodyView);
+                    return;
+                }
+                btnSceneName.Text = str;
+                scene.name = str;
+            };
+            EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
+            {
+                List<string> sceneNameList = new List<string>();
+                foreach (var tempScene in FunctionList.List.scenes)
+                {
+                    sceneNameList.Add(tempScene.name);
+                }
+                new PublicAssmebly().LoadDialog_EditParater(StringId.SceneName, scene.name, callBack, StringId.SceneNameCannotBeEmpty, StringId.SceneNameAlreadyExists, sceneNameList);
+            };
+            sceneNameView.MouseUpEventHandler = eventHandler;
+            btnSceneName.MouseUpEventHandler = eventHandler;
+            btnEditSceneNameIcon.MouseUpEventHandler = eventHandler;
+        }
+
+        /// <summary>
+        /// 涓婁紶鍥剧墖鏂规硶
+        /// </summary>
+        /// <param name="selectImagePath">瑁佸壀鍚庣殑鍥剧墖璺緞</param>
+        /// <param name="imageView"></param>
+        /// <param name="uploadSuccessAction"></param>
+        void UploadImage(string selectImagePath, ImageView imageView, Scene mScene, Action<string> uploadSuccessAction)
+        {
+            try
+            {
+                //MainPage.Log("SelectPicture 瑁佸壀鍥剧墖杩斿洖璺緞: " + selectImagePath);
+                //1.璇诲彇瑁佸壀鍚庣殑鍥剧墖锛岀劧鍚庡垹闄�
+                var imageBytes = Shared.IO.FileUtils.ReadFile(selectImagePath);
+                System.IO.File.Delete(selectImagePath);
+
+                var waitPage = new Loading();
+                bodyView.AddChidren(waitPage);
+                waitPage.Start(Language.StringByID(StringId.PleaseWait));
+                //寮�濮嬩笂浼�
+                new Thread(() =>
+                {
+                    try
+                    {
+                        var newImageName = mScene.name.Trim() + ".png";
+                        var uploadImageObj = new UploadImageObj()
+                        {
+                            prefix = "Scene" + Utlis.GetTimestamp(),
+                            fileName = newImageName,
+                            uid = mScene.sid,
+                            content = imageBytes,
+                        };
+
+                        var imageUrl = ImageUtlis.Current.UploadImage(uploadImageObj);
+                        if (!string.IsNullOrEmpty(imageUrl) && imageUrl.Contains(newImageName))
+                        {
+                            //涓婁紶鎴愬姛
+                            Application.RunOnMainThread(() =>
+                            {
+                                //Utlis.WriteLine("涓婁紶鎴愬姛锛�" + imageUrl);
+                                //1.2濡傛灉鏄嚜瀹氫箟鍥剧墖鍒犻櫎涔嬪墠鐨�
+                                if (!string.IsNullOrEmpty(imageView.ImagePath) && !imageView.ImagePath.Contains("Classification/Room/Roombg"))
+                                {
+                                    //Utlis.WriteLine("鍒犻櫎: " + imageView.ImagePath);
+                                    System.IO.File.Delete(imageView.ImagePath);
+                                }
+                                //閲嶅懡鍚嶄繚瀛�
+                                ImageUtlis.Current.WriteFileByBytes(imageUrl, imageBytes);
+                                imageView.ImagePath = null;
+                                imageView.ImageBytes = imageBytes;
+                                //涓婁紶鎴愬姛
+                                Utlis.ShowTip(Language.StringByID(StringId.UploadSuccessfully));
+                                uploadSuccessAction?.Invoke(imageUrl);
+                            });
+                        }
+                        else
+                        {
+                            //涓婁紶澶辫触
+                            Application.RunOnMainThread(() =>
+                            {
+                                //涓婁紶澶辫触
+                                Utlis.ShowTip(Language.StringByID(StringId.UploadFailed));
+                            });
+                        }
+
+                    }
+                    catch (Exception ex)
+                    {
+                    }
+                    finally
+                    {
+                        Application.RunOnMainThread(() =>
+                        {
+                            if (waitPage != null)
+                            {
+                                waitPage.RemoveFromParent();
+                                waitPage = null;
+                            }
+                        });
+                    }
+                })
+                { IsBackground = true }.Start();
+            }
+            catch { }
+        }
+    }
+}

--
Gitblit v1.8.0