using System;
namespace Shared.SimpleControl.Phone
{
///
/// 窗帘模块
///
public class SystemCurtainModel : FrameLayout
{
Button btnOpenCurtain;
Button btnStopCurtain;
Button btnCloseCurtain;
byte cmLoopID;
///
/// 显示窗帘模块界面
///
/// The curtain model show.
/// Curtain model.
/// Curtain device.
public void SystemCurtainModelShow(CurtainModel curtainModel,Common curtainDevice)
{
#region top
FrameLayout frameLayout = new FrameLayout () {
Height = Application.GetRealHeight (100),
Width = LayoutParams.MatchParent,
BackgroundColor = SkinStyle.Current.MainColor,
};
AddChidren (frameLayout);
Button backButton = new Button () {
X = Application.GetRealWidth (0),
Height = Application.GetRealHeight (90),
Width = Application.GetRealWidth (85),
UnSelectedImagePath = "Item/Back.png",
SelectedImagePath = "Item/BackSelected.png",
Gravity = Gravity.CenterVertical,
};
backButton.MouseUpEventHandler+= (sender, e) => {
(Parent as PageLayout).PageIndex -= 1;
//SystemEquipmentBase.RefreshView(curtainDevice);
//SystemMiddle.VerticalScrolViewMiddle.Animate = Animate.RightToLeft;
};
frameLayout.AddChidren (backButton);
EditText textButton = new EditText () {
X = Application.GetRealWidth (20) + backButton.Right,
Height = Application.GetRealHeight (50),
Width = Application.GetRealWidth (400),
Text = curtainModel.Name,
Gravity = Gravity.CenterVertical,
TextAlignment = TextAlignment.CenterLeft,
BackgroundColor = SkinStyle.Current.Transparent,
SelectedBackgroundColor = SkinStyle.Current.SysEditBox,
Enable = false,
TextColor = SkinStyle.Current.TextColor1
};
frameLayout.AddChidren (textButton);
Button editor = new Button () {
X = Application.GetRealWidth (520),
Height = Application.GetRealHeight (90),
Width = Application.GetRealWidth (70),
UnSelectedImagePath = "Item/Editor.png",
SelectedImagePath="Item/EditorSelected.png",
Gravity = Gravity.CenterVertical,
};
if (curtainDevice.isMixBox == false)
frameLayout.AddChidren (editor);
editor.MouseUpEventHandler += (sender, e) => {
if (editor.IsSelected) {
MainPage.Loading.Start ();
editor.IsSelected = textButton.IsSelected = textButton.Enable = false;
byte [] remakeBytes = CommonPage.MyEncodingGB2312.GetBytes (textButton.Text.Trim ());
System.Threading.Tasks.Task.Run (() => {
byte [] updateBytes = Control.ControlBytesSendHasReturn (Command.ReadDeviceLoopInfo, curtainModel.SubnetID, curtainModel.DeviceID, new byte [] {
curtainModel.BigClass,curtainModel.MinClass,curtainModel.LoopID
});
if (updateBytes == null) {
Application.RunOnMainThread (() => {
new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.TipEquipmentNotOnline), Language.StringByID (R.MyInternationalizationString.Close)).Show ();
MainPage.Loading.Hide ();
});
return;
}
byte [] uBytes = new byte [20];
Array.Copy (remakeBytes, 0, uBytes, 0, remakeBytes.Length < 20 ? remakeBytes.Length : 20);
Array.Copy (uBytes, 0, updateBytes, 3, 20 < uBytes.Length ? 20 : uBytes.Length);
var reBytes = Control.ControlBytesSendHasReturn (Command.SetDeviceLoopInfo, curtainModel.SubnetID, curtainModel.DeviceID, updateBytes);
if (reBytes != null) {
Application.RunOnMainThread (() => {
curtainModel.Name = textButton.Text.Trim ();
IO.FileUtils.SaveEquipmentMessage (curtainModel, curtainModel.LoopID.ToString ());
MainPage.Loading.Hide ();
});
} else {
Application.RunOnMainThread (() => {
new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.TipEquipmentNotOnline), Language.StringByID (R.MyInternationalizationString.Close)).Show ();
MainPage.Loading.Hide ();
});
}
});
} else {
textButton.Enable = textButton.IsSelected = editor.IsSelected = true;
}
};
#endregion
Control.ControlBytesSend (Command.ReadCurtainStatus, curtainModel.SubnetID, curtainModel.DeviceID, new byte [] {curtainModel.LoopID });
#region MyRegion
FrameLayout frameLayoutBody = new FrameLayout () {
Height = Application.GetRealHeight (700),
Width = LayoutParams.MatchParent,
Y = Application.GetRealHeight (100),
};
AddChidren (frameLayoutBody);
Button btnRuntimeText = new Button () {
Width = Application.GetRealHeight (200),
Height = Application.GetRealHeight (50),
X = textButton.X,
Y = Application.GetRealHeight (40),
TextID = R.MyInternationalizationString.CurtainRunTime,
TextAlignment = TextAlignment.CenterLeft,
Enable = false,
TextColor = SkinStyle.Current.TextColor1,
};
frameLayoutBody.AddChidren (btnRuntimeText);
EditText etMaxout = new EditText () {
X = btnRuntimeText.Right,
Y = btnRuntimeText.Y,
Width = Application.GetRealWidth (160),
Height = btnRuntimeText.Height - Application.GetRealHeight (2),
Text = (curtainModel.RunTime / 10).ToString (),
TextAlignment = TextAlignment.CenterLeft,
TextColor = SkinStyle.Current.TextColor1,
};
frameLayoutBody.AddChidren (etMaxout);
Button btnLine = new Button () {
Height = Application.GetRealHeight (2),
Width = etMaxout.Width,
BackgroundColor = SkinStyle.Current.ViewColor,
X = btnRuntimeText.Right,
Y = etMaxout.Bottom,
};
frameLayoutBody.AddChidren (btnLine);
Button btnSaveTheRunTime = new Button () {
X = etMaxout.Right + Application.GetRealWidth (10),
Y = etMaxout.Y - Application.GetRealHeight(20),
Height = Application.GetRealHeight (90),
Width = Application.GetRealWidth (70),
UnSelectedImagePath = "Item/Editor.png",
SelectedImagePath = "Item/EditorSelected.png",
};
frameLayoutBody.AddChidren(btnSaveTheRunTime);
int runTime = 2;
double runTime2 = 2;
bool changeTime = false;
etMaxout.MouseUpEventHandler += (sender, e) => {
changeTime = true;
};
btnSaveTheRunTime.MouseUpEventHandler += (sender, e) => {
if (changeTime) {
changeTime = false;
try {
if (double.TryParse (etMaxout.Text, out runTime2)) {
runTime = (int)(runTime2 * 10);
if (runTime < 0 || runTime > 3600)
throw new Exception ();
} else
throw new Exception ();
} catch {
new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.PleaseEnterTheCorrectData),
Language.StringByID (R.MyInternationalizationString.Close)).Show ();
return;
}
if (curtainModel.MixType == DeviceType.RCU) {
byte [] usefulBytes = Control.ControlBytesSendHasReturn (Command.UpdataCurtainModelRunTime, curtainModel.SubnetID,
curtainModel.DeviceID, new byte [] { curtainModel.LoopID, (byte)(runTime / 256), (byte)(runTime % 256) });
} else {
int i = 0;
while (i < 2) {
byte [] usefulBytes = Control.ControlBytesSendHasReturn (Command.UpdataCurtainModelRunTime, curtainModel.SubnetID,
curtainModel.DeviceID, new byte [] { (byte)(curtainModel.LoopID * 2 - i), (byte)(runTime / 256), (byte)(runTime % 256) });
if (usefulBytes == null) {
Application.RunOnMainThread (() => {
new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.OperationFailed), Language.StringByID (R.MyInternationalizationString.Close)).Show ();
});
break;
} else if (i == 1) {
curtainModel.RunTime = runTime;
IO.FileUtils.SaveEquipmentMessage (curtainModel, curtainModel.LoopID.ToString ());
}
i++;
}
}
} else {
changeTime = etMaxout.Foucs = true;
}
};
Button btnTestText = new Button () {
Width = Application.GetRealWidth (394),
Height = Application.GetRealHeight (64),
X = btnRuntimeText.X,
Y = btnSaveTheRunTime.Bottom + Application.GetRealHeight (60),
TextID = R.MyInternationalizationString.CurtainTest,
TextAlignment = TextAlignment.CenterLeft
};
frameLayoutBody.AddChidren (btnTestText);
btnOpenCurtain = new Button(){
Width = Application.GetMinRealAverage (124),
Height = Application.GetMinRealAverage (124),
X = Application.GetRealWidth(80),
Y = btnTestText.Bottom + Application.GetRealHeight(10),
UnSelectedImagePath = "Curtain/CurtainOpen.png",
SelectedImagePath = "Curtain/CurtainOpenSelected.png",
};
frameLayoutBody.AddChidren(btnOpenCurtain);
Button btnOpenLbl = new Button () {
Width = Application.GetMinRealAverage (124),
Height = Application.GetRealHeight (30),
X = btnOpenCurtain.X,
Y = btnOpenCurtain.Bottom + Application.GetRealHeight (5),
TextID = R.MyInternationalizationString.Open,
TextColor = SkinStyle.Current.TextColor1,
};
frameLayoutBody.AddChidren (btnOpenLbl);
btnStopCurtain = new Button(){
Width = Application.GetMinRealAverage (124),
Height = Application.GetMinRealAverage (124),
X = Application.GetRealWidth((640 - 124) / 2),
Y = btnOpenCurtain.Y,
UnSelectedImagePath = "Curtain/CurtainTimeOut.png",
SelectedImagePath = "Curtain/CurtainTimeOutSelected.png",
};
frameLayoutBody.AddChidren(btnStopCurtain);
btnCloseCurtain = new Button(){
Width = Application.GetMinRealAverage(124),
Height = Application.GetMinRealAverage(124),
X = Application.GetRealWidth(640 - 80 - 124),
Y = btnOpenCurtain.Y,
UnSelectedImagePath = "Curtain/CurtainClose.png",
SelectedImagePath = "Curtain/CurtainCloseSelected.png",
};
frameLayoutBody.AddChidren(btnCloseCurtain);
Button btnStopLbl = new Button () {
Width = Application.GetMinRealAverage (124),
Height = Application.GetRealHeight (30),
X = btnStopCurtain.X,
Y = btnOpenLbl.Y,
TextID = R.MyInternationalizationString.Stop,
TextColor = SkinStyle.Current.TextColor1,
};
frameLayoutBody.AddChidren (btnStopLbl);
Button btnCloseLbl = new Button () {
Width = Application.GetMinRealAverage (124),
Height = Application.GetRealHeight (30),
X = btnCloseCurtain.X,
Y = btnOpenLbl.Y,
TextID = R.MyInternationalizationString.Close2,
TextColor = SkinStyle.Current.TextColor1,
};
frameLayoutBody.AddChidren (btnCloseLbl);
btnOpenCurtain.MouseUpEventHandler += (sender, e) => {
btnOpenCurtain.IsSelected = true;
btnStopCurtain.IsSelected = false;
btnCloseCurtain.IsSelected = false;
ControlCurtain (curtainModel,1);
};
btnStopCurtain.MouseUpEventHandler += (sender, e) => {
btnStopCurtain.IsSelected = true;
btnCloseCurtain.IsSelected = false;
btnOpenCurtain.IsSelected = false;
ControlCurtain (curtainModel,0);
};
btnCloseCurtain.MouseUpEventHandler += (sender, e) => {
btnCloseCurtain.IsSelected = true;
btnStopCurtain.IsSelected = false;
btnOpenCurtain.IsSelected = false;
ControlCurtain (curtainModel,2);
};
if(curtainModel.Status == CurtainStatus.Close)
{
btnCloseCurtain.IsSelected = true;
}
else if(curtainModel.Status == CurtainStatus.Open)
{
btnOpenCurtain.IsSelected = true;
}
else if(curtainModel.Status == CurtainStatus.Stop)
{
btnStopCurtain.IsSelected = true;
}
#endregion
}
static void ControlCurtain (CurtainModel curtainModel,byte status)
{
System.Threading.Tasks.Task.Run (() => {
byte [] usefulBytes = Control.ControlBytesSendHasReturn (Command.UpdataCurtainModelStutas, curtainModel.SubnetID, curtainModel.DeviceID, new byte [] {
curtainModel.LoopID,
status
});
Application.RunOnMainThread (() => {
if (usefulBytes == null) {
Application.RunOnMainThread (() => {
new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.TipEquipmentNotOnline), Language.StringByID (R.MyInternationalizationString.Close)).Show ();
});
} else {
curtainModel.Status = (CurtainStatus)status;
//IO.FileUtils.SaveEquipmentMessage (curtainModel, curtainModel.LoopID.ToString ());
}
});
});
}
}
}