using Shared.Common;
using ZigBee.Device;
namespace Shared.Phone.UserCenter.DevicePanel
{
public class DataCorrectionForm : EditorCommonForm
{
#region ■ 变量声明___________________________
///
/// 面板的回路
///
private CommonDevice device;
///
/// 保存完成按钮
///
Button btnFinifh;
///
/// 校正温度值
///
double correctTValue = 0;
///
/// 校正湿度值
///
double correctHValue = 0;
///
/// 有效文本
///
private string invalidText1 = "";
///
/// 有效文本
///
private string invalidText2 = "";
#endregion
#region ■ 初始化____________________________
///
/// 画面显示(底层会固定调用此方法,借以完成画面创建)
///
/// 设备的某一回路
public void ShowForm(CommonDevice device)
{
this.device = device;
//设置头部信息
base.SetTitleText(Language.StringByID(R.MyInternationalizationString.DataCorrection));
//初始化中部信息
this.InitMiddleFrame();
}
///
/// 初始化中部信息
///
private async void InitMiddleFrame()
{
//清空bodyFrame
this.ClearBodyFrame();
TemperatureDataUI();
TipUI();
}
#endregion
#region ■ 温度设置_______________________
///
/// 温度设置
///
private void TemperatureDataUI()
{
var listview = new VerticalScrolViewLayout();
listview.Height = Application.GetRealHeight(320);
bodyFrameLayout.AddChidren(listview);
listview.ScrollEnabled = false;
for (int i = 0; i < 2; i++)
{
var rowLayout = new FrameLayout()
{
Height = Application.GetRealHeight(23 + 127),
BackgroundColor = Shared.Common.ZigbeeColor.Current.XMWhite,
};
listview.AddChidren(rowLayout);
var devicePic = new Button()
{
X = Application.GetRealWidth(58),
Y = Application.GetRealHeight(46),
Width = Application.GetMinRealAverage(81),
Height = Application.GetMinRealAverage(81),
};
rowLayout.AddChidren(devicePic);
var btnName = new Button()
{
Width = Application.GetRealWidth(790),
X = devicePic.Right + Application.GetRealWidth(20),
TextColor = Shared.Common.ZigbeeColor.Current.TextBlack,
TextAlignment = TextAlignment.CenterLeft,
TextSize = 15,
};
rowLayout.AddChidren(btnName);
var tframeLayout = new FrameLayout()
{
X = Application.GetRealWidth(714 - 29),
Y = Application.GetRealHeight(35),
Width = Application.GetMinRealAverage(118 + 98 * 2),
Height = Application.GetMinRealAverage(81),
BackgroundImagePath = "BindPic/CorrectTemperatureBackGround.png",
};
rowLayout.AddChidren(tframeLayout);
var btnReduction = new Button()
{
Width = Application.GetMinRealAverage(98),
Height = Application.GetMinRealAverage(81),
};
tframeLayout.AddChidren(btnReduction);
var btnNum = new EditText()
{
Width = Application.GetMinReal(115),
Height = Application.GetRealHeight(80),
X = Application.GetRealWidth(98),
Text = "0",
PlaceholderTextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
TextSize = 20,
TextAlignment = TextAlignment.Center,
};
tframeLayout.AddChidren(btnNum);
var btnAdd = new Button()
{
X = Application.GetRealWidth(98 + 118),
Width = Application.GetMinRealAverage(98),
Height = Application.GetMinRealAverage(81),
};
tframeLayout.AddChidren(btnAdd);
var line2 = new Button()
{
Y = rowLayout.Height - 1,
X = devicePic.Right + Application.GetRealWidth(20),
Width = Application.GetRealWidth(965 - 116),
Height = 1,
BackgroundColor = Shared.Common.ZigbeeColor.Current.XMRowLine,
};
rowLayout.AddChidren(line2);
int curIndex = i;
if (curIndex == 0)
{
devicePic.UnSelectedImagePath = "Device/SensorTemperature.png";
btnName.Text = Language.StringByID(R.MyInternationalizationString.Temperature) + " (℃)";
invalidText1 = btnNum.Text;
}
else
{
line2.Visible = false;
devicePic.UnSelectedImagePath = "Device/SensorHumidity.png";
btnName.Text = Language.StringByID(R.MyInternationalizationString.Humidity) + " (%)";
invalidText2 = btnNum.Text;
}
btnNum.TextChangeEventHandler += (sender, e) =>
{
if (!string.IsNullOrEmpty((sender as EditText).Text))
{
var curText = (sender as EditText).Text;
var textFir = curText.Substring(0, 1);
double curV;
var res = double.TryParse(curText, out curV);
if (!res)
{
if (textFir != "-")
{
curV = 0D;
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.NumTip), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
return;
}
}
if (curIndex == 0)
{
correctTValue = curV;
}
else
{
correctHValue = curV;
}
}
if (curIndex == 0)
{
invalidText1 = btnNum.Text;
}
else
{
invalidText2 = btnNum.Text;
}
};
btnReduction.MouseDownEventHandler += async (sender, e) =>
{
if(!string.IsNullOrEmpty(btnNum.Text))
{
double vTemp = double.Parse(btnNum.Text);
vTemp -= 0.1;
btnNum.Text = vTemp.ToString();
if (curIndex == 0)
{
correctTValue = double.Parse(btnNum.Text);
}
else
{
correctHValue = double.Parse(btnNum.Text);
}
}
if (curIndex == 0)
{
invalidText1 = btnNum.Text;
}
else
{
invalidText2 = btnNum.Text;
}
};
btnAdd.MouseDownEventHandler += async (sender, e) =>
{
if (!string.IsNullOrEmpty(btnNum.Text))
{
double vTemp = double.Parse(btnNum.Text);
vTemp += 0.1;
btnNum.Text = vTemp.ToString();
if (curIndex == 0)
{
correctTValue = double.Parse(btnNum.Text);
}
else
{
correctHValue = double.Parse(btnNum.Text);
}
}
if (curIndex == 0)
{
invalidText1 = btnNum.Text;
}
else
{
invalidText2 = btnNum.Text;
}
};
}
}
#endregion
#region ■ 底部提示_______________________
///
/// 底部提示
///
private void TipUI()
{
var bottomFrameLayout = new FrameLayout()
{
Y = Application.GetRealHeight(1426),
Height = Application.GetMinRealAverage(58),
};
bodyFrameLayout.AddChidren(bottomFrameLayout);
var temperatureAttentionPic = new Button()
{
Width = Application.GetMinRealAverage(58),
Height = Application.GetMinRealAverage(58),
UnSelectedImagePath = "BindPic/TemperaTureAttention.png"
};
bottomFrameLayout.AddChidren(temperatureAttentionPic);
var btnText = new Button()
{
Width = Application.GetRealWidth(790),
X = Application.GetRealWidth(56),
TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
TextAlignment = TextAlignment.CenterLeft,
TextSize = 12,
Text = Language.StringByID(R.MyInternationalizationString.DataCorrectionTip),
};
bottomFrameLayout.AddChidren(btnText);
btnFinifh = new Button()
{
Width = Application.GetRealWidth(907),
Height = Application.GetRealHeight(127),
Y = Application.GetRealHeight(1426 + 58 + 12),
Gravity = Gravity.CenterHorizontal,
Radius = (uint)Application.GetRealHeight(127) / 2,
TextID = R.MyInternationalizationString.Save,
BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack,
TextColor = Shared.Common.ZigbeeColor.Current.XMWhite,
IsBold = true,
TextSize = 16,
};
bodyFrameLayout.AddChidren(btnFinifh);
btnFinifh.MouseUpEventHandler += (sender, e) =>
{
SaveTarget();
};
bottomFrameLayout.Width = temperatureAttentionPic.Width + Application.GetRealWidth(10) + btnText.GetTextWidth();
bottomFrameLayout.Gravity = Gravity.CenterHorizontal;
}
#endregion
#region ■ 保存_______________________
///
/// 保存
///
///
void SaveTarget()
{
System.Threading.Tasks.Task.Run(async () =>
{
try
{
if (string.IsNullOrEmpty(invalidText1) )
{
Application.RunOnMainThread(() =>
{
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.TNumTip), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
});
return;
}
if ( string.IsNullOrEmpty(invalidText2))
{
Application.RunOnMainThread(() =>
{
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.HNumTip), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
});
return;
}
Application.RunOnMainThread(() =>
{
CommonPage.Loading.Start();
});
this.ShowProgressBar();
bool result = false;
int direction = 0;
double sendValue = 0;
//温度
sendValue = correctTValue;
if (correctTValue > 0)
{
direction = 1;
}
else if (correctTValue < 0)
{
direction = 2;
sendValue = System.Math.Abs(correctTValue);
}
result = await HdlDevicePanelLogic.Current.CorrectTemperature(device, sendValue, direction, 0);
if (result == false)
{
Application.RunOnMainThread(() =>
{
CommonPage.Loading.Hide();
});
return;
}
//湿度
direction = 0;
sendValue = correctHValue;
if (correctHValue > 0)
{
direction = 1;
}
else if (correctHValue < 0)
{
direction = 2;
sendValue = (-1) * correctHValue;
}
result = await HdlDevicePanelLogic.Current.CorrectTemperature(device, sendValue, direction, 1);
if (result == false)
{
Application.RunOnMainThread(() =>
{
CommonPage.Loading.Hide();
});
return;
}
Application.RunOnMainThread(() =>
{
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.SetSuccessXm), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
CommonPage.Loading.Hide();
});
}
catch { }
});
}
#endregion
}
}