using System;
|
using System.Collections.Generic;
|
using System.Text;
|
|
namespace Shared.Phone.UserCenter.Residence
|
{
|
/// <summary>
|
/// 住宅管理界面
|
/// </summary>
|
public class ResidenceManagementForm : EditorCommonForm
|
{
|
#region ■ 变量声明___________________________
|
|
/// <summary>
|
/// 列表控件
|
/// </summary>
|
private VerticalListControl listView = null;
|
/// <summary>
|
/// 列表控件最大高度
|
/// </summary>
|
private int MaxListViewHeight = 0;
|
/// <summary>
|
/// 楼层顺序
|
/// </summary>
|
private List<string> listFloorSort = new List<string>();
|
|
#endregion
|
|
#region ■ 初始化_____________________________
|
|
/// <summary>
|
/// 画面显示(底层会固定调用此方法,借以完成画面创建)
|
/// </summary>
|
/// <param name="i_CanDeleteResidence">能否删除当前住宅</param>
|
public void ShowForm(bool i_CanDeleteResidence)
|
{
|
//设置头部信息
|
base.SetTitleText(Common.Config.Instance.Home.Name);
|
|
//判断能否删除住宅
|
if (i_CanDeleteResidence == true)
|
{
|
//初始化右上角菜单
|
this.InitTopRightMenu();
|
}
|
//初始化中部信息
|
this.InitMiddleFrame();
|
}
|
|
/// <summary>
|
/// 初始化中部信息
|
/// </summary>
|
private void InitMiddleFrame()
|
{
|
//清空bodyFrame
|
this.ClearBodyFrame();
|
|
var frameHome = new FrameRowControl();
|
frameHome.Height = Application.GetRealHeight(173);
|
frameHome.BackgroundColor = UserCenterColor.Current.White;
|
bodyFrameLayout.AddChidren(frameHome);
|
|
var btnAdreeIcon = frameHome.AddLeftIcon(81);
|
btnAdreeIcon.UnSelectedImagePath = "Item/FixedPositionSelected.png";
|
|
//住宅名称
|
var btnHomeName = frameHome.AddLeftCaption(Common.Config.Instance.Home.Name, 700, 60);
|
btnHomeName.TextSize = 15;
|
btnHomeName.Y = Application.GetRealHeight(35);
|
frameHome.AddChidren(btnHomeName, ChidrenBindMode.BindEventOnly);
|
//当前住宅
|
var btnNowView = frameHome.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uNowResidence), 700, 49);
|
btnNowView.TextSize = 12;
|
btnNowView.Y = Application.GetRealHeight(95);
|
btnNowView.TextColor = UserCenterColor.Current.TextGrayColor1;
|
frameHome.AddChidren(btnNowView, ChidrenBindMode.BindEventOnly);
|
//右箭头
|
frameHome.AddRightArrow();
|
|
var frameFloor = new FrameRowControl();
|
frameFloor.UseClickStatu = false;
|
frameFloor.Y = frameHome.Bottom + Application.GetRealHeight(23);
|
frameFloor.Height = Application.GetRealHeight(115);
|
frameFloor.BackgroundColor = UserCenterColor.Current.White;
|
bodyFrameLayout.AddChidren(frameFloor);
|
|
//楼层
|
var btnFloor = frameFloor.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uFloor), 200, 60);
|
btnFloor.Y = Application.GetRealHeight(49);
|
btnFloor.TextColor = UserCenterColor.Current.TextColor2;
|
btnFloor.TextSize = 15;
|
frameFloor.AddChidren(btnFloor, ChidrenBindMode.NotBind);
|
if (UserCenterResourse.UserInfo.AuthorityNo == 1 || UserCenterResourse.UserInfo.AuthorityNo == 2)
|
{
|
//添加楼层
|
var btnAddFloor = frameFloor.AddMostRightEmptyIcon(69, 69);
|
frameFloor.ChangedChidrenBindMode(btnAddFloor, ChidrenBindMode.NotBind);
|
btnAddFloor.Y = Application.GetRealHeight(46);
|
btnAddFloor.UnSelectedImagePath = "Item/Add.png";
|
btnAddFloor.ButtonClickEvent += (sender, e) =>
|
{
|
//创建楼层
|
this.CreatOrEditorFloor(string.Empty, string.Empty);
|
};
|
}
|
|
this.MaxListViewHeight = bodyFrameLayout.Height - frameFloor.Bottom;
|
listView = new VerticalListControl(29);
|
listView.BackgroundColor = UserCenterColor.Current.White;
|
listView.Y = frameFloor.Bottom;
|
listView.Height = MaxListViewHeight;
|
bodyFrameLayout.AddChidren(listView);
|
|
//初始化楼层行
|
this.InitFloorRow();
|
}
|
|
/// <summary>
|
/// 初始化楼层行
|
/// </summary>
|
private void InitFloorRow()
|
{
|
//获取楼层
|
var dicFloor = Common.Room.CurrentRoom.GetFloorSortList();
|
this.listFloorSort.Clear();
|
foreach (string keys in dicFloor.Keys)
|
{
|
listFloorSort.Add(keys);
|
}
|
|
listView.Height = MaxListViewHeight;
|
listView.RemoveAll();
|
if (Common.Config.Instance.Home.FloorDics.Count == 0)
|
{
|
return;
|
}
|
HdlThreadLogic.Current.RunMainInThread(() =>
|
{
|
int count = listFloorSort.Count - 1;
|
for (int i = 0; i < listFloorSort.Count; i++)
|
{
|
string keys = listFloorSort[i];
|
this.AddFloorRow(keys, dicFloor[keys], i != count);
|
}
|
//调整控件高度
|
listView.AdjustRealHeight(Application.GetRealHeight(23));
|
});
|
}
|
|
#endregion
|
|
#region ■ 添加楼层行_________________________
|
|
/// <summary>
|
/// 添加楼层行
|
/// </summary>
|
/// <param name="keys"></param>
|
/// <param name="floorName"></param>
|
/// <param name="addLine"></param>
|
private void AddFloorRow(string keys, string floorName, bool addLine)
|
{
|
var frameRow = new RowLayoutControl(listView.rowSpace / 2);
|
this.listView.AddChidren(frameRow);
|
//图标
|
var btnIcon = frameRow.frameTable.AddLeftIcon(81);
|
btnIcon.UnSelectedImagePath = "Floor/FloorSelected.png";
|
//楼层名称
|
var btnFloor = frameRow.frameTable.AddLeftCaption(floorName, 500);
|
btnFloor.TextSize = 15;
|
//向右箭头
|
frameRow.frameTable.AddRightArrow();
|
if (addLine == true)
|
{
|
frameRow.frameTable.AddBottomLine();
|
}
|
frameRow.frameTable.ButtonClickEvent += (sender, e) =>
|
{
|
var form = new FloorListRoomForm();
|
form.AddForm(keys);
|
};
|
|
if (UserCenterResourse.UserInfo.AuthorityNo == 1 || UserCenterResourse.UserInfo.AuthorityNo == 2)
|
{
|
//更改
|
var btnChanged = new NormalViewControl(Application.GetRealWidth(184), frameRow.Height, false);
|
btnChanged.BackgroundColor = 0xff4a4a4a;
|
btnChanged.TextSize = 12;
|
btnChanged.TextColor = UserCenterColor.Current.White;
|
btnChanged.TextAlignment = TextAlignment.Center;
|
btnChanged.TextID = R.MyInternationalizationString.uChanged1;
|
frameRow.AddRightView(btnChanged);
|
btnChanged.ButtonClickEvent += (sender, e) =>
|
{
|
//创建或者编辑楼层
|
this.CreatOrEditorFloor(keys, floorName);
|
};
|
|
//删除
|
var btnDelete = new NormalViewControl(Application.GetRealWidth(184), frameRow.Height, false);
|
btnDelete.BackgroundColor = 0xfff75858;
|
btnDelete.TextSize = 12;
|
btnDelete.TextColor = UserCenterColor.Current.White;
|
btnDelete.TextAlignment = TextAlignment.Center;
|
btnDelete.TextID = R.MyInternationalizationString.uDelete;
|
frameRow.AddRightView(btnDelete);
|
btnDelete.ButtonClickEvent += (sender, e) =>
|
{
|
//删除楼层
|
this.DeleteFloor(keys);
|
};
|
}
|
}
|
|
#endregion
|
|
#region ■ 创建或编辑楼层_____________________
|
|
/// <summary>
|
/// 创建或者编辑楼层
|
/// </summary>
|
/// <param name="keys"></param>
|
/// <param name="floorName"></param>
|
private void CreatOrEditorFloor(string keys, string floorName)
|
{
|
//生成一个弹窗画面
|
var dialogForm = new DialogInputFrameControl(this, DialogFrameMode.OnlyInput);
|
//创建楼层
|
dialogForm.SetTitleText(Language.StringByID(R.MyInternationalizationString.uCreatFloor));
|
if (keys != string.Empty)
|
{
|
//更改名称
|
dialogForm.SetTitleText(Language.StringByID(R.MyInternationalizationString.uChangedName));
|
}
|
//请输入楼层名称
|
dialogForm.SetTipText(Language.StringByID(R.MyInternationalizationString.uPleaseInputFloorName));
|
dialogForm.Text = floorName;
|
|
//按下确认按钮
|
dialogForm.ComfirmClickEvent += ((textValue) =>
|
{
|
if (this.CheckFloorName(keys, textValue) == false)
|
{
|
//楼层名称检测
|
return;
|
}
|
//画面关闭
|
dialogForm.CloseDialog();
|
if (floorName != textValue)
|
{
|
//编辑或者创建楼层名称
|
if (keys == string.Empty)
|
{
|
keys = Guid.NewGuid().ToString();
|
}
|
Common.Config.Instance.Home.FloorDics[keys] = textValue;
|
Common.Config.Instance.Home.Save();
|
//重新初始化楼层行
|
this.InitFloorRow();
|
}
|
});
|
}
|
|
/// <summary>
|
/// 检测楼层名称
|
/// </summary>
|
/// <param name="keys">主键</param>
|
/// <param name="newFloorName">新的楼层名称</param>
|
/// <returns></returns>
|
private bool CheckFloorName(string keys, string newFloorName)
|
{
|
if (newFloorName == string.Empty)
|
{
|
//请输入住宅名称
|
string msg = Language.StringByID(R.MyInternationalizationString.uPleaseInputFloorName);
|
this.ShowMassage(ShowMsgType.Error, msg);
|
return false;
|
}
|
foreach (string floorKeys in Common.Config.Instance.Home.FloorDics.Keys)
|
{
|
if (floorKeys != keys && newFloorName == Common.Config.Instance.Home.FloorDics[floorKeys])
|
{
|
//楼层名称已经存在
|
string msg = Language.StringByID(R.MyInternationalizationString.uFloorNameIsExist);
|
this.ShowMassage(ShowMsgType.Error, msg);
|
return false;
|
}
|
}
|
return true;
|
}
|
|
#endregion
|
|
#region ■ 删除楼层___________________________
|
|
/// <summary>
|
/// 删除楼层
|
/// </summary>
|
/// <param name="keys"></param>
|
private void DeleteFloor(string keys)
|
{
|
//确认删除楼层及其所有房间?
|
this.ShowMassage(ShowMsgType.Confirm, Language.StringByID(R.MyInternationalizationString.uDeleteFloorMsg), () =>
|
{
|
//移除楼层
|
Common.Config.Instance.Home.FloorDics.Remove(keys);
|
if (Common.Room.CurrentRoom == null)
|
{
|
Common.Room.CurrentRoom = Common.Room.Lists[0];
|
}
|
var listDeleteFile = new List<string>();
|
for (int i = 0; i < Common.Room.Lists.Count; i++)
|
{
|
if (Common.Room.Lists[i].FloorId == keys)
|
{
|
listDeleteFile.Add(Common.Room.Lists[i].FileName);
|
}
|
}
|
//删除房间
|
foreach (string fileName in listDeleteFile)
|
{
|
Common.Room.CurrentRoom.Remove(fileName);
|
}
|
//如果当前选择的房间是删除对象的话
|
if (Common.Room.CurrentRoom.FloorId == keys)
|
{
|
Common.Room.CurrentRoom = Common.Room.Lists[0];
|
}
|
Common.Config.Instance.Home.Save();
|
//重新初始化楼层行
|
listFloorSort.Remove(keys);
|
this.InitFloorRow();
|
});
|
}
|
|
#endregion
|
|
#region ■ 右上角菜单_________________________
|
|
/// <summary>
|
/// 初始化右上角菜单
|
/// </summary>
|
private void InitTopRightMenu()
|
{
|
var btnIcon = new MostRightIconControl(69, 69);
|
btnIcon.UnSelectedImagePath = "Item/More.png";
|
topFrameLayout.AddChidren(btnIcon);
|
btnIcon.InitControl();
|
btnIcon.ButtonClickEvent += ((sender, e) =>
|
{
|
var frame = new TopRightMenuControl(this, 1);
|
//删除住宅
|
frame.AddRowMenu(Language.StringByID(R.MyInternationalizationString.uDeleteResidence), "Item/DeleteIcon2.png", "Item/DeleteIcon2Selected.png", () =>
|
{
|
//确认删除住宅及所有楼层、房间?
|
string msg = Language.StringByID(R.MyInternationalizationString.uDeleteResidenceMsg);
|
this.ShowMassage(ShowMsgType.Confirm, msg, () =>
|
{
|
this.DeleteResidence();
|
});
|
});
|
});
|
}
|
|
/// <summary>
|
/// 删除住宅
|
/// </summary>
|
public async void DeleteResidence()
|
{
|
//开启进度条
|
this.ShowProgressBar();
|
|
var Pra = new DeleteResidencePra();
|
Pra.HomeId = Common.Config.Instance.Home.Id;
|
Pra.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
|
|
bool result = await UserCenterLogic.GetResultStatuByRequestHttps("App/DelHome", true, Pra);
|
//关闭进度条
|
this.CloseProgressBar();
|
if (result == false)
|
{
|
return;
|
}
|
|
HdlThreadLogic.Current.RunThread(async () =>
|
{
|
//因为删除的是当前的住宅,所以需要先切换到别的住宅
|
string deleteId = Common.Config.Instance.Home.Id;
|
string deleteFile = Common.Config.Instance.Home.FileName;
|
int index = 0;
|
for (; index < Common.Config.Instance.HomeFilePathList.Count; index++)
|
{
|
if (Common.Config.Instance.HomeFilePathList[index] == deleteFile)
|
{
|
//当前住宅所处的位置(住宅数肯定大于1,不然不会出现删除按钮)
|
if (index == 0)
|
{
|
//取下一位
|
index++;
|
}
|
else
|
{
|
//取前一位
|
index--;
|
}
|
break;
|
}
|
}
|
|
var myHouse = Common.House.GetHouseByFilePath(Common.Config.Instance.HomeFilePathList[index]);
|
//切换住宅
|
Common.Config.Instance.HomeId = myHouse.Id;
|
Common.Global.CreateHomeDirectory(myHouse.Id);
|
Common.Config.Instance.Save();
|
//刷新个人中心的内存及线程
|
await UserCenterLogic.InitUserCenterMenmoryAndThread();
|
Common.Room.InitAllRoom();
|
|
//删除住宅
|
Common.House.DeleteHouseByHouseId(deleteId);
|
|
Application.RunOnMainThread(() =>
|
{
|
//关闭界面
|
this.CloseForm();
|
});
|
});
|
}
|
|
#endregion
|
|
#region ■ 结构体_____________________________
|
|
/// <summary>
|
/// 删除住宅的启动参数
|
/// </summary>
|
public class DeleteResidencePra : IfacePraCommon
|
{
|
/// <summary>
|
/// RequestVersion
|
/// </summary>
|
public string RequestVersion = Common.CommonPage.RequestVersion;
|
/// <summary>
|
/// LoginAccessToken
|
/// </summary>
|
public string LoginAccessToken = Common.Config.Instance.Token;
|
/// <summary>
|
/// ZigbeeHomeId
|
/// </summary>
|
public string HomeId = "";
|
}
|
|
#endregion
|
}
|
}
|