From 6d73bf6e816570291865674bef8bce8972e4de3f Mon Sep 17 00:00:00 2001 From: xm <1271024303@qq.com> Date: 星期三, 01 十二月 2021 16:32:57 +0800 Subject: [PATCH] 2021-12-01-01 --- HDL_ON/UI/UI2/FuntionControlView/Light/LightScene/AddLightScene.cs | 1048 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 1,040 insertions(+), 8 deletions(-) diff --git a/HDL_ON/UI/UI2/FuntionControlView/Light/LightScene/AddLightScene.cs b/HDL_ON/UI/UI2/FuntionControlView/Light/LightScene/AddLightScene.cs index e5aba0b..4e22ef5 100644 --- a/HDL_ON/UI/UI2/FuntionControlView/Light/LightScene/AddLightScene.cs +++ b/HDL_ON/UI/UI2/FuntionControlView/Light/LightScene/AddLightScene.cs @@ -1,5 +1,8 @@ 锘縰sing System; using System.Collections.Generic; +using System.Threading; +using HDL_ON.DAL.Server; +using HDL_ON.DriverLayer; using HDL_ON.Entity; using HDL_ON.UI.CSS; using Shared; @@ -25,20 +28,43 @@ /// 鍔熻兘鍒楄〃闆嗗悎鏄剧ず鍖哄煙 /// </summary> static VerticalScrolViewLayout functionListView; + /// <summary> + /// 瀹屾垚鎸夐挳 + /// </summary> + Button btnConfrim; + #endregion + /// <summary> + /// 鍦烘櫙閲岄潰鐨勫姛鑳藉垪琛� + /// </summary> + List<Function> sceneLishtList; + /// <summary> + /// 鏈湴鐨勭伅鍏夊垪琛� + /// </summary> + List<Function> lightList; + /// <summary> + /// 鍦烘櫙瀵硅薄 + /// </summary> + Scene scene; + /// <summary> + /// 鍥炶皟鍒锋柊 + /// </summary> + Action<Scene> backActon; - List<Function> functionList; - - public AddLightScene() + public AddLightScene(List<Function> functions,Scene inParscene, Action<Scene> action) { bodyView = this; - functionList = new List<Function>(); + sceneLishtList = functions; + scene = inParscene; + backActon = action; + lightList = FunctionList.List.GetLightList(); } - public void LoadPage(int titleId) + public void LoadPage() { bodyView.BackgroundColor = CSS_Color.BackgroundColor; - new TopViewDiv(bodyView, Language.StringByID(titleId)).LoadTopView(); + new TopViewDiv(bodyView, Language.StringByID(StringId.CombinedDimming)).LoadTopView(); + scene.name = Language.StringByID(StringId.CombinedDimming); /// <summary> /// 鎴块棿鍐呭鏄剧ず鍖哄煙 @@ -77,14 +103,1020 @@ functionListView = new VerticalScrolViewLayout() { Y = Application.GetRealHeight(64 + 52), - Height = Application.GetRealHeight(603 - 12 - 52), + Height = Application.GetRealHeight(640 - 12 - 52 -100), }; bodyView.AddChidren(functionListView); - functionList.AddRange(FunctionList.List.GetLightList()); + + LoadLightRow(lightList); + + #region 搴曢儴view + var bottomView = new FrameLayout() + { + Y = Application.GetRealHeight(591), + Height = Application.GetRealHeight(100), + BackgroundColor = CSS_Color.MainBackgroundColor, + Radius = (uint)Application.GetRealWidth(12), + }; + this.AddChidren(bottomView); + + btnConfrim = new Button() + { + Y = Application.GetRealHeight(12), + Gravity = Gravity.CenterHorizontal, + Width = Application.GetRealWidth(220), + Height = Application.GetRealHeight(44), + Radius = (uint)Application.GetRealHeight(22), + TextAlignment = TextAlignment.Center, + TextColor = CSS_Color.MainBackgroundColor, + BackgroundColor = CSS_Color.BackgroundColor, + TextID = StringId.Confirm, + TextSize = CSS_FontSize.SubheadingFontSize, + SelectedTextColor = CSS_Color.MainBackgroundColor, + SelectedBackgroundColor = CSS_Color.MainColor, + }; + bottomView.AddChidren(btnConfrim); + btnConfrim.MouseUpEventHandler = (sender, e) => { + if (btnConfrim.IsSelected) + { + Action<Scene> action = (objScene) => + { + backActon(objScene); + this.RemoveFromParent(); + }; + + var lightSceneDialog = new LightSceneEditDialog(sceneLishtList, scene, action); + lightSceneDialog.ShowDialog(); + } + }; + + #endregion + + //鍔犺浇鍔熻兘绛涢�夌粍浠� + LoadDialog_ChangeFloor(); + } + + /// <summary> + /// 鍔犺浇鍔熻兘row + /// </summary> + /// <param name="lightList"></param> + void LoadLightRow(List<Function> functions) + { + functionListView.RemoveAll(); + + foreach (var function in functions) + { + var functionDiv = new LightRow(function) + { + Gravity = Gravity.CenterHorizontal, + Width = Application.GetRealWidth(343), + Height = Application.GetRealHeight(62), + Radius = (uint)Application.GetMinRealAverage(12), + BorderColor = 0x00FFFFFF, + BorderWidth = 1, + BackgroundColor = CSS_Color.MainBackgroundColor, + Tag = function.spk + function.sid + }; + + Action setAction = () => + { + if (sceneLishtList.Count > 0) + { + btnConfrim.IsSelected = true; + } + else + { + btnConfrim.IsSelected = false; + } + }; + + functionDiv.LoadDiv(sceneLishtList,setAction); + functionListView.AddChidren(functionDiv); + + functionListView.AddChidren(new Button() { Height = Application.GetRealHeight(12) }); + } + + } + + + /// <summary> + /// 浣忓畢鍒楄〃鐐瑰嚮浜嬩欢 + /// </summary> + void LoadDialog_ChangeFloor() + { + string nowSelectId = null; + btnFloor.MouseUpEventHandler += (sender, e) => + { + //鏄剧ず涓嬫媺鍒楄〃 + var form = new FloorRoomSelectPopupView(); + form.ShowDeviceFunctionView(btnFloor, this.lightList, (selectId, listFunc) => + { + nowSelectId = selectId; + //閲嶆柊鍔犺浇鐣岄潰 + LoadLightRow(listFunc); + }, nowSelectId); + }; + } + + } + + + public class LightRow : FrameLayout + { + #region 鍖哄煙鎺т欢 + static FrameLayout bodyDiv; + /// <summary> + /// 鍔熻兘/鍦烘櫙icon + /// </summary> + Button btnIcon; + /// <summary> + /// 鍔熻兘鍚嶇О/鍦烘櫙鍚嶇О + /// </summary> + Button btnName; + /// <summary> + /// 妤煎眰淇℃伅鏄剧ず鎸夐挳 + /// </summary> + Button btnFromFloor; + /// <summary> + /// 閫変腑鎸夐挳 + /// </summary> + Button btnSelect; + #endregion + + #region 鍖哄煙鍙橀噺 + Function function; + #endregion + public LightRow(Function func) + { + bodyDiv = this; + bodyDiv.Tag = func.sid; + function = func; + } + + + /// <summary> + /// 鍔犺浇鎺у埗鍗$墖鍖哄煙 + /// </summary> + public void LoadDiv(List<Function> functions,Action action) + { + btnIcon = new Button() + { + X = Application.GetRealWidth(10), + Y = Application.GetRealHeight(15), + Width = Application.GetRealWidth(32), + Height = Application.GetRealWidth(32), + UnSelectedImagePath = $"FunctionIcon/Icon/{function.IconName}.png" + }; + bodyDiv.AddChidren(btnIcon); + + btnName = new Button() + { + X = Application.GetRealWidth(8 + 10 + 32), + Y = Application.GetRealHeight(10), + Width = Application.GetRealWidth(200), + Height = Application.GetRealHeight(24), + Text = function.name, + TextAlignment = TextAlignment.CenterLeft, + TextColor = CSS_Color.FirstLevelTitleColor, + TextSize = CSS_FontSize.TextFontSize, + }; + bodyDiv.AddChidren(btnName); + + btnFromFloor = new Button() + { + X = Application.GetRealWidth(8 + 10 + 32), + Y = Application.GetRealHeight(10 + 24), + Width = Application.GetRealWidth(200), + Height = Application.GetRealHeight(18), + Text = function.GetRoomListName(), + TextAlignment = TextAlignment.CenterLeft, + TextColor = CSS_Color.PromptingColor1, + TextSize = CSS_FontSize.PromptFontSize_FirstLevel, + }; + bodyDiv.AddChidren(btnFromFloor); + + btnSelect = new Button() + { + X = Application.GetRealWidth(303), + Gravity = Gravity.CenterVertical, + Width = Application.GetRealWidth(32), + Height = Application.GetRealWidth(32), + UnSelectedImagePath = "FunctionIcon/Light/LightScene/CheckIcon.png", + SelectedImagePath = "FunctionIcon/Light/LightScene/CheckOnIcon.png", + IsSelected = functions.Find((obj) => obj.deviceId == function.deviceId) != null + }; + bodyDiv.AddChidren(btnSelect); + + btnSelect.MouseUpEventHandler = (sender, e) => { + btnSelect.IsSelected = !btnSelect.IsSelected; + if(btnSelect.IsSelected) + { + var addTemp = functions.Find((obj) => obj.deviceId == function.deviceId); + if (addTemp == null) + { + functions.Add(function); + } + } + else + { + var removeTemp = functions.Find((obj) => obj.deviceId == function.deviceId); + if (removeTemp != null) + { + functions.Remove(removeTemp); + } + } + ///鍒锋柊鐣岄潰 + if (functions.Count == 0 || functions.Count == 1) + { + action(); + } + }; + + } + + + } + + /// <summary> + /// 鐏厜鍦烘櫙缂栬緫寮圭獥 + /// </summary> + public class LightSceneEditDialog :Dialog + { + /// <summary> + /// 浼犲叆鐨勭伅鍏夊垪琛� + /// 鍔犲叆鍦烘櫙鎺у埗鍔熻兘鍒楄〃 + /// </summary> + List<Function> lights; + /// <summary> + /// 涓存椂鐏厜瀵硅薄 + /// 澶勭悊鐏厜鏂规硶 + /// </summary> + Light tempLight = new Light(); + //鍙戦�佹暟鎹敹闆� + Dictionary<string, string> commandDic = new Dictionary<string, string>(); + + Scene scene; + Action<Scene> backAction; + public LightSceneEditDialog(List<Function> functions,Scene inParScene,Action<Scene> action) + { + lights = functions; + scene = inParScene; + backAction = action; + } + + + public void ShowDialog() + { + commandDic.Add(FunctionAttributeKey.OnOff, "off"); + + var hadDimming = lights.Find((obj) => obj.spk == SPK.LightDimming) != null; + var hadCCT = lights.Find((obj) => obj.spk == SPK.LightCCT) != null; + var hadRGB = lights.Find((obj) => obj.spk == SPK.LightRGB) != null; + + var bodyView = new FrameLayout(); + this.AddChidren(bodyView); + bodyView.MouseUpEventHandler = (sender, e) => { + this.Close(); + }; + + var contentView = new FrameLayout() { + BackgroundColor = CSS_Color.MainBackgroundColor, + Width = Application.GetRealWidth(343), + Radius = (uint)Application.GetRealWidth(12), + }; + bodyView.AddChidren(contentView); + + #region 鏍囬鍖� + var titleView = new FrameLayout() + { + Width = Application.GetRealWidth(343), + Height = Application.GetRealHeight(52), + }; + contentView.AddChidren(titleView); + + var btnTitle = new Button() + { + Height = Application.GetRealHeight(52), + Gravity = Gravity.Center, + TextSize = CSS_FontSize.SubheadingFontSize, + TextColor = CSS_Color.MainColor, + TextID = StringId.CombinedDimming, + TextAlignment = TextAlignment.Center, + }; + if (btnTitle.GetTextWidth() > Application.GetRealWidth(197))//247 + { + btnTitle.Width = Application.GetRealWidth(197); + btnTitle.IsMoreLines = true; + } + else + { + btnTitle.Width = btnTitle.GetTextWidth()+ Application.GetRealWidth(10); + btnTitle.IsMoreLines = false; + } + titleView.AddChidren(btnTitle); + + var btnEditIcon = new Button() + { + Width = Application.GetRealWidth(24), + Height = Application.GetRealWidth(24), + X = Application.GetRealWidth(12) + btnTitle.Right, + Gravity = Gravity.CenterVertical, + UnSelectedImagePath = "Public/Edit.png", + //SelectedImagePath = "Public/HookIcon.png" + }; + titleView.AddChidren(btnEditIcon); + + Action<string> callBack = (str) => + { + //鍚嶇О涓嶈兘涓虹┖ + if (string.IsNullOrEmpty(str)) + { + new Tip() + { + CloseTime = 1, + Text = Language.StringByID(StringId.NameCannotBeEmpty), + Direction = AMPopTipDirection.None, + }.Show(bodyView); + return; + } + btnTitle.Text = str; + scene.name = str; + + + if (btnTitle.GetTextWidth() > Application.GetRealWidth(197))//247 + { + btnTitle.Width = Application.GetRealWidth(197); + } + else + { + btnTitle.Width = btnTitle.GetTextWidth(); + } + + }; + 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); + }; + btnTitle.MouseUpEventHandler = eventHandler; + btnEditIcon.MouseUpEventHandler = eventHandler; + + titleView.AddChidren(new Button() { Height = 1, BackgroundColor = CSS_Color.DividingLineColor, Y = Application.GetRealHeight(51) }); + + #endregion + + + //var dimmingLight = lights.Find((obj) => obj.spk == SPK.LightDimming); + //var cctLight = lights.Find((obj) => obj.spk == SPK.LightCCT); + //var rgbLight = lights.Find((obj) => obj.spk == SPK.LightRGB); + var dimmingLight = scene.functions.Find((obj) => obj.localFunction.spk == SPK.LightDimming); + var cctLight = scene.functions.Find((obj) => obj.localFunction.spk == SPK.LightCCT); + var rgbLight = scene.functions.Find((obj) => obj.localFunction.spk == SPK.LightRGB); + + var brightnessValue = 0; + var cctValue = 27; + if(rgbLight!= null) + { + int.TryParse(rgbLight.status.Find((obj) => obj.key == FunctionAttributeKey.Brightness).value, out brightnessValue); + } + if (cctLight != null) + { + int.TryParse(cctLight.status.Find((obj) => obj.key == FunctionAttributeKey.Brightness).value, out brightnessValue); + int.TryParse(cctLight.status.Find((obj) => obj.key == FunctionAttributeKey.CCT).value, out cctValue); + } + if(dimmingLight!=null) + { + int.TryParse(cctLight.status.Find((obj) => obj.key == FunctionAttributeKey.CCT).value, out cctValue); + } + + + //灞炴�ц缃尯鍩� + var attrView = new VerticalScrolViewLayout() + { + Y = Application.GetRealHeight(52), + Width = Application.GetRealWidth(343), + ScrollEnabled = false, + }; + //灞炴�ц缃尯鍩熼珮搴� + int attrViewHight = Application.GetRealHeight(18 + 22); + + + //鍙湁缁х數鍣� + if (!hadDimming && !hadCCT && !hadRGB) + { + attrViewHight += Application.GetRealHeight(50); + attrView.Height = attrViewHight; + contentView.AddChidren(attrView); + attrView.AddChidren(new Button() { Height = Application.GetRealHeight(18) }); + + var view = new FrameLayout() + { + Width = Application.GetRealWidth(343), + Height = Application.GetRealHeight(50), + }; + attrView.AddChidren(view); + + + var btnClose = new Button() + { + X = Application.GetRealWidth(50), + Gravity = Gravity.CenterVertical, + Width = Application.GetRealWidth(98), + Height = Application.GetRealHeight(40), + TextColor = CSS_Color.TextualColor, + SelectedBackgroundColor = CSS_Color.MainColor, + SelectedTextColor = CSS_Color.MainBackgroundColor, + BackgroundColor = CSS_Color.DividingLineColor, + TextID = StringId.OFF, + TextSize = CSS_FontSize.TextFontSize, + Radius = (uint)Application.GetRealWidth(5), + IsSelected = true, + //BorderWidth = 1, + //BorderColor = 0x00000000 + }; + view.AddChidren(btnClose); + + var btnOpen = new Button() + { + X = Application.GetRealWidth(100 + 98), + Gravity = Gravity.CenterVertical, + Width = Application.GetRealWidth(98), + Height = Application.GetRealHeight(40), + TextColor = CSS_Color.TextualColor, + SelectedBackgroundColor = CSS_Color.MainColor, + SelectedTextColor = CSS_Color.MainBackgroundColor, + BackgroundColor = CSS_Color.DividingLineColor, + TextID = StringId.On, + TextSize = CSS_FontSize.TextFontSize, + Radius = (uint)Application.GetRealWidth(5), + }; + view.AddChidren(btnOpen); + + btnClose.MouseUpEventHandler = (sender, e) => + { + btnClose.IsSelected = true; + btnOpen.IsSelected = false; + commandDic[FunctionAttributeKey.OnOff] = "off"; + }; + btnOpen.MouseUpEventHandler = (sender, e) => + { + btnClose.IsSelected = false; + btnOpen.IsSelected = true; + commandDic[FunctionAttributeKey.OnOff] = "on"; + }; + + } + + else + { + if(hadRGB) + { + attrViewHight += Application.GetRealHeight(248); + hadDimming = true; + } + if (hadCCT) + { + attrViewHight += Application.GetRealHeight(54 + 11); + hadDimming = true; + } + if (hadDimming) + { + attrViewHight += Application.GetRealHeight(54 + 11); + } + attrView.Height = attrViewHight; + contentView.AddChidren(attrView); + attrView.AddChidren(new Button() { Height = Application.GetRealHeight(18) }); + + + if (hadDimming) + { + LoadDimmingAttrView(attrView); + } + if (hadCCT) + { + LoadCctAttrView(attrView); + } + if(hadRGB) + { + LoadRgbAttrView(attrView); + } + } + + contentView.Height = Application.GetRealHeight(52 + 44) + attrViewHight; + contentView.Gravity = Gravity.Center; + + + + + #region bottom View + var bottomView = new FrameLayout() + { + Y = Application.GetRealHeight(52) + attrViewHight, + Height = Application.GetRealHeight(46), + }; + contentView.AddChidren(bottomView); + bottomView.AddChidren(new Button() { Height = 1, BackgroundColor = CSS_Color.DividingLineColor }); + + var btnSave = new Button() + { + Width = Application.GetRealWidth(172), + Height = Application.GetRealHeight(44), + TextAlignment = TextAlignment.Center, + TextSize = CSS_FontSize.SubheadingFontSize, + TextColor = CSS_Color.TextualColor, + TextID = StringId.Save, + }; + bottomView.AddChidren(btnSave); + + var btnComplete = new Button() + { + X = Application.GetRealWidth(172), + Width = Application.GetRealWidth(172), + Height = Application.GetRealHeight(46), + BackgroundColor = CSS_Color.MainColor, + TextColor = CSS_Color.MainBackgroundColor, + TextAlignment = TextAlignment.Center, + TextSize = CSS_FontSize.SubheadingFontSize, + TextID = StringId.Complete + }; + bottomView.AddChidren(btnComplete); + + //渚嬶細鍙充笅鍦嗚 澶у皬涓�50 + int mRectCornerID = HDLUtils.RectCornerBottomRight; + btnComplete.SetCornerWithSameRadius((uint)Application.GetRealWidth(14), mRectCornerID); + + + + btnComplete.MouseUpEventHandler = (sender, e) => { + this.Close(); + + var waitPage = new Loading(); + MainPage.BaseView.AddChidren(waitPage); + waitPage.Start(Language.StringByID(StringId.PleaseWait)); + + new Thread(() => + { + try + { + foreach (var light in lights) + { + Dictionary<string, string> sendDate = new Dictionary<string, string>(); + //璧嬪�煎満鏅姛鑳芥暟鎹� + foreach (var attr in light.GetAttributes()) + { + if (commandDic.ContainsKey(attr)) + { + try + { + sendDate.Add(attr, commandDic[attr]); + } + catch { } + } + + } + Control.Ins.SendWriteCommand(light, sendDate); + Thread.Sleep(50); + } + } + catch + { } + finally + { + Application.RunOnMainThread(() => + { + waitPage.Hide(); + if (waitPage != null) + { + backAction(null); + waitPage.RemoveFromParent(); + } + }); + } + }) + { IsBackground = true }.Start(); + }; + + + + btnSave.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 waitPage = new Loading(); + MainPage.BaseView.AddChidren(waitPage); + waitPage.Start(Language.StringByID(StringId.PleaseWait)); + new Thread(() => + { + try + { + var serverScene = new Scene(); + for (int i = 0; i < lights.Count; i++) + { + var light = lights[i]; + //璧嬪�煎満鏅姛鑳芥暟鎹� + foreach (var attr in light.GetAttributes()) + { + if (commandDic.ContainsKey(attr)) + { + try + { + light.SetAttrState(attr, commandDic[attr]); + } + catch { } + } + } + //杞崲鍦烘櫙鐨勫姛鑳藉璞� + var sceneFunction = light.ConvertSceneFunction(); + //鏌ヨ鏈夋病鏈夊瓨鍦� + var temp = scene.functions.Find((obj) => obj.sid == sceneFunction.sid); + //璧嬪�� + if (temp != null) + { + temp = sceneFunction; + } + else + { + scene.functions.Add(sceneFunction); + } + } + var result = FunctionList.List.AddScene(scene, out serverScene); + Application.RunOnMainThread(() => + { + if (result == StateCode.SUCCESS) + { + scene = serverScene; + FunctionList.List.scenes.Add(scene); + backAction(scene); + this.Close(); + } + else + { + IMessageCommon.Current.ShowErrorInfoAlter(result); + } + }); + } + catch { } + finally + { + Application.RunOnMainThread(() => { + waitPage.Hide(); + waitPage.RemoveFromParent(); + }); + } + }) + { IsBackground = true, Priority = ThreadPriority.AboveNormal }.Start(); + }; + + + + + + + #endregion + + + this.Show(); + + } + + /// <summary> + /// 鍔犺浇璋冨厜灞炴�ц缃帶浠� + /// </summary> + /// <param name="attrView"></param> + void LoadDimmingAttrView(VerticalScrolViewLayout attrView) + { + + commandDic.TryAdd(FunctionAttributeKey.Percent, "0"); + + var dimmingView = new FrameLayout() + { + Height = Application.GetRealHeight(54 + 11) + }; + attrView.AddChidren(dimmingView); + + #region 浜害璋冭妭 + var btnBrightnessText = new Button() + { + X = Application.GetRealWidth(35), + Y = Application.GetRealHeight(1), + Width = Application.GetRealWidth(224), + Height = Application.GetRealHeight(25), + TextAlignment = TextAlignment.CenterLeft, + TextColor = CSS_Color.FirstLevelTitleColor, + TextSize = CSS_FontSize.PromptFontSize_FirstLevel, + TextID = StringId.Brightness, + }; + btnBrightnessText.Text = Language.StringByID(StringId.Brightness) + " " + commandDic[FunctionAttributeKey.Percent] + "%"; + dimmingView.AddChidren(btnBrightnessText); + + + var btnMinValuesText = new Button() + { + X = Application.GetRealWidth(35), + Y = btnBrightnessText.Bottom, + Width = Application.GetRealWidth(40), + Height = Application.GetRealHeight(21), + Text = "0%", + TextAlignment = TextAlignment.CenterLeft, + TextColor = CSS_Color.PromptingColor1, + TextSize = CSS_FontSize.PromptFontSize_FirstLevel, + }; + dimmingView.AddChidren(btnMinValuesText); + + var dimmerBar = new DiyImageSeekBar() + { + X = Application.GetRealWidth(45 + 10), + Y = Application.GetRealHeight(11), + Width = Application.GetRealWidth(220), + Height = Application.GetRealHeight(54), + SeekBarViewHeight = Application.GetRealHeight(8), + ThumbImagePath = "Public/ThumbImage.png", + ThumbImageHeight = Application.GetRealHeight(54), + ProgressTextColor = CSS_Color.FirstLevelTitleColor, + ProgressTextSize = CSS_FontSize.PromptFontSize_FirstLevel, + ProgressBarColor = CSS_Color.AuxiliaryColor1, + MaxValue = 100, + Progress = Convert.ToInt32(commandDic[FunctionAttributeKey.Percent]), + SeekBarPadding = Application.GetRealWidth(20), + IsProgressTextShow = false, + ProgressChangeDelayTime = 0, + }; + dimmingView.AddChidren(dimmerBar); + dimmerBar.OnProgressChangedEvent = (sender, e) => { + btnBrightnessText.Text = Language.StringByID(StringId.Brightness) + " " + e + "%"; + }; + dimmerBar.OnStopTrackingTouchEvent = (sender, e) => { + commandDic[FunctionAttributeKey.Percent] = dimmerBar.Progress.ToString(); + btnBrightnessText.Text = Language.StringByID(StringId.Brightness) + " " + e + "%"; + }; + + + var btnMaxValuesText = new Button() + { + X = dimmerBar.Right, + Y = btnBrightnessText.Bottom, + Width = Application.GetRealWidth(55), + Height = Application.GetRealHeight(21), + Text = "100%", + TextAlignment = TextAlignment.CenterLeft, + TextColor = CSS_Color.PromptingColor1, + TextSize = CSS_FontSize.PromptFontSize_FirstLevel, + }; + dimmingView.AddChidren(btnMaxValuesText); + #endregion + + } + + /// <summary> + /// 鍔犺浇cct灞炴�ц缃帶浠� + /// </summary> + /// <param name="attrView"></param> + void LoadCctAttrView(VerticalScrolViewLayout attrView) + { + #region 鑹叉俯 + + var cctView = new FrameLayout() + { + Height = Application.GetRealHeight(54 + 11) + }; + attrView.AddChidren(cctView); + + + //鑹叉俯 + var btnTempClolor = new Button(); + btnTempClolor.X = Application.GetRealWidth(35); + btnTempClolor.Y = Application.GetRealHeight(1); + btnTempClolor.Width = Application.GetRealWidth(224); + btnTempClolor.Height = Application.GetRealHeight(21); + btnTempClolor.TextAlignment = TextAlignment.CenterLeft; + btnTempClolor.TextColor = CSS_Color.FirstLevelTitleColor; + btnTempClolor.TextSize = CSS_FontSize.PromptFontSize_FirstLevel; + btnTempClolor.TextID = StringId.ColorTemperature; + cctView.AddChidren(btnTempClolor); + + //2700K + var btnTempClolorMin = new Button() + { + X = Application.GetRealWidth(35), + Y = btnTempClolor.Bottom, + Width = Application.GetRealWidth(40), + Height = Application.GetRealHeight(21), + }; + btnTempClolorMin.Width = Application.GetRealWidth(54); + btnTempClolorMin.Height = Application.GetRealHeight(21); + btnTempClolorMin.Text = "2700K"; + btnTempClolorMin.TextAlignment = TextAlignment.CenterLeft; + btnTempClolorMin.TextColor = CSS_Color.PromptingColor1; + btnTempClolorMin.TextSize = CSS_FontSize.PromptFontSize_FirstLevel; + cctView.AddChidren(btnTempClolorMin); + + //婊戝姩鏉$殑鑳屾櫙鍥剧墖 + var btnColorTemplatrueBack = new Button() + { + X = Application.GetRealWidth(55 + 22 + 15), + Y = Application.GetRealHeight(11), + Width = Application.GetRealWidth(180), + Height = Application.GetRealHeight(54), + }; + btnColorTemplatrueBack.UnSelectedImagePath = "FunctionIcon/Light/ColorTemperatureBar.png"; + btnColorTemplatrueBack.Height = Application.GetRealHeight(8); + btnColorTemplatrueBack.Gravity = Gravity.CenterHorizontal; + cctView.AddChidren(btnColorTemplatrueBack); + //婊戝姩鏉℃帶浠� + var barColorTemplatrue = new CCTSeekBarControl() + { + X = Application.GetRealWidth(55 + 22), + Y = Application.GetRealHeight(11), + Width = Application.GetRealWidth(220), + Height = Application.GetRealHeight(54), + }; + barColorTemplatrue.MinValue = 27; + barColorTemplatrue.MaxValue = 65; + barColorTemplatrue.ProgressBarColor = 0x00000000;//鍏ㄩ儴閫忔槑 + barColorTemplatrue.ProgressBarUnEnableColor = 0x00000000; + barColorTemplatrue.SeekBarBackgroundColor = 0x00000000; + cctView.AddChidren(barColorTemplatrue); + barColorTemplatrue.Y = btnTempClolorMin.Y - (barColorTemplatrue.Height - btnTempClolorMin.Height) / 2; + var cct = 27; + //int.TryParse(cctLight.status.Find((obj) => obj.key == FunctionAttributeKey.CCT).value, out cct); + barColorTemplatrue.Progress = cct; + //璁剧疆鍒濆鍊� + btnTempClolor.Text = Language.StringByID(StringId.ColorTemperature) + " " + (barColorTemplatrue.Progress * 100 + "K"); + barColorTemplatrue.OnProgressChangedEvent = (sender, e) => + { + btnTempClolor.Text = Language.StringByID(StringId.ColorTemperature) + " " + (barColorTemplatrue.Progress * 100 + "K"); + }; + barColorTemplatrue.OnStopTrackingTouchEvent = (sender, e) => + { + commandDic[FunctionAttributeKey.CCT] = (barColorTemplatrue.Progress*100).ToString(); + }; + //鍙樻洿鑳屾櫙鍥剧殑Y杞村潗鏍� + btnColorTemplatrueBack.Y = barColorTemplatrue.Y + (barColorTemplatrue.Height - btnColorTemplatrueBack.Height) / 2; + + //6500K + var btnTempClolorMax = new Button(); + btnTempClolorMax.Y = btnTempClolorMin.Y; + btnTempClolorMax.X = barColorTemplatrue.Right - Application.GetRealWidth(30); + btnTempClolorMax.Width = Application.GetRealWidth(54); + btnTempClolorMax.Height = Application.GetRealHeight(21); + btnTempClolorMax.Text = "6500K"; + btnTempClolorMax.TextAlignment = TextAlignment.CenterRight; + btnTempClolorMax.TextColor = CSS_Color.PromptingColor1; + btnTempClolorMax.TextSize = CSS_FontSize.PromptFontSize_FirstLevel; + cctView.AddChidren(btnTempClolorMax); + + #endregion } + /// <summary> + /// 鍔犺浇rgb灞炴�ц缃帶浠� + /// </summary> + /// <param name="attrView"></param> + void LoadRgbAttrView(VerticalScrolViewLayout attrView) + { + + #region RGB + commandDic.TryAdd(FunctionAttributeKey.RGB, "255,255,255"); + + var rgbView = new FrameLayout() + { + Height = Application.GetRealHeight(248) + }; + attrView.AddChidren(rgbView); + + + var btnCurColor = new Button() + { + X = Application.GetRealWidth(24), + Y = Application.GetRealHeight(10), + Width = Application.GetMinRealAverage(24), + Height = Application.GetMinRealAverage(24), + Radius = (uint)Application.GetMinRealAverage(8), + BorderColor = CSS_Color.PromptingColor2, + BorderWidth = 1, + BackgroundColor = (uint)(0xFF000000 + tempLight.GetRGBcolor(commandDic[FunctionAttributeKey.RGB])) + }; + rgbView.AddChidren(btnCurColor); + + //鑹茬洏鐨勬甯冩帶浠�(闄愬埗閭d釜鐧借壊婊戝姩鐞冧娇鐢�) + var framePickerBack = new FrameLayout(); + framePickerBack.Gravity = Gravity.CenterHorizontal; + framePickerBack.Y = Application.GetRealHeight(20); + framePickerBack.Width = Application.GetMinRealAverage(198); + framePickerBack.Height = Application.GetMinRealAverage(198); + rgbView.AddChidren(framePickerBack); + + var colorPicker = new ColorPicker() + { + ColorImagePath = "FunctionIcon/Light/ColorWheel.png", + }; + framePickerBack.AddChidren(colorPicker); + + + + + + + //鐧界偣鎺т欢 + var btnWhiteRound = new Button(); + btnWhiteRound.Width = Application.GetRealWidth(24); + btnWhiteRound.Height = Application.GetRealWidth(24); + btnWhiteRound.UnSelectedImagePath = "FunctionIcon/Light/ColorWheelTip.png"; + btnWhiteRound.Visible = false; + framePickerBack.AddChidren(btnWhiteRound); + + + //褰撳墠鐐瑰嚮鐨勩�愮偣銆戞槸鍚︽纭� + bool pointIsRight = false; + //鍦嗙殑鍗婂緞(鑰冭檻杈圭晫,闇�瑕佽缃畠鐨勫崐寰勬瘮杈冨皬涓�鐐�) + int circleR = colorPicker.Width / 2 - Application.GetRealWidth(12); + + + colorPicker.ColorChaged += (sender2, e2) => { + string rgbString = (e2[0] + "," + e2[1] + "," + e2[2]).ToString(); + commandDic[FunctionAttributeKey.RGB] = rgbString; + btnCurColor.BackgroundColor = (uint)(0xFF000000 + tempLight.GetRGBcolor(rgbString)); + }; + colorPicker.MouseDownEventHandler += (sender, e) => + { + pointIsRight = this.CheckPoint(circleR, colorPicker.Width / 2, colorPicker.Height / 2, (int)e.X, (int)e.Y); + if (pointIsRight == false) + { + //鐐圭殑鍖哄煙涓嶆槸鍦嗙洏鍐� + return; + } + //鏄剧ず鐧界偣 + btnWhiteRound.X = (int)e.X - btnWhiteRound.Width / 2; + btnWhiteRound.Y = (int)e.Y - btnWhiteRound.Height / 2; + if (btnWhiteRound.Visible == false) + { + btnWhiteRound.Visible = true; + } + }; + + colorPicker.MouseMoveEventHandler += (sender, e) => + { + //褰撻紶鏍囩偣涓嬩簨浠跺鐞� + colorPicker.MouseDownEventHandler(sender, e); + }; + + + #endregion + + } + + + /// <summary> + /// 妫�娴嬬偣鍑荤偣 + /// </summary> + /// <param name="circleR">鍦嗙殑鍗婂緞</param> + /// <param name="circleX">鍦嗗績X杞�</param> + /// <param name="circleY">鍦嗗績Y杞�</param> + /// <param name="pointX">鐐瑰嚮鐐圭殑X杞�</param> + /// <param name="pointY">鐐瑰嚮鐐圭殑Y杞�</param> + /// <returns></returns> + private bool CheckPoint(int circleR, int circleX, int circleY, int pointX, int pointY) + { + int dwidth = circleX - pointX; + if (dwidth < 0) { dwidth *= -1; } + + int dHeight = circleY - pointY; + if (dHeight < 0) { dHeight *= -1; } + + //鏍规嵁涓夎鍑芥暟,姹備笁瑙掑舰鐨勬枩杈归暱 + int dlength = dwidth * dwidth + dHeight * dHeight; + //鍗婂緞闀垮害(涓嶅紑鏂�,鎵�浠ユ槸鎸夊钩鏂圭畻) + circleR *= circleR; + if (dlength < circleR) + { + //濡傛灉缁勬垚鐨勪笁瑙掑舰骞舵病鏈夐暱杩囧崐寰�,鍒欎唬琛ㄨ繕鍦ㄥ渾鍐�(涓嶅厑璁哥偣杈圭晫) + return true; + } + return false; + } + } + } \ No newline at end of file -- Gitblit v1.8.0