using System;
using System.Collections.Generic;
using Shared.Common;
using Shared.Phone.UserCenter.Device;
using ZigBee.Device;
namespace Shared.Phone.UserCenter.DoorLock
{
///
/// 门锁管理
///
public class UserManagement : DoorLockCommonLayout
{
/// 构造函数
///
///
public UserManagement(ZigBee.Device.DoorLock doorLock)
{
this.doorLock = doorLock;
localAllAccountListTemp = doorLock.localAllAccountList;
localDoorLockUserListTemp = doorLock.localDoorLockUserList;
}
#region ◆ 变量申明__________________________
ZigBee.Device.DoorLock doorLock;
VerticalRefreshLayout midVerticalScrolViewLayout;
public List localAllAccountListTemp = new List { };
public Dictionary localDoorLockUserListTemp = new Dictionary();
#endregion
///
/// 数据刷新
///
void ReadAccountDoorLockInfoList()
{
System.Threading.Tasks.Task.Run(async () =>
{
try
{
var localAccountListTemp = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.LocalAccountList();
if (localAccountListTemp != null)
{
doorLock.localAllAccountList.Clear();
doorLock.localAllAccountList = localAccountListTemp;
localAllAccountListTemp = doorLock.localAllAccountList;
//初始化权限信息
foreach (var sub in localAccountListTemp)
{
if (doorLock.IsFreezeAccount.ContainsKey(sub.SubAccountDistributedMark) == false)
{
doorLock.IsFreezeAccount.Add(sub.SubAccountDistributedMark, false);
}
if (doorLock.HasRemoteUnlockAccess.ContainsKey(sub.SubAccountDistributedMark) == false)
{
doorLock.HasRemoteUnlockAccess.Add(sub.SubAccountDistributedMark, false);
}
if (doorLock.IsFailedToGetDoorLockInfo.ContainsKey(sub.SubAccountDistributedMark) == false)
{
doorLock.IsFailedToGetDoorLockInfo.Add(sub.SubAccountDistributedMark, false);
}
}
//获取本地门锁列表
if (localDoorLockUserListTemp.Count == 0)
{
var list = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockAllAcountUserlist(doorLock);
localDoorLockUserListTemp = doorLock.localDoorLockUserList;
}
doorLock.ReSave();
}
else
{
Application.RunOnMainThread(() =>
{
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.Down, CloseTime = 1 }.Show(Common.CommonPage.Instance);
});
}
}
catch { }
finally
{
Application.RunOnMainThread(() =>
{
MidFrameLayoutContent();
CommonPage.Loading.Hide();
midVerticalScrolViewLayout.EndHeaderRefreshing();
});
}
});
}
///
/// 显示界面
///
public void Show()
{
this.TopFrameLayout(this, Language.StringByID(R.MyInternationalizationString.UserManagement));
EventHandler eHandlerBack = (sender, e) =>
{
RemoveFromParent();
};
this.btnBack.MouseUpEventHandler += eHandlerBack;
this.btnBackFrameLayout.MouseUpEventHandler += eHandlerBack;
this.MidFrameLayout(this);
var btnAddFrameLayout = new FrameLayout
{
X = Application.GetRealWidth(829 - 116),
Height = Application.GetRealHeight(72),
Width = Application.GetRealWidth(190),
};
this.titleFrameLayout.AddChidren(btnAddFrameLayout);
var btnUndistributeIcon = new Button
{
Height = Application.GetRealHeight(69),
Width = Application.GetRealWidth(69),
UnSelectedImagePath = "DoorLock/UndistributeIcon.png",
};
btnAddFrameLayout.AddChidren(btnUndistributeIcon);
var btnUndistributeText = new Button
{
Height = Application.GetRealHeight(72),
Width = Application.GetRealWidth(150),
TextID = R.MyInternationalizationString.Undistributed,
TextColor = Shared.Common.ZigbeeColor.Current.XMTopTitleText,
X = btnUndistributeIcon.Right,
IsBold = true,
TextSize = 13,
TextAlignment = TextAlignment.CenterLeft,
};
btnAddFrameLayout.AddChidren(btnUndistributeText);
if (UserCenterResourse.UserInfo.AuthorityNo != 1)
{
btnAddFrameLayout.Width = 0;
btnUndistributeIcon.Width = 0;
btnUndistributeText.Width = 0;
}
EventHandler eHandler = (sender, e) =>
{
var undistributeDoorlockUserPage = new Shared.Phone.UserCenter.DoorLock.UndistributeDoorlockUserPage(doorLock, doorLock.localAllAccountList);
Shared.Phone.UserView.HomePage.Instance.AddChidren(undistributeDoorlockUserPage);
Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
undistributeDoorlockUserPage.Show();
};
btnAddFrameLayout.MouseDownEventHandler += eHandler;
btnUndistributeText.MouseDownEventHandler += eHandler;
btnUndistributeIcon.MouseDownEventHandler += eHandler;
midVerticalScrolViewLayout = new VerticalRefreshLayout() { };
this.midFrameLayout.AddChidren(midVerticalScrolViewLayout);
if (localAllAccountListTemp.Count == 0)
{
CommonPage.Loading.Start("Loading...");
ReadAccountDoorLockInfoList();
}
else
{
MidFrameLayoutContent();
}
midVerticalScrolViewLayout.BeginHeaderRefreshingAction += () =>
{
midVerticalScrolViewLayout.BeginHeaderRefreshing();
ReadAccountDoorLockInfoList();
};
}
///
/// 中部布局显示
///
async void MidFrameLayoutContent()
{
midVerticalScrolViewLayout.RemoveAll();
for (int i = 0; i < doorLock.localAllAccountList.Count; i++)
{
var currentAccount = doorLock.localAllAccountList[i];
var RowView = new FrameLayout()
{
Height = Application.GetRealHeight(127 + 23),
BackgroundColor = Shared.Common.ZigbeeColor.Current.XMWhite,
};
midVerticalScrolViewLayout.AddChidren(RowView);
var btnText = new Button()
{
X = Application.GetRealWidth(58),
Width = Application.GetRealWidth(300),
TextAlignment = TextAlignment.CenterLeft,
TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
Gravity = Gravity.CenterVertical,
TextSize = 14,
};
RowView.AddChidren(btnText);
var btnRightFrameLayout = new FrameLayout()
{
Height = Application.GetRealHeight(110),
Width = Application.GetRealWidth(110),
X = Application.CurrentWidth - Application.GetRealWidth(150),
Y = Application.GetRealHeight(25),
};
RowView.AddChidren(btnRightFrameLayout);
var btnRight = new Button()
{
Height = Application.GetRealHeight(58),
Width = Application.GetRealWidth(58),
UnSelectedImagePath = "DoorLock/RightIcon.png",
Gravity = Gravity.Center,
};
btnRightFrameLayout.AddChidren(btnRight);
var line2 = new Button()
{
Y = RowView.Height - 1,
X = Application.GetRealWidth(58),
Width = Application.GetRealWidth(965),
Height = 1,
BackgroundColor = Shared.Common.ZigbeeColor.Current.XMRowLine,
};
RowView.AddChidren(line2);
int currentIndex = i;
if (currentIndex == doorLock.localAllAccountList.Count - 1)
{
line2.Visible = false;
}
if (!string.IsNullOrEmpty(currentAccount.UserName))
{
btnText.Text = currentAccount.UserName;
}
else
{
btnText.Text = currentAccount.Account;
}
EventHandler eHandler = (sender, e) =>
{
if (currentIndex == 0)
{
var masterManagementPage = new Shared.Phone.UserCenter.DoorLock.MasterManagementPage(doorLock, currentAccount);
Shared.Phone.UserView.HomePage.Instance.AddChidren(masterManagementPage);
Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
masterManagementPage.Show();
}
else
{
var memberFrozenPage = new Shared.Phone.UserCenter.DoorLock.MemberFrozenPage(doorLock, currentAccount);
Shared.Phone.UserView.HomePage.Instance.AddChidren(memberFrozenPage);
Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
memberFrozenPage.Show();
}
};
btnRight.MouseUpEventHandler += eHandler;
RowView.MouseUpEventHandler += eHandler;
btnText.MouseUpEventHandler += eHandler;
}
}
}
}