using System;
using Shared;
using System.Text.RegularExpressions;
using System.Collections.Generic;
using HDL_ON.Entity;
using HDL_ON.UI.CSS;
namespace HDL_ON.UI
{
public class AddOutputPage : FrameLayout
{
FrameLayout bodyView;
FrameLayout showdFunctionTypeRow;
///
/// 楼层选择下拉图标
///
Button btnFloorDownIcon;
///
/// 楼层显示
///
Button btnFloor;
///
/// 筛选文本显示
///
Button btnScreenText;
VerticalScrolViewLayout functionListView;
SecurityAlarm securityAlarm;
Action refreshAction;
List outputList = new List();
List allocatedList = new List();
public AddOutputPage(SecurityAlarm function, Action action)
{
bodyView = this;
securityAlarm = function;
refreshAction = action;
}
///
/// 加载界面
///
public void LoadPage()
{
bodyView.BackgroundColor = CSS_Color.BackgroundColor;
new TopViewDiv(bodyView, Language.StringByID(StringId.AddFunction)).LoadTopView();
#region 显示的功能类型切换区域
showdFunctionTypeRow = new FrameLayout()
{
Y = Application.GetRealHeight(64),
Height = Application.GetRealHeight(62),
BackgroundColor = CSS_Color.MainBackgroundColor,
};
bodyView.AddChidren(showdFunctionTypeRow);
btnFloorDownIcon = new Button()
{
Width = Application.GetMinRealAverage(16),
Height = Application.GetMinRealAverage(16),
X = Application.GetRealWidth(16),
Y = Application.GetRealHeight(18),
UnSelectedImagePath = "Public/DownIcon.png",
};
showdFunctionTypeRow.AddChidren(btnFloorDownIcon);
btnFloor = new Button()
{
X = btnFloorDownIcon.Right,
Y = Application.GetRealHeight(18),
Width = Application.GetRealWidth(200),
Height = Application.GetMinRealAverage(16),
TextColor = CSS_Color.FirstLevelTitleColor,
TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
TextAlignment = TextAlignment.CenterLeft,
Text = DB_ResidenceData.Instance.CurFloor.roomName,
};
showdFunctionTypeRow.AddChidren(btnFloor);
#endregion
functionListView = new VerticalScrolViewLayout()
{
Y = showdFunctionTypeRow.Bottom,
Height = Application.GetRealHeight(530 - 100),
BackgroundColor = CSS_Color.BackgroundColor,
};
bodyView.AddChidren(functionListView);
foreach (var function in FunctionList.List.Functions)
{
if (!MainPage.SceneSupportFunctionList.Contains(function.spk))
{
continue;
}
if (function == null)
{
continue;
}
function.roomIds.Remove(null);
allocatedList.Add(function);
}
LoadFunctionListRow(null);
var bottomView = new FrameLayout()
{
Y = Application.GetRealHeight(591),
Height = Application.GetRealHeight(100),
BackgroundColor = CSS_Color.MainBackgroundColor,
Radius = (uint)Application.GetRealWidth(22),
};
this.AddChidren(bottomView);
var btnConfrim = new Button()
{
X = Application.GetRealWidth(78),
Y = Application.GetRealHeight(12),
Width = Application.GetRealWidth(220),
Height = Application.GetRealWidth(44),
Radius = (uint)Application.GetRealWidth(22),
BackgroundColor = CSS_Color.MainColor,
TextID = StringId.Confirm,
TextSize = CSS_FontSize.SubheadingFontSize,
TextColor = CSS_Color.MainBackgroundColor,
TextAlignment = TextAlignment.Center,
};
bottomView.AddChidren(btnConfrim);
btnConfrim.MouseUpEventHandler = (sender, e) =>
{
securityAlarm.output = new List();
foreach (var output in outputList)
{
if (output.addCondition)
{
securityAlarm.output.Add(output);
}
}
this.RemoveFromParent();
refreshAction?.Invoke(securityAlarm);
};
}
//
/// 显示功能Row
///
void LoadFunctionListRow(List functions)
{
functionListView.RemoveAll();
if (functions == null)
{
functions = allocatedList;
}
foreach (var function in functions)
{
var output = securityAlarm.output.Find((obj) => obj.sid == function.sid);
if (output == null)
{
output = new SecurityOutput();
output.sid = function.sid;
}
else
{
output.addCondition = true;
}
outputList.Add(output);
FrameLayout functionRow = new FrameLayout()
{
Height = Application.GetRealHeight(65),
BackgroundColor = CSS_Color.MainBackgroundColor,
};
functionListView.AddChidren(functionRow);
var btnFunctionName = new Button()
{
X = Application.GetRealWidth(16),
Width = Application.GetRealWidth(200),
Height = Application.GetRealHeight(44),
Text = function.name,
TextAlignment = TextAlignment.CenterLeft,
TextColor = CSS_Color.FirstLevelTitleColor,
TextSize = CSS_FontSize.TextFontSize,
};
functionRow.AddChidren(btnFunctionName);
var btnFunctionFloorName = new Button()
{
X = Application.GetRealWidth(16),
Y = Application.GetRealHeight(24),
Width = Application.GetRealWidth(200),
Height = Application.GetRealHeight(41),
Text = function.GetRoomListName(),
TextAlignment = TextAlignment.CenterLeft,
TextColor = CSS_Color.PromptingColor1,
TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
};
functionRow.AddChidren(btnFunctionFloorName);
Button btnState = new Button()
{
Width = Application.GetRealWidth(317),
TextAlignment = TextAlignment.CenterRight,
TextSize = CSS_FontSize.TextFontSize,
TextColor = CSS_Color.PromptingColor1,
};
functionRow.AddChidren(btnState);
Button btnChooseIcon = new Button()
{
X = Application.GetRealWidth(333),
Gravity = Gravity.CenterVertical,
Width = Application.GetMinRealAverage(32),
Height = Application.GetMinRealAverage(32),
UnSelectedImagePath = "Public/ChooseIcon.png",
SelectedImagePath = "Public/ChooseOnIcon.png",
};
functionRow.AddChidren(btnChooseIcon);
btnChooseIcon.MouseUpEventHandler = (sender, e) =>
{
btnChooseIcon.IsSelected = !btnChooseIcon.IsSelected;
if (btnChooseIcon.IsSelected)
{
output.addCondition = true;
if (output.status.Count == 0)
{
ShowStateDialog(output, btnState, btnChooseIcon);
}
}
else
{
output.addCondition = false;
}
};
btnState.MouseUpEventHandler = (sender, e) =>
{
ShowStateDialog(output, btnState, btnChooseIcon);
};
if (output.addCondition)
{
btnChooseIcon.IsSelected = true;
btnState.Text = output.StateText();
}
functionListView.AddChidren(new Button()
{
Gravity = Gravity.CenterHorizontal,
Width = Application.GetRealWidth(343),
Height = Application.GetRealWidth(1),
BackgroundColor = CSS_Color.DividingLineColor,
});
}
}
private void ShowStateDialog(SecurityOutput output, Button btnState, Button btnChoose = null)
{
Dialog dialog = new Dialog();
FrameLayout contentView = new FrameLayout();
dialog.AddChidren(contentView);
contentView.MouseUpEventHandler = (sender, e) =>
{
dialog.Close();
if (output.status.Count == 0)
{
if (btnChoose != null)
{
btnChoose.IsSelected = false;
}
}
};
VerticalScrolViewLayout optinView = new VerticalScrolViewLayout()
{
Gravity = Gravity.CenterHorizontal,
Y = Application.GetRealHeight(515),
Width = Application.GetRealWidth(343),
Height = Application.GetRealHeight(88),
Radius = (uint)Application.GetRealHeight(13),
BackgroundColor = CSS_Color.MainBackgroundColor,
};
contentView.AddChidren(optinView);
Button btnOpen = new Button()
{
Height = Application.GetRealHeight(44),
TextAlignment = TextAlignment.Center,
TextColor = CSS_Color.MainColor,
TextSize = CSS_FontSize.SubheadingFontSize,
TextID = StringId.On
};
optinView.AddChidren(btnOpen);
optinView.AddChidren(new Button()
{
Height = 1,
BackgroundColor = CSS_Color.DividingLineColor
});
Button btnClose = new Button()
{
Height = Application.GetRealHeight(44),
TextAlignment = TextAlignment.Center,
TextColor = CSS_Color.PromptingColor1,
TextID = StringId.OFF,
TextSize = CSS_FontSize.SubheadingFontSize,
};
optinView.AddChidren(btnClose);
Button btnCancel = new Button()
{
Gravity = Gravity.CenterHorizontal,
Y = optinView.Bottom + Application.GetRealHeight(8),
Width = Application.GetRealWidth(343),
Height = Application.GetRealHeight(44),
Radius = (uint)Application.GetRealHeight(13),
BackgroundColor = CSS_Color.MainBackgroundColor,
TextID = StringId.Cancel,
TextColor = CSS_Color.WarningColor,
IsBold = true,
};
contentView.AddChidren(btnCancel);
dialog.Show();
btnOpen.MouseUpEventHandler = (sender, e) =>
{
btnState.Text = btnOpen.Text;
output.status = new List()
{
new SecurityOutputStatus()
{
key = FunctionAttributeKey.OnOff,
value = "on",
}
};
output.addCondition = true;
if (btnChoose != null)
{
btnChoose.IsSelected = true;
}
dialog.Close();
};
btnClose.MouseUpEventHandler = (sender, e) =>
{
btnState.Text = btnClose.Text;
output.status = new List()
{
new SecurityOutputStatus()
{
key = FunctionAttributeKey.OnOff,
value = "off",
}
};
output.addCondition = true;
if (btnChoose != null)
{
btnChoose.IsSelected = true;
}
dialog.Close();
};
btnCancel.MouseUpEventHandler = (sender, e) =>
{
dialog.Close();
if (output.status.Count == 0)
{
if (btnChoose != null)
{
btnChoose.IsSelected = false;
}
}
};
}
///
/// 住宅列表点击事件
///
void LoadDialog_ChangeFloor()
{
string nowSelectId = null;
btnFloor.MouseUpEventHandler += (sender, e) =>
{
var listAllFun = new List();
listAllFun.AddRange(allocatedList);
//显示下拉界面
var form = new FloorRoomSelectPopupView();
form.ShowDeviceFunctionView(btnFloor, listAllFun, (selectId, listFun) =>
{
nowSelectId = selectId;
//重新刷新设备列表
this.LoadFunctionListRow(listFun);
}, nowSelectId);
};
}
}
}