New file |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Text; |
| | | |
| | | namespace Shared.Phone.UserCenter |
| | | { |
| | | /// <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> |
| | | /// <param name="hKey">选择的时间主键</param> |
| | | /// <param name="mKey">选择的分钟主键</param> |
| | | /// <param name="titleText">标题信息</param> |
| | | /// <param name="SelectTimeEvent">确认选择时间的回调函数 </param> |
| | | /// <param name="type">晾衣架时间 :1烘干,2:风干;3消毒</param> |
| | | public bool ShowBottomListTimeView(string hKey, string mKey, string titleText, Action<string, string> SelectTimeEvent, int type) |
| | | { |
| | | //小时列表名字 |
| | | var listHourName = new List<string>(); |
| | | //小时列表主键 |
| | | var listHourKeys = new List<string>(); |
| | | //分钟名字 |
| | | var listMinName = new List<List<string>>(); |
| | | //分钟主键 |
| | | var listMinKeys = new List<List<string>>(); |
| | | var listKeys = new List<string>() { "" }; |
| | | var listName = new List<string>() { "" }; |
| | | if (type == 3) |
| | | { |
| | | //名字和键收集 |
| | | for (int i = 1; i < 31; i++) |
| | | { |
| | | listName.Add(i.ToString()); |
| | | listKeys.Add(i.ToString()); |
| | | } |
| | | listMinName.Add(listName); |
| | | listMinKeys.Add(listKeys); |
| | | } |
| | | else |
| | | { |
| | | //名字和键收集 |
| | | for (int i = 0; i < 4; i++) |
| | | { |
| | | listHourName.Add(i.ToString()); |
| | | listHourKeys.Add((i + 1).ToString()); |
| | | } |
| | | for (int i = 0; i < 60; i++) |
| | | { |
| | | listName.Add(i.ToString()); |
| | | listKeys.Add((i + 1).ToString()); |
| | | } |
| | | listMinName.Add(listName); |
| | | listMinKeys.Add(listKeys); |
| | | } |
| | | |
| | | int index1 = hKey != null ? int.Parse(hKey) : 0; |
| | | int index2 = mKey != null ? int.Parse(mKey) : 0; |
| | | |
| | | if (type == 3) |
| | | { |
| | | //只有分钟,消毒时间 |
| | | PickerView.Show( |
| | | listMinName[0], |
| | | (value) => |
| | | { |
| | | mKey = listMinKeys[0][value]; |
| | | SelectTimeEvent?.Invoke(mKey, listMinKeys[0][value]); |
| | | }, |
| | | index2, |
| | | titleText, |
| | | Language.StringByID(R.MyInternationalizationString.uFinish), |
| | | Language.StringByID(R.MyInternationalizationString.uCancel)); |
| | | } |
| | | else |
| | | { |
| | | //有小时,分钟 |
| | | PickerView.ShowSecondary(listHourName, listMinName, (value1, value2) => |
| | | { |
| | | mKey = listMinKeys[value1][value2]; |
| | | string name = listHourName[value1] + " " + listMinName[value1][value2]; |
| | | SelectTimeEvent?.Invoke(mKey, name); |
| | | |
| | | }, index1, index2, titleText, |
| | | Language.StringByID(R.MyInternationalizationString.uFinish), |
| | | Language.StringByID(R.MyInternationalizationString.uCancel)); |
| | | } |
| | | return true; |
| | | } |
| | | #endregion |
| | | |
| | | } |
| | | } |