using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Threading;
|
using HDL_ON.DAL.Server;
|
using HDL_ON.DriverLayer;
|
using HDL_ON.Entity;
|
using HDL_ON.UI.CSS;
|
using Shared;
|
|
namespace HDL_ON.UI
|
{
|
public class OrderFunctionPage : FrameLayout
|
{
|
#region 控件列表
|
/// <summary>
|
/// 当前窗体
|
/// </summary>
|
static FrameLayout bodyView;
|
/// <summary>
|
/// 功能列表集合显示区域
|
/// </summary>
|
static VerticalScrolViewLayout functionListView;
|
/// <summary>
|
/// 完成按钮
|
/// </summary>
|
Button btnConfrim;
|
|
#endregion
|
/// <summary>
|
/// 回调刷新
|
/// </summary>
|
Action<Scene> backActon;
|
|
List<Function> orderList = new List<Function>();
|
List<int> orderNumber = new List<int>();
|
|
public OrderFunctionPage()
|
{
|
bodyView = this;
|
}
|
|
public void LoadPage(List<Function> functions,Action action)
|
{
|
List<int> orderNumberAlreay = new List<int>();
|
for (int i=0;i< functions.Count; i++)
|
{
|
if (functions[i].FunctionOrderNumber != 9999)
|
{
|
orderNumberAlreay.Add(functions[i].FunctionOrderNumber);
|
}
|
}
|
for (int i = 1; i < functions.Count + 1; i++)
|
{
|
if (!orderNumberAlreay.Contains(i))
|
{
|
orderNumber.Add(i);
|
}
|
}
|
|
bodyView.BackgroundColor = CSS_Color.BackgroundColor;
|
new TopViewDiv(bodyView, Language.StringByID(StringId.Sort)).LoadTopView();
|
|
functionListView = new VerticalScrolViewLayout()
|
{
|
Y = Application.GetRealHeight(84),
|
Height = Application.GetRealHeight(640 - 100),
|
};
|
bodyView.AddChidren(functionListView);
|
|
LoadRow(functions);
|
|
#region 底部view
|
var bottomView = new FrameLayout()
|
{
|
Y = Application.GetRealHeight(591),
|
Height = Application.GetRealHeight(100),
|
BackgroundColor = CSS_Color.MainBackgroundColor,
|
Radius = (uint)Application.GetRealWidth(12),
|
};
|
this.AddChidren(bottomView);
|
|
btnConfrim = new Button()
|
{
|
Y = Application.GetRealHeight(12),
|
Gravity = Gravity.CenterHorizontal,
|
Width = Application.GetRealWidth(220),
|
Height = Application.GetRealHeight(44),
|
Radius = (uint)Application.GetRealHeight(22),
|
TextAlignment = TextAlignment.Center,
|
TextColor = CSS_Color.MainBackgroundColor,
|
BackgroundColor = CSS_Color.BackgroundColor,
|
TextID = StringId.Confirm,
|
TextSize = CSS_FontSize.SubheadingFontSize,
|
SelectedTextColor = CSS_Color.MainBackgroundColor,
|
SelectedBackgroundColor = CSS_Color.MainColor,
|
IsSelected = true
|
};
|
bottomView.AddChidren(btnConfrim);
|
btnConfrim.MouseUpEventHandler = (sender, e) => {
|
foreach(var function in functions)
|
{
|
function.SaveFunctionFile();
|
}
|
action?.Invoke();
|
this.RemoveFromParent();
|
};
|
|
#endregion
|
|
}
|
|
/// <summary>
|
/// 显示的设备的总数
|
/// </summary>
|
int showCount = -1;
|
|
/// <summary>
|
/// 加载功能row
|
/// </summary>
|
/// <param name="lightList"></param>
|
void LoadRow(List<Function> functions, bool isAppend = false)
|
{
|
var waitPage = new Loading();
|
bodyView.AddChidren(waitPage);
|
waitPage.Start("");
|
|
new System.Threading.Thread(() =>
|
{
|
try
|
{
|
Application.RunOnMainThread(() =>
|
{
|
if (!isAppend)
|
{
|
showCount = -1;
|
functionListView.RemoveAll();
|
}
|
|
for(var i =0;i<100;i++)
|
//foreach (var function in functions)
|
{
|
showCount++;
|
if (showCount >= functions.Count)
|
{
|
break;
|
}
|
var function = functions[showCount];
|
var functionDiv = new OrderFunctionRow()
|
{
|
Gravity = Gravity.CenterHorizontal,
|
Width = Application.GetRealWidth(343),
|
Height = Application.GetRealHeight(62),
|
Radius = (uint)Application.GetMinRealAverage(12),
|
BorderColor = 0x00FFFFFF,
|
BorderWidth = 1,
|
BackgroundColor = CSS_Color.MainBackgroundColor,
|
};
|
|
functionDiv.LoadDiv(function, orderNumber);
|
|
|
functionListView.AddChidren(functionDiv);
|
|
functionListView.AddChidren(new Button() { Height = Application.GetRealHeight(12) });
|
}
|
|
if (functions.Count > showCount)
|
{
|
var btnAppend = new Button()
|
{
|
Height = Application.GetRealHeight(60),
|
TextAlignment = TextAlignment.Center,
|
TextSize = CSS_FontSize.SubheadingFontSize,
|
TextColor = CSS_Color.FirstLevelTitleColor,
|
TextID = StringId.LoadMore,
|
};
|
functionListView.AddChidren(btnAppend);
|
btnAppend.MouseUpEventHandler = (sender, e) =>
|
{
|
btnAppend.RemoveFromParent();
|
LoadRow(functions, true);
|
};
|
}
|
});
|
}
|
catch (Exception ex)
|
{
|
MainPage.Log("ShowFunctionRowError : " + ex.Message);
|
}
|
finally
|
{
|
Application.RunOnMainThread(() =>
|
{
|
if (waitPage != null)
|
{
|
waitPage.RemoveFromParent();
|
waitPage = null;
|
}
|
});
|
}
|
})
|
{ IsBackground = true }.Start();
|
|
}
|
|
|
|
}
|
|
|
|
public class OrderFunctionRow : FrameLayout
|
{
|
#region 区域控件
|
static FrameLayout bodyDiv;
|
/// <summary>
|
/// 功能/场景icon
|
/// </summary>
|
Button btnIcon;
|
/// <summary>
|
/// 功能名称/场景名称
|
/// </summary>
|
Button btnName;
|
/// <summary>
|
/// 楼层信息显示按钮
|
/// </summary>
|
Button btnFromFloor;
|
/// <summary>
|
/// 选中按钮
|
/// </summary>
|
Button btnSelect;
|
#endregion
|
|
public OrderFunctionRow()
|
{
|
bodyDiv = this;
|
}
|
|
|
/// <summary>
|
/// 加载控制卡片区域
|
/// </summary>
|
public void LoadDiv(Function function, List<int> orderNumber)
|
{
|
btnIcon = new Button()
|
{
|
X = Application.GetRealWidth(10),
|
Y = Application.GetRealHeight(15),
|
Width = Application.GetRealWidth(32),
|
Height = Application.GetRealWidth(32),
|
UnSelectedImagePath = $"FunctionIcon/Icon/{function.IconName}.png"
|
};
|
bodyDiv.AddChidren(btnIcon);
|
|
btnName = new Button()
|
{
|
X = Application.GetRealWidth(8 + 10 + 32),
|
Y = Application.GetRealHeight(10),
|
Width = Application.GetRealWidth(200),
|
Height = Application.GetRealHeight(24),
|
Text = function.name,
|
TextAlignment = TextAlignment.CenterLeft,
|
TextColor = CSS_Color.FirstLevelTitleColor,
|
TextSize = CSS_FontSize.TextFontSize,
|
};
|
bodyDiv.AddChidren(btnName);
|
|
btnFromFloor = new Button()
|
{
|
X = Application.GetRealWidth(8 + 10 + 32),
|
Y = Application.GetRealHeight(10 + 24),
|
Width = Application.GetRealWidth(200),
|
Height = Application.GetRealHeight(18),
|
Text = function.GetRoomListName(),
|
TextAlignment = TextAlignment.CenterLeft,
|
TextColor = CSS_Color.PromptingColor1,
|
TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
|
};
|
bodyDiv.AddChidren(btnFromFloor);
|
|
btnSelect = new Button()
|
{
|
X = Application.GetRealWidth(303),
|
Gravity = Gravity.CenterVertical,
|
Width = Application.GetRealWidth(32),
|
Height = Application.GetRealWidth(32),
|
Text = function.FunctionOrderNumber == 9999 ? "" : function.FunctionOrderNumber.ToString(),
|
TextColor = CSS_Color.FirstLevelTitleColor,
|
TextSize = CSS_FontSize.SubheadingFontSize,
|
TextAlignment = TextAlignment.Center,
|
};
|
bodyDiv.AddChidren(btnSelect);
|
|
EventHandler<MouseEventArgs> eventHandler = (sender, e) => {
|
lock (orderNumber)
|
{
|
if (function.FunctionOrderNumber == 9999)
|
{
|
function.FunctionOrderNumber = orderNumber[0];
|
orderNumber.RemoveAt(0);
|
btnSelect.Text = function.FunctionOrderNumber.ToString();
|
}
|
else
|
{
|
|
if (!orderNumber.Contains(function.FunctionOrderNumber))
|
{
|
for (var i = 0; i < orderNumber.Count; i++)
|
{
|
if (orderNumber[i] > function.FunctionOrderNumber)
|
{
|
orderNumber.Insert(i, function.FunctionOrderNumber);
|
function.FunctionOrderNumber = 9999;
|
break;
|
}
|
}
|
}
|
if (function.FunctionOrderNumber != 9999)
|
{
|
orderNumber.Add(function.FunctionOrderNumber);
|
function.FunctionOrderNumber = 9999;
|
}
|
btnSelect.Text = "";
|
}
|
}
|
};
|
btnName.MouseUpEventHandler = eventHandler;
|
btnSelect.MouseUpEventHandler = eventHandler;
|
bodyDiv.MouseUpEventHandler = eventHandler;
|
|
}
|
}
|
}
|