using System;
|
using System.Collections.Generic;
|
using Shared;
|
using Shared.Common;
|
using Shared.R;
|
namespace Shared.Phone.Device.Logic.DoorLockLogic
|
{
|
public class AddCondition : FrameLayout
|
{
|
public AddCondition()
|
{
|
Tag = "Logic";
|
}
|
Button selectedIcon = new Button();
|
VerticalRefreshLayout middle;
|
public int conditionsIndex = -1;
|
|
public void Show()
|
{
|
|
#region 界面布局代码
|
TopView view = new TopView();
|
this.AddChidren(view.TopRowView());
|
view.toptitleNameBtn.TextID = MyInternationalizationString.userlist;
|
view.clickBtn.MouseDownEventHandler += (sender, e) => { RemoveFromParent(); };
|
middle = new VerticalRefreshLayout
|
{
|
Y = view.topRowLayout.Bottom,
|
Height = Application.GetRealHeight(Method.H - 184),
|
BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor,
|
};
|
this.AddChidren(middle);
|
#endregion
|
middle.BeginHeaderRefreshingAction += () =>
|
{
|
//重新刷新logic列表
|
string macport = Send.CurrentDoorLock.DeviceAddr + "_" + Send.CurrentDoorLock.DeviceEpoint.ToString();
|
for (int i = 0; i < Send.LockList.Count; i++)
|
{
|
if (Send.LockList[i].DoorLockMacPort == macport)
|
{
|
///从列表移除当前门锁全部的旧数据;
|
Send.LockList.Remove(Send.LockList[i]);
|
i--;
|
}
|
}
|
Read();
|
//关闭刷新View;
|
middle.EndHeaderRefreshing();
|
};
|
Read();
|
|
}
|
/// <summary>
|
/// 读取当前门锁的云端数据;
|
/// </summary>
|
public void Read()
|
{
|
bool d = false;
|
string macport = Send.CurrentDoorLock.DeviceAddr + "_" + Send.CurrentDoorLock.DeviceEpoint.ToString();
|
for (int i = 0; i < Send.LockList.Count; i++)
|
{
|
if (Send.LockList[i].DoorLockMacPort == macport)
|
{
|
///已经存在该门锁信息
|
d = true;
|
break;
|
}
|
}
|
CommonPage.Loading.Start();
|
middle.RemoveAll();
|
System.Threading.Tasks.Task.Run(async () =>
|
{
|
try
|
{
|
if (!d)
|
{
|
var allMemberslist = await Send.AllMembers(macport);
|
Send.LockList.AddRange(allMemberslist);
|
}
|
}
|
catch { }
|
finally
|
{
|
Application.RunOnMainThread(() =>
|
{
|
CommonPage.Loading.Hide();
|
UserAllView(macport);
|
});
|
}
|
});
|
}
|
/// <summary>
|
/// 显示所有用户
|
/// </summary>
|
public void UserAllView(string macport)
|
{
|
for (int i = 0; i < Send.LockList.Count; i++)
|
{
|
var user = Send.LockList[i];
|
if (user.DoorLockMacPort != macport)
|
{
|
continue;
|
}
|
|
FunView userView = new FunView();
|
userView.iconBtn.Visible = false;
|
userView.funnameBtn.X = Application.GetRealWidth(81);
|
userView.funnameBtn.Text = user.UserName;
|
userView.funnextBtn.X = Application.GetRealWidth(1080 - 81 - 58);
|
userView.lineBtn.X = Application.GetRealWidth(81);
|
userView.lineBtn.Width = Application.GetRealWidth(1080 - 81 - 58);
|
if (Send.LockList.Count - 1 == i)
|
{
|
userView.funFrameLayout.Height = Application.GetRealHeight(160 + 20);//最后一行增加20高度;
|
userView.lineBtn.BackgroundColor = ZigbeeColor.Current.LogicBlankBackgroundColor;
|
}
|
middle.AddChidren(userView.FunFrameView());
|
userView.clickviewBtn.MouseUpEventHandler += (sender, e) =>
|
{
|
SelectedUserID(user);
|
};
|
|
}
|
}
|
/// <summary>
|
/// 选择某个用户
|
/// </summary>
|
/// <param name="user">触发源列表</param>
|
public void SelectedUserID(Send.MembershipIfon user)
|
{
|
|
int count = user.UserIdMode.Count;
|
#region -------取消 完成
|
var flMain = new FrameLayout { BackgroundColor = ZigbeeColor.Current.LogicTranslucentColor };
|
this.AddChidren(flMain);
|
CompleteView completeView = new CompleteView();
|
flMain.AddChidren(completeView.Show(count));
|
completeView.Btntitle.Text = user.UserName;
|
EventHandler<MouseEventArgs> clickcancel = (sender, e) =>
|
{
|
UserView.HomePage.Instance.ScrollEnabled = true;
|
flMain.RemoveFromParent();
|
};
|
flMain.MouseUpEventHandler += clickcancel;
|
completeView.Btncancel.MouseUpEventHandler += clickcancel;
|
#endregion
|
//元素超出9个就用上下滑动控件;
|
VerticalScrolViewLayout vV = null;
|
if (count > 9)
|
{
|
///元素超出9个;
|
count = 6;
|
//元素超出9个就用上下滑动控件;
|
vV = new VerticalScrolViewLayout
|
{
|
Y = Application.GetRealHeight(140 + 20),
|
Height = Application.GetRealHeight(160 * count),
|
};
|
//元素超出9个就用上下滑动控件;
|
completeView.Show(count).AddChidren(vV);
|
//清除之前的控件;
|
vV.RemoveAll();
|
}
|
///定两个变量记录之前的只值;
|
string userId = "";
|
string openMode = "";
|
string accountName = "";
|
string SelectedDeviceStatuscondition = "";
|
for (int i = 0; i < user.UserIdMode.Count; i++)
|
{
|
var userifon = user.UserIdMode[i];
|
|
mFunView lockView = new mFunView();
|
if (user.UserIdMode.Count > 9)
|
{
|
|
vV.AddChidren(lockView.Show());
|
}
|
else
|
{
|
lockView.frameLayout.Y = Application.GetRealHeight(140 + 20 + 160 * i);
|
completeView.Show(count).AddChidren(lockView.Show());
|
}
|
lockView.titleBtn.Text = userifon.ModeName;
|
|
if ((user.UserIdMode.Count - 1) == i)
|
{
|
lockView.lineBtn.BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor;
|
}
|
lockView.clickviewBtn.MouseUpEventHandler += (sender, e) =>
|
{
|
SelectedDeviceStatuscondition = "DoorLock";
|
selectedIcon.Visible = false;
|
selectedIcon = lockView.selectedIconBtn;
|
lockView.selectedIconBtn.Visible = true;
|
userId = userifon.UserId;
|
openMode = userifon.OpenMode.ToString();
|
accountName = completeView.Btntitle.Text + lockView.titleBtn.Text;
|
};
|
|
|
if (string.IsNullOrEmpty(lockView.titleBtn.Text))
|
{
|
string strname = "";
|
switch (userifon.OpenMode)
|
{
|
case 0:
|
{
|
strname = Language.StringByID(MyInternationalizationString.lockpassword);
|
}
|
break;
|
case 3:
|
{
|
strname = Language.StringByID(MyInternationalizationString.ic);
|
}
|
break;
|
case 15:
|
{
|
strname = Language.StringByID(MyInternationalizationString.fingerprint);
|
}
|
break;
|
}
|
lockView.titleBtn.Text = userifon.UserId + strname;
|
}
|
|
if (conditionsIndex != -1)
|
{
|
|
///显示之前的状态
|
if (conditionsIndex != -1)
|
{
|
var s = Common.Logic.CurrentLogic.Conditions[conditionsIndex];
|
if (s["AttriButeId"] == userifon.OpenMode.ToString() && s["AttriButeData2"] == userifon.UserId)
|
{
|
selectedIcon.Visible = false;
|
selectedIcon = lockView.selectedIconBtn;
|
lockView.selectedIconBtn.Visible = true;
|
}
|
|
}
|
|
}
|
|
}
|
completeView.Btncomplete.MouseUpEventHandler += (sender, e) =>
|
{
|
var lockConditionsInfo = new Dictionary<string, string>();
|
lockConditionsInfo.Add("Type", "1");
|
lockConditionsInfo.Add("IsValid", "1");
|
lockConditionsInfo.Add("MacAddr", Send.CurrentDoorLock.DeviceAddr);
|
lockConditionsInfo.Add("Epoint", Send.CurrentDoorLock.DeviceEpoint.ToString());
|
lockConditionsInfo.Add("Cluster_ID", "64529");
|
lockConditionsInfo.Add("AttriButeId", openMode);
|
lockConditionsInfo.Add("AttriButeData2", userId);
|
lockConditionsInfo.Add("AttriButeData1", "2");
|
lockConditionsInfo.Add("Range", "0");
|
var accounts = new Dictionary<string, string>();
|
accounts.Add("Type", "1");
|
accounts.Add("Account", Config.Instance.Guid);
|
accounts.Add("AccountName",accountName);
|
///mac+端口是为识别是那个门锁;
|
accounts.Add("Option4", Send.CurrentDoorLock.DeviceAddr);
|
accounts.Add("Option2", Send.CurrentDoorLock.DeviceEpoint.ToString());
|
accounts.Add("UserId", userId);
|
if (SelectedDeviceStatuscondition != "")
|
{
|
if (conditionsIndex == -1)
|
{
|
bool addCondition = false;
|
bool addAccount = false;
|
for (int i = 0; i < Common.Logic.CurrentLogic.Conditions.Count; i++)
|
{
|
if (Common.Logic.CurrentLogic.Conditions[i]["Type"] == "1")
|
{
|
if ((Common.Logic.CurrentLogic.Conditions[i]["MacAddr"] == Send.CurrentDoorLock.DeviceAddr) && (Common.Logic.CurrentLogic.Conditions[i]["Epoint"] == Send.CurrentDoorLock.DeviceEpoint.ToString()))
|
{
|
if (Common.Logic.CurrentLogic.Conditions[i]["AttriButeId"] == lockConditionsInfo["AttriButeId"] && Common.Logic.CurrentLogic.Conditions[i]["AttriButeData2"] == lockConditionsInfo["AttriButeData2"])
|
{
|
addCondition = true;
|
break;
|
}
|
}
|
}
|
}
|
|
for (int i = 0; i < Common.Logic.CurrentLogic.Accounts.Count; i++)
|
{
|
if (Common.Logic.CurrentLogic.Accounts[i]["Type"] == "1")
|
{
|
if (Common.Logic.CurrentLogic.Accounts[i]["UserId"] == userId)
|
{
|
addAccount = true;
|
break;
|
}
|
}
|
}
|
if (!addCondition)
|
{//没有存在数据新加
|
Common.Logic.CurrentLogic.Conditions.Add(lockConditionsInfo);
|
}
|
if (!addAccount)
|
{//没有存在数据新加
|
Common.Logic.CurrentLogic.Accounts.Add(accounts);
|
}
|
}
|
else
|
{
|
///找出之前的旧数据移除掉,再重新添加新数据;
|
string accountuserId = Common.Logic.CurrentLogic.Conditions[conditionsIndex]["AttriButeData2"];
|
Common.Logic.CurrentLogic.Conditions.RemoveAt(conditionsIndex);
|
Common.Logic.CurrentLogic.Conditions.Insert(conditionsIndex, lockConditionsInfo);
|
for (int i = 0; i < Common.Logic.CurrentLogic.Accounts.Count; i++)
|
{
|
if (Common.Logic.CurrentLogic.Accounts[i]["Type"] == "1")
|
{
|
///找出之前的旧数据移除掉,再重新添加新数据;
|
if (Common.Logic.CurrentLogic.Accounts[i]["UserId"] == accountuserId)
|
{
|
Common.Logic.CurrentLogic.Accounts.RemoveAt(i);
|
Common.Logic.CurrentLogic.Accounts.Insert(i, accounts);
|
break;
|
}
|
}
|
}
|
|
}
|
|
}
|
else
|
{
|
if (conditionsIndex == -1)
|
{
|
var alert = new ShowMsgControl(ShowMsgType.Normal,
|
Language.StringByID(MyInternationalizationString.usertip),
|
Language.StringByID(MyInternationalizationString.confrim));
|
alert.Show();
|
return;
|
}
|
}
|
var lockLogicCommunalPage = new LockLogicCommunalPage();
|
UserView.HomePage.Instance.AddChidren(lockLogicCommunalPage);
|
UserView.HomePage.Instance.PageIndex += 1;
|
lockLogicCommunalPage.Show(() => { });
|
};
|
}
|
|
}
|
}
|