using System;
using System.Collections.Generic;
using System.Text;
using ZigBee.Device;
namespace Shared.Phone.UserCenter.Safety
{
///
/// 延时设置的主界面★
///
public class GarrisonAreaDelayedSettionForm : EditorCommonForm
{
#region ■ 变量声明___________________________
///
/// 防区的延迟时间
///
private Safeguard.CatDelayTimeResponseData timeResponseData = null;
///
/// 进入延迟的时间控件
///
private NormalViewControl inDelayTimeControl = null;
///
/// 外出延迟的时间控件
///
private NormalViewControl outDelayTimeControl = null;
#endregion
#region ■ 初始化_____________________________
///
/// 画面显示(底层会固定调用此方法,借以完成画面创建)
///
public void ShowForm()
{
//设置头部信息
base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uDelayedSettion));
//初始化中部信息
this.InitMiddleFrame();
}
///
/// 初始化中部信息
///
private void InitMiddleFrame()
{
//清空bodyFrame
this.ClearBodyFrame();
//背景
var frameBack = new FrameLayout();
frameBack.Height = Application.GetRealHeight(423);
frameBack.BackgroundColor = UserCenterColor.Current.White;
bodyFrameLayout.AddChidren(frameBack);
//该功能只对出入防区有效
var btnTitle = new NormalViewControl(864, 50, true);
btnTitle.X = ControlCommonResourse.XXLeft;
btnTitle.Y = Application.GetRealHeight(38);
btnTitle.TextSize = 12;
btnTitle.TextColor = UserCenterColor.Current.TextGrayColor2;
btnTitle.TextID = R.MyInternationalizationString.uThisFunctionOnlyInAndOutSectors;
frameBack.AddChidren(btnTitle);
var frameTable = new FrameListControl(29);
frameTable.Y = btnTitle.Bottom + Application.GetRealHeight(38);
frameTable.Height = frameBack.Height - btnTitle.Bottom - Application.GetRealHeight(38);
bodyFrameLayout.AddChidren(frameTable);
//添加所有的菜单
this.AddAllMenuRow(frameTable);
}
#endregion
#region ■ 添加菜单___________________________
///
/// 添加所有的菜单
///
///
private async void AddAllMenuRow(FrameListControl listView)
{
//打开进度条
this.ShowProgressBar();
//获取防区的延迟时间(仅限出入防区),出错时返回null
this.timeResponseData = await HdlSafeguardLogic.Current.GetGarrisonDelayTime();
if (timeResponseData == null)
{
//关闭进度条
this.CloseProgressBar(ShowReLoadMode.YES);
return;
}
//关闭进度条
this.CloseProgressBar();
Application.RunOnMainThread(() =>
{
//初始化【进入延时】行
this.InitInDelayedRow(listView);
//初始化【外出延时】行
this.InitOutDelayedRow(listView);
});
}
#endregion
#region ■ 进入延时___________________________
///
/// 初始化【进入延时】行
///
///
private void InitInDelayedRow(FrameListControl listView)
{
var row = new FrameRowControl(listView.rowSpace / 2);
listView.AddChidren(row);
row.Y = 0 - listView.rowSpace;
//进入延时
row.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uInDelayed), 500);
//添加右箭头
row.AddRightArrow();
//底线
row.AddBottomLine();
//时间
string second = Language.StringByID(R.MyInternationalizationString.Second);
this.inDelayTimeControl = row.AddMostRightView(this.GetTimeText(this.timeResponseData.EntranceDelayTime), 200);
this.inDelayTimeControl.TextColor = UserCenterColor.Current.TextGrayColor1;
row.ButtonClickEvent += (sender, e) =>
{
//显示延时时间
this.ShowDelayListTime(1);
};
}
#endregion
#region ■ 外出延时___________________________
///
/// 初始化【外出延时】行
///
///
private void InitOutDelayedRow(FrameListControl listView)
{
var row = new FrameRowControl(listView.rowSpace / 2);
listView.AddChidren(row);
//外出延时
row.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uOutDelayed), 500);
//添加右箭头
row.AddRightArrow();
//时间
string second = Language.StringByID(R.MyInternationalizationString.Second);
this.outDelayTimeControl = row.AddMostRightView(this.GetTimeText(this.timeResponseData.GoOutDelayTime), 200);
this.outDelayTimeControl.TextColor = UserCenterColor.Current.TextGrayColor1;
row.ButtonClickEvent += (sender, e) =>
{
//显示延时时间
this.ShowDelayListTime(2);
};
}
#endregion
#region ■ 保存时间___________________________
///
/// 保存时间
///
/// 进入延迟时间
/// 外出延迟时间
private async void SaveTime(int inDelayTime, int OutDelayTime)
{
//打开进度条
this.ShowProgressBar();
var result = await HdlSafeguardLogic.Current.SetGarrisonDelayTime(inDelayTime, OutDelayTime);
//关闭进度条
this.CloseProgressBar();
if (result == true)
{
//修改缓存
this.timeResponseData.EntranceDelayTime = inDelayTime;
this.timeResponseData.GoOutDelayTime = OutDelayTime;
Application.RunOnMainThread(() =>
{
if (this.inDelayTimeControl != null)
{
//显示时间翻译文本
this.inDelayTimeControl.Text = this.GetTimeText(inDelayTime);
}
if (this.outDelayTimeControl != null)
{
//显示时间翻译文本
this.outDelayTimeControl.Text = this.GetTimeText(OutDelayTime);
}
});
}
}
#endregion
#region ■ 显示延时时间_______________________
///
/// 显示延时时间列表
///
/// 1:进入延迟 2:外出延迟
private void ShowDelayListTime(int div)
{
//分
string strMinute = Language.StringByID(R.MyInternationalizationString.uMinute);
//秒
string strSecond = Language.StringByID(R.MyInternationalizationString.uSecond);
var listfirst = new List();
var listSecond = new List>();
for (int i = 0; i <= 29; i++)
{
listfirst.Add(i.ToString().PadLeft(2, '0') + strMinute);
var listTemp = new List();
for (int j = 0; j <= 59; j++)
{
if (i == 0 && j == 0)
{
continue;
}
listTemp.Add(j.ToString().PadLeft(2, '0') + strSecond);
}
listSecond.Add(listTemp);
}
//加一个30分钟吧
listfirst.Add("30" + strMinute);
var listTemp2 = new List() { "00" + strSecond };
listSecond.Add(listTemp2);
//进入延迟
int delayTime = this.timeResponseData.EntranceDelayTime;
string title = Language.StringByID(R.MyInternationalizationString.uInDelayed);
if (div == 2)
{
//外出延迟
delayTime = this.timeResponseData.GoOutDelayTime;
title = Language.StringByID(R.MyInternationalizationString.uOutDelayed);
}
string value = (delayTime / 60).ToString().PadLeft(2, '0') + strMinute;
int index1 = listfirst.IndexOf(value);
if (index1 == -1)
{
index1 = 0;
}
value = (delayTime % 60).ToString().PadLeft(2, '0') + strSecond;
int index2 = listSecond[index1].IndexOf(value);
if (index2 == -1)
{
index2 = 0;
}
PickerView.ShowSecondary(listfirst, listSecond, (value1, value2) =>
{
int minute = Convert.ToInt32(listfirst[value1].Substring(0, 2));
int second = Convert.ToInt32(listSecond[value1][value2].Substring(0, 2));
int delaySecond = minute * 60 + second;
//保存时间
if (div == 1)
{
//进入延迟
this.SaveTime(delaySecond, this.timeResponseData.GoOutDelayTime);
}
else
{
//外出延迟
this.SaveTime(this.timeResponseData.EntranceDelayTime, delaySecond);
}
},
index1, index2, title,
Language.StringByID(R.MyInternationalizationString.uFinish),
Language.StringByID(R.MyInternationalizationString.uCancel));
}
#endregion
#region ■ 一般方法___________________________
///
/// 获取时间的翻译文本
///
/// 秒
///
private string GetTimeText(int timeSecond)
{
string textValue = string.Empty;
//分
int checkValue = timeSecond / 60;
if (checkValue > 0)
{
string minu = Language.StringByID(R.MyInternationalizationString.uMinute);
textValue = checkValue + minu;
}
//秒
checkValue = timeSecond % 60;
if (checkValue > 0)
{
string second = Language.StringByID(R.MyInternationalizationString.uSecond);
textValue += checkValue + second;
}
return textValue;
}
#endregion
}
}