using Shared.Common;
|
using System;
|
using System.Collections.Generic;
|
|
namespace Shared.Phone.UserCenter.Residence
|
{
|
/// <summary>
|
/// 住宅管理的画面★
|
/// </summary>
|
public class ResidenceManagementForm : UserCenterCommonForm
|
{
|
#region ■ 变量声明___________________________
|
|
/// <summary>
|
/// 列表控件
|
/// </summary>
|
private VerticalScrolViewLayout listView = null;
|
/// <summary>
|
/// 住宅数据
|
/// </summary>
|
private Dictionary<string, Common.ResponseEntity.ResidenceObj> dicResidenceData = null;
|
|
#endregion
|
|
#region ■ 初始化_____________________________
|
|
/// <summary>
|
/// 画面显示(底层会固定调用此方法,借以完成画面创建)
|
/// </summary>
|
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();
|
}
|
|
/// <summary>
|
/// 初始化中部控件
|
/// </summary>
|
private void InitMiddleFrame()
|
{
|
listView = new VerticalScrolViewLayout();
|
listView.Height = bodyFrameLayout.Height;
|
bodyFrameLayout.AddChidren(listView);
|
|
new System.Threading.Thread(() =>
|
{
|
//设置住宅信息
|
this.SetResidenceInfo();
|
})
|
{ IsBackground = true }.Start();
|
}
|
|
/// <summary>
|
/// 设置住宅信息
|
/// </summary>
|
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<string, Common.ResponseEntity.ResidenceObj>();
|
|
var pageData = Newtonsoft.Json.JsonConvert.DeserializeObject<Common.ResponseEntity.ResidenceRes>(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 ■ 添加住宅的行_______________________
|
|
/// <summary>
|
/// 添加住宅的行
|
/// </summary>
|
/// <param name="info"></param>
|
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 ■ 显示编辑画面_______________________
|
|
/// <summary>
|
/// 显示编辑画面
|
/// </summary>
|
/// <param name="info"></param>
|
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 ■ 保存住宅___________________________
|
|
/// <summary>
|
/// 保存住宅
|
/// </summary>
|
/// <param name="ResidenceName"></param>
|
/// <param name="info"></param>
|
/// <param name="isEditor"></param>
|
/// <returns></returns>
|
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<List<NewResidenceInfo>>(resultData);
|
|
House.AddHouse(newInfo[0].Id, ResidenceName, 0);
|
//重新刷新列表
|
this.SetResidenceInfo();
|
}
|
}
|
|
#endregion
|
|
#region ■ 删除住宅___________________________
|
|
/// <summary>
|
/// 删除住宅
|
/// </summary>
|
/// <param name="info"></param>
|
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 ■ 一般方法___________________________
|
|
/// <summary>
|
/// 检测能否删除住宅
|
/// </summary>
|
/// <param name="info"></param>
|
/// <returns></returns>
|
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;
|
}
|
|
/// <summary>
|
/// 检测能否保存住宅
|
/// </summary>
|
/// <param name="residenceId">住宅ID</param>
|
/// <param name="residenceName">住宅名</param>
|
/// <param name="isEditor">isEditor</param>
|
/// <returns></returns>
|
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 ■ 结构体_____________________________
|
|
/// <summary>
|
/// 访问住宅信息接口的启动参数(查询专用)
|
/// </summary>
|
public class GetResidenceInfoPra:IfacePraCommon
|
{
|
/// <summary>
|
/// RequestVersion
|
/// </summary>
|
public string RequestVersion = Common.CommonPage.RequestVersion;
|
/// <summary>
|
/// ReqDto
|
/// </summary>
|
public TokenInfo ReqDto = new TokenInfo();
|
}
|
|
/// <summary>
|
/// 访问住宅信息接口的启动参数(查询专用)
|
/// </summary>
|
public class TokenInfo
|
{
|
/// <summary>
|
/// LoginAccessToken
|
/// </summary>
|
public string LoginAccessToken = Common.Config.Instance.Token;
|
/// <summary>
|
/// PageSetting
|
/// </summary>
|
public PageSettingInfo PageSetting = new PageSettingInfo()
|
{
|
Page = 1,
|
PageSize = 500
|
};
|
}
|
|
/// <summary>
|
/// 添加住宅的启动参数
|
/// </summary>
|
public class AddResidencePra:IfacePraCommon
|
{
|
/// <summary>
|
/// RequestVersion
|
/// </summary>
|
public string RequestVersion = Common.CommonPage.RequestVersion;
|
/// <summary>
|
/// LoginAccessToken
|
/// </summary>
|
public string LoginAccessToken = Common.Config.Instance.Token;
|
/// <summary>
|
/// Name
|
/// </summary>
|
public string Name = string.Empty;
|
}
|
|
/// <summary>
|
/// 新住宅的信息
|
/// </summary>
|
public class NewResidenceInfo
|
{
|
/// <summary>
|
/// ZigbeeHomeGuid
|
/// </summary>
|
public string Id = string.Empty;
|
}
|
|
/// <summary>
|
/// 编辑住宅的启动参数
|
/// </summary>
|
public class EditorResidencePra : 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 = "";
|
/// <summary>
|
/// Name
|
/// </summary>
|
public string Name = string.Empty;
|
}
|
|
/// <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
|
}
|
}
|