using Shared.SimpleControl.Phone;
|
using System;
|
using System.Collections.Generic;
|
|
namespace Shared.SimpleControl.Pad
|
{
|
/// <summary>
|
/// 用户房间灯光控制界面
|
/// </summary>
|
public class UserLightPage : FrameLayout
|
{
|
/// <summary>
|
/// 当前打开的灯光界面
|
/// </summary>
|
public static UserLightPage curView;
|
VerticalScrolViewLayout lightListView;
|
VerticalScrolViewLayout lightSceneListView;
|
Button btnLastClickScene;
|
|
/// <summary>
|
/// 显示当前房间灯光设备
|
/// </summary>
|
/// <param name="room">Room.</param>
|
public UserLightPage (Room room)
|
{
|
curView = this;
|
readStatus (room);
|
BackgroundColor = SkinStyle.Current.MainColor;
|
}
|
|
/// <summary>
|
/// 接受到灯光发出的数据之后更新UI
|
/// </summary>
|
/// <returns>The user lights.</returns>
|
public static void UpdateStatus (string updataFlag, byte brightness)
|
{
|
Application.RunOnMainThread (() => {
|
if (curView == null) {
|
return;
|
}
|
for (int i = 0; i < curView.lightListView.ChildrenCount; i++) {
|
if (curView.lightListView.GetChildren (i).GetType () == typeof (HorizontalScrolViewLayout)) {
|
var rowView = (HorizontalScrolViewLayout)curView.lightListView.GetChildren (i);
|
for (int k = 0; k < rowView.ChildrenCount; k++) {
|
if (rowView.GetChildren (k).GetType () == typeof (RowLayout)) {
|
var frameLayout = (RowLayout)rowView.GetChildren (k);
|
var o = frameLayout.GetTagByKey ("UpdataKey");
|
if (o != null && o.ToString () == updataFlag) {
|
for (int j = 0; j < frameLayout.ChildrenCount; j++) {
|
var childView = frameLayout.GetChildren (j);
|
if (childView.GetType () == typeof (Button)) {
|
Button btn = (Button)childView;
|
if (brightness == 0) {
|
btn.IsSelected = false;
|
} else {
|
btn.IsSelected = true;
|
}
|
} else if (childView.GetType () == typeof (HorizontalSeekBar) && 3 < (DateTime.Now - (DateTime)childView.Tag).TotalSeconds) {
|
(childView as HorizontalSeekBar).Progress = brightness;
|
}
|
}
|
}
|
}
|
}
|
}
|
}
|
});
|
}
|
|
/// <summary>
|
/// 房间模式进入的灯光界面
|
/// </summary>
|
/// <returns>The lights room.</returns>
|
public void showLightsRoom (Room room)
|
{
|
VerticalScrolViewLayout bodyMainView = new VerticalScrolViewLayout () {
|
ScrollEnabled = false
|
};
|
AddChidren (bodyMainView);
|
|
FrameLayout LightTopVIew = new FrameLayout () {
|
Height = Application.GetRealHeight (520)
|
};
|
bodyMainView.AddChidren (LightTopVIew);
|
|
FrameLayout roomBackgroundImage = new FrameLayout () {
|
X = Application.GetRealWidth (10),
|
Y = Application.GetRealHeight (10),
|
Width = Application.GetRealWidth (920),
|
Height = Application.GetRealHeight (520),
|
};
|
LightTopVIew.AddChidren (roomBackgroundImage);
|
roomBackgroundImage.BackgroundImagePath = room.BackGroundImage;
|
roomBackgroundImage.MouseLongEventHandler += (sender, e) => {
|
Camera.SelectPicture ((obj) => {
|
if (obj != null) {
|
room.BackGroundImage = obj;
|
roomBackgroundImage.BackgroundImagePath = obj;
|
room.Save (typeof (Room).Name + "_" + room.Name);
|
}
|
}, room.Name);
|
};
|
#region --灯光场景--
|
FrameLayout LightSceneView = new FrameLayout () {
|
X = roomBackgroundImage.Right,
|
Y = roomBackgroundImage.Y,
|
Width = Application.GetRealWidth (640),
|
Height = Application.GetRealHeight (520),
|
};
|
LightTopVIew.AddChidren (LightSceneView);
|
var btnAddLightScene = new Button () {
|
Height = Application.GetRealHeight (80+40),
|
BackgroundColor = 0xFF2f2f2f,
|
TextID = R.MyInternationalizationString.AddLightScene,
|
};
|
LightSceneView.AddChidren (btnAddLightScene);
|
lightSceneListView = new VerticalScrolViewLayout () {
|
Y = btnAddLightScene.Bottom,
|
Height = Application.GetRealHeight (520 - 120),
|
};
|
LightSceneView.AddChidren (lightSceneListView);
|
btnAddLightScene.MouseUpEventHandler += (sender, e) => {
|
Dialog dialog = new Dialog () {
|
BackgroundColor = SkinStyle.Current.TextColor1,
|
Width = Application.GetRealWidth (1050),
|
Height = Application.GetRealHeight (1050),
|
};
|
Button btnTitle = new Button () {
|
Height = Application.GetRealHeight (90),
|
TextAlignment = TextAlignment.Center,
|
Enable = false,
|
TextID = R.MyInternationalizationString.AddLightScene,
|
BackgroundColor = 0xFF333333
|
};
|
dialog.AddChidren (btnTitle);
|
|
FrameLayout remarkView = new FrameLayout () {
|
Height = Application.GetRealHeight (135),
|
Y = btnTitle.Bottom,
|
BackgroundColor = SkinStyle.Current.MainColor
|
};
|
dialog.AddChidren (remarkView);
|
|
Button btnRemark = new Button () {
|
Width = Application.GetRealWidth (110),
|
X = Application.GetRealWidth (20),
|
TextID = R.MyInternationalizationString.Remark
|
};
|
remarkView.AddChidren (btnRemark);
|
|
EditText etRemark = new EditText () {
|
Width = Application.GetRealWidth (840),
|
Height = Application.GetRealHeight (80),
|
X = btnRemark.Right + Application.GetRealWidth (10),
|
Y = Application.GetRealHeight (25),
|
BorderColor = 0xFF333333,
|
BorderWidth = 1,
|
BackgroundColor = 0xFF2f2f2f,
|
Radius = 5,
|
};
|
remarkView.AddChidren (etRemark);
|
|
VerticalScrolViewLayout verticalScrolView = new VerticalScrolViewLayout () {
|
Height = Application.GetRealHeight (500),
|
Y = remarkView.Bottom,
|
};
|
dialog.AddChidren (verticalScrolView);
|
FrameLayout inScrolView_DeviceListView = new FrameLayout ();
|
verticalScrolView.AddChidren (inScrolView_DeviceListView);
|
int btnEquipmentCont = 0;
|
var lights = room.DeviceList.FindAll ((obj) => {
|
return (obj.Type == DeviceType.LightSwitch || obj.Type == DeviceType.LightDimming || obj.Type == DeviceType.LightRGB);
|
});
|
|
List<string> lightScenePathList = new List<string> ();
|
List<Common> lightSceneList = new List<Common> ();
|
if (lights.Count > 10) {
|
inScrolView_DeviceListView.Height = Application.GetRealHeight (lights.Count / 2 * 100);
|
}
|
var scene = new Scene ();
|
foreach (var light in lights) {
|
Button btnEquipment = new Button () {
|
Width = Application.GetRealWidth (330),
|
Height = Application.GetRealHeight (115),
|
X = Application.GetRealHeight (30),
|
Y = Application.GetRealHeight (5),
|
TextAlignment = TextAlignment.Center,
|
UnSelectedImagePath = "Item/BorderAlphaSave.png",
|
SelectedImagePath = "Item/BorderAlphaSaveSelected.png",
|
TextColor = 0xFF000000,
|
Tag = light
|
};
|
if (btnEquipmentCont < 3) {
|
btnEquipment.X = btnEquipmentCont * btnEquipment.Width + Application.GetRealWidth (20);
|
btnEquipment.Y = Application.GetRealHeight (5);
|
btnEquipmentCont++;
|
} else {
|
btnEquipment.X = btnEquipmentCont % 3 * btnEquipment.Width + Application.GetRealWidth (20);
|
btnEquipment.Y = (int)btnEquipmentCont / 3 * btnEquipment.Height + Application.GetRealHeight (5);
|
btnEquipmentCont++;
|
}
|
btnEquipment.Text = light.Name;
|
inScrolView_DeviceListView.AddChidren (btnEquipment);
|
|
btnEquipment.MouseUpEventHandler += (sende3r, e3) => {
|
Common common = (Common)btnEquipment.Tag;
|
//btnEquipment.IsSelected = !btnEquipment.IsSelected;
|
if (btnEquipment.IsSelected) {
|
var filePath = scene.DeviceFilePathList.Find ((obj) => {
|
return obj.EndsWith (common.GetType ().Name + "_" +
|
common.SubnetID.ToString () + "_" +
|
common.DeviceID.ToString () + "_" +
|
(common.LoopID < 10 ? "0" + common.LoopID : common.LoopID.ToString ()));
|
});
|
scene.DeviceFilePathList.Remove (filePath);
|
lightScenePathList.Remove (filePath);
|
lightSceneList.Remove (common);
|
btnEquipment.IsSelected = false;
|
|
} else {
|
var filePath = "RoomLightScene" + DateTime.Now.Ticks + "_" + common.GetType ().Name + "_" + common.SubnetID.ToString () + "_" + common.DeviceID.ToString () + "_" + (common.LoopID < 10 ? "0" + common.LoopID : common.LoopID.ToString ());
|
scene.DeviceFilePathList.Add (filePath);
|
lightScenePathList.Add (filePath);
|
lightSceneList.Add (common);
|
btnEquipment.IsSelected = true;
|
}
|
};
|
}
|
|
FrameLayout iconLayout = new FrameLayout () {
|
Y = verticalScrolView.Bottom + Application.GetRealHeight (10),
|
Height = Application.GetRealHeight (175),
|
Width = Application.GetRealWidth (1048),
|
BackgroundColor = SkinStyle.Current.TextColor1
|
};
|
dialog.AddChidren (iconLayout);
|
HorizontalScrolViewLayout iconView = new HorizontalScrolViewLayout () {
|
Height = Application.GetRealHeight (170),
|
BackgroundColor = 0xFF333333,
|
};
|
iconLayout.AddChidren (iconView);
|
for (int i = 1; i < 7; i++) {
|
string iconPath = @"Light/LightSceneIcon" + i.ToString () + @".png";
|
string iconPathOn = @"Light/LightSceneIcon" + i.ToString () + @"On.png";
|
Button btnIcon = new Button () {
|
Width = Application.GetRealWidth (170),
|
Height = Application.GetRealHeight (170),
|
UnSelectedImagePath = iconPath,
|
SelectedImagePath = iconPathOn,
|
IsSelected = scene.SceneIconPath == iconPath ? true : false,
|
Tag = i
|
};
|
iconView.AddChidren (btnIcon);
|
if (i < 6) {
|
Button btnLineIcon = new Button () {
|
Width = Application.GetRealWidth (5),
|
BackgroundColor = SkinStyle.Current.TextColor1
|
};
|
iconView.AddChidren (btnLineIcon);
|
}
|
btnIcon.MouseUpEventHandler += (sende2r, e2) => {
|
for (int j = 0; j < iconView.ChildrenCount; j++) {
|
if (iconView.GetChildren (j).Tag != btnIcon.Tag)
|
((Button)iconView.GetChildren (j)).IsSelected = false;
|
}
|
btnIcon.IsSelected = btnIcon.IsSelected ? false : true;
|
if (btnIcon.IsSelected)
|
scene.SceneIconPath = btnIcon.UnSelectedImagePath;
|
else
|
scene.SceneIconPath = "";
|
};
|
}
|
|
FrameLayout bottomView = new FrameLayout () {
|
Y = iconLayout.Bottom,
|
Height = Application.GetRealHeight (150),
|
BackgroundColor = SkinStyle.Current.MainColor
|
};
|
dialog.AddChidren (bottomView);
|
Button btnCancel = new Button () {
|
Width = Application.GetRealWidth (522),
|
TextID = R.MyInternationalizationString.Cancel,
|
};
|
bottomView.AddChidren (btnCancel);
|
btnCancel.MouseUpEventHandler += (sender2, e2) => {
|
dialog.Close ();
|
};
|
Button btnLine = new Button () {
|
BackgroundColor = 0xFF333333,
|
Width = Application.GetRealWidth (6),
|
X = btnCancel.Right,
|
};
|
bottomView.AddChidren (btnLine);
|
Button btnSave = new Button () {
|
Width = Application.GetRealWidth (522),
|
X = btnLine.Right,
|
TextID = R.MyInternationalizationString.SAVE
|
};
|
bottomView.AddChidren (btnSave);
|
|
btnSave.MouseUpEventHandler += (sender3, e3) => {
|
if (string.IsNullOrEmpty (etRemark.Text.Trim ())) {
|
new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.PleaseEnterSceneName), Language.StringByID (R.MyInternationalizationString.Close)).Show ();
|
return;
|
}
|
string lightSceneRemark = room.Name + "_LightScene_" + etRemark.Text.Trim ();
|
if (room.LightScenePathList.Contains (lightSceneRemark)) {
|
new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.HaveTheSame), Language.StringByID (R.MyInternationalizationString.Close)).Show ();
|
return;
|
}
|
room.LightScenePathList.Add (lightSceneRemark);
|
for (int i = 0; i < lightScenePathList.Count; i++) {
|
//Common commonDevice = Newtonsoft.Json.JsonConvert.DeserializeObject<Common> (System.Text.Encoding.UTF8.GetString (commonBytes));
|
// IO.FileUtils.WriteFileByBytes (filePath, System.Text.Encoding.UTF8.GetBytes (Newtonsoft.Json.JsonConvert.SerializeObject (commonDevice)));
|
var filePath = lightScenePathList [i];
|
var common = lightSceneList [i];
|
if (common.Type == DeviceType.LightDimming) {
|
IO.FileUtils.WriteFileByBytes (filePath, CommonPage.MyEncodingUTF8.GetBytes (Newtonsoft.Json.JsonConvert.SerializeObject ((LightDimming)common)));
|
} else if (common.Type == DeviceType.LightSwitch) {
|
IO.FileUtils.WriteFileByBytes (filePath, CommonPage.MyEncodingUTF8.GetBytes (Newtonsoft.Json.JsonConvert.SerializeObject ((LightSwitch)common)));
|
} else if (common.Type == DeviceType.LightRGB) {
|
IO.FileUtils.WriteFileByBytes (filePath, CommonPage.MyEncodingUTF8.GetBytes (Newtonsoft.Json.JsonConvert.SerializeObject ((LightLogic)common)));
|
}
|
//scene.DeviceFilePathList.Add (filePath);
|
}
|
scene.Name = etRemark.Text.Trim ();
|
scene.Save (lightSceneRemark);
|
room.Save (typeof (Room).Name + "_" + room.Name);
|
addLightScenes (room);
|
dialog.Close ();
|
};
|
dialog.Show ();
|
};
|
#endregion
|
|
Button btnGGBlack = new Button () { BackgroundColor = 0xFF000000, Height = Application.GetRealHeight (30) };
|
bodyMainView.AddChidren (btnGGBlack);
|
|
|
Button btnNull = new Button () {
|
Height = Application.GetRealHeight (40),
|
};
|
bodyMainView.AddChidren (btnNull);
|
|
lightListView = new VerticalScrolViewLayout () {
|
Height = Application.GetRealHeight (800),
|
};
|
bodyMainView.AddChidren (lightListView);
|
|
//加载灯光场景
|
addLightScenes (room);
|
|
//加载灯光
|
addLights (room);
|
|
}
|
|
void addLightScenes (Room room)
|
{
|
lightSceneListView.RemoveAll ();
|
HorizontalScrolViewLayout hView = new HorizontalScrolViewLayout () {
|
Height = Application.GetRealHeight (130),
|
ScrollEnabled = false,
|
};
|
lightSceneListView.AddChidren (hView);
|
btnLastClickScene = new Button () {
|
Height = Application.GetRealHeight (10),
|
BackgroundColor = SkinStyle.Current.SelectedColor,
|
Y = Application.GetRealHeight (120),
|
};
|
foreach (string lightSceneFilePath in room.LightScenePathList) {
|
var scene = Scene.GetSceneByFilePath (lightSceneFilePath);
|
if (scene == null) {
|
room.LightScenePathList.Remove (lightSceneFilePath);
|
room.Save (typeof (Room).Name + "_" + room.Name);
|
addLightScenes (room);//移除空的场景,重新加载界面
|
return;
|
}
|
if (room.LightScenePathList.IndexOf (lightSceneFilePath) > 1) {
|
if (room.LightScenePathList.IndexOf (lightSceneFilePath) % 2 == 0) {
|
hView = new HorizontalScrolViewLayout () {
|
Height = Application.GetRealHeight (130),
|
};
|
lightSceneListView.AddChidren (hView);
|
}
|
}
|
RowLayout lightSceneView = new RowLayout () {
|
X = Application.GetRealWidth ((room.LightScenePathList.IndexOf (lightSceneFilePath) % 2) * 110) - 1,
|
Width = Application.GetRealWidth (320),
|
Radius = 1,
|
BorderColor = SkinStyle.Current.MainColor,
|
BorderWidth = 1,
|
};
|
hView.AddChidren (lightSceneView);
|
|
if (room.LightScenePathList.IndexOf (lightSceneFilePath) % 2 == 0) {
|
Button btnLineV = new Button () {
|
Width = 1,
|
BackgroundColor = 0xFF333333,
|
};
|
hView.AddChidren (btnLineV);
|
}
|
|
Button btnDel = new Button () {
|
TextID = R.MyInternationalizationString.Del,
|
BackgroundColor = SkinStyle.Current.DelColor,
|
};
|
lightSceneView.AddRightView (btnDel);
|
btnDel.MouseUpEventHandler += (sender, e) => {
|
foreach (var file in scene.DeviceFilePathList) {
|
IO.FileUtils.DeleteFile (file);
|
}
|
IO.FileUtils.DeleteFile (lightSceneFilePath);
|
room.LightScenePathList.Remove (lightSceneFilePath);
|
room.Save (typeof (Room).Name + "_" + room.Name);
|
addLightScenes (room);
|
};
|
Button btnSIcon = new Button () {
|
Y = Application.GetRealHeight (20),
|
Height = Application.GetRealHeight (100),
|
Width = Application.GetRealWidth (111),
|
Gravity = Gravity.CenterVertical,
|
UnSelectedImagePath = scene.SceneIconPath,
|
SelectedImagePath = scene.SceneIconPath,
|
};
|
lightSceneView.AddChidren (btnSIcon);
|
Button btnSceneRemark = new Button () {
|
Width = Application.GetRealWidth (638 / 2 - 75),
|
X = Application.GetRealWidth (111),
|
BorderColor = SkinStyle.Current.Transparent,
|
BorderWidth = 1,
|
Radius = 1,
|
Text = scene.Name,
|
TextAlignment = TextAlignment.CenterLeft
|
};
|
lightSceneView.AddChidren (btnSceneRemark);
|
btnSceneRemark.MouseLongEventHandler += (sender, e) => {
|
#region ---修改灯管场景---
|
Dialog dialog = new Dialog () {
|
BackgroundColor = SkinStyle.Current.TextColor1,
|
Width = Application.GetRealWidth (1050),
|
Height = Application.GetRealHeight (1050),
|
};
|
Button btnTitle = new Button () {
|
Height = Application.GetRealHeight (90),
|
TextAlignment = TextAlignment.Center,
|
Enable = false,
|
TextID = R.MyInternationalizationString.ModifyLightScene,
|
BackgroundColor = 0xFF333333
|
};
|
dialog.AddChidren (btnTitle);
|
|
FrameLayout remarkView = new FrameLayout () {
|
Height = Application.GetRealHeight (135),
|
Y = btnTitle.Bottom,
|
BackgroundColor = SkinStyle.Current.MainColor
|
};
|
dialog.AddChidren (remarkView);
|
|
Button btnRemark = new Button () {
|
Width = Application.GetRealWidth (110),
|
X = Application.GetRealWidth (20),
|
TextID = R.MyInternationalizationString.Remark
|
};
|
remarkView.AddChidren (btnRemark);
|
|
EditText etRemark = new EditText () {
|
Width = Application.GetRealWidth (840),
|
Height = Application.GetRealHeight (80),
|
X = btnRemark.Right + Application.GetRealWidth (10),
|
Y = Application.GetRealHeight (25),
|
BorderColor = 0xFF333333,
|
BorderWidth = 1,
|
BackgroundColor = 0xFF2f2f2f,
|
Radius = 5,
|
Text = scene.Name,
|
};
|
remarkView.AddChidren (etRemark);
|
|
VerticalScrolViewLayout verticalScrolView = new VerticalScrolViewLayout () {
|
Height = Application.GetRealHeight (500),
|
Y = remarkView.Bottom + Application.GetRealHeight (10),
|
};
|
dialog.AddChidren (verticalScrolView);
|
FrameLayout inScrolView_DeviceListView = new FrameLayout ();
|
verticalScrolView.AddChidren (inScrolView_DeviceListView);
|
int btnEquipmentCont = 0;
|
var lights = room.DeviceList.FindAll ((obj) => {
|
return (obj.Type == DeviceType.LightSwitch || obj.Type == DeviceType.LightDimming || obj.Type == DeviceType.LightLogic
|
|| obj.Type == DeviceType.LightRGB);
|
});
|
|
List<string> lightScenePathList = new List<string> ();
|
List<Common> lightSceneList = new List<Common> ();
|
if (lights.Count > 10) {
|
inScrolView_DeviceListView.Height = Application.GetRealHeight (lights.Count / 2 * 100);
|
}
|
foreach (var light in lights) {
|
Button btnEquipment = new Button () {
|
Width = Application.GetRealWidth (330),
|
Height = Application.GetRealHeight (115),
|
X = Application.GetRealHeight (30),
|
Y = Application.GetRealHeight (5),
|
TextAlignment = TextAlignment.Center,
|
UnSelectedImagePath = "Item/BorderAlphaSave.png",
|
SelectedImagePath = "Item/BorderAlphaSaveSelected.png",
|
TextColor = 0xFF000000,
|
Tag = light,
|
};
|
foreach (var lightPath in scene.DeviceFilePathList) {
|
string selecteLight = light.GetType ().Name.Replace ("LightLogic", "LightRGB") + "_" + light.SubnetID + "_" + light.DeviceID + "_" + (light.LoopID < 10 ? "0" + light.LoopID.ToString () : light.LoopID.ToString ());
|
if (lightPath.Contains (selecteLight)) {
|
btnEquipment.IsSelected = true;
|
Common common = (Common)btnEquipment.Tag;
|
var filePath = scene.DeviceFilePathList.Find ((obj) => { return obj.EndsWith (common.Type + "_" + common.SubnetID.ToString () + "_" + common.DeviceID.ToString () + "_" + (common.LoopID < 10 ? "0" + common.LoopID : common.LoopID.ToString ())); });
|
lightScenePathList.Add (filePath);
|
lightSceneList.Add (common);
|
}
|
}
|
if (btnEquipmentCont < 3) {
|
btnEquipment.X = btnEquipmentCont * btnEquipment.Width + Application.GetRealWidth (20);
|
btnEquipment.Y = Application.GetRealHeight (5);
|
btnEquipmentCont++;
|
} else {
|
btnEquipment.X = btnEquipmentCont % 3 * btnEquipment.Width + Application.GetRealWidth (20);
|
btnEquipment.Y = (int)btnEquipmentCont / 3 * btnEquipment.Height + Application.GetRealHeight (5);
|
btnEquipmentCont++;
|
}
|
btnEquipment.Text = light.Name;
|
inScrolView_DeviceListView.AddChidren (btnEquipment);
|
|
btnEquipment.MouseUpEventHandler += (sende3r, e3) => {
|
Common common = (Common)btnEquipment.Tag;
|
if (btnEquipment.IsSelected) {
|
var filePath = scene.DeviceFilePathList.Find ((obj) => { return obj.EndsWith (common.Type + "_" + common.SubnetID.ToString () + "_" + common.DeviceID.ToString () + "_" + (common.LoopID < 10 ? "0" + common.LoopID : common.LoopID.ToString ())); });
|
scene.DeviceFilePathList.Remove (filePath);
|
IO.FileUtils.DeleteFile (filePath);
|
lightScenePathList.Remove (filePath);
|
lightSceneList.Remove (common);
|
btnEquipment.IsSelected = false;
|
|
} else {
|
var filePath = "RoomLightScene" + DateTime.Now.Ticks + "_" + common.Type + "_" + common.SubnetID.ToString () + "_" + common.DeviceID.ToString () + "_" + (common.LoopID < 10 ? "0" + common.LoopID : common.LoopID.ToString ());
|
scene.DeviceFilePathList.Add (filePath);
|
lightScenePathList.Add (filePath);
|
lightSceneList.Add (common);
|
btnEquipment.IsSelected = true;
|
}
|
};
|
}
|
|
FrameLayout iconLayout = new FrameLayout () {
|
Y = verticalScrolView.Bottom + Application.GetRealHeight (10),
|
Height = Application.GetRealHeight (175),
|
Width = Application.GetRealWidth (1048),
|
BackgroundColor = SkinStyle.Current.TextColor1
|
};
|
dialog.AddChidren (iconLayout);
|
HorizontalScrolViewLayout iconView = new HorizontalScrolViewLayout () {
|
Height = Application.GetRealHeight (170),
|
BackgroundColor = 0xFF333333,
|
};
|
iconLayout.AddChidren (iconView);
|
for (int i = 1; i < 7; i++) {
|
string iconPath = @"Light/LightSceneIcon" + i.ToString () + @".png";
|
string iconPathOn = @"Light/LightSceneIcon" + i.ToString () + @"On.png";
|
Button btnIcon = new Button () {
|
Width = Application.GetRealWidth (170),
|
Height = Application.GetRealHeight (170),
|
UnSelectedImagePath = iconPath,
|
SelectedImagePath = iconPathOn,
|
IsSelected = scene.SceneIconPath == iconPath ? true : false,
|
Tag = i
|
};
|
iconView.AddChidren (btnIcon);
|
btnIcon.MouseUpEventHandler += (sende2r, e2) => {
|
for (int j = 0; j < iconView.ChildrenCount; j++) {
|
if (iconView.GetChildren (j).Tag != btnIcon.Tag)
|
((Button)iconView.GetChildren (j)).IsSelected = false;
|
}
|
btnIcon.IsSelected = btnIcon.IsSelected ? false : true;
|
if (btnIcon.IsSelected)
|
scene.SceneIconPath = btnIcon.UnSelectedImagePath;
|
else
|
scene.SceneIconPath = "";
|
};
|
if (i < 6) {
|
Button btnLineIcon = new Button () {
|
Width = Application.GetRealWidth (2),
|
BackgroundColor = SkinStyle.Current.TextColor1,
|
};
|
iconView.AddChidren (btnLineIcon);
|
}
|
}
|
|
FrameLayout bottomView = new FrameLayout () {
|
Y = iconLayout.Bottom,
|
Height = Application.GetRealHeight (150),
|
BackgroundColor = SkinStyle.Current.MainColor
|
};
|
dialog.AddChidren (bottomView);
|
Button btnCancel = new Button () {
|
Width = Application.GetRealWidth (522),
|
TextID = R.MyInternationalizationString.Cancel,
|
};
|
bottomView.AddChidren (btnCancel);
|
btnCancel.MouseUpEventHandler += (sender2, e2) => {
|
dialog.Close ();
|
};
|
Button btnLine = new Button () {
|
BackgroundColor = 0xFF333333,
|
Width = Application.GetRealWidth (6),
|
X = btnCancel.Right,
|
};
|
bottomView.AddChidren (btnLine);
|
Button btnSave = new Button () {
|
Width = Application.GetRealWidth (522),
|
X = btnLine.Right,
|
TextID = R.MyInternationalizationString.SAVE
|
};
|
bottomView.AddChidren (btnSave);
|
|
btnSave.MouseUpEventHandler += (sender3, e3) => {
|
if (string.IsNullOrEmpty (etRemark.Text.Trim ())) {
|
new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.PleaseEnterSceneName), Language.StringByID (R.MyInternationalizationString.Close)).Show ();
|
return;
|
}
|
string lightSceneRemark = room.Name + "_LightScene_" + etRemark.Text.Trim ();
|
if (etRemark.Text.Trim () != scene.Name) {
|
if (room.LightScenePathList.Contains (etRemark.Text.Trim ())) {
|
new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.HaveTheSame), Language.StringByID (R.MyInternationalizationString.Close)).Show ();
|
return;
|
}
|
IO.FileUtils.DeleteFile (room.Name + "_LightScene_" + scene.Name);
|
room.LightScenePathList.Remove (room.Name + "_LightScene_" + scene.Name);
|
room.LightScenePathList.Add (lightSceneRemark);
|
room.Save (typeof (Room).Name + "_" + room.Name);
|
scene.Name = etRemark.Text.Trim ();
|
}
|
|
for (int i = 0; i < lightScenePathList.Count; i++) {
|
var filePath = lightScenePathList [i];
|
var common = lightSceneList [i];
|
if (common.Type == DeviceType.LightDimming) {
|
IO.FileUtils.WriteFileByBytes (filePath, CommonPage.MyEncodingUTF8.GetBytes (Newtonsoft.Json.JsonConvert.SerializeObject ((LightDimming)common)));
|
} else if (common.Type == DeviceType.LightSwitch) {
|
IO.FileUtils.WriteFileByBytes (filePath, CommonPage.MyEncodingUTF8.GetBytes (Newtonsoft.Json.JsonConvert.SerializeObject ((LightSwitch)common)));
|
} else if (common.Type == DeviceType.LightRGB) {
|
IO.FileUtils.WriteFileByBytes (filePath, CommonPage.MyEncodingUTF8.GetBytes (Newtonsoft.Json.JsonConvert.SerializeObject ((LightLogic)common)));
|
}
|
}
|
|
scene.Save (lightSceneRemark);
|
addLightScenes (room);
|
dialog.Close ();
|
};
|
dialog.Show ();
|
#endregion
|
};
|
|
btnSceneRemark.MouseUpEventHandler += (sender, e) => {
|
try {
|
btnLastClickScene.RemoveFromParent ();
|
lightSceneView.AddChidren (btnLastClickScene);
|
MainPage.Loading.Start ();
|
System.Threading.Tasks.Task.Run (() => {
|
foreach (var deviceFilePath in scene.DeviceFilePathList) {
|
if (deviceFilePath.Split ('_') [1] == DeviceType.LightDimming.ToString ()) {
|
var device = Newtonsoft.Json.JsonConvert.DeserializeObject<LightDimming> (System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (deviceFilePath)));
|
if (device == null) {
|
continue;
|
}
|
byte delayTime = 0;
|
if (device.Type == DeviceType.LightDimming) {
|
if (device.CurrentBrightness > 0) {
|
try {
|
delayTime = room.DelayTime [device.CommonLoopID + "Open"];
|
} catch {
|
delayTime = 0;
|
}
|
} else {
|
try {
|
delayTime = room.DelayTime [device.CommonLoopID + "Close"];
|
} catch {
|
delayTime = 0;
|
}
|
}
|
}
|
Control.ControlBytesSendHasReturn (Command.SetSingleLight, device.SubnetID, device.DeviceID, new byte [] { device.LoopID, device.CurrentBrightness, 0, delayTime });
|
} else if (deviceFilePath.Split ('_') [1] == DeviceType.LightSwitch.ToString ()) {
|
var device = Newtonsoft.Json.JsonConvert.DeserializeObject<LightSwitch> (System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (deviceFilePath)));
|
if (device == null) {
|
continue;
|
}
|
Control.ControlBytesSendHasReturn (Command.SetSingleLight, device.SubnetID, device.DeviceID, new byte [] { device.LoopID, device.CurrentBrightness, 0, 0 });
|
} else if (deviceFilePath.Split ('_') [1] == DeviceType.LightLogic.ToString ()) {
|
var device = Newtonsoft.Json.JsonConvert.DeserializeObject<LightLogic> (System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (deviceFilePath)));
|
if (device != null) {
|
byte delayTime = 0;
|
if (device.Type == DeviceType.LightLogic) {
|
if (device.CurrentBrightness > 0) {
|
try {
|
delayTime = room.DelayTime [device.LightDimmingID + "Open"];
|
} catch {
|
delayTime = 0;
|
}
|
} else {
|
try {
|
delayTime = room.DelayTime [device.LightDimmingID + "Close"];
|
} catch {
|
delayTime = 0;
|
}
|
}
|
}
|
|
Control.ControlBytesSend (Command.SetLogicLoopColor, device.SubnetID, device.DeviceID, new byte [] { device.LoopID, device.CurrentBrightness, 254,
|
device.CustomDelayTimeOpen,device.CustomDelayTimeClose,
|
3,device.RStatus,device.GStatus,device.BStatus,0,0}, SendCount.Zero);
|
|
}
|
}
|
}
|
});
|
} catch { } finally {
|
MainPage.Loading.Hide ();
|
}
|
};
|
}
|
}
|
|
/// <summary>
|
/// 显示该房间里面的所有灯光
|
/// </summary>
|
public static void addLights (Room room, int lightCount = 0, VerticalScrolViewLayout allView = null)
|
{
|
var lightSwitchList = room.DeviceList.FindAll ((obj) => {
|
return obj.Type == DeviceType.LightSwitch ||obj.Type == DeviceType.LightMixSwitch;
|
});
|
//继电器
|
HorizontalScrolViewLayout HorizontalScrolView = new HorizontalScrolViewLayout () {
|
X = Application.GetRealWidth (0),
|
Width = Application.GetRealWidth (760),
|
Height = Application.GetRealHeight (200),
|
ScrollEnabled = false
|
};
|
foreach (var common in lightSwitchList) {
|
if (lightCount % 2 == 0) {
|
HorizontalScrolView = new HorizontalScrolViewLayout () {
|
X = Application.GetRealWidth (0),
|
Height = Application.GetRealHeight (200),
|
Enable = false,
|
ScrollEnabled = false
|
};
|
if (allView != null)
|
allView.AddChidren (HorizontalScrolView);
|
else
|
curView.lightListView.AddChidren (HorizontalScrolView);
|
}
|
Button btnNull = new Button () {
|
Width = Application.GetRealWidth (20),
|
};
|
HorizontalScrolView.AddChidren (btnNull);
|
lightCount++;
|
LightSwitch lightSwitch = common as LightSwitch;
|
FrameLayout lightView = new FrameLayout () {
|
Y = Application.GetRealHeight (10),
|
Width = Application.GetRealWidth (750),
|
Height = Application.GetRealHeight (180),
|
BackgroundColor = 0xFF2f2f2f,
|
BorderWidth = 0,
|
BorderColor = SkinStyle.Current.Transparent,
|
};
|
lightView.AddTag ("UpdataKey", lightSwitch.CommonLoopID);
|
HorizontalScrolView.AddChidren (lightView);
|
//灯名
|
var tempLightName = new Button () {
|
X = Application.GetRealWidth (20),
|
TextAlignment = TextAlignment.CenterLeft,
|
Text = lightSwitch.Name,
|
Enable = false,
|
//TextSize = 15,
|
};
|
lightView.AddChidren (tempLightName);
|
|
var tempSiwtch = new Button () {
|
Width = Application.GetRealWidth (85),
|
Height = Application.GetRealHeight (53),
|
X = Application.GetRealWidth (750 - 90 - 50),
|
Gravity = Gravity.CenterVertical,
|
UnSelectedImagePath = "Item/SwitchClose.png",
|
SelectedImagePath = "Item/SwitchOpen.png",
|
};
|
lightView.AddChidren (tempSiwtch);
|
tempSiwtch.MouseUpEventHandler += (sender3, e3) => {
|
tempSiwtch.IsSelected = !tempSiwtch.IsSelected;
|
if (tempSiwtch.IsSelected) {
|
lightSwitch.CurrentBrightness = 100;
|
} else {
|
lightSwitch.CurrentBrightness = 0;
|
}
|
Control.ControlBytesSend (Command.SetSingleLight, lightSwitch.SubnetID, lightSwitch.DeviceID, new byte [] { lightSwitch.LoopID, lightSwitch.CurrentBrightness, lightSwitch.DelayTimeHeight, lightSwitch.DelayTimeLow });
|
};
|
|
if (lightSwitch.CurrentBrightness == 100) {
|
tempSiwtch.IsSelected = true;
|
}
|
}
|
var ligthDimmingList = room.DeviceList.FindAll ((obj) => {
|
return obj.Type == DeviceType.LightDimming;
|
});
|
foreach (var common in ligthDimmingList) {
|
if (lightCount % 2 == 0) {
|
HorizontalScrolView = new HorizontalScrolViewLayout () {
|
X = Application.GetRealWidth (0),
|
Height = Application.GetRealHeight (200),
|
ScrollEnabled = false
|
};
|
|
if (allView != null)
|
allView.AddChidren (HorizontalScrolView);
|
else
|
curView.lightListView.AddChidren (HorizontalScrolView);
|
}
|
Button btnNull = new Button () {
|
Width = Application.GetRealWidth (20),
|
};
|
HorizontalScrolView.AddChidren (btnNull);
|
lightCount++;
|
LightDimming lightDimming = common as LightDimming;
|
FrameLayout lightView = new FrameLayout () {
|
Y = Application.GetRealHeight (10),
|
Width = Application.GetRealWidth (750),
|
Height = Application.GetRealHeight (180),
|
BackgroundColor = 0xFF2f2f2f,
|
BorderWidth = 0,
|
BorderColor = SkinStyle.Current.Transparent
|
};
|
lightView.AddTag ("UpdataKey", lightDimming.CommonLoopID);
|
HorizontalScrolView.AddChidren (lightView);
|
|
// 灯光名称
|
var tempLightName = new Button () {
|
X = Application.GetRealWidth (20),
|
Y = Application.GetRealHeight (20),
|
Height = Application.GetRealHeight (40),
|
TextAlignment = TextAlignment.CenterLeft,
|
//TextAlignment = lightDimming.DimmingFunction ? TextAlignment.TopLeft : TextAlignment.CenterLeft,
|
Text = lightDimming.Name,
|
};
|
if (!lightDimming.DimmingFunction) {
|
tempLightName.Gravity = Gravity.CenterVertical;
|
}
|
if (!lightDimming.DimmingFunction) {
|
tempLightName.Y = 0;
|
}
|
lightView.AddChidren (tempLightName);
|
|
//进度条
|
var tempLightSeekBar = new HorizontalSeekBar () {
|
Width = Application.GetRealWidth (450),
|
Height = Application.GetRealHeight (130 - 20 - 40),
|
X = Application.GetRealWidth (20),
|
Y = Application.GetRealHeight (30 + 40),
|
Visible = lightDimming.DimmingFunction,
|
Progress = lightDimming.CurrentBrightness,
|
ThumbColor = 0xFFFFFFFF,
|
Tag = DateTime.MinValue
|
};
|
lightView.AddChidren (tempLightSeekBar);
|
Button btnLightSetting = new Button () {
|
Width = Application.GetRealWidth (80),
|
Height = Application.GetRealHeight (80),
|
Radius = (uint)Application.GetRealHeight (30),
|
X = tempLightSeekBar.Right + Application.GetRealWidth (40),
|
Y = Application.GetRealHeight (65),
|
UnSelectedImagePath = "Light/DimmingSetting.png",
|
SelectedImagePath = "Light/DimmingSetting.png",
|
Visible = lightDimming.DimmingFunction,
|
};
|
lightView.AddChidren (btnLightSetting);
|
btnLightSetting.MouseUpEventHandler += (sender, e) => {
|
Dialog dialog = new Dialog () {
|
BackgroundColor = SkinStyle.Current.TextColor1,
|
Width = Application.GetRealWidth (480),
|
Height = Application.GetRealHeight (520),
|
};
|
Button btnTitle = new Button () {
|
Height = Application.GetRealHeight (70),
|
TextAlignment = TextAlignment.Center,
|
Enable = false,
|
TextID = R.MyInternationalizationString.DelayTime2,
|
BackgroundColor = 0xFF333333
|
};
|
dialog.AddChidren (btnTitle);
|
|
#region ---延时开---
|
Button btnDelayTimeONTitle = new Button () {
|
Width = Application.GetRealWidth (310),
|
Height = Application.GetRealHeight (80),
|
X = Application.GetRealWidth (30),
|
TextAlignment = TextAlignment.CenterLeft,
|
Y = btnTitle.Bottom,
|
TextColor = 0xFF000000,
|
TextID = R.MyInternationalizationString.DelayTimeON
|
};
|
dialog.AddChidren (btnDelayTimeONTitle);
|
|
Button btnDelayTimeOnReduce = new Button () {
|
Width = Application.GetRealWidth (64),
|
Height = Application.GetRealHeight (62),
|
X = Application.GetRealWidth (90),
|
Y = btnDelayTimeONTitle.Bottom,
|
UnSelectedImagePath = "Light/Light-.png",
|
SelectedImagePath = "Light/Light-On.png",
|
};
|
dialog.AddChidren (btnDelayTimeOnReduce);
|
|
Button btnDelayTimeOnText = new Button () {
|
Width = Application.GetRealWidth (180),
|
Height = Application.GetRealHeight (62),
|
X = btnDelayTimeOnReduce.Right,
|
Y = btnDelayTimeOnReduce.Y,
|
BackgroundColor = 0xFFDBDDDF,
|
Text = lightDimming.CustomDelayTimeOpen.ToString () + "s",
|
TextSize = 12,
|
TextColor = 0xFF000000
|
};
|
dialog.AddChidren (btnDelayTimeOnText);
|
|
Button btnDelayTimeOnAdd = new Button () {
|
Width = Application.GetRealWidth (64),
|
Height = Application.GetRealHeight (62),
|
X = btnDelayTimeOnText.Right,
|
Y = btnDelayTimeOnReduce.Y,
|
UnSelectedImagePath = "Light/Light+.png",
|
SelectedImagePath = "Light/Light+On.png",
|
};
|
dialog.AddChidren (btnDelayTimeOnAdd);
|
DateTime newTime = DateTime.MaxValue;
|
byte delayTimeOn = lightDimming.CustomDelayTimeOpen;
|
btnDelayTimeOnAdd.MouseDownEventHandler += (sender2, e2) => {
|
btnDelayTimeOnAdd.IsSelected = true;
|
if (delayTimeOn > 59)
|
return;
|
delayTimeOn++;
|
btnDelayTimeOnText.Text = delayTimeOn.ToString () + "s";
|
newTime = DateTime.Now;
|
|
System.Threading.Tasks.Task.Run (() => {
|
while (newTime != DateTime.MaxValue) {
|
System.Threading.Thread.Sleep (100);
|
if ((DateTime.Now - newTime).TotalSeconds > 1) {
|
if (delayTimeOn > 59)
|
break;
|
delayTimeOn++;
|
Application.RunOnMainThread (() => {
|
btnDelayTimeOnText.Text = delayTimeOn.ToString () + "s";
|
});
|
}
|
}
|
});
|
};
|
btnDelayTimeOnAdd.MouseUpEventHandler += (sender2, e2) => {
|
btnDelayTimeOnAdd.IsSelected = false;
|
newTime = DateTime.MaxValue;
|
};
|
|
btnDelayTimeOnReduce.MouseDownEventHandler += (sender2, e2) => {
|
btnDelayTimeOnReduce.IsSelected = true;
|
if (delayTimeOn == 0)
|
return;
|
delayTimeOn--;
|
btnDelayTimeOnText.Text = delayTimeOn.ToString () + "s";
|
newTime = DateTime.Now;
|
|
System.Threading.Tasks.Task.Run (() => {
|
while (newTime != DateTime.MaxValue) {
|
System.Threading.Thread.Sleep (100);
|
if ((DateTime.Now - newTime).TotalSeconds > 1) {
|
if (delayTimeOn == 0)
|
break;
|
delayTimeOn--;
|
Application.RunOnMainThread (() => {
|
btnDelayTimeOnText.Text = delayTimeOn.ToString () + "s";
|
});
|
}
|
}
|
});
|
};
|
btnDelayTimeOnReduce.MouseUpEventHandler += (sender2, e2) => {
|
btnDelayTimeOnReduce.IsSelected = false;
|
newTime = DateTime.MaxValue;
|
};
|
#endregion
|
|
#region ---延时关---
|
Button btnDelayTimeOFFTitle = new Button () {
|
Width = Application.GetRealWidth (310),
|
Height = Application.GetRealHeight (80),
|
X = Application.GetRealWidth (30),
|
TextAlignment = TextAlignment.CenterLeft,
|
Y = btnDelayTimeOnReduce.Bottom,
|
TextColor = 0xFF000000,
|
TextID = R.MyInternationalizationString.DelayTimeOFF
|
};
|
dialog.AddChidren (btnDelayTimeOFFTitle);
|
|
Button btnDelayTimeOffReduce = new Button () {
|
Width = Application.GetRealWidth (64),
|
Height = Application.GetRealHeight (62),
|
X = Application.GetRealWidth (90),
|
Y = btnDelayTimeOFFTitle.Bottom,
|
UnSelectedImagePath = "Light/Light-.png",
|
SelectedImagePath = "Light/Light-On.png",
|
};
|
dialog.AddChidren (btnDelayTimeOffReduce);
|
|
Button btnDelayTimeOffText = new Button () {
|
Width = Application.GetRealWidth (180),
|
Height = Application.GetRealHeight (62),
|
X = btnDelayTimeOffReduce.Right,
|
Y = btnDelayTimeOffReduce.Y,
|
BackgroundColor = 0xFFDBDDDF,
|
Text = lightDimming.CustomDelayTimeClose.ToString () + "s",
|
TextSize = 12,
|
TextColor = 0xFF000000
|
};
|
dialog.AddChidren (btnDelayTimeOffText);
|
|
Button btnDelayTimeOffAdd = new Button () {
|
Width = Application.GetRealWidth (64),
|
Height = Application.GetRealHeight (62),
|
X = btnDelayTimeOffText.Right,
|
Y = btnDelayTimeOffReduce.Y,
|
UnSelectedImagePath = "Light/Light+.png",
|
SelectedImagePath = "Light/Light+On.png",
|
};
|
dialog.AddChidren (btnDelayTimeOffAdd);
|
|
byte delayTimeOff = lightDimming.CustomDelayTimeClose;
|
btnDelayTimeOffAdd.MouseDownEventHandler += (sender2, e2) => {
|
btnDelayTimeOffAdd.IsSelected = true;
|
if (delayTimeOff > 59)
|
return;
|
delayTimeOff++;
|
btnDelayTimeOffText.Text = delayTimeOff.ToString () + "s";
|
newTime = DateTime.Now;
|
|
System.Threading.Tasks.Task.Run (() => {
|
while (newTime != DateTime.MaxValue) {
|
System.Threading.Thread.Sleep (100);
|
if ((DateTime.Now - newTime).TotalSeconds > 1) {
|
if (delayTimeOff > 59)
|
break;
|
delayTimeOff++;
|
Application.RunOnMainThread (() => {
|
btnDelayTimeOffText.Text = delayTimeOff.ToString () + "s";
|
});
|
}
|
}
|
});
|
};
|
btnDelayTimeOffAdd.MouseUpEventHandler += (sender2, e2) => {
|
btnDelayTimeOffAdd.IsSelected = false;
|
newTime = DateTime.MaxValue;
|
};
|
|
btnDelayTimeOffReduce.MouseDownEventHandler += (sender2, e2) => {
|
btnDelayTimeOffReduce.IsSelected = true;
|
if (delayTimeOff == 0)
|
return;
|
delayTimeOff--;
|
btnDelayTimeOffText.Text = delayTimeOff.ToString () + "s";
|
newTime = DateTime.Now;
|
|
System.Threading.Tasks.Task.Run (() => {
|
while (newTime != DateTime.MaxValue) {
|
System.Threading.Thread.Sleep (100);
|
if ((DateTime.Now - newTime).TotalSeconds > 1) {
|
if (delayTimeOff == 0)
|
break;
|
delayTimeOff--;
|
Application.RunOnMainThread (() => {
|
btnDelayTimeOffText.Text = delayTimeOff.ToString () + "s";
|
});
|
}
|
}
|
});
|
};
|
btnDelayTimeOffReduce.MouseUpEventHandler += (sender2, e2) => {
|
btnDelayTimeOffReduce.IsSelected = false;
|
newTime = DateTime.MaxValue;
|
};
|
|
#endregion
|
|
FrameLayout bottomView = new FrameLayout () {
|
Y = Application.GetRealHeight (520 - 80),
|
Height = Application.GetRealHeight (80),
|
BackgroundColor = SkinStyle.Current.MainColor
|
};
|
dialog.AddChidren (bottomView);
|
Button btnCancel = new Button () {
|
Width = Application.GetRealWidth (239),
|
TextID = R.MyInternationalizationString.Cancel,
|
};
|
bottomView.AddChidren (btnCancel);
|
btnCancel.MouseUpEventHandler += (sender2, e2) => {
|
dialog.Close ();
|
};
|
Button btnLine = new Button () {
|
BackgroundColor = 0xFF333333,
|
Width = 1,
|
X = btnCancel.Right,
|
};
|
bottomView.AddChidren (btnLine);
|
Button btnSave = new Button () {
|
Width = Application.GetRealWidth (239),
|
X = btnLine.Right,
|
TextID = R.MyInternationalizationString.SAVE
|
};
|
bottomView.AddChidren (btnSave);
|
|
btnSave.MouseUpEventHandler += (send3er, e3) => {
|
string keyString = lightDimming.CommonLoopID;
|
lightDimming.CustomDelayTimeOpen = delayTimeOn;
|
lightDimming.CustomDelayTimeClose = delayTimeOff;
|
if (room.DelayTime.ContainsKey (lightDimming.CommonLoopID + "Open")) {
|
room.DelayTime [keyString + "Open"] = delayTimeOn;
|
} else {
|
room.DelayTime.Add (keyString + "Open", delayTimeOn);
|
}
|
if (room.DelayTime.ContainsKey (keyString + "Close")) {
|
room.DelayTime [keyString + "Close"] = delayTimeOff;
|
} else {
|
room.DelayTime.Add (keyString + "Close", delayTimeOff);
|
}
|
room.Save (typeof (Room).Name + "_" + room.Name);
|
dialog.Close ();
|
};
|
dialog.Show ();
|
};
|
//开关按键
|
var tempSwitch = new Button () {
|
Width = Application.GetRealWidth (90),
|
Height = Application.GetRealHeight (53),
|
X = Application.GetRealWidth (750 - 90 - 50),
|
Y = Application.GetRealHeight (75),
|
UnSelectedImagePath = "Item/SwitchClose.png",
|
SelectedImagePath = "Item/SwitchOpen.png",
|
};
|
lightView.AddChidren (tempSwitch);
|
|
tempLightSeekBar.ProgressChanged += (senderp, ep) => {
|
if ((System.DateTime.Now - (DateTime)(tempLightSeekBar.Tag)).TotalMilliseconds < 500) {
|
return;
|
}
|
tempLightSeekBar.Tag = DateTime.Now;
|
|
Control.ControlBytesSend (Command.SetSingleLight, lightDimming.SubnetID,
|
lightDimming.DeviceID, new byte [] { lightDimming.LoopID, (byte)ep, 0, 0 }, SendCount.Zero);
|
if (tempLightSeekBar.Progress > 0) {
|
tempSwitch.IsSelected = true;
|
} else {
|
tempSwitch.IsSelected = false;
|
}
|
lightDimming.CurrentBrightness = (byte)ep;
|
};
|
tempLightSeekBar.MouseUpEventHandler += (sender, e) => {
|
//弹起的时候发最后的数据
|
tempLightSeekBar.Tag = DateTime.Now;
|
lightDimming.LastOpenBrightness = Convert.ToByte (tempLightSeekBar.Progress);
|
Control.ControlBytesSend (Command.SetSingleLight, lightDimming.SubnetID,
|
lightDimming.DeviceID, new byte [] { lightDimming.LoopID, (byte)tempLightSeekBar.Progress, 0, 0 });
|
if (tempLightSeekBar.Progress > 0) {
|
tempSwitch.IsSelected = true;
|
IO.FileUtils.WriteFileByBytes ("Equipment_" + typeof (LightDimming).Name + "_" + lightDimming.SubnetID.ToString () + "_" + lightDimming.DeviceID.ToString () + "_" + (lightDimming.LoopID < 10 ? "0" + lightDimming.LoopID.ToString () : lightDimming.LoopID.ToString ()),
|
CommonPage.MyEncodingUTF8.GetBytes (Newtonsoft.Json.JsonConvert.SerializeObject (lightDimming)));
|
} else {
|
tempSwitch.IsSelected = false;
|
}
|
lightDimming.CurrentBrightness = (byte)tempLightSeekBar.Progress;
|
};
|
tempLightSeekBar.AddTag ("UpdataKey", lightDimming.CommonLoopID);
|
|
tempSwitch.MouseUpEventHandler += (sender3, e3) => {
|
tempSwitch.IsSelected = !tempSwitch.IsSelected;
|
if (lightDimming.LastOpenBrightness == 0) {
|
lightDimming.LastOpenBrightness = 100;
|
}
|
if (tempSwitch.IsSelected) {
|
tempLightSeekBar.Progress = lightDimming.LastOpenBrightness;
|
IO.FileUtils.WriteFileByBytes ("Equipment_" + typeof (LightDimming).Name + "_" + lightDimming.SubnetID.ToString () + "_" + lightDimming.DeviceID.ToString () + "_" + (lightDimming.LoopID < 10 ? "0" + lightDimming.LoopID.ToString () : lightDimming.LoopID.ToString ()),
|
CommonPage.MyEncodingUTF8.GetBytes (Newtonsoft.Json.JsonConvert.SerializeObject (lightDimming)));
|
} else {
|
tempLightSeekBar.Progress = 0;
|
}
|
lightDimming.CurrentBrightness = (byte)tempLightSeekBar.Progress;
|
byte delayHeight = 0;
|
byte delayLow = 0;
|
if (lightDimming.CurrentBrightness == 0) {
|
delayHeight = Convert.ToByte (lightDimming.CustomDelayTimeClose / 256);
|
delayLow = Convert.ToByte (lightDimming.CustomDelayTimeClose % 256);
|
} else {
|
delayHeight = Convert.ToByte (lightDimming.CustomDelayTimeOpen / 256);
|
delayLow = Convert.ToByte (lightDimming.CustomDelayTimeOpen % 256);
|
}
|
Control.ControlBytesSend (Command.SetSingleLight, lightDimming.SubnetID, lightDimming.DeviceID, new byte [] {
|
lightDimming.LoopID, lightDimming.CurrentBrightness,delayHeight, delayLow});
|
tempLightSeekBar.Progress = lightDimming.CurrentBrightness;
|
};
|
|
if (lightDimming.CurrentBrightness > 0) {
|
tempSwitch.IsSelected = true;
|
}
|
}
|
|
var ligthRGBList = room.DeviceList.FindAll ((obj) => {
|
return obj.Type == DeviceType.LightRGB;
|
});
|
foreach (var common in ligthRGBList) {
|
if (lightCount % 2 == 0) {
|
HorizontalScrolView = new HorizontalScrolViewLayout () {
|
X = Application.GetRealWidth (0),
|
Height = Application.GetRealHeight (200),
|
ScrollEnabled = false
|
};
|
|
if (allView != null)
|
allView.AddChidren (HorizontalScrolView);
|
else
|
curView.lightListView.AddChidren (HorizontalScrolView);
|
|
}
|
Button btnNull = new Button () {
|
Width = Application.GetRealWidth (20),
|
};
|
HorizontalScrolView.AddChidren (btnNull);
|
lightCount++;
|
LightLogic lightRGB = common as LightLogic;
|
FrameLayout lightView = new FrameLayout () {
|
//X = Application.GetRealWidth ((lightCount % 2) * 200),
|
Y = Application.GetRealHeight (10),
|
Width = Application.GetRealWidth (750),
|
Height = Application.GetRealHeight (160),
|
BackgroundColor = 0xFF2f2f2f,
|
//Radius = 5,
|
BorderWidth = 0,
|
BorderColor = SkinStyle.Current.Transparent
|
};
|
lightView.AddTag ("UpdataKey", lightRGB.CommonLoopID + "RGB");
|
HorizontalScrolView.AddChidren (lightView);
|
|
// 灯光名称
|
var tempLightName = new Button () {
|
X = Application.GetRealWidth (20),
|
Y = Application.GetRealHeight (20),
|
Height = Application.GetRealHeight (40),
|
TextAlignment = TextAlignment.CenterLeft,
|
Text = lightRGB.Name,
|
};
|
if (!lightRGB.DimmingFunction) {
|
tempLightName.Gravity = Gravity.CenterVertical;
|
}
|
if (!lightRGB.DimmingFunction) {
|
tempLightName.Y = 0;
|
}
|
lightView.AddChidren (tempLightName);
|
|
//进度条
|
var tempLightSeekBar = new HorizontalSeekBar () {
|
Width = Application.GetRealWidth (450),
|
Height = Application.GetRealHeight (130 - 20 - 40),
|
X = Application.GetRealWidth (20),
|
Y = Application.GetRealHeight (30 + 40),
|
Visible = lightRGB.DimmingFunction,
|
Progress = lightRGB.CurrentBrightness,
|
ThumbColor = 0xFFFFFFFF,
|
Tag = DateTime.MinValue
|
};
|
lightView.AddChidren (tempLightSeekBar);
|
|
#region ---逻辑灯颜色---
|
Button btnLightSetting = new Button () {
|
Width = Application.GetRealWidth (70),
|
Height = Application.GetRealHeight (70),
|
Radius = (uint)Application.GetRealHeight (35),
|
X = tempLightSeekBar.Right + Application.GetRealWidth (40),
|
Y = Application.GetRealHeight (50),
|
BackgroundColor = (uint)(0xFF000000 + lightRGB.RStatus * 256 * 256 + lightRGB.GStatus * 256 + lightRGB.BStatus),
|
SelectedBackgroundColor = (uint)(0xFF000000 + lightRGB.RStatus * 256 * 256 + lightRGB.GStatus * 256 + lightRGB.BStatus),
|
};
|
lightView.AddChidren (btnLightSetting);
|
Button btnRGBSetting = new Button () {
|
Width = Application.GetRealWidth (70),
|
Height = Application.GetRealHeight (70),
|
Radius = (uint)Application.GetRealHeight (35),
|
X = tempLightSeekBar.Right + Application.GetRealWidth (40),
|
Y = Application.GetRealHeight (50),
|
UnSelectedImagePath = "Light/RGBSetting.png",
|
SelectedImagePath = "Light/RGBSetting.png",
|
};
|
lightView.AddChidren (btnRGBSetting);
|
|
btnRGBSetting.MouseUpEventHandler += (sender, e) => {
|
byte [] lightLigicBytes = new byte [11];
|
System.Threading.Tasks.Task.Run (() => {
|
Application.RunOnMainThread (() => {
|
MainPage.Loading.Start ("Loading..");
|
});
|
lightLigicBytes = Control.ControlBytesSendHasReturn (Command.ReadLogicLoopColor, lightRGB.SubnetID, lightRGB.DeviceID, new byte [] { lightRGB.LoopID });
|
if (lightLigicBytes == null) {
|
lightLigicBytes = new byte [11];
|
}
|
Application.RunOnMainThread (() => {
|
MainPage.Loading.Hide ();
|
Dialog dialog = new Dialog () {
|
BackgroundColor = SkinStyle.Current.TextColor1,
|
Width = Application.GetRealWidth (1060),
|
Height = Application.GetRealHeight (880),
|
};
|
Button btnTitle = new Button () {
|
Height = Application.GetRealHeight (100),
|
TextAlignment = TextAlignment.Center,
|
Enable = false,
|
TextID = R.MyInternationalizationString.Setting,
|
BackgroundColor = 0xFF333333
|
};
|
dialog.AddChidren (btnTitle);
|
|
Button btnColor = new Button () {
|
Width = Application.GetRealWidth (100),
|
Height = Application.GetRealHeight (40),
|
X = Application.GetRealWidth (20),
|
Y = btnTitle.Bottom + Application.GetRealHeight (50),
|
Radius = 5,
|
BackgroundColor = (uint)(0xFF000000 + lightLigicBytes [6] * 256 * 256 + lightLigicBytes [7] * 256 + lightLigicBytes [8])
|
};
|
dialog.AddChidren (btnColor);
|
Button btnColorText = new Button () {
|
Width = Application.GetRealWidth (100),
|
Height = Application.GetRealHeight (40),
|
X = btnColor.X,
|
Y = btnColor.Bottom,
|
TextColor = 0xFF000000,
|
Text = "Color"
|
};
|
dialog.AddChidren (btnColorText);
|
ColorPicker c = new ColorPicker () {
|
X = Application.GetRealWidth (50),
|
Y = btnTitle.Bottom + Application.GetRealHeight (130),
|
Width = Application.GetMinRealAverage (440),
|
Height = Application.GetMinRealAverage (440),
|
ColorImagePath = "Item/PickerColorWheel.png",
|
};
|
dialog.AddChidren (c);
|
|
DateTime colorChangeTime = DateTime.MinValue;
|
c.ColorChaged += (sender2, e2) => {
|
if ((DateTime.Now - colorChangeTime).TotalMilliseconds > 500) {
|
lightLigicBytes [6] = e2 [0];
|
lightLigicBytes [7] = e2 [1];
|
lightLigicBytes [8] = e2 [2];
|
Control.ControlBytesSend (Command.SetLogicLoopColor, lightRGB.SubnetID, lightRGB.DeviceID, lightLigicBytes, SendCount.Zero);
|
colorChangeTime = DateTime.Now;
|
btnColor.BackgroundColor = (uint)(0xFF000000 + lightLigicBytes [6] * 256 * 256 + lightLigicBytes [7] * 256 + lightLigicBytes [8]);
|
|
}
|
};
|
|
#region ---延时开---
|
Button btnDelayTimeONTitle = new Button () {
|
Width = Application.GetRealWidth (310),
|
Height = Application.GetRealHeight (80),
|
X = c.Right + Application.GetRealWidth (50),
|
TextAlignment = TextAlignment.CenterLeft,
|
Y = btnColor.Y,
|
TextColor = 0xFF000000,
|
TextID = R.MyInternationalizationString.DelayTimeON
|
};
|
dialog.AddChidren (btnDelayTimeONTitle);
|
|
Button btnDelayTimeOnReduce = new Button () {
|
Width = Application.GetRealWidth (64),
|
Height = Application.GetRealHeight (62),
|
X = btnDelayTimeONTitle.X,
|
Y = btnDelayTimeONTitle.Bottom,
|
UnSelectedImagePath = "Light/Light-.png",
|
SelectedImagePath = "Light/Light-On.png",
|
};
|
dialog.AddChidren (btnDelayTimeOnReduce);
|
|
Button btnDelayTimeOnText = new Button () {
|
Width = Application.GetRealWidth (330),
|
Height = Application.GetRealHeight (62),
|
X = btnDelayTimeOnReduce.Right,
|
Y = btnDelayTimeOnReduce.Y,
|
BackgroundColor = 0xFFDBDDDF,
|
Text = lightRGB.CustomDelayTimeOpen.ToString () + "s",
|
TextSize = 12,
|
TextColor = 0xFF000000
|
};
|
dialog.AddChidren (btnDelayTimeOnText);
|
|
Button btnDelayTimeOnAdd = new Button () {
|
Width = Application.GetRealWidth (64),
|
Height = Application.GetRealHeight (62),
|
X = btnDelayTimeOnText.Right,
|
Y = btnDelayTimeOnReduce.Y,
|
UnSelectedImagePath = "Light/Light+.png",
|
SelectedImagePath = "Light/Light+On.png",
|
};
|
dialog.AddChidren (btnDelayTimeOnAdd);
|
DateTime newTime = DateTime.MaxValue;
|
byte delayTimeOn = lightRGB.CustomDelayTimeOpen;
|
btnDelayTimeOnAdd.MouseDownEventHandler += (sender2, e2) => {
|
btnDelayTimeOnAdd.IsSelected = true;
|
if (delayTimeOn > 59)
|
return;
|
delayTimeOn++;
|
btnDelayTimeOnText.Text = delayTimeOn.ToString () + "s";
|
newTime = DateTime.Now;
|
|
System.Threading.Tasks.Task.Run (() => {
|
while (newTime != DateTime.MaxValue) {
|
System.Threading.Thread.Sleep (100);
|
if ((DateTime.Now - newTime).TotalSeconds > 1) {
|
if (delayTimeOn > 59)
|
break;
|
delayTimeOn++;
|
Application.RunOnMainThread (() => {
|
btnDelayTimeOnText.Text = delayTimeOn.ToString () + "s";
|
});
|
}
|
}
|
});
|
};
|
btnDelayTimeOnAdd.MouseUpEventHandler += (sender2, e2) => {
|
btnDelayTimeOnAdd.IsSelected = false;
|
newTime = DateTime.MaxValue;
|
};
|
|
btnDelayTimeOnReduce.MouseDownEventHandler += (sender2, e2) => {
|
btnDelayTimeOnReduce.IsSelected = true;
|
if (delayTimeOn == 0)
|
return;
|
delayTimeOn--;
|
btnDelayTimeOnText.Text = delayTimeOn.ToString () + "s";
|
newTime = DateTime.Now;
|
|
System.Threading.Tasks.Task.Run (() => {
|
while (newTime != DateTime.MaxValue) {
|
System.Threading.Thread.Sleep (100);
|
if ((DateTime.Now - newTime).TotalSeconds > 1) {
|
if (delayTimeOn == 0)
|
break;
|
delayTimeOn--;
|
Application.RunOnMainThread (() => {
|
btnDelayTimeOnText.Text = delayTimeOn.ToString () + "s";
|
});
|
}
|
}
|
});
|
};
|
btnDelayTimeOnReduce.MouseUpEventHandler += (sender2, e2) => {
|
btnDelayTimeOnReduce.IsSelected = false;
|
newTime = DateTime.MaxValue;
|
};
|
#endregion
|
|
#region ---延时关---
|
Button btnDelayTimeOFFTitle = new Button () {
|
Width = Application.GetRealWidth (310),
|
Height = Application.GetRealHeight (80),
|
X = btnDelayTimeONTitle.X,
|
TextAlignment = TextAlignment.CenterLeft,
|
Y = btnDelayTimeOnReduce.Bottom + Application.GetRealHeight (100),
|
TextColor = 0xFF000000,
|
TextID = R.MyInternationalizationString.DelayTimeOFF
|
};
|
dialog.AddChidren (btnDelayTimeOFFTitle);
|
|
Button btnDelayTimeOffReduce = new Button () {
|
Width = Application.GetRealWidth (64),
|
Height = Application.GetRealHeight (62),
|
X = btnDelayTimeOFFTitle.X,
|
Y = btnDelayTimeOFFTitle.Bottom,
|
UnSelectedImagePath = "Light/Light-.png",
|
SelectedImagePath = "Light/Light-On.png",
|
};
|
dialog.AddChidren (btnDelayTimeOffReduce);
|
|
Button btnDelayTimeOffText = new Button () {
|
Width = Application.GetRealWidth (330),
|
Height = Application.GetRealHeight (62),
|
X = btnDelayTimeOffReduce.Right,
|
Y = btnDelayTimeOffReduce.Y,
|
BackgroundColor = 0xFFDBDDDF,
|
Text = lightRGB.CustomDelayTimeClose.ToString () + "s",
|
TextSize = 12,
|
TextColor = 0xFF000000
|
};
|
dialog.AddChidren (btnDelayTimeOffText);
|
|
Button btnDelayTimeOffAdd = new Button () {
|
Width = Application.GetRealWidth (64),
|
Height = Application.GetRealHeight (62),
|
X = btnDelayTimeOffText.Right,
|
Y = btnDelayTimeOffReduce.Y,
|
UnSelectedImagePath = "Light/Light+.png",
|
SelectedImagePath = "Light/Light+On.png",
|
};
|
dialog.AddChidren (btnDelayTimeOffAdd);
|
|
byte delayTimeOff = lightRGB.CustomDelayTimeClose;
|
btnDelayTimeOffAdd.MouseDownEventHandler += (sender2, e2) => {
|
btnDelayTimeOffAdd.IsSelected = true;
|
if (delayTimeOff > 59)
|
return;
|
delayTimeOff++;
|
btnDelayTimeOffText.Text = delayTimeOff.ToString () + "s";
|
newTime = DateTime.Now;
|
|
System.Threading.Tasks.Task.Run (() => {
|
while (newTime != DateTime.MaxValue) {
|
System.Threading.Thread.Sleep (100);
|
if ((DateTime.Now - newTime).TotalSeconds > 1) {
|
if (delayTimeOff > 59)
|
break;
|
delayTimeOff++;
|
Application.RunOnMainThread (() => {
|
btnDelayTimeOffText.Text = delayTimeOff.ToString () + "s";
|
});
|
}
|
}
|
});
|
};
|
btnDelayTimeOffAdd.MouseUpEventHandler += (sender2, e2) => {
|
btnDelayTimeOffAdd.IsSelected = false;
|
newTime = DateTime.MaxValue;
|
};
|
|
btnDelayTimeOffReduce.MouseDownEventHandler += (sender2, e2) => {
|
btnDelayTimeOffReduce.IsSelected = true;
|
if (delayTimeOff == 0)
|
return;
|
delayTimeOff--;
|
btnDelayTimeOffText.Text = delayTimeOff.ToString () + "s";
|
newTime = DateTime.Now;
|
|
System.Threading.Tasks.Task.Run (() => {
|
while (newTime != DateTime.MaxValue) {
|
System.Threading.Thread.Sleep (100);
|
if ((DateTime.Now - newTime).TotalSeconds > 1) {
|
if (delayTimeOff == 0)
|
break;
|
delayTimeOff--;
|
Application.RunOnMainThread (() => {
|
btnDelayTimeOffText.Text = delayTimeOff.ToString () + "s";
|
});
|
}
|
}
|
});
|
};
|
btnDelayTimeOffReduce.MouseUpEventHandler += (sender2, e2) => {
|
btnDelayTimeOffReduce.IsSelected = false;
|
newTime = DateTime.MaxValue;
|
};
|
|
#endregion
|
|
|
HorizontalSeekBar seekBarLighting = new HorizontalSeekBar () {
|
X = btnDelayTimeONTitle.X,
|
Y = btnDelayTimeOffReduce.Bottom + Application.GetRealHeight (100),
|
Width = Application.GetRealWidth (410),
|
Height = Application.GetRealHeight (50),
|
Progress = lightLigicBytes [1],
|
ThumbColor = (uint)(0xFF000000 + lightLigicBytes [6] * 256 * 256 + lightLigicBytes [7] * 256 + lightLigicBytes [8]),
|
Max = 100,
|
ProgressColor = SkinStyle.Current.SelectedColor,
|
};
|
dialog.AddChidren (seekBarLighting); Button btnLightingText = new Button () {
|
X = seekBarLighting.Right + Application.GetRealWidth (5),
|
Y = seekBarLighting.Y,
|
Width = Application.GetRealWidth (80),
|
Height = Application.GetRealHeight (50),
|
TextColor = 0xFF000000,
|
Text = lightLigicBytes [1].ToString () + "%"
|
};
|
dialog.AddChidren (btnLightingText);
|
seekBarLighting.ProgressChanged += (sender3, e3) => {
|
if ((DateTime.Now - colorChangeTime).TotalMilliseconds > 50) {
|
lightLigicBytes [1] = (byte)e3;
|
Control.ControlBytesSend (Command.SetLogicLoopColor, lightRGB.SubnetID, lightRGB.DeviceID, lightLigicBytes, SendCount.Zero);
|
colorChangeTime = DateTime.Now;
|
btnLightingText.Text = e3.ToString () + "%";
|
lightRGB.LastOpenBrightness = (byte)e3;
|
}
|
};
|
|
FrameLayout bottomView = new FrameLayout () {
|
Y = dialog.Height - Application.GetRealHeight (100),
|
Height = Application.GetRealHeight (100),
|
BackgroundColor = SkinStyle.Current.MainColor
|
};
|
dialog.AddChidren (bottomView);
|
Button btnCancel = new Button () {
|
Width = Application.GetRealWidth (528),
|
TextID = R.MyInternationalizationString.Cancel,
|
};
|
bottomView.AddChidren (btnCancel);
|
btnCancel.MouseUpEventHandler += (sender2, e2) => {
|
dialog.Close ();
|
};
|
Button btnLine = new Button () {
|
BackgroundColor = 0xFF333333,
|
Width = 1,
|
X = btnCancel.Right,
|
};
|
bottomView.AddChidren (btnLine);
|
Button btnSave = new Button () {
|
Width = Application.GetRealWidth (528),
|
X = btnLine.Right,
|
TextID = R.MyInternationalizationString.SAVE
|
};
|
bottomView.AddChidren (btnSave);
|
|
btnSave.MouseUpEventHandler += (send3er, e3) => {
|
if (lightRGB.CustomDelayTimeOpen != delayTimeOn || lightRGB.CustomDelayTimeClose != delayTimeOff) {
|
string keyString = lightRGB.SubnetID.ToString () + "_" + lightRGB.DeviceID.ToString () + "_" + lightRGB.LoopID.ToString ();
|
lightRGB.CustomDelayTimeOpen = delayTimeOn;
|
lightRGB.CustomDelayTimeClose = delayTimeOff;
|
if (room.DelayTime.ContainsKey (keyString + "Open")) {
|
room.DelayTime [keyString + "Open"] = delayTimeOn;
|
} else {
|
room.DelayTime.Add (keyString + "Open", delayTimeOn);
|
}
|
if (room.DelayTime.ContainsKey (keyString + "Close")) {
|
room.DelayTime [keyString + "Close"] = delayTimeOff;
|
} else {
|
room.DelayTime.Add (keyString + "Close", delayTimeOff);
|
}
|
room.Save (typeof (Room).Name + "_" + room.Name);
|
}
|
if (lightLigicBytes [6] != lightRGB.RStatus || lightLigicBytes [7] != lightRGB.GStatus || lightLigicBytes [8] != lightRGB.BStatus) {
|
lightRGB.RStatus = lightLigicBytes [6];
|
lightRGB.GStatus = lightLigicBytes [7];
|
lightRGB.BStatus = lightLigicBytes [8];
|
btnLightSetting.BackgroundColor = (uint)(0xFF000000 + lightLigicBytes [6] * 256 * 256 + lightLigicBytes [7] * 256 + lightLigicBytes [8]);
|
IO.FileUtils.SaveEquipmentMessage (lightRGB, lightRGB.LoopID.ToString ());
|
}
|
dialog.Close ();
|
};
|
dialog.Show ();
|
});
|
});
|
};
|
#endregion
|
//开关按键
|
var tempSwitch = new Button () {
|
Width = Application.GetRealWidth (90),
|
Height = Application.GetRealHeight (53),
|
X = Application.GetRealWidth (750 - 90 - 50),
|
Y = Application.GetRealHeight (75),
|
UnSelectedImagePath = "Item/SwitchClose.png",
|
SelectedImagePath = "Item/SwitchOpen.png",
|
};
|
lightView.AddChidren (tempSwitch);
|
|
tempLightSeekBar.ProgressChanged += (senderp, ep) => {
|
if ((System.DateTime.Now - (DateTime)(tempLightSeekBar.Tag)).TotalMilliseconds < 500) {
|
return;
|
}
|
tempLightSeekBar.Tag = DateTime.Now;
|
|
Control.ControlBytesSend (Command.SetLogicLoopColor, lightRGB.SubnetID, lightRGB.DeviceID, new byte [] {
|
lightRGB.LoopID, lightRGB.CurrentBrightness, 254, 0,0,
|
3,lightRGB.RStatus,lightRGB.GStatus,lightRGB.BStatus,0,0}, SendCount.Zero);
|
if (tempLightSeekBar.Progress > 0) {
|
tempSwitch.IsSelected = true;
|
} else {
|
tempSwitch.IsSelected = false;
|
}
|
lightRGB.CurrentBrightness = (byte)ep;
|
};
|
tempLightSeekBar.MouseUpEventHandler += (sender, e) => {
|
//弹起的时候发最后的数据
|
tempLightSeekBar.Tag = DateTime.Now;
|
lightRGB.CurrentBrightness = Convert.ToByte (tempLightSeekBar.Progress);
|
Control.ControlBytesSend (Command.SetLogicLoopColor, lightRGB.SubnetID, lightRGB.DeviceID, new byte [] {
|
lightRGB.LoopID, lightRGB.CurrentBrightness, 254, 0,0,
|
3,lightRGB.RStatus,lightRGB.GStatus,lightRGB.BStatus,0,0}, SendCount.Zero);
|
if (tempLightSeekBar.Progress > 0) {
|
tempSwitch.IsSelected = true;
|
lightRGB.LastOpenBrightness = (byte)tempLightSeekBar.Progress;
|
IO.FileUtils.WriteFileByBytes ("Equipment_" + typeof (LightDimming).Name + "_" + lightRGB.SubnetID.ToString () + "_" + lightRGB.DeviceID.ToString () + "_" + (lightRGB.LoopID < 10 ? "0" + lightRGB.LoopID.ToString () : lightRGB.LoopID.ToString ()),
|
CommonPage.MyEncodingUTF8.GetBytes (Newtonsoft.Json.JsonConvert.SerializeObject (lightRGB)));
|
} else {
|
tempSwitch.IsSelected = false;
|
}
|
lightRGB.CurrentBrightness = (byte)tempLightSeekBar.Progress;
|
};
|
tempLightSeekBar.AddTag ("UpdataKey", lightRGB.CommonLoopID + "RGB");
|
|
tempSwitch.MouseUpEventHandler += (sender3, e3) => {
|
tempSwitch.IsSelected = !tempSwitch.IsSelected;
|
if (lightRGB.LastOpenBrightness == 0) {
|
lightRGB.LastOpenBrightness = 100;
|
}
|
if (tempSwitch.IsSelected) {
|
tempLightSeekBar.Progress = lightRGB.LastOpenBrightness;
|
IO.FileUtils.WriteFileByBytes ("Equipment_" + typeof (LightDimming).Name + "_" + lightRGB.SubnetID.ToString () + "_" + lightRGB.DeviceID.ToString () + "_" + (lightRGB.LoopID < 10 ? "0" + lightRGB.LoopID.ToString () : lightRGB.LoopID.ToString ()),
|
CommonPage.MyEncodingUTF8.GetBytes (Newtonsoft.Json.JsonConvert.SerializeObject (lightRGB)));
|
} else {
|
tempLightSeekBar.Progress = 0;
|
}
|
lightRGB.CurrentBrightness = (byte)tempLightSeekBar.Progress;
|
byte delayHeight = 0;
|
byte delayLow = 0;
|
if (lightRGB.CurrentBrightness == 0) {
|
delayHeight = Convert.ToByte (lightRGB.CustomDelayTimeClose / 256);
|
delayLow = Convert.ToByte (lightRGB.CustomDelayTimeClose % 256);
|
} else {
|
delayHeight = Convert.ToByte (lightRGB.CustomDelayTimeOpen / 256);
|
delayLow = Convert.ToByte (lightRGB.CustomDelayTimeOpen % 256);
|
}
|
Control.ControlBytesSend (Command.SetLogicLoopColor, lightRGB.SubnetID, lightRGB.DeviceID, new byte [] {
|
lightRGB.LoopID, lightRGB.CurrentBrightness, 254, lightRGB.CustomDelayTimeOpen,lightRGB.CustomDelayTimeClose,
|
3,lightRGB.RStatus,lightRGB.GStatus,lightRGB.BStatus,0,0}, SendCount.Zero);
|
tempLightSeekBar.Progress = lightRGB.CurrentBrightness;
|
};
|
|
if (lightRGB.CurrentBrightness > 0) {
|
tempSwitch.IsSelected = true;
|
}
|
}
|
|
}
|
|
/// <summary>
|
/// 读取设备状态
|
/// </summary>
|
static void readStatus (Room room)
|
{
|
System.Threading.Tasks.Task.Run (() => {
|
System.Collections.Generic.List<string> readList = new System.Collections.Generic.List<string> ();
|
//foreach (Room room in Room.Lists) {
|
var list = room.DeviceList.FindAll ((obj) => {
|
return obj.LastUpdateTime.AddMinutes (Common.Time) <= DateTime.Now && (obj.Type == DeviceType.LightDimming || obj.Type == DeviceType.LightSwitch);
|
});
|
foreach (Common common in list) {
|
var s = common.Type + "_" + common.SubnetID + "_" + common.DeviceID;
|
//已经读取过当前设备就不再读取
|
if (readList.Contains (s)) {
|
continue;
|
}
|
readList.Add (s);
|
Control.ControlBytesSendHasReturn (Command.ReadLightEquipmentAllLoopBrightness, common.SubnetID, common.DeviceID, new byte [] { });
|
}
|
//}
|
});
|
}
|
}
|
}
|