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();
}
///
/// 读取当前门锁的云端数据;
///
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);
});
}
});
}
///
/// 显示所有用户
///
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);
};
}
}
///
/// 选择某个用户
///
/// 触发源列表
public void SelectedUserID(Send.MembershipIfon user)
{
//元素超出9个就用上下滑动控件;
VerticalScrolViewLayout vV = null;
int count = user.UserIdMode.Count;
if (count > 9)
{
///元素超出9个;
count = 6;
//元素超出9个就用上下滑动控件;
vV = new VerticalScrolViewLayout
{
Y = Application.GetRealHeight(140 + 20),
Height = Application.GetRealHeight(160 * count),
};
//清除之前的控件;
vV.RemoveAll();
}
#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 clickcancel = (sender, e) =>
{
UserView.HomePage.Instance.ScrollEnabled = true;
flMain.RemoveFromParent();
};
flMain.MouseUpEventHandler += clickcancel;
completeView.Btncancel.MouseUpEventHandler += clickcancel;
#endregion
///定两个变量记录之前的只值;
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)
{
//元素超出9个就用上下滑动控件;
completeView.Show(count).AddChidren(vV);
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();
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();
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 UserCenter.ShowMsgControl(UserCenter.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(() => { });
};
}
}
}