using Shared.Common;
using System;
using System.Collections.Generic;
namespace Shared.Phone.UserCenter.Residence
{
///
/// 住宅管理的画面★
///
public class ResidenceManagementForm : UserCenterCommonForm
{
#region ■ 变量声明___________________________
///
/// 列表控件
///
private VerticalScrolViewLayout listView = null;
///
/// 住宅数据
///
private Dictionary dicResidenceData = null;
#endregion
#region ■ 初始化_____________________________
///
/// 画面显示(底层会固定调用此方法,借以完成画面创建)
///
public void ShowForm()
{
//设置标题信息
base.SetTitleText(Language.StringByID(R.MyInternationalizationString.ResidenceManagement));
if (UserCenterResourse.UserInfo.AuthorityNo == 1)
{
//右上添加按钮
var btnTopIcon = new TopLayoutMostRightView();
btnTopIcon.UnSelectedImagePath = "Item/Add.png";
btnTopIcon.SelectedImagePath = "Item/AddSelected.png";
topFrameLayout.AddChidren(btnTopIcon);
btnTopIcon.MouseUpEventHandler += (sender, e) =>
{
var info = new Common.ResponseEntity.ResidenceObj();
this.ShowEditorForm(info);
};
}
//初始化中部控件
this.InitMiddleFrame();
}
///
/// 初始化中部控件
///
private void InitMiddleFrame()
{
listView = new VerticalScrolViewLayout();
listView.Height = bodyFrameLayout.Height;
bodyFrameLayout.AddChidren(listView);
new System.Threading.Thread(() =>
{
//设置住宅信息
this.SetResidenceInfo();
})
{ IsBackground = true }.Start();
}
///
/// 设置住宅信息
///
private async void SetResidenceInfo()
{
//开启进度条
this.ShowProgressBar();
Application.RunOnMainThread(() =>
{
this.listView.RemoveAll();
});
//获取住宅信息
var Pra = new GetResidenceInfoPra();
string resultData = await UserCenterLogic.GetResponseDataByRequestHttps("App/GetHomePager", Pra);
if (resultData == null)
{
//关闭进度条
this.CloseProgressBar(ShowReLoadMode.YES);
return;
}
this.dicResidenceData = new Dictionary();
var pageData = Newtonsoft.Json.JsonConvert.DeserializeObject(resultData);
foreach (Common.ResponseEntity.ResidenceObj info in pageData.PageData)
{
if (info.IsOthreShare == false)
{
//收集该账号所拥有的自己的住宅的数据
this.dicResidenceData[info.Id] = info;
}
Application.RunOnMainThread(() =>
{
this.AddRowLayout(info);
});
}
//关闭进度条
this.CloseProgressBar();
}
#endregion
#region ■ 添加住宅的行_______________________
///
/// 添加住宅的行
///
///
private void AddRowLayout(Common.ResponseEntity.ResidenceObj info)
{
var rowLayout = new RowLayout();
rowLayout.Height = ControlCommonResourse.ListViewRowHeight;
this.listView.AddChidren(rowLayout);
//图标
var btnIcon = new RowLeftIconView();
btnIcon.ChangedControlInPointMode();
rowLayout.AddChidren(btnIcon);
//住宅
var txtResidence = new RowCenterView(true);
txtResidence.Text = info.Name;
rowLayout.AddChidren(txtResidence);
txtResidence.X -= ControlCommonResourse.PointXXLeft;
//不是分享过来的住宅
if (info.IsOthreShare == false)
{
//编辑
var btnEditor = new RowEditorButton();
rowLayout.AddRightView(btnEditor);
btnEditor.MouseUpEventHandler += (sender, e) =>
{
this.ShowEditorForm(info);
};
//不能删除当前正在操作的住宅
if (Common.Config.Instance.HomeId != info.Id)
{
//删除
var btnDelete = new RowDeleteButton();
rowLayout.AddRightView(btnDelete);
btnDelete.MouseUpEventHandler += (sender, e) =>
{
//检测能否删除住宅
if (this.CheckIsCanDeleteResidence(info) == false)
{
return;
}
//确认要删除吗?
string msg = Language.StringByID(R.MyInternationalizationString.uShowDoDeleteMsg);
this.ShowConfirmMsg(msg, "DeleteResidence", info);
};
}
}
//成员的管理员权限,只能编辑,不能删除
if (info.AccountType == 1)
{
//编辑
var btnEditor = new RowEditorButton();
rowLayout.AddRightView(btnEditor);
btnEditor.MouseUpEventHandler += (sender, e) =>
{
this.ShowEditorForm(info);
};
}
}
#endregion
#region ■ 显示编辑画面_______________________
///
/// 显示编辑画面
///
///
private void ShowEditorForm(Common.ResponseEntity.ResidenceObj info)
{
//生成一个弹窗画面
var dialogForm = new DialogInputFrameControl(this, DialogFrameMode.OnlyInput);
if (string.IsNullOrEmpty(info.Name) == true)
{
//添加住宅
dialogForm.SetTitleText(Language.StringByID(R.MyInternationalizationString.uAddResidence));
}
else
{
//编辑住宅
dialogForm.SetTitleText(Language.StringByID(R.MyInternationalizationString.uEditorResidence));
}
//请输入住宅名称
dialogForm.SetTipText(Language.StringByID(R.MyInternationalizationString.uPleaseInputResidenceName));
if (info.Name != null)
{
dialogForm.InputText = info.Name;
}
//按下确认按钮
dialogForm.ComfirmClickEvent += (()=>
{
string resiName = dialogForm.InputText;
if (resiName == string.Empty)
{
//请输入住宅名称
string msg = Language.StringByID(R.MyInternationalizationString.uPleaseInputResidenceName);
this.ShowErrorMsg(msg);
return;
}
//画面关闭
dialogForm.CloseDialog();
if (info.Name != resiName)
{
//保存住宅
this.SaveResidence(resiName, info, string.IsNullOrEmpty(info.Name) == false);
}
});
}
#endregion
#region ■ 保存住宅___________________________
///
/// 保存住宅
///
///
///
///
///
private async void SaveResidence(string ResidenceName, Common.ResponseEntity.ResidenceObj info, bool isEditor)
{
//检测能否保存住宅
if (this.CheckIsCanSaveResidence(info.Id, ResidenceName, isEditor) == false)
{
return;
}
//开启进度条
this.ShowProgressBar();
if (isEditor == true)
{
var Pra = new EditorResidencePra();
Pra.HomeId = info.Id;
Pra.Name = ResidenceName;
//编辑住宅
bool flage = await UserCenterLogic.GetResultStatuByRequestHttps("App/EditHome", Pra);
if (flage == false)
{
//关闭进度条
this.CloseProgressBar();
return;
}
//刷新内存的住宅名
House.EditorHouseByHouseId(info.Id, ResidenceName);
//重新刷新列表
this.SetResidenceInfo();
}
else
{
var Pra = new AddResidencePra();
Pra.Name = ResidenceName;
//添加住宅
string resultData = await UserCenterLogic.GetResponseDataByRequestHttps("App/AddHome", Pra);
if (resultData == null)
{
//关闭进度条
this.CloseProgressBar();
return;
}
var newInfo = Newtonsoft.Json.JsonConvert.DeserializeObject>(resultData);
House.AddHouse(newInfo[0].Id, ResidenceName, 0);
//重新刷新列表
this.SetResidenceInfo();
}
}
#endregion
#region ■ 删除住宅___________________________
///
/// 删除住宅
///
///
public async void DeleteResidence(Common.ResponseEntity.ResidenceObj info)
{
//开启进度条
this.ShowProgressBar();
var Pra = new DeleteResidencePra();
Pra.HomeId = info.Id;
bool result = await UserCenterLogic.GetResultStatuByRequestHttps("App/DelHome", Pra);
if (result == false)
{
//关闭进度条
this.CloseProgressBar();
return;
}
House.DeleteHouseByHouseId(info.Id);
this.SetResidenceInfo();
}
#endregion
#region ■ 一般方法___________________________
///
/// 检测能否删除住宅
///
///
///
private bool CheckIsCanDeleteResidence(Common.ResponseEntity.ResidenceObj info)
{
if (this.dicResidenceData.Count == 1)
{
//如果此账号下只剩下唯一一个自己的住宅,当删除这个住宅时,提示不能删除
//因为最少要有一个住宅
if (this.dicResidenceData.ContainsKey(info.Id) == true)
{
//不能删除最后唯一的住宅
string msg = Language.StringByID(R.MyInternationalizationString.uDoNotDeleteLastResidence);
this.ShowErrorMsg(msg);
return false;
}
}
return true;
}
///
/// 检测能否保存住宅
///
/// 住宅ID
/// 住宅名
/// isEditor
///
private bool CheckIsCanSaveResidence(string residenceId, string residenceName, bool isEditor)
{
//住宅名字重复检测
foreach (string strId in this.dicResidenceData.Keys)
{
if (residenceId != strId && residenceName == this.dicResidenceData[strId].Name)
{
//住宅名字已经存在
int msgId = isEditor == true ? R.MyInternationalizationString.EditZigbeeHome_Exist : R.MyInternationalizationString.AddZigbeeHome_Exist;
string msg = Language.StringByID(msgId);
this.ShowErrorMsg(msg);
return false;
}
}
return true;
}
#endregion
#region ■ 结构体_____________________________
///
/// 访问住宅信息接口的启动参数(查询专用)
///
public class GetResidenceInfoPra:IfacePraCommon
{
///
/// RequestVersion
///
public string RequestVersion = Common.CommonPage.RequestVersion;
///
/// ReqDto
///
public TokenInfo ReqDto = new TokenInfo();
}
///
/// 访问住宅信息接口的启动参数(查询专用)
///
public class TokenInfo
{
///
/// LoginAccessToken
///
public string LoginAccessToken = Common.Config.Instance.Token;
///
/// PageSetting
///
public PageSettingInfo PageSetting = new PageSettingInfo()
{
Page = 1,
PageSize = 500
};
}
///
/// 添加住宅的启动参数
///
public class AddResidencePra:IfacePraCommon
{
///
/// RequestVersion
///
public string RequestVersion = Common.CommonPage.RequestVersion;
///
/// LoginAccessToken
///
public string LoginAccessToken = Common.Config.Instance.Token;
///
/// Name
///
public string Name = string.Empty;
}
///
/// 新住宅的信息
///
public class NewResidenceInfo
{
///
/// ZigbeeHomeGuid
///
public string Id = string.Empty;
}
///
/// 编辑住宅的启动参数
///
public class EditorResidencePra : IfacePraCommon
{
///
/// RequestVersion
///
public string RequestVersion = Common.CommonPage.RequestVersion;
///
/// LoginAccessToken
///
public string LoginAccessToken = Common.Config.Instance.Token;
///
/// ZigbeeHomeId
///
public string HomeId = "";
///
/// Name
///
public string Name = string.Empty;
}
///
/// 删除住宅的启动参数
///
public class DeleteResidencePra : IfacePraCommon
{
///
/// RequestVersion
///
public string RequestVersion = Common.CommonPage.RequestVersion;
///
/// LoginAccessToken
///
public string LoginAccessToken = Common.Config.Instance.Token;
///
/// ZigbeeHomeId
///
public string HomeId = "";
}
#endregion
}
}