using System;
|
using System.Collections.Generic;
|
|
namespace Shared.SimpleControl.Phone
|
{
|
public class ScenePhoneMethod
|
{
|
bool showTip = true;
|
|
/// <summary>
|
/// 添加或者修改房间场景
|
/// </summary>
|
/// <param name="roomFilePath">Room name.</param>
|
/// <param name="ds">代理方法,用来刷新界面</param>
|
/// <param name="sceneFilePath">Scene.(为null是表示是增加场景)</param>
|
public void AddOrUpdataSceneBaseMassage (string roomFilePath, string sceneFilePath = null, Action<string> action = null, Action actionRefreshRoom = null)
|
{
|
Room room = null;
|
if (roomFilePath == Scene.GlobalSceneFilePath) {
|
//GlobalScene
|
} else {
|
room = Room.GetRoomByFilePath (roomFilePath);
|
if (room == null)
|
return;
|
}
|
|
var scene = Scene.GetSceneByFilePath (sceneFilePath);
|
if (null == scene) {
|
scene = new Scene ();
|
}
|
|
#region Load
|
Dialog dialog = new Dialog ();
|
|
FrameLayout dialogBodyView = new FrameLayout () {
|
BackgroundColor = SkinStyle.Current.DialogColor,
|
Width = Application.GetRealWidth (520),
|
Height = Application.GetRealHeight (740),
|
Gravity = Gravity.Center,
|
Radius = 5,
|
BorderWidth = 0,
|
BorderColor = SkinStyle.Current.Transparent
|
};
|
dialog.AddChidren (dialogBodyView);
|
|
Button btnDialgoTitle = new Button () {
|
Width = Application.GetRealWidth (520),
|
Height = Application.GetRealHeight (70),
|
BackgroundColor = SkinStyle.Current.DialogTitle,
|
TextID = R.MyInternationalizationString.AddNewRoom,
|
TextAlignment = TextAlignment.Center,
|
Gravity = Gravity.CenterHorizontal,
|
};
|
dialogBodyView.AddChidren (btnDialgoTitle);
|
Button lblSceneText = new Button () {
|
Gravity = Gravity.CenterHorizontal,
|
Y = Application.GetRealHeight (80),
|
Width = Application.GetRealWidth (450),
|
Height = Application.GetRealHeight (50),
|
TextID = R.MyInternationalizationString.RoomName,
|
TextAlignment = TextAlignment.CenterLeft,
|
TextColor = SkinStyle.Current.TextColor,
|
};
|
dialogBodyView.AddChidren (lblSceneText);
|
EditText sceneTextBox = new EditText () {
|
Gravity = Gravity.CenterHorizontal,
|
Y = lblSceneText.Bottom + Application.GetRealHeight (10),
|
Width = Application.GetRealWidth (450),
|
Height = Application.GetRealHeight (60),
|
TextAlignment = TextAlignment.CenterLeft,
|
TextColor = SkinStyle.Current.TextColor,
|
Text = scene.Name,
|
Radius = 2,
|
BorderColor = SkinStyle.Current.DialogTitle,
|
BorderWidth = 1,
|
};
|
dialogBodyView.AddChidren (sceneTextBox);
|
sceneTextBox.EditorEnterAction += (obj) => {
|
Application.HideSoftInput ();
|
};
|
|
Button lblIcon = new Button () {
|
Gravity = Gravity.CenterHorizontal,
|
Y = sceneTextBox.Bottom + Application.GetRealHeight (10),
|
Width = Application.GetRealWidth (450),
|
Height = btnDialgoTitle.Height,
|
TextID = R.MyInternationalizationString.Backgroud,
|
TextAlignment = TextAlignment.CenterLeft,
|
TextColor = SkinStyle.Current.TextColor,
|
};
|
dialogBodyView.AddChidren (lblIcon);
|
|
var verIconLayout = new VerticalScrolViewLayout () {
|
Gravity = Gravity.CenterHorizontal,
|
Y = lblIcon.Bottom,
|
Width = sceneTextBox.Width,
|
Height = Application.GetRealHeight (200),
|
};
|
dialogBodyView.AddChidren (verIconLayout);
|
var inVerFramelayout = new FrameLayout () {
|
Width = lblIcon.Width,
|
Height = Application.GetRealHeight (200),
|
};
|
verIconLayout.AddChidren (inVerFramelayout);
|
|
var systempictureLayout = new FrameLayout {
|
Height = Application.GetRealHeight (160),
|
Y = Application.GetRealHeight (480),
|
};
|
dialogBodyView.AddChidren (systempictureLayout);
|
|
var btnBG = new Button () {
|
Width = Application.GetRealWidth (270),
|
Height = LayoutParams.MatchParent,
|
UnSelectedImagePath = scene.BackgroundImagePath,
|
|
};
|
inVerFramelayout.AddChidren (btnBG);
|
#if wallon
|
btnBG.Gravity = Gravity.Center;
|
#else
|
var btnTakePictrue = new Button () {
|
Width = inVerFramelayout.Width - btnBG.Width,
|
Height = inVerFramelayout.Height / 2,
|
TextID = R.MyInternationalizationString.TakePhoto,
|
TextColor = SkinStyle.Current.TextColor1,
|
BackgroundColor = SkinStyle.Current.ButtonColor,
|
X = btnBG.Right,
|
};
|
inVerFramelayout.AddChidren (btnTakePictrue);
|
Guid guid = Guid.NewGuid ();
|
btnTakePictrue.MouseUpEventHandler += (sender, e) => {
|
guid = Guid.NewGuid ();
|
Camera.TakePicture ((obj) => {
|
if (obj != null) {
|
btnBG.UnSelectedImagePath = guid.ToString();
|
}
|
}, guid.ToString(),false);
|
};
|
Button btnLineP = new Button () {
|
Width = btnTakePictrue.Width,
|
Height = 1,
|
BackgroundColor = SkinStyle.Current.Black50Transparent,
|
X = btnBG.Right,
|
Y = btnTakePictrue.Bottom,
|
};
|
inVerFramelayout.AddChidren (btnLineP);
|
Button btnSelectPictrue = new Button () {
|
Width = btnTakePictrue.Width,
|
Height = btnTakePictrue.Height,
|
TextColor = SkinStyle.Current.TextColor1,
|
TextID = R.MyInternationalizationString.SelectPicture,
|
BackgroundColor = SkinStyle.Current.ButtonColor,
|
X = btnBG.Right,
|
Y = btnLineP.Bottom,
|
};
|
inVerFramelayout.AddChidren (btnSelectPictrue);
|
btnSelectPictrue.MouseUpEventHandler += (sender, e) => {
|
guid = Guid.NewGuid ();
|
Camera.SelectPicture ((obj) => {
|
if (obj != null) {
|
btnBG.UnSelectedImagePath = guid.ToString ();
|
}
|
}, guid.ToString(), false);
|
};
|
|
#endif
|
var horizontalScrolViewLayout = new HorizontalScrolViewLayout () {
|
Width = Application.GetRealWidth (450),
|
Gravity = Gravity.CenterHorizontal,
|
};
|
systempictureLayout.AddChidren (horizontalScrolViewLayout);
|
for (int i = 0; i < 22; i++) {
|
Button butscene = new Button () {
|
Width = Application.GetRealWidth (200),
|
Height = LayoutParams.MatchParent,
|
};
|
butscene.MouseUpEventHandler += (sender, e) => {
|
btnBG.UnSelectedImagePath = butscene.UnSelectedImagePath;
|
};
|
butscene.UnSelectedImagePath = "Scene/s" + (i).ToString () + ".png";
|
|
horizontalScrolViewLayout.AddChidren (butscene);
|
}
|
FrameLayout BottomView = new FrameLayout () {
|
Y = dialogBodyView.Height - Application.GetRealHeight (90),
|
Height = Application.GetRealHeight (90),
|
BackgroundColor = SkinStyle.Current.DialogTitle,
|
};
|
dialogBodyView.AddChidren (BottomView);
|
Button btnBack = new Button () {
|
Width = Application.GetRealWidth (119),
|
UnSelectedImagePath = "Item/PositioningDialogBack.png",
|
SelectedImagePath = "Item/PositioningDialogBack.png",
|
};
|
BottomView.AddChidren (btnBack);
|
btnBack.MouseUpEventHandler += (sender1, e1) => {
|
dialog.Close ();
|
};
|
Button btnLineH = new Button () {
|
Width = 1,
|
Height = LayoutParams.MatchParent,
|
BackgroundColor = SkinStyle.Current.White20Transparent,
|
X = btnBack.Right,
|
};
|
BottomView.AddChidren (btnLineH);
|
|
Button btnSave = new Button () {
|
Width = Application.GetRealWidth (400),
|
X = btnLineH.Right,
|
TextID = R.MyInternationalizationString.SAVE,
|
TextAlignment = TextAlignment.Center,
|
Radius = 1,
|
};
|
BottomView.AddChidren (btnSave);
|
#endregion
|
|
btnDialgoTitle.TextID = R.MyInternationalizationString.AddNewScenes;
|
lblSceneText.TextID = R.MyInternationalizationString.SceneName;
|
|
if (roomFilePath == Scene.GlobalSceneFilePath) {
|
var sceneFileList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<string>> (System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (Scene.GlobalSceneFilePath)));
|
if (!string.IsNullOrEmpty (sceneFilePath))
|
btnDialgoTitle.TextID = R.MyInternationalizationString.ChangeInformation;
|
|
//增加或者修改场景
|
btnSave.MouseUpEventHandler += (sender, e) => {
|
string newScenFilePath = "GlobalScene_" + sceneTextBox.Text.Trim ();
|
|
if (string.IsNullOrEmpty (sceneTextBox.Text.Trim ())) {
|
new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.PleaseEnterSceneName), Language.StringByID (R.MyInternationalizationString.Close)).Show ();
|
return;
|
}
|
|
//更改过场景图
|
if (btnBG.UnSelectedImagePath == "SecenPicture") {//将选择或拍摄的背景更改对应的名称保存下来
|
IO.FileUtils.ReNameFile (btnBG.UnSelectedImagePath, "Image_" + newScenFilePath);
|
btnBG.UnSelectedImagePath = "Image_" + newScenFilePath;
|
}
|
scene.BackgroundImagePath = btnBG.UnSelectedImagePath;
|
scene.Name = sceneTextBox.Text.Trim ();
|
//新加场景
|
if (sceneFilePath == null) {
|
if (IO.FileUtils.Exists (newScenFilePath)) {
|
new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.HaveTheSame), Language.StringByID (R.MyInternationalizationString.Close)).Show ();
|
return;
|
}
|
sceneFileList.Add (newScenFilePath);
|
} else {
|
//更改的场景名称已经存在
|
if (!sceneFileList.Contains (newScenFilePath) && IO.FileUtils.Exists (newScenFilePath)) {
|
new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.HaveTheSame), Language.StringByID (R.MyInternationalizationString.Close)).Show ();
|
return;
|
}
|
|
//场景名更改
|
if (sceneFilePath != newScenFilePath) {
|
//如果是场景更改,那原文件名也需要更新
|
IO.FileUtils.ReNameFile (sceneFilePath, newScenFilePath);
|
for (int i = 0; i < sceneFileList.Count; i++) {
|
if (sceneFileList [i] == sceneFilePath) {
|
sceneFileList [i] = newScenFilePath;
|
}
|
}
|
}
|
}
|
// 更新修改后的数据
|
IO.FileUtils.WriteFileByBytes (newScenFilePath, CommonPage.MyEncodingUTF8.GetBytes (Newtonsoft.Json.JsonConvert.SerializeObject (scene)));
|
IO.FileUtils.WriteFileByBytes (Scene.GlobalSceneFilePath, CommonPage.MyEncodingUTF8.GetBytes (Newtonsoft.Json.JsonConvert.SerializeObject (sceneFileList)));
|
if (action != null) {
|
action (newScenFilePath);
|
}
|
dialog.Close ();
|
};
|
} else {
|
if (!string.IsNullOrEmpty (sceneFilePath))
|
btnDialgoTitle.TextID = R.MyInternationalizationString.ChangeInformation;
|
btnSave.Width = Application.GetRealWidth (400);
|
|
//增加或者修改场景
|
btnSave.MouseUpEventHandler += (sender, e) => {
|
string newScenFilePath = "RoomScene_" + room.Name + "_" + sceneTextBox.Text.Trim ();
|
|
if (string.IsNullOrEmpty (sceneTextBox.Text.Trim ())) {
|
new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.PleaseEnterSceneName), Language.StringByID (R.MyInternationalizationString.Close)).Show ();
|
return;
|
}
|
|
//更改过场景图
|
if (btnBG.UnSelectedImagePath == "SecenPicture") {//将选择或拍摄的背景更改对应的名称保存下来
|
IO.FileUtils.ReNameFile (btnBG.UnSelectedImagePath, "Image_" + newScenFilePath);
|
btnBG.UnSelectedImagePath = "Image_" + newScenFilePath;
|
IO.FileUtils.WriteFileByBytes (sceneFilePath, CommonPage.MyEncodingUTF8.GetBytes (Newtonsoft.Json.JsonConvert.SerializeObject (scene)));
|
}
|
scene.BackgroundImagePath = btnBG.UnSelectedImagePath;
|
scene.Name = sceneTextBox.Text.Trim ();
|
//新加场景
|
if (sceneFilePath == null) {
|
if (IO.FileUtils.Exists (newScenFilePath)) {
|
new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.HaveTheSame), Language.StringByID (R.MyInternationalizationString.Close)).Show ();
|
return;
|
}
|
room.SceneFilePathList.Add (newScenFilePath);
|
} else {
|
//更改的场景名称已经存在
|
if (!room.SceneFilePathList.Contains (newScenFilePath) && IO.FileUtils.Exists (newScenFilePath)) {
|
new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.HaveTheSame), Language.StringByID (R.MyInternationalizationString.Close)).Show ();
|
return;
|
}
|
|
//场景名更改
|
if (sceneFilePath != newScenFilePath) {
|
//如果是场景更改,那原文件名也需要更新
|
IO.FileUtils.ReNameFile (sceneFilePath, newScenFilePath);
|
for (int i = 0; i < room.SceneFilePathList.Count; i++) {
|
if (room.SceneFilePathList [i] == sceneFilePath) {
|
room.SceneFilePathList [i] = newScenFilePath;
|
}
|
}
|
}
|
}
|
// 更新修改后的数据
|
IO.FileUtils.WriteFileByBytes (newScenFilePath, CommonPage.MyEncodingUTF8.GetBytes (Newtonsoft.Json.JsonConvert.SerializeObject (scene)));
|
room.Save (roomFilePath);
|
|
Room.UpdateMemorry (roomFilePath);
|
|
//刷新当前房间的数据
|
if (action != null) {
|
action (newScenFilePath);
|
}
|
|
if (actionRefreshRoom != null) {
|
actionRefreshRoom ();
|
}
|
dialog.Close ();
|
};
|
}
|
dialog.Show ();
|
}
|
|
public void ControlScene (string sceneFilePath)
|
{
|
var tempScene = Scene.GetSceneByFilePath (sceneFilePath);
|
if (tempScene == null)
|
return;
|
showTip = true;
|
new System.Threading.Thread (() => {
|
int sceneDeviceCount = tempScene.DeviceFilePathList.Count;
|
int controlDeviceIndex = 0;
|
|
//if (!tempScene.busScene) {
|
foreach (var deviceFilePath in tempScene.DeviceFilePathList) {
|
controlDeviceIndex++;
|
//ControlSceneDevice (deviceFilePath, controlDeviceIndex, sceneDeviceCount);
|
//continue;
|
byte [] replyBytes = null;
|
var common = Newtonsoft.Json.JsonConvert.DeserializeObject<Common> (System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (deviceFilePath)));
|
if(common.Type == DeviceType.FanModule) {
|
var device = Newtonsoft.Json.JsonConvert.DeserializeObject<FanModule> (System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (deviceFilePath)));
|
if (device == null) {
|
continue;//
|
}
|
replyBytes = Control.ControlBytesSendHasReturn (Command.SetSingleLight, device.SubnetID, device.DeviceID, new byte [] { device.LoopID, device.WindSpeed });
|
} else if (common.Type == DeviceType.LightDimming) {
|
var device = Newtonsoft.Json.JsonConvert.DeserializeObject<LightDimming> (System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (deviceFilePath)));
|
if (device == null) {
|
continue;//
|
}
|
replyBytes = Control.ControlBytesSendHasReturn (Command.SetSingleLight, device.SubnetID, device.DeviceID, new byte [] { device.LoopID, device.CurrentBrightness, device.DelayTimeHeight, device.DelayTimeLow });
|
} else if (common.Type == DeviceType.LightDALI) {
|
var device = Newtonsoft.Json.JsonConvert.DeserializeObject<LightDALI> (System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (deviceFilePath)));
|
if (device == null) {
|
continue;
|
}
|
Control.ControlBytesSend (Command.control_lamp_color_Temperature, device.SubnetID, device.DeviceID, new byte [] { device.LoopID, device.CurTones_High, device.CurTones_Low }, SendCount.Zero);
|
replyBytes = Control.ControlBytesSendHasReturn (Command.SetSingleLight, device.SubnetID, device.DeviceID, new byte [] { device.LoopID, device.CurrentBrightness, device.DelayTimeHeight, device.DelayTimeLow });
|
} else if (common.Type == DeviceType.LightMixDimming) {
|
var device = Newtonsoft.Json.JsonConvert.DeserializeObject<LightMixDimming> (System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (deviceFilePath)));
|
if (device == null) {
|
continue;
|
}
|
replyBytes = Control.ControlBytesSendHasReturn (Command.SetSingleLight, device.SubnetID, device.DeviceID, new byte [] { device.PhysicsLoopID, device.CurrentBrightness, device.DelayTimeHeight, device.DelayTimeLow });
|
} else if (common.Type == DeviceType.LightEnergySwitch) {
|
var device = Newtonsoft.Json.JsonConvert.DeserializeObject<LightEnergySwitch> (System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (deviceFilePath)));
|
if (device == null) {
|
continue;
|
}
|
replyBytes = Control.ControlBytesSendHasReturn (Command.SetSingleLight, device.SubnetID, device.DeviceID, new byte [] { device.LoopID, device.CurrentBrightness, device.DelayTimeHeight, device.DelayTimeLow });
|
} else if (common.Type == DeviceType.LightRGB) {
|
var device = Newtonsoft.Json.JsonConvert.DeserializeObject<LightLogic> (System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (deviceFilePath)));
|
if (device != null) {
|
replyBytes = Control.ControlBytesSendHasReturn (Command.SetLogicLoopColor, device.SubnetID, device.DeviceID, new byte [] { device.LoopID, device.CurrentBrightness, 254, device.DelayTimeHeigh,device.DelayTimeLow,
|
3,device.RStatus,device.GStatus,device.BStatus,0,0});
|
}
|
} else if (common.Type == DeviceType.LightSwitch || common.Type == DeviceType.LightSwitchSocket) {
|
var device = Newtonsoft.Json.JsonConvert.DeserializeObject<LightSwitch> (System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (deviceFilePath)));
|
if (device == null) {
|
continue;
|
}
|
replyBytes = Control.ControlBytesSendHasReturn (Command.SetSingleLight, device.SubnetID, device.DeviceID, new byte [] { device.LoopID, device.CurrentBrightness, device.DelayTimeHeight, device.DelayTimeLow });
|
} else if (common.Type == DeviceType.LightMixSwitch) {
|
var device = Newtonsoft.Json.JsonConvert.DeserializeObject<LightMixSwitch> (System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (deviceFilePath)));
|
if (device == null) {
|
continue;
|
}
|
replyBytes = Control.ControlBytesSendHasReturn (Command.SetSingleLight, device.SubnetID, device.DeviceID, new byte [] { device.PhysicsLoopID, device.CurrentBrightness, device.DelayTimeHeight, device.DelayTimeLow });
|
} else if (common.Type == DeviceType.CurtainModel) {
|
var device = Newtonsoft.Json.JsonConvert.DeserializeObject<CurtainModel> (System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (deviceFilePath)));
|
if (device == null) {
|
continue;
|
}
|
replyBytes = Control.ControlBytesSendHasReturn (Command.UpdataCurtainModelStutas, device.SubnetID, device.DeviceID, new byte [] { device.LoopID, (byte)device.Status });
|
} else if (common.Type == DeviceType.CurtainRoller) {
|
var device = Newtonsoft.Json.JsonConvert.DeserializeObject<CurtainRoller> (System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (deviceFilePath)));
|
if (device == null) {
|
continue;
|
}
|
replyBytes = Control.ControlBytesSendHasReturn (Command.UpdataCurtainModelStutas, device.SubnetID, device.DeviceID, new byte [] { 1, (byte)device.Status });
|
} else if (common.Type == DeviceType.CurtainTrietex) {
|
var device = Newtonsoft.Json.JsonConvert.DeserializeObject<CurtainTrietex> (System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (deviceFilePath)));
|
if (device == null) {
|
continue;
|
}
|
replyBytes = Control.ControlBytesSendHasReturn (Command.UpdataCurtainModelStutas, device.SubnetID, device.DeviceID, new byte [] { 1, (byte)device.Status });
|
} else if (common.Type == DeviceType.HVAC || common.Type == DeviceType.ACInfrared) {
|
var device = Newtonsoft.Json.JsonConvert.DeserializeObject<HVAC> (System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (deviceFilePath)));
|
if (device == null) {
|
continue;
|
}
|
replyBytes = Control.ControlBytesSendHasReturn (Command.SetACMode, device.SubnetID, device.DeviceID, new byte [] {
|
device.LoopID,
|
device.TemperatureMode,
|
device.IndoorTemperature,
|
device.CoolTemperature,
|
device.HeatTemperature,
|
device.AutoTemperature,
|
device.ChuShiTemperature,
|
device.RealModeAndFanSpeed,
|
device.Power,
|
device.SetMode,
|
device.SetFanSpeed,
|
device.SetTemperature,
|
device.ShaoFanMode});
|
} else if (common.Type == DeviceType.ACPanel) {
|
var ac = Newtonsoft.Json.JsonConvert.DeserializeObject<ACPanel> (System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (deviceFilePath)));
|
if (ac == null) {
|
continue;
|
}
|
byte modeKey = 4;
|
switch (ac.SetMode) {
|
//cooling
|
case 0:
|
modeKey = 4;
|
break;
|
//Heating
|
case 1:
|
modeKey = 7;
|
break;
|
//Fan
|
case 2:
|
modeKey = 2;
|
break;
|
// Auto
|
case 3:
|
modeKey = 8;
|
break;
|
//Dry
|
case 4:
|
modeKey = 19;
|
break;
|
}
|
Control.ControlBytesSend (Command.InstructionPanelKey, ac.SubnetID, ac.DeviceID, new byte [] { modeKey, ac.SetTemperature, ac.LoopID });
|
Control.ControlBytesSend (Command.InstructionPanelKey, ac.SubnetID, ac.DeviceID, new byte [] { 6, ac.SetMode, ac.LoopID });
|
Control.ControlBytesSend (Command.InstructionPanelKey, ac.SubnetID, ac.DeviceID, new byte [] { 5, ac.SetFanSpeed, ac.LoopID });
|
Control.ControlBytesSend (Command.InstructionPanelKey, ac.SubnetID, ac.DeviceID, new byte [] { 3, ac.Power, ac.LoopID });
|
} else if (common.Type == DeviceType.FoolHeat) {
|
var device = Newtonsoft.Json.JsonConvert.DeserializeObject<FoolHeat> (System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (deviceFilePath)));
|
if (device == null) {
|
continue;
|
}
|
replyBytes = Control.ControlBytesSendHasReturn (Command.SetFoolHeat, device.SubnetID, device.DeviceID,
|
new byte [] { device.LoopID, (byte)(device.Status + device.WorkingMode * 16), 0,device.WorkingMode,device.NormalTemperature, device.DayTemperature,
|
device.NightTemperature, device.AwayTemperature , 0, 0 });
|
|
} else if (common.Type == DeviceType.FanModule) {
|
var device = Newtonsoft.Json.JsonConvert.DeserializeObject<FanModule> (System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (deviceFilePath)));
|
if (device == null) {
|
continue;
|
}
|
replyBytes = Control.ControlBytesSendHasReturn (Command.SetSingleLight, device.SubnetID, device.DeviceID, new byte [] { device.LoopID, (byte)device.WindSpeed });
|
} else if (common.Type == DeviceType.LogicModule) {
|
var device = Newtonsoft.Json.JsonConvert.DeserializeObject<LogicModule> (System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (deviceFilePath)));
|
if (device == null) {
|
continue;
|
}
|
replyBytes = Control.ControlBytesSendHasReturn (Command.SetScene, device.SubnetID, device.DeviceID, new byte [] {
|
device.AreaID,device.AreaSceneID});
|
} else if (common.Type == DeviceType.UniversalDevice) {
|
var device = Newtonsoft.Json.JsonConvert.DeserializeObject<UniversalDevice> (System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (deviceFilePath)));
|
if (device == null) {
|
continue;
|
}
|
replyBytes = Control.ControlBytesSendHasReturn (Command.SetCommonSwitch, device.SubnetID, device.DeviceID, new byte [] { device.SendBytes [0], device.SendBytes [1] });
|
} else {
|
continue;
|
}
|
try {
|
if (showTip) {
|
if (replyBytes == null) {
|
Application.RunOnMainThread (() => {
|
string tipString = Language.StringByID (R.MyInternationalizationString.ControlFailure);
|
var btnTip = new Button () {
|
Height = Application.GetRealHeight (140),
|
Text = common.Name + tipString + "..." + controlDeviceIndex.ToString () + @"/" + sceneDeviceCount.ToString (),
|
BackgroundColor = SkinStyle.Current.TitileView,
|
};
|
MainPage.MainFrameLayout.AddChidren (btnTip);
|
btnTip.MouseUpEventHandler += (sender, e) => {
|
btnTip.RemoveFromParent ();
|
};
|
new System.Threading.Thread (() => {
|
System.Threading.Thread.Sleep (3000);
|
Application.RunOnMainThread (() => {
|
btnTip.RemoveFromParent ();
|
showTip = false;
|
});
|
}) { IsBackground = true }.Start ();
|
});
|
}
|
}
|
} catch { }
|
}
|
//} else {
|
if (tempScene.busScene) {
|
foreach (var common in tempScene.GlobalSceneDeviceList) {
|
//ControlBusSceneDevice (common);
|
//continue;
|
byte [] replyBytes = null;
|
switch (common.obj1) {
|
case 0://0 无效 Invalid
|
break;
|
case 85://0x55 场景 Scene ||0x0002
|
replyBytes = Control.ControlBytesSendHasReturn (Command.SetScene, common.SubnetID, common.DeviceID, new byte [] { common.obj2, common.obj3, common.obj4, common.obj5 });
|
break;
|
case 86://0x56 序列 Sequence ||0x001A
|
replyBytes = Control.ControlBytesSendHasReturn (Command.SetSeries, common.SubnetID, common.DeviceID, new byte [] { common.obj2, common.obj3, common.obj4, common.obj5 });
|
break;
|
case 88://0x58 通用开关 Universal Switch ||0xe01c
|
replyBytes = Control.ControlBytesSendHasReturn (Command.SetCommonSwitch, common.SubnetID, common.DeviceID, new byte [] { common.obj2, common.obj3, common.obj4, common.obj5 });
|
break;
|
case 89: //0x59 单路调节 Single Channel Lighting Control 0031
|
replyBytes = Control.ControlBytesSendHasReturn (Command.SetSingleLight, common.SubnetID, common.DeviceID, new byte [] { common.obj2, common.obj3, common.obj4, common.obj5 });
|
break;
|
case 92://0x5c 窗帘开关 Curtain Switch e3e0
|
replyBytes = Control.ControlBytesSendHasReturn (Command.UpdataCurtainModelStutas, common.SubnetID, common.DeviceID, new byte [] { common.obj2, common.obj3, common.obj4, common.obj5 });
|
break;
|
case 94://0x5e GPRS控制 GPRS Control E3D4
|
replyBytes = Control.ControlBytesSendHasReturn (Command.GPRSControl, common.SubnetID, common.DeviceID, new byte [] { common.obj2, common.obj3, common.obj4, common.obj5 });
|
break;
|
case 95://0x5f 面板控制 Panel Control e3d8
|
replyBytes = Control.ControlBytesSendHasReturn (Command.InstructionPanelKey, common.SubnetID, common.DeviceID, new byte [] { common.obj2, common.obj3, common.obj4, common.obj5 });
|
break;
|
case 100://0x64 广播场景 Broadcast Scene ||0x0002
|
replyBytes = Control.ControlBytesSendHasReturn (Command.SetScene, common.SubnetID, common.DeviceID, new byte [] { common.obj2, common.obj3, common.obj4, common.obj5 });
|
break;
|
case 101://0x65 广播回路 Broadcast Channel 0031
|
replyBytes = Control.ControlBytesSendHasReturn (Command.SetSingleLight, common.SubnetID, common.DeviceID, new byte [] { common.obj2, common.obj3, common.obj4, common.obj5 });
|
break;
|
case 102://0x66 消防模块 Security Module 011E
|
replyBytes = Control.ControlBytesSendHasReturn (Command.SecurityModule, common.SubnetID, common.DeviceID, new byte [] { common.obj2, common.obj3, common.obj4, common.obj5 });
|
break;
|
case 103://0x67 音乐播放 Music Control 0218
|
replyBytes = Control.ControlBytesSendHasReturn (Command.MusicControl, common.SubnetID, common.DeviceID, new byte [] { common.obj2, common.obj3, common.obj4, common.obj5 });
|
break;
|
//104 通用控制 Universal Control
|
//105 连接页 Link Page
|
//107 RGB调节 RGB Control
|
//108 红外控制 Infrared Control
|
//case 109://109 逻辑灯调节 Logic Light Adjust || 0xE45E
|
// replyBytes = Control.ControlBytesSendHasReturn (Command.LogicLightAdjust, common.SubnetID, common.DeviceID, new byte [] { common.obj2, common.obj3, common.obj4, common.obj5 });
|
// break;
|
//}
|
//110 逻辑场景 Logic Scene
|
//112 LCD & LED休眠 LCD & LED Sleep
|
//113 服务器控制 Server control
|
}
|
}
|
}
|
}) { IsBackground = true}.Start();
|
}
|
|
|
|
//public void ControlSceneDevice (string deviceFilePath, int controlDeviceIndex, int sceneDeviceCount)
|
//{
|
// byte [] replyBytes = null;
|
// var common = Newtonsoft.Json.JsonConvert.DeserializeObject<Common> (System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (deviceFilePath)));
|
// if (common.Type == DeviceType.LightDimming) {
|
// var device = Newtonsoft.Json.JsonConvert.DeserializeObject<LightDimming> (System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (deviceFilePath)));
|
// if (device == null) {
|
// return;//
|
// }
|
// replyBytes = Control.ControlBytesSendHasReturn (Command.SetSingleLight, device.SubnetID, device.DeviceID, new byte [] { device.LoopID, device.CurrentBrightness, device.DelayTimeHeight, device.DelayTimeLow });
|
// } else if (common.Type == DeviceType.LightDALI) {
|
// var device = Newtonsoft.Json.JsonConvert.DeserializeObject<LightDALI> (System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (deviceFilePath)));
|
// if (device == null) {
|
// return;
|
// }
|
// replyBytes = Control.ControlBytesSendHasReturn (Command.SetSingleLight, device.SubnetID, device.DeviceID, new byte [] { device.LoopID, device.CurrentBrightness, device.DelayTimeHeight, device.DelayTimeLow });
|
// } else if (common.Type == DeviceType.LightMixDimming) {
|
// var device = Newtonsoft.Json.JsonConvert.DeserializeObject<LightMixDimming> (System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (deviceFilePath)));
|
// if (device == null) {
|
// return;
|
// }
|
// replyBytes = Control.ControlBytesSendHasReturn (Command.SetSingleLight, device.SubnetID, device.DeviceID, new byte [] { device.PhysicsLoopID, device.CurrentBrightness, device.DelayTimeHeight, device.DelayTimeLow });
|
// } else if (common.Type == DeviceType.LightEnergySwitch) {
|
// var device = Newtonsoft.Json.JsonConvert.DeserializeObject<LightEnergySwitch> (System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (deviceFilePath)));
|
// if (device == null) {
|
// return;
|
// }
|
// replyBytes = Control.ControlBytesSendHasReturn (Command.SetSingleLight, device.SubnetID, device.DeviceID, new byte [] { device.LoopID, device.CurrentBrightness, device.DelayTimeHeight, device.DelayTimeLow });
|
// } else if (common.Type == DeviceType.LightRGB) {
|
// var device = Newtonsoft.Json.JsonConvert.DeserializeObject<LightLogic> (System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (deviceFilePath)));
|
// if (device != null) {
|
// replyBytes = Control.ControlBytesSendHasReturn (Command.SetLogicLoopColor, device.SubnetID, device.DeviceID, new byte [] { device.LoopID, device.CurrentBrightness, 254, device.DelayTimeHeigh,device.DelayTimeLow,
|
// 3,device.RStatus,device.GStatus,device.BStatus,0,0});
|
// }
|
// } else if (common.Type == DeviceType.LightSwitch || common.Type == DeviceType.LightSwitchSocket) {
|
// var device = Newtonsoft.Json.JsonConvert.DeserializeObject<LightSwitch> (System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (deviceFilePath)));
|
// if (device == null) {
|
// return;
|
// }
|
// replyBytes = Control.ControlBytesSendHasReturn (Command.SetSingleLight, device.SubnetID, device.DeviceID, new byte [] { device.LoopID, device.CurrentBrightness, device.DelayTimeHeight, device.DelayTimeLow });
|
// } else if (common.Type == DeviceType.LightMixSwitch) {
|
// var device = Newtonsoft.Json.JsonConvert.DeserializeObject<LightMixSwitch> (System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (deviceFilePath)));
|
// if (device == null) {
|
// return;
|
// }
|
// replyBytes = Control.ControlBytesSendHasReturn (Command.SetSingleLight, device.SubnetID, device.DeviceID, new byte [] { device.PhysicsLoopID, device.CurrentBrightness, device.DelayTimeHeight, device.DelayTimeLow });
|
// } else if (common.Type == DeviceType.CurtainModel) {
|
// var device = Newtonsoft.Json.JsonConvert.DeserializeObject<CurtainModel> (System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (deviceFilePath)));
|
// if (device == null) {
|
// return;
|
// }
|
// replyBytes = Control.ControlBytesSendHasReturn (Command.UpdataCurtainModelStutas, device.SubnetID, device.DeviceID, new byte [] { device.LoopID, (byte)device.Status });
|
// } else if (common.Type == DeviceType.CurtainRoller) {
|
// var device = Newtonsoft.Json.JsonConvert.DeserializeObject<CurtainRoller> (System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (deviceFilePath)));
|
// if (device == null) {
|
// return;
|
// }
|
// replyBytes = Control.ControlBytesSendHasReturn (Command.UpdataCurtainModelStutas, device.SubnetID, device.DeviceID, new byte [] { 1, (byte)device.Status });
|
// } else if (common.Type == DeviceType.CurtainTrietex) {
|
// var device = Newtonsoft.Json.JsonConvert.DeserializeObject<CurtainTrietex> (System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (deviceFilePath)));
|
// if (device == null) {
|
// return;
|
// }
|
// replyBytes = Control.ControlBytesSendHasReturn (Command.UpdataCurtainModelStutas, device.SubnetID, device.DeviceID, new byte [] { 1, (byte)device.Status });
|
// } else if (common.Type == DeviceType.HVAC || common.Type == DeviceType.ACInfrared) {
|
// var device = Newtonsoft.Json.JsonConvert.DeserializeObject<HVAC> (System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (deviceFilePath)));
|
// if (device == null) {
|
// return;
|
// }
|
// replyBytes = Control.ControlBytesSendHasReturn (Command.SetACMode, device.SubnetID, device.DeviceID, new byte [] {
|
// device.LoopID,
|
// device.TemperatureMode,
|
// device.IndoorTemperature,
|
// device.CoolTemperature,
|
// device.HeatTemperature,
|
// device.AutoTemperature,
|
// device.ChuShiTemperature,
|
// device.RealModeAndFanSpeed,
|
// device.Power,
|
// device.SetMode,
|
// device.SetFanSpeed,
|
// device.SetTemperature,
|
// device.ShaoFanMode});
|
// } else if (common.Type == DeviceType.FoolHeat) {
|
// var device = Newtonsoft.Json.JsonConvert.DeserializeObject<FoolHeat> (System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (deviceFilePath)));
|
// if (device == null) {
|
// return;
|
// }
|
// replyBytes = Control.ControlBytesSendHasReturn (Command.SetFoolHeat, device.SubnetID, device.DeviceID,
|
// new byte [] { device.LoopID, (byte)(device.Status + device.WorkingMode * 16), 0,device.WorkingMode,device.NormalTemperature, device.DayTemperature,
|
// device.NightTemperature, device.AwayTemperature , 0, 0 });
|
|
// } else if (common.Type == DeviceType.FanModule) {
|
// var device = Newtonsoft.Json.JsonConvert.DeserializeObject<FanModule> (System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (deviceFilePath)));
|
// if (device == null) {
|
// return;
|
// }
|
// replyBytes = Control.ControlBytesSendHasReturn (Command.SetSingleLight, device.SubnetID, device.DeviceID, new byte [] { 1, (byte)device.WindSpeed });
|
// } else if (common.Type == DeviceType.LogicModule) {
|
// var device = Newtonsoft.Json.JsonConvert.DeserializeObject<LogicModule> (System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (deviceFilePath)));
|
// if (device == null) {
|
// return;
|
// }
|
// replyBytes = Control.ControlBytesSendHasReturn (Command.SetScene, device.SubnetID, device.DeviceID, new byte [] {
|
// device.AreaID,device.AreaSceneID});
|
// }
|
// Application.RunOnMainThread (() => {
|
// try {
|
// if (showTip) {
|
// if (replyBytes == null) {
|
// string tipString = Language.StringByID (R.MyInternationalizationString.ControlFailure);
|
// var btnTip = new Button () {
|
// Height = Application.GetRealHeight (140),
|
// Text = common.Name + tipString + "..." + controlDeviceIndex.ToString () + @"/" + sceneDeviceCount.ToString (),
|
// BackgroundColor = SkinStyle.Current.TitileView,
|
// };
|
// MainPage.MainFrameLayout.AddChidren (btnTip);
|
// btnTip.MouseUpEventHandler += (sender, e) => {
|
// MainPage.MainFrameLayout.Remove (btnTip);
|
// };
|
// System.Threading.Tasks.Task.Run (() => {
|
// System.Threading.Thread.Sleep (3000);
|
// Application.RunOnMainThread (() => {
|
// MainPage.MainFrameLayout.Remove (btnTip);
|
// showTip = false;
|
// });
|
// });
|
// }
|
// }
|
// } catch { }
|
// });
|
//}
|
|
|
|
public void ControlBusSceneDevice (Common common)
|
{
|
byte [] replyBytes = null;
|
|
switch (common.obj1) {
|
case 0://0 无效 Invalid
|
break;
|
case 85://0x55 场景 Scene ||0x0002
|
replyBytes = Control.ControlBytesSendHasReturn (Command.SetScene, common.SubnetID, common.DeviceID, new byte [] { common.obj2, common.obj3, common.obj4, common.obj5 });
|
break;
|
case 86://0x56 序列 Sequence ||0x001A
|
replyBytes = Control.ControlBytesSendHasReturn (Command.SetSeries, common.SubnetID, common.DeviceID, new byte [] { common.obj2, common.obj3, common.obj4, common.obj5 });
|
break;
|
case 88://0x58 通用开关 Universal Switch ||0xe01c
|
replyBytes = Control.ControlBytesSendHasReturn (Command.SetCommonSwitch, common.SubnetID, common.DeviceID, new byte [] { common.obj2, common.obj3, common.obj4, common.obj5 });
|
break;
|
case 89: //0x59 单路调节 Single Channel Lighting Control 0031
|
replyBytes = Control.ControlBytesSendHasReturn (Command.SetSingleLight, common.SubnetID, common.DeviceID, new byte [] { common.obj2, common.obj3, common.obj4, common.obj5 });
|
break;
|
case 92://0x5c 窗帘开关 Curtain Switch e3e0
|
replyBytes = Control.ControlBytesSendHasReturn (Command.UpdataCurtainModelStutas, common.SubnetID, common.DeviceID, new byte [] { common.obj2, common.obj3, common.obj4, common.obj5 });
|
break;
|
case 94://0x5e GPRS控制 GPRS Control E3D4
|
replyBytes = Control.ControlBytesSendHasReturn (Command.GPRSControl, common.SubnetID, common.DeviceID, new byte [] { common.obj2, common.obj3, common.obj4, common.obj5 });
|
break;
|
case 95://0x5f 面板控制 Panel Control e3d8
|
replyBytes = Control.ControlBytesSendHasReturn (Command.InstructionPanelKey, common.SubnetID, common.DeviceID, new byte [] { common.obj2, common.obj3, common.obj4, common.obj5 });
|
break;
|
case 100://0x64 广播场景 Broadcast Scene ||0x0002
|
replyBytes = Control.ControlBytesSendHasReturn (Command.SetScene, common.SubnetID, common.DeviceID, new byte [] { common.obj2, common.obj3, common.obj4, common.obj5 });
|
break;
|
case 101://0x65 广播回路 Broadcast Channel 0031
|
replyBytes = Control.ControlBytesSendHasReturn (Command.SetSingleLight, common.SubnetID, common.DeviceID, new byte [] { common.obj2, common.obj3, common.obj4, common.obj5 });
|
break;
|
case 102://0x66 消防模块 Security Module 011E
|
replyBytes = Control.ControlBytesSendHasReturn (Command.SecurityModule, common.SubnetID, common.DeviceID, new byte [] { common.obj2, common.obj3, common.obj4, common.obj5 });
|
break;
|
case 103://0x67 音乐播放 Music Control 0218
|
replyBytes = Control.ControlBytesSendHasReturn (Command.MusicControl, common.SubnetID, common.DeviceID, new byte [] { common.obj2, common.obj3, common.obj4, common.obj5 });
|
break;
|
//104 通用控制 Universal Control
|
//105 连接页 Link Page
|
//107 RGB调节 RGB Control
|
//108 红外控制 Infrared Control
|
//case 109://109 逻辑灯调节 Logic Light Adjust || 0xE45E
|
// replyBytes = Control.ControlBytesSendHasReturn (Command.LogicLightAdjust, common.SubnetID, common.DeviceID, new byte [] { common.obj2, common.obj3, common.obj4, common.obj5 });
|
// break;
|
//}
|
//110 逻辑场景 Logic Scene
|
//112 LCD & LED休眠 LCD & LED Sleep
|
//113 服务器控制 Server control
|
}
|
|
}
|
|
|
/// <summary>
|
/// 添加或者修改高级网关场景
|
/// </summary>
|
/// <param name="roomFilePath">Room name.</param>
|
/// <param name="ds">代理方法,用来刷新界面</param>
|
/// <param name="sceneFilePath">Scene.(为null是表示是增加场景)</param>
|
public static void AddOrUpdataSuperGateWaySceneBaseMassage (SuperGateWay.GateWay superGateWay, SuperGateWay.Scene scene, Action refreshAction)
|
{
|
if (scene == null) {
|
scene = new SuperGateWay.Scene { };
|
}
|
|
#region Load
|
var dialog = new Dialog () {
|
BackgroundColor = 0xFFF5F6F7,
|
Width = Application.GetRealWidth (520),
|
Height = Application.GetRealHeight (740),
|
};
|
|
var btnEquipmentTitle = new Button () {
|
Width = Application.GetRealWidth (520),
|
Height = Application.GetRealHeight (70),
|
BackgroundColor = 0xFF484848,
|
TextID = R.MyInternationalizationString.AddNewRoom,
|
TextAlignment = TextAlignment.Center,
|
Gravity = Gravity.CenterHorizontal,
|
};
|
dialog.AddChidren (btnEquipmentTitle);
|
|
var lblTitleName = new Button () {
|
Gravity = Gravity.CenterHorizontal,
|
Y = Application.GetRealHeight (80),
|
Width = Application.GetRealWidth (450),
|
Height = Application.GetRealHeight (50),
|
TextID = R.MyInternationalizationString.RoomName,
|
TextAlignment = TextAlignment.CenterLeft,
|
TextColor = 0xf01A1A1A,
|
};
|
dialog.AddChidren (lblTitleName);
|
|
var sceneTextBox = new EditText () {
|
Gravity = Gravity.CenterHorizontal,
|
Y = lblTitleName.Bottom + Application.GetRealHeight (10),
|
Width = Application.GetRealWidth (450),
|
Height = Application.GetRealHeight (50),
|
TextAlignment = TextAlignment.CenterLeft,
|
UnSelectedImagePath = "Item/DialogTextBox.png",
|
SelectedImagePath = "Item/DialogTextBox.png",
|
TextColor = 0xf01A1A1A,
|
Text = scene.name,
|
BorderWidth = 1,
|
BorderColor = 0xff505050,
|
Radius = 1,
|
};
|
dialog.AddChidren (sceneTextBox);
|
|
var lblIcon = new Button () {
|
Gravity = Gravity.CenterHorizontal,
|
Y = sceneTextBox.Bottom + Application.GetRealHeight (10),
|
Width = Application.GetRealWidth (450),
|
Height = btnEquipmentTitle.Height,
|
TextID = R.MyInternationalizationString.Backgroud,
|
TextAlignment = TextAlignment.CenterLeft,
|
TextColor = 0xf01A1A1A,
|
};
|
dialog.AddChidren (lblIcon);
|
|
var verIconLayout = new VerticalScrolViewLayout () {
|
Gravity = Gravity.CenterHorizontal,
|
Y = lblIcon.Y + lblIcon.Height + Application.GetRealHeight (5),
|
Width = sceneTextBox.Width,
|
Height = Application.GetRealHeight (200),
|
BackgroundImagePath = "Item/RoomIconBackground.png",
|
};
|
var inVerFramelayout = new FrameLayout () {
|
X = 0,
|
Width = lblIcon.Width,
|
Height = Application.GetRealHeight (200),
|
};
|
verIconLayout.AddChidren (inVerFramelayout);
|
dialog.AddChidren (verIconLayout);
|
|
var systempictureLayout = new FrameLayout {
|
Height = Application.GetRealHeight (260),
|
Y = Application.GetRealHeight (478),
|
};
|
dialog.AddChidren (systempictureLayout);
|
|
var btnBG = new Button () {
|
Width = Application.GetRealWidth (270),
|
Height = LayoutParams.MatchParent,
|
UnSelectedImagePath = scene.BackgoundImagePath,
|
};
|
inVerFramelayout.AddChidren (btnBG);
|
|
var btnTakePictrue = new Button () {
|
Width = inVerFramelayout.Width - btnBG.Width,
|
Height = inVerFramelayout.Height / 3,
|
TextID = R.MyInternationalizationString.TakePhoto,
|
TextColor = 0xff000000,
|
BackgroundColor = 0xF0D7D7D7,
|
X = btnBG.Right,
|
};
|
inVerFramelayout.AddChidren (btnTakePictrue);
|
///照相点击事件
|
Guid guid = Guid.NewGuid ();
|
btnTakePictrue.MouseUpEventHandler += (sender, e) => {
|
guid = Guid.NewGuid ();
|
Camera.TakePicture ((obj) => {
|
if (obj != null) {
|
btnBG.UnSelectedImagePath = guid.ToString ();
|
}
|
}, guid.ToString (), false);
|
};
|
|
var btnLineP = new Button () {
|
Width = btnTakePictrue.Width,
|
Height = 1,
|
BackgroundColor = 0xF0FFFFFF,
|
X = btnBG.Right,
|
Y = btnTakePictrue.Bottom,
|
};
|
inVerFramelayout.AddChidren (btnLineP);
|
|
var btnSelectPictrue = new Button () {
|
Width = btnTakePictrue.Width,
|
Height = btnTakePictrue.Height,
|
TextColor = 0xff000000,
|
TextID = R.MyInternationalizationString.SelectPicture,
|
BackgroundColor = 0xF0D7D7D7,
|
X = btnBG.Right,
|
Y = btnLineP.Bottom,
|
};
|
inVerFramelayout.AddChidren (btnSelectPictrue);
|
///相册点击事件
|
btnSelectPictrue.MouseUpEventHandler += (sender, e) => {
|
guid = Guid.NewGuid ();
|
Camera.SelectPicture ((obj) => {
|
if (obj != null) {
|
btnBG.UnSelectedImagePath = guid.ToString();
|
}
|
}, guid.ToString(), false);
|
};
|
|
var btnLineS = new Button () {
|
Width = btnTakePictrue.Width,
|
Height = 1,
|
BackgroundColor = 0xF0FFFFFF,
|
X = btnBG.Right,
|
Y = btnSelectPictrue.Bottom,
|
};
|
inVerFramelayout.AddChidren (btnLineS);
|
|
var btnSelectsystemPictrue = new Button () {
|
Width = btnTakePictrue.Width,
|
Height = btnTakePictrue.Height,
|
TextID = R.MyInternationalizationString.SystemPicture,
|
TextColor = 0xff000000,
|
BackgroundColor = 0xF0D7D7D7,
|
X = btnBG.Right,
|
Y = btnLineS.Bottom,
|
};
|
inVerFramelayout.AddChidren (btnSelectsystemPictrue);
|
|
EventHandler<MouseEventArgs> handler = (sender1, e1) => {
|
systempictureLayout.RemoveAll ();
|
var horizontalScrolViewLayout = new HorizontalScrolViewLayout () {
|
Width = Application.GetRealWidth (500),
|
Height = Application.GetRealHeight (180),
|
Y = Application.GetRealHeight (10),
|
Gravity = Gravity.CenterHorizontal,
|
};
|
systempictureLayout.AddChidren (horizontalScrolViewLayout);
|
for (int i = 0; i < 22; i++) {
|
var butscene = new Button () {
|
Width = Application.GetRealWidth (200),
|
Height = LayoutParams.MatchParent,
|
};
|
butscene.UnSelectedImagePath = "Scene/s" + (i).ToString () + ".png";
|
horizontalScrolViewLayout.AddChidren (butscene);
|
butscene.MouseUpEventHandler += (sender, e) => {
|
btnBG.UnSelectedImagePath = butscene.UnSelectedImagePath;
|
};
|
}
|
};
|
btnSelectsystemPictrue.MouseUpEventHandler += handler;
|
|
var BottomView = new FrameLayout () {
|
Width = LayoutParams.MatchParent,
|
Height = Application.GetRealHeight (90),
|
BackgroundColor = 0xF0121212,
|
Y = dialog.Height - Application.GetRealHeight (90),
|
};
|
dialog.AddChidren (BottomView);
|
var btnBack = new Button () {
|
Width = Application.GetRealWidth (119),
|
Height = LayoutParams.MatchParent,
|
UnSelectedImagePath = "Item/PositioningDialogBack.png",
|
SelectedImagePath = "Item/PositioningDialogBack.png",
|
};
|
BottomView.AddChidren (btnBack);
|
btnBack.MouseUpEventHandler += (sender1, e1) => {
|
dialog.Close ();
|
};
|
var btnLineH = new Button () {
|
Width = 1,
|
Height = LayoutParams.MatchParent,
|
BackgroundColor = 0xF0909090,
|
X = btnBack.Right,
|
};
|
BottomView.AddChidren (btnLineH);
|
|
var btnSave = new Button () {
|
Width = Application.GetRealWidth (400),
|
Height = LayoutParams.MatchParent,
|
X = btnLineH.Right,
|
TextID = R.MyInternationalizationString.SAVE,
|
TextAlignment = TextAlignment.Center,
|
Radius = 1,
|
};
|
BottomView.AddChidren (btnSave);
|
#endregion
|
|
btnEquipmentTitle.TextID = R.MyInternationalizationString.AddNewScenes;
|
lblTitleName.TextID = R.MyInternationalizationString.SceneName;
|
|
btnEquipmentTitle.TextID = R.MyInternationalizationString.ChangeInformation;
|
|
///增加或者修改场景
|
btnSave.MouseUpEventHandler += (sender, e) => {
|
if (string.IsNullOrEmpty (sceneTextBox.Text.Trim ())) {
|
new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.PleaseEnterSceneName), Language.StringByID (R.MyInternationalizationString.Close)).Show ();
|
return;
|
}
|
///
|
if (null != superGateWay.Scenes.Find ((obj) => obj != scene && obj.uid != scene.uid && obj.name == sceneTextBox.Text.Trim ())) {
|
new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.HaveTheSame), Language.StringByID (R.MyInternationalizationString.Close)).Show ();
|
return;
|
}
|
///新场景名称
|
scene.name = sceneTextBox.Text.Trim ();
|
Action<SuperGateWay.Scene> a = (obj) => {
|
Application.RunOnMainThread (() => {
|
try {
|
//已经更改过的图片
|
if (btnBG.UnSelectedImagePath == "ScenePicture") {
|
Shared.IO.FileUtils.ReNameFile (btnBG.UnSelectedImagePath, $"SuperGateWay_BackgoundImage_{scene.sid}");
|
btnBG.UnSelectedImagePath = $"SuperGateWay_BackgoundImage_{scene.sid}";
|
}
|
SuperGateWay.Scene.Add (scene.sid, btnBG.UnSelectedImagePath);
|
|
if (obj == null) {
|
return;
|
}
|
if (superGateWay.Scenes.Find ((o) => o.uid == obj.uid) == null) {
|
superGateWay.Scenes.Add (obj);
|
}
|
} catch { } finally {
|
Application.RunOnMainThread (() => {
|
dialog.Close ();
|
refreshAction ();
|
});
|
}
|
});
|
};
|
|
if (scene.sid == null) {
|
scene.sid = SuperGateWay.Scene.NewSid;
|
SuperGateWay.Control.AppendScene (scene, a);
|
} else {
|
SuperGateWay.Control.ModifyScene (scene, a);
|
}
|
|
superGateWay.save ("SceneListFilePath");
|
};
|
dialog.Show ();
|
}
|
|
}
|
}
|