using System;
using System.Collections.Generic;
using System.Text;
namespace Shared.Phone.UserCenter.Residence
{
///
/// 住宅管理界面
///
public class ResidenceManagementForm : EditorCommonForm
{
#region ■ 变量声明___________________________
///
/// 列表控件
///
private VerticalListControl listView = null;
///
/// 列表控件最大高度
///
private int MaxListViewHeight = 0;
///
/// 楼层顺序
///
private List listFloorSort = new List();
#endregion
#region ■ 初始化_____________________________
///
/// 画面显示(底层会固定调用此方法,借以完成画面创建)
///
/// 能否删除当前住宅
public void ShowForm(bool i_CanDeleteResidence)
{
//设置头部信息
base.SetTitleText(Common.Config.Instance.Home.Name);
//判断能否删除住宅
if (i_CanDeleteResidence == true)
{
//初始化右上角菜单
this.InitTopRightMenu();
}
//初始化中部信息
this.InitMiddleFrame();
}
///
/// 初始化中部信息
///
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();
}
///
/// 初始化楼层行
///
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 ■ 添加楼层行_________________________
///
/// 添加楼层行
///
///
///
///
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 ■ 创建或编辑楼层_____________________
///
/// 创建或者编辑楼层
///
///
///
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();
}
});
}
///
/// 检测楼层名称
///
/// 主键
/// 新的楼层名称
///
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 ■ 删除楼层___________________________
///
/// 删除楼层
///
///
private void DeleteFloor(string keys)
{
//确认删除楼层及其所有房间?
this.ShowMassage(ShowMsgType.Confirm, Language.StringByID(R.MyInternationalizationString.uDeleteFloorMsg), () =>
{
//如果是分享的房间,不能编辑和修改
return;
}
//编辑
var btnEditor = frameRow.AddEditorControl();
btnEditor.ButtonClickEvent += (sender, e) =>
{
var form = new EditorRoomInforForm();
form.AddForm(room);
form.FinishEditorEvent += (roomName) =>
{
btnName.Text = roomName;
};
};
//删除
var btnDelete = frameRow.AddDeleteControl();
btnDelete.ButtonClickEvent += (sender, e) =>
{
//确认删除房间?
this.ShowMassage(ShowMsgType.Confirm, Language.StringByID(R.MyInternationalizationString.uDeleteRoomMsg), () =>
{
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 ■ 右上角菜单_________________________
///
/// 初始化右上角菜单
///
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();
});
});
});
}
///
/// 删除住宅
///
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 ■ 结构体_____________________________
///
/// 删除住宅的启动参数
///
public class DeleteResidencePra : IfacePraCommon
{
///
/// RequestVersion
///
public string RequestVersion = Common.CommonPage.RequestVersion;
///
/// LoginAccessToken
///
public string LoginAccessToken = Common.Config.Instance.Token;
///
/// ZigbeeHomeId
///
public string HomeId = "";
}
#endregion
}
}