using System;
using System.Collections.Generic;
using System.Text;
namespace Shared.Phone
{
///
/// 控件的逻辑
///
public class HdlControlLogic
{
#region ■ 变量声明___________________________
///
/// 控件的逻辑
///
private static HdlControlLogic m_Current = null;
///
/// 控件的逻辑
///
public static HdlControlLogic Current
{
get
{
if (m_Current == null)
{
m_Current = new HdlControlLogic();
}
return m_Current;
}
}
#endregion
#region ■ 计算控件真实大小___________________
///
/// 计算图片的真实高宽度
///
///
///
public int GetPictrueRealSize(int i_size)
{
return Application.GetRealWidth(i_size);
}
///
/// 计算真实宽度(可能以后会变动,所以声明出来有用处)
///
///
///
public int GetRealWidth(int i_size)
{
return Application.GetRealWidth(i_size);
}
///
/// 计算真实高度度(可能以后会变动,所以声明出来有用处)
///
///
///
public int GetRealHeight(int i_size)
{
return Application.GetRealHeight(i_size);
}
///
/// 计算真实大小(这个东西有特殊用处,考虑到加长型屏幕的控件,调用此方法)
///
///
///
public int GetRealSizeEx(int i_size)
{
return Application.GetRealWidth(i_size);
}
#endregion
#region ■ 显示底部弹窗的房间列表_____________
///
/// 显示底部弹窗的房间列表(当还没有房间时,会返回false)
///
/// 默认选择的房间主键
/// 标题信息
/// 确认选择房间的回调函数(房间ID,房间名(会拼上楼层))
public bool ShowBottomListRoomView(string RoomKey, string titleText, Action SelectRoomEvent)
{
//楼层列表名字
var listFloorName = new List();
//楼层列表主键
var listFloorKeys = new List();
//房间名字
var listRoomName = new List>();
//房间主键
var listRoomKeys = new List>();
//初始化房间列表数据
bool result = this.InitRoomListData(ref listFloorName, ref listFloorKeys, ref listRoomName, ref listRoomKeys);
if (result == false)
{
return false;
}
var room = HdlRoomLogic.Current.GetRoomById(RoomKey);
int index1 = room != null ? listFloorKeys.IndexOf(room.FloorId) : 0;
if (index1 == -1) { index1 = 0; }
int index2 = listRoomKeys[index1].IndexOf(RoomKey);
if (index2 == -1) { index2 = 0; }
if (listFloorKeys.Count == 0)
{
//无楼层模式
PickerView.Show(listRoomName[0], (value) =>
{
RoomKey = listRoomKeys[0][value];
string roomName = string.Empty;
if (RoomKey != string.Empty)
{
//房间
roomName = listRoomName[0][value];
}
else
{
roomName = Language.StringByID(R.MyInternationalizationString.uDeviceNotAssignedRoom);
}
SelectRoomEvent?.Invoke(RoomKey, roomName);
}, index2, titleText,
Language.StringByID(R.MyInternationalizationString.uFinish),
Language.StringByID(R.MyInternationalizationString.uCancel));
}
else
{
//有楼层模式
PickerView.ShowSecondary(listFloorName, listRoomName, (value1, value2) =>
{
RoomKey = listRoomKeys[value1][value2];
string roomName = string.Empty;
if (RoomKey != string.Empty)
{
//楼层+房间
roomName = listFloorName[value1] + " " + listRoomName[value1][value2];
}
else
{
roomName = Language.StringByID(R.MyInternationalizationString.uDeviceNotAssignedRoom);
}
SelectRoomEvent?.Invoke(RoomKey, roomName);
}, index1, index2, titleText,
Language.StringByID(R.MyInternationalizationString.uFinish),
Language.StringByID(R.MyInternationalizationString.uCancel));
}
return true;
}
///
/// 初始化房间列表数据
///
/// 楼层列表名字
/// 楼层列表主键
/// 房间名字
/// 房间主键
private bool InitRoomListData(ref List listFloorName, ref List listFloorKeys, ref List> listRoomName, ref List> listRoomKeys)
{
var dicFloor = HdlRoomLogic.Current.GetFloorSortList();
if (dicFloor.Count == 0)
{
//第一位默认添加未分配
var listKeys = new List() { "" };
var listName = new List() { Language.StringByID(R.MyInternationalizationString.uUndistributed) };
//房间名字和主键收集
var listRoom = HdlRoomLogic.Current.GetFloorSortRoom(string.Empty, false);
foreach (var myRoom in listRoom)
{
listName.Add(myRoom.Name);
listKeys.Add(myRoom.Id);
}
listRoomName.Add(listName);
listRoomKeys.Add(listKeys);
}
else
{
//第一位默认添加未分配(未分配放在楼层那个菜单)
var listKeys = new List() { "" };
var listName = new List() { "" };
listRoomName.Add(listName);
listRoomKeys.Add(listKeys);
listFloorKeys.Add("");
listFloorName.Add(Language.StringByID(R.MyInternationalizationString.uUndistributed));
foreach (string fKeys in dicFloor.Keys)
{
var listRoom = HdlRoomLogic.Current.GetFloorSortRoom(fKeys, false);
if (listRoom.Count > 0)
{
//楼层名字和主键收集
listFloorKeys.Add(fKeys);
listFloorName.Add(dicFloor[fKeys]);
//房间名字和主键收集
listName = new List();
listKeys = new List();
foreach (var myRoom in listRoom)
{
listName.Add(myRoom.Name);
listKeys.Add(myRoom.Id);
}
listRoomName.Add(listName);
listRoomKeys.Add(listKeys);
}
}
}
//没有建立房间
if (listFloorKeys.Count == 0 && listRoomKeys.Count == 0)
{
return false;
}
return true;
}
#endregion
#region ■ 显示启动页_________________________
///
/// 显示启动页
///
public void ShowLoginLoadView()
{
var loginLoad = new UserView.LoginLoading();
Common.CommonPage.Instance.AddChidren(loginLoad);
loginLoad.Show();
}
#endregion
}
}