From 4ad6d53e2a8dc59d99405a053ddc46f49ae7a1b3 Mon Sep 17 00:00:00 2001
From: wei <kaede@kaededeMacBook-Air.local>
Date: 星期四, 14 十月 2021 11:55:51 +0800
Subject: [PATCH] 干接点新spk 兼容问题
---
HDL_ON/UI/UI2/FuntionControlView/Light/LightScene/AddLightScene.cs | 1042 ++++++++++++++++++++++++++++++++++++++++-----------------
1 files changed, 732 insertions(+), 310 deletions(-)
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Light/LightScene/AddLightScene.cs b/HDL_ON/UI/UI2/FuntionControlView/Light/LightScene/AddLightScene.cs
index a14cbfe..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,21 +28,43 @@
/// 鍔熻兘鍒楄〃闆嗗悎鏄剧ず鍖哄煙
/// </summary>
static VerticalScrolViewLayout functionListView;
- #endregion
+ /// <summary>
+ /// 瀹屾垚鎸夐挳
+ /// </summary>
+ Button btnConfrim;
+ #endregion
+ /// <summary>
+ /// 鍦烘櫙閲岄潰鐨勫姛鑳藉垪琛�
+ /// </summary>
List<Function> sceneLishtList;
- Scene lightScene;
- public AddLightScene(List<Function> functions,Scene scene)
+ /// <summary>
+ /// 鏈湴鐨勭伅鍏夊垪琛�
+ /// </summary>
+ List<Function> lightList;
+ /// <summary>
+ /// 鍦烘櫙瀵硅薄
+ /// </summary>
+ Scene scene;
+ /// <summary>
+ /// 鍥炶皟鍒锋柊
+ /// </summary>
+ Action<Scene> backActon;
+
+ public AddLightScene(List<Function> functions,Scene inParscene, Action<Scene> action)
{
bodyView = this;
sceneLishtList = functions;
- lightScene = scene;
+ scene = inParscene;
+ backActon = action;
+ lightList = FunctionList.List.GetLightList();
}
public void LoadPage()
{
bodyView.BackgroundColor = CSS_Color.BackgroundColor;
new TopViewDiv(bodyView, Language.StringByID(StringId.CombinedDimming)).LoadTopView();
+ scene.name = Language.StringByID(StringId.CombinedDimming);
/// <summary>
/// 鎴块棿鍐呭鏄剧ず鍖哄煙
@@ -78,13 +103,68 @@
functionListView = new VerticalScrolViewLayout()
{
Y = Application.GetRealHeight(64 + 52),
- Height = Application.GetRealHeight(603 - 12 - 52),
+ Height = Application.GetRealHeight(640 - 12 - 52 -100),
};
bodyView.AddChidren(functionListView);
- var lightList = FunctionList.List.GetLightList();
- foreach (var function in lightList)
+ 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)
{
@@ -97,42 +177,45 @@
BackgroundColor = CSS_Color.MainBackgroundColor,
Tag = function.spk + function.sid
};
- functionDiv.LoadDiv(sceneLishtList);
+
+ 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) });
}
+ }
- #region 搴曢儴view
- var bottomView = new FrameLayout()
+
+ /// <summary>
+ /// 浣忓畢鍒楄〃鐐瑰嚮浜嬩欢
+ /// </summary>
+ void LoadDialog_ChangeFloor()
+ {
+ string nowSelectId = null;
+ btnFloor.MouseUpEventHandler += (sender, e) =>
{
- Y = Application.GetRealHeight(591),
- Height = Application.GetRealHeight(100),
- BackgroundColor = CSS_Color.MainBackgroundColor,
- Radius = (uint)Application.GetRealWidth(12),
+ //鏄剧ず涓嬫媺鍒楄〃
+ var form = new FloorRoomSelectPopupView();
+ form.ShowDeviceFunctionView(btnFloor, this.lightList, (selectId, listFunc) =>
+ {
+ nowSelectId = selectId;
+ //閲嶆柊鍔犺浇鐣岄潰
+ LoadLightRow(listFunc);
+ }, nowSelectId);
};
- this.AddChidren(bottomView);
-
- var 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.MainColor,
- TextID = StringId.Confirm,
- };
- bottomView.AddChidren(btnConfrim);
- btnConfrim.MouseUpEventHandler = (sender, e) => {
- var lightSceneDialog = new LightSceneEditDialog(sceneLishtList,lightScene);
- lightSceneDialog.ShowDialog();
- };
-
- #endregion
}
}
@@ -174,7 +257,7 @@
/// <summary>
/// 鍔犺浇鎺у埗鍗$墖鍖哄煙
/// </summary>
- public void LoadDiv(List<Function> functions)
+ public void LoadDiv(List<Function> functions,Action action)
{
btnIcon = new Button()
{
@@ -242,6 +325,11 @@
functions.Remove(removeTemp);
}
}
+ ///鍒锋柊鐣岄潰
+ if (functions.Count == 0 || functions.Count == 1)
+ {
+ action();
+ }
};
}
@@ -254,19 +342,33 @@
/// </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 editScene;
-
- public LightSceneEditDialog(List<Function> functions,Scene scene)
+ Scene scene;
+ Action<Scene> backAction;
+ public LightSceneEditDialog(List<Function> functions,Scene inParScene,Action<Scene> action)
{
lights = functions;
- editScene = scene;
+ 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;
@@ -285,7 +387,6 @@
bodyView.AddChidren(contentView);
#region 鏍囬鍖�
- bool inEdit = false;//鏄惁鍦ㄧ紪杈戞爣棰�
var titleView = new FrameLayout()
{
Width = Application.GetRealWidth(343),
@@ -321,48 +422,74 @@
X = Application.GetRealWidth(12) + btnTitle.Right,
Gravity = Gravity.CenterVertical,
UnSelectedImagePath = "Public/Edit.png",
- SelectedImagePath = "Public/HookIcon.png"
+ //SelectedImagePath = "Public/HookIcon.png"
};
titleView.AddChidren(btnEditIcon);
- EventHandler<MouseEventArgs> dd = (sender, e) =>
- {
- inEdit = !inEdit;
- btnEditIcon.IsSelected = inEdit;
-
- if (inEdit)
+ Action<string> callBack = (str) =>
{
- btnTitle.Width = btnTitle.GetTextWidth();
- }
- else
- {
- if (btnTitle.GetTextWidth() > Application.GetRealWidth(197))//247
+ //鍚嶇О涓嶈兘涓虹┖
+ 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();
}
- editScene.name = btnTitle.Text.Trim();
+
+ };
+ 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 = dd;
- btnEditIcon.MouseUpEventHandler = dd;
+ btnTitle.MouseUpEventHandler = eventHandler;
+ btnEditIcon.MouseUpEventHandler = eventHandler;
titleView.AddChidren(new Button() { Height = 1, BackgroundColor = CSS_Color.DividingLineColor, Y = Application.GetRealHeight(51) });
#endregion
- var dimmingLight = editScene.functions.Find((obj) => obj.localFunction.spk == SPK.LightDimming);
- var cctLight = editScene.functions.Find((obj) => obj.localFunction.spk == SPK.LightCCT);
- var rgbLight = editScene.functions.Find((obj) => obj.localFunction.spk == SPK.LightRGB);
+ //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);
}
@@ -372,83 +499,113 @@
{
Y = Application.GetRealHeight(52),
Width = Application.GetRealWidth(343),
+ ScrollEnabled = false,
};
//灞炴�ц缃尯鍩熼珮搴�
- int attrViewHight = Application.GetRealHeight(27 + 22);
- attrView.AddChidren(new Button() { Height = Application.GetRealHeight(27) });
+ int attrViewHight = Application.GetRealHeight(18 + 22);
- if (hadDimming)
+
+ //鍙湁缁х數鍣�
+ if (!hadDimming && !hadCCT && !hadRGB)
{
- attrViewHight += Application.GetRealHeight(54 + 11);
- var dimmingView = new FrameLayout();
- attrView.AddChidren(dimmingView);
+ attrViewHight += Application.GetRealHeight(50);
+ attrView.Height = attrViewHight;
+ contentView.AddChidren(attrView);
+ attrView.AddChidren(new Button() { Height = Application.GetRealHeight(18) });
-
- #region 浜害璋冭妭
- var btnBrightnessText = new Button()
+ var view = new FrameLayout()
{
- X = Application.GetRealWidth(35),
- Y = Application.GetRealHeight(1),
- Width = Application.GetRealWidth(224),
- Height = Application.GetRealHeight(21),
- TextAlignment = TextAlignment.CenterLeft,
- TextColor = CSS_Color.FirstLevelTitleColor,
- TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
- TextID = StringId.Brightness,
- BackgroundColor = 0xFFFF0000
+ Width = Application.GetRealWidth(343),
+ Height = Application.GetRealHeight(50),
};
- dimmingView.AddChidren(btnBrightnessText);
+ attrView.AddChidren(view);
+
- var btnMinValuesText = new Button()
+ var btnClose = new Button()
{
- X = Application.GetRealWidth(35),
- Y = btnBrightnessText.Bottom,
- Width = Application.GetRealWidth(30),
- Height = Application.GetRealHeight(21),
- Text = "0%",
- TextAlignment = TextAlignment.CenterLeft,
- TextColor = CSS_Color.PromptingColor1,
- TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+ 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
};
- dimmingView.AddChidren(btnMinValuesText);
+ view.AddChidren(btnClose);
- var dimmerBar = new DiyImageSeekBar()
+ var btnOpen = new Button()
{
- X = Application.GetRealWidth(35 + 22),
- Y = Application.GetRealHeight(11),
- Width = Application.GetRealWidth(210),
- 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 = brightnessValue,
- SeekBarPadding = Application.GetRealWidth(20),
+ 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),
};
- //dimmingView.AddChidren(dimmerBar);
+ view.AddChidren(btnOpen);
- var btnMaxValuesText = new Button()
+ btnClose.MouseUpEventHandler = (sender, e) =>
{
- X = dimmerBar.Right,
- Y = btnBrightnessText.Bottom,
- Width = Application.GetRealWidth(45),
- Height = Application.GetRealHeight(21),
- Text = "100%",
- TextAlignment = TextAlignment.CenterLeft,
- TextColor = CSS_Color.PromptingColor1,
- TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+ btnClose.IsSelected = true;
+ btnOpen.IsSelected = false;
+ commandDic[FunctionAttributeKey.OnOff] = "off";
};
- dimmingView.AddChidren(btnMaxValuesText);
- #endregion
-
+ btnOpen.MouseUpEventHandler = (sender, e) =>
+ {
+ btnClose.IsSelected = false;
+ btnOpen.IsSelected = true;
+ commandDic[FunctionAttributeKey.OnOff] = "on";
+ };
}
- attrView.Height = attrViewHight;
- contentView.AddChidren(attrView);
+ 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;
@@ -459,9 +616,10 @@
var bottomView = new FrameLayout()
{
Y = Application.GetRealHeight(52) + attrViewHight,
- Height = Application.GetRealHeight(44),
+ Height = Application.GetRealHeight(46),
};
contentView.AddChidren(bottomView);
+ bottomView.AddChidren(new Button() { Height = 1, BackgroundColor = CSS_Color.DividingLineColor });
var btnSave = new Button()
{
@@ -489,212 +647,476 @@
//渚嬶細鍙充笅鍦嗚 澶у皬涓�50
int mRectCornerID = HDLUtils.RectCornerBottomRight;
- btnComplete.SetCornerWithSameRadius((uint)Application.GetMinRealAverage(12), mRectCornerID);
-
- bottomView.AddChidren(new Button() { Height = 1, BackgroundColor = CSS_Color.DividingLineColor });
+ btnComplete.SetCornerWithSameRadius((uint)Application.GetRealWidth(14), mRectCornerID);
- btnSave.MouseUpEventHandler = (sender, e) => {
- this.Close();
-
-
- };
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();
- return;
- //鍙湁璋冨厜鍣�
- if (!hadDimming&&!hadCCT&&!hadRGB)
- {
- contentView.Height = Application.GetRealHeight(520);
- contentView.Width = Application.GetRealWidth(343);
- contentView.Gravity = Gravity.Center;
- contentView.Radius = (uint)Application.GetRealWidth(12);
- contentView.AddChidren(titleView);
- }
- else if (hadCCT && hadRGB)//
- {
- contentView.Height = Application.GetRealHeight(520);
- contentView.Width = Application.GetRealWidth(343);
- contentView.Gravity = Gravity.Center;
- contentView.Radius = (uint)Application.GetRealWidth(12);
- contentView.AddChidren(titleView);
- #region 浜害璋冭妭
- var btnBrightnessText = new Button()
- {
- X = Application.GetRealWidth(35),
- Y = Application.GetRealHeight(82),
- Width = Application.GetRealWidth(224),
- Height = Application.GetRealHeight(21),
- TextAlignment = TextAlignment.CenterLeft,
- TextColor = CSS_Color.FirstLevelTitleColor,
- TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
- TextID = StringId.Brightness,
- };
- contentView.AddChidren(btnBrightnessText);
-
- var btnMinValuesText = new Button()
- {
- X = Application.GetRealWidth(35),
- Y = btnBrightnessText.Bottom,
- Width = Application.GetRealWidth(30),
- Height = Application.GetRealHeight(21),
- Text = "0%",
- TextAlignment = TextAlignment.CenterLeft,
- TextColor = CSS_Color.PromptingColor1,
- TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
- };
- contentView.AddChidren(btnMinValuesText);
-
- var dimmerBar = new DiyImageSeekBar()
- {
- X = Application.GetRealWidth(35 + 22),
- Y = Application.GetRealHeight(312),
- Width = Application.GetRealWidth(210),
- 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 = brightnessValue,
- SeekBarPadding = Application.GetRealWidth(20),
- };
- contentView.AddChidren(dimmerBar);
-
- var btnMaxValuesText = new Button()
- {
- X = dimmerBar.Right,
- Y = btnBrightnessText.Bottom,
- Width = Application.GetRealWidth(45),
- Height = Application.GetRealHeight(21),
- Text = "100%",
- TextAlignment = TextAlignment.CenterLeft,
- TextColor = CSS_Color.PromptingColor1,
- TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
- };
- contentView.AddChidren(btnMaxValuesText);
- #endregion
-
-
-
- #region 鑹叉俯
- //鑹叉俯
- var btnTempClolor = new Button();
- btnTempClolor.X = Application.GetRealWidth(35);
- btnTempClolor.Y = Application.GetRealHeight(159);
- 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;
- contentView.AddChidren(btnTempClolor);
-
- //2700K
- var btnTempClolorMin = new Button();
- btnTempClolorMin.Y = btnTempClolor.Bottom + Application.GetRealHeight(9);
- btnTempClolorMin.Width = Application.GetRealWidth(54);
- btnTempClolorMin.Height = Application.GetRealHeight(21);
- btnTempClolorMin.Text = "2700K";
- btnTempClolorMin.TextAlignment = TextAlignment.CenterRight;
- btnTempClolorMin.TextColor = CSS_Color.PromptingColor1;
- btnTempClolorMin.TextSize = CSS_FontSize.PromptFontSize_FirstLevel;
- contentView.AddChidren(btnTempClolorMin);
-
- //婊戝姩鏉$殑鑳屾櫙鍥剧墖
- var btnColorTemplatrueBack = new Button();
- //闇�瑕佸噺鎺夋粦鍔ㄦ潯鐨勫乏鍙抽棿璺�
- btnColorTemplatrueBack.Width = Application.GetRealWidth(210 - 20 * 2);
- btnColorTemplatrueBack.Height = Application.GetRealHeight(8);
- btnColorTemplatrueBack.Gravity = Gravity.CenterHorizontal;
- btnColorTemplatrueBack.UnSelectedImagePath = "FunctionIcon/Light/ColorTemperatureBar.png";
- contentView.AddChidren(btnColorTemplatrueBack);
- //婊戝姩鏉℃帶浠�
- var barColorTemplatrue = new CCTSeekBarControl();
- barColorTemplatrue.X = btnTempClolorMin.Right;
- barColorTemplatrue.Y = Application.GetRealHeight(340);
- barColorTemplatrue.MinValue = 27;
- barColorTemplatrue.MaxValue = 65;
- barColorTemplatrue.ProgressBarColor = 0x00000000;//鍏ㄩ儴閫忔槑
- barColorTemplatrue.ProgressBarUnEnableColor = 0x00000000;
- barColorTemplatrue.SeekBarBackgroundColor = 0x00000000;
- contentView.AddChidren(barColorTemplatrue);
- barColorTemplatrue.Y = btnTempClolorMin.Y - (barColorTemplatrue.Height - btnTempClolorMin.Height) / 2;
- //鏄剧ず涓婃柟鐨凾xt
- barColorTemplatrue.ShowCustomTextView(Application.GetRealWidth(50), CSS_FontSize.PromptFontSize_FirstLevel, CSS_Color.FirstLevelTitleColor);
- var cct = 27;
- int.TryParse(cctLight.status.Find((obj)=>obj.key == FunctionAttributeKey.CCT).value, out cct);
- barColorTemplatrue.Progress = cct;
- //璁剧疆鍒濆鍊�
- barColorTemplatrue.SetCustomText(barColorTemplatrue.Progress * 100 + "K");
-
- //鍙樻洿鑳屾櫙鍥剧殑Y杞村潗鏍�
- btnColorTemplatrueBack.Y = barColorTemplatrue.Y + (barColorTemplatrue.Height - btnColorTemplatrueBack.Height) / 2;
-
- //6500K
- var btnTempClolorMax = new Button();
- btnTempClolorMax.Y = btnTempClolorMin.Y;
- btnTempClolorMax.X = barColorTemplatrue.Right;
- btnTempClolorMax.Width = Application.GetRealWidth(54);
- btnTempClolorMax.Height = Application.GetRealHeight(21);
- btnTempClolorMax.Text = "6500K";
- btnTempClolorMax.TextAlignment = TextAlignment.CenterLeft;
- btnTempClolorMax.TextColor = CSS_Color.PromptingColor1;
- btnTempClolorMax.TextSize = CSS_FontSize.PromptFontSize_FirstLevel;
- contentView.AddChidren(btnTempClolorMax);
-
- #endregion
-
- #region RGB
-
- var btnCurColor = new Button()
- {
- X = Application.GetRealWidth(24),
- Y = Application.GetRealHeight(241),
- Width = Application.GetMinRealAverage(24),
- Height = Application.GetMinRealAverage(24),
- Radius = (uint)Application.GetMinRealAverage(8),
- BorderColor = CSS_Color.PromptingColor2,
- BorderWidth = 1,
- BackgroundColor = (uint)(0xFF000000 + new Light().GetRGBcolor(new Function(),rgbLight.status.Find((obj) => obj.key == FunctionAttributeKey.RGB).value))
- };
- contentView.AddChidren(btnCurColor);
-
- //鑹茬洏鐨勬甯冩帶浠�(闄愬埗閭d釜鐧借壊婊戝姩鐞冧娇鐢�)
- var framePickerBack = new FrameLayout();
- framePickerBack.Gravity = Gravity.CenterHorizontal;
- framePickerBack.Y = Application.GetRealHeight(249);
- framePickerBack.Width = Application.GetMinRealAverage(198);
- framePickerBack.Height = Application.GetMinRealAverage(198);
- contentView.AddChidren(framePickerBack);
-
- var colorPicker = new ColorPicker()
- {
- ColorImagePath = "FunctionIcon/Light/ColorWheel.png",
- };
- framePickerBack.AddChidren(colorPicker);
- #endregion
- }
- else if (hadDimming && !hadCCT && !hadRGB)
- {
- contentView.Height = Application.GetRealHeight(211);
- contentView.Width = Application.GetRealWidth(343);
- contentView.Gravity = Gravity.Center;
- contentView.Radius = (uint)Application.GetRealWidth(12);
- contentView.AddChidren(titleView);
- }
+
}
+
+ /// <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