using System;
|
using System.Collections.Generic;
|
using System.Text;
|
|
namespace Shared.Phone
|
{
|
/// <summary>
|
/// 控件的逻辑
|
/// </summary>
|
public class HdlControlLogic
|
{
|
#region ■ 变量声明___________________________
|
|
/// <summary>
|
/// 控件的逻辑
|
/// </summary>
|
private static HdlControlLogic m_Current = null;
|
/// <summary>
|
/// 控件的逻辑
|
/// </summary>
|
public static HdlControlLogic Current
|
{
|
get
|
{
|
if (m_Current == null)
|
{
|
m_Current = new HdlControlLogic();
|
}
|
return m_Current;
|
}
|
}
|
|
#endregion
|
|
#region ■ 计算控件真实大小___________________
|
|
/// <summary>
|
/// 计算图片的真实高宽度
|
/// </summary>
|
/// <param name="i_size"></param>
|
/// <returns></returns>
|
public int GetPictrueRealSize(int i_size)
|
{
|
return Application.GetRealWidth(i_size);
|
}
|
|
/// <summary>
|
/// 计算真实宽度(可能以后会变动,所以声明出来有用处)
|
/// </summary>
|
/// <param name="i_size"></param>
|
/// <returns></returns>
|
public int GetRealWidth(int i_size)
|
{
|
return Application.GetRealWidth(i_size);
|
}
|
|
/// <summary>
|
/// 计算真实高度度(可能以后会变动,所以声明出来有用处)
|
/// </summary>
|
/// <param name="i_size"></param>
|
/// <returns></returns>
|
public int GetRealHeight(int i_size)
|
{
|
return Application.GetRealHeight(i_size);
|
}
|
|
/// <summary>
|
/// 计算真实大小(这个东西有特殊用处,考虑到加长型屏幕的控件,调用此方法)
|
/// </summary>
|
/// <param name="i_size"></param>
|
/// <returns></returns>
|
public int GetRealSizeEx(int i_size)
|
{
|
return Application.GetRealWidth(i_size);
|
}
|
|
#endregion
|
|
#region ■ 显示底部弹窗的房间列表_____________
|
|
/// <summary>
|
/// 显示底部弹窗的房间列表(当还没有房间时,会返回false)
|
/// </summary>
|
/// <param name="RoomKey">默认选择的房间主键</param>
|
/// <param name="titleText">标题信息</param>
|
/// <param name="SelectRoomEvent">确认选择房间的回调函数(房间ID,房间名(会拼上楼层))</param>
|
public bool ShowBottomListRoomView(string RoomKey, string titleText, Action<string, string> SelectRoomEvent)
|
{
|
//楼层列表名字
|
var listFloorName = new List<string>();
|
//楼层列表主键
|
var listFloorKeys = new List<string>();
|
//房间名字
|
var listRoomName = new List<List<string>>();
|
//房间主键
|
var listRoomKeys = new List<List<string>>();
|
|
//初始化房间列表数据
|
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;
|
}
|
|
/// <summary>
|
/// 初始化房间列表数据
|
/// </summary>
|
/// <param name="listFloorName">楼层列表名字</param>
|
/// <param name="listFloorKeys">楼层列表主键</param>
|
/// <param name="listRoomName">房间名字</param>
|
/// <param name="listRoomKeys">房间主键</param>
|
private bool InitRoomListData(ref List<string> listFloorName, ref List<string> listFloorKeys, ref List<List<string>> listRoomName, ref List<List<string>> listRoomKeys)
|
{
|
var dicFloor = HdlRoomLogic.Current.GetFloorSortList();
|
if (dicFloor.Count == 0)
|
{
|
//第一位默认添加未分配
|
var listKeys = new List<string>() { "" };
|
var listName = new List<string>() { 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<string>() { "" };
|
var listName = new List<string>() { "" };
|
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<string>();
|
listKeys = new List<string>();
|
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 ■ 显示启动页_________________________
|
|
/// <summary>
|
/// 显示启动页
|
/// </summary>
|
public void ShowLoginLoadView()
|
{
|
var loginLoad = new UserView.LoginLoading();
|
Common.CommonPage.Instance.AddChidren(loginLoad);
|
loginLoad.Show();
|
}
|
#endregion
|
}
|
}
|