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 = "LockLogic";
|
}
|
Button selectedIcon = new Button();
|
|
public int conditionsIndex = -1;
|
public async void Show()
|
{
|
#region 最上面的布局代码
|
var topRowLayout = new RowLayout
|
{
|
BackgroundColor = ZigbeeColor.Current.LogicTopBackgroundColor,
|
Height = Application.GetRealHeight(184),
|
LineColor = ZigbeeColor.Current.LogicRowLayoutTopLineColor,
|
};
|
this.AddChidren(topRowLayout);
|
|
var titleName = new Button
|
{
|
TextSize = 16,
|
TextColor = ZigbeeColor.Current.LogicTextBlackColor,
|
TextAlignment = TextAlignment.CenterLeft,
|
X = Application.GetRealWidth(176),
|
Width = Application.GetRealWidth(600),
|
Height = Application.GetRealHeight(69),
|
Y = Application.GetRealHeight(92),
|
TextID = MyInternationalizationString.userlist,
|
//Text = "选择用户",
|
};
|
topRowLayout.AddChidren(titleName);
|
|
var clickBtn = new Button
|
{
|
Width = Application.GetRealWidth(81 + 51),
|
Height = Application.GetRealHeight(58 + 40),
|
Y = Application.GetRealHeight(98 - 40),
|
};
|
topRowLayout.AddChidren(clickBtn);
|
clickBtn.MouseDownEventHandler += (sender, e) =>
|
{
|
RemoveFromParent();
|
};
|
|
var back = new Button
|
{
|
Width = Application.GetRealWidth(30),
|
Height = Application.GetRealHeight(51),
|
X = Application.GetRealWidth(81),
|
Y = Application.GetRealHeight(98),
|
//Gravity = Gravity.CenterVertical;
|
UnSelectedImagePath = "ZigeeLogic/back.png",
|
};
|
topRowLayout.AddChidren(back);
|
back.MouseDownEventHandler += (sender, e) =>
|
{
|
RemoveFromParent();
|
};
|
|
#endregion
|
|
var middle = new VerticalScrolViewLayout
|
{
|
Y = topRowLayout.Bottom,
|
Height = Application.GetRealHeight(1920 - 184),
|
BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor,
|
};
|
this.AddChidren(middle);
|
|
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;
|
}
|
|
}
|
|
if (!d)
|
{
|
|
var allMemberslist = await Send.AllMembers(Send.CurrentDoorLock.DeviceAddr);
|
Send.LockList.AddRange(allMemberslist);
|
}
|
UserAllView(middle, macport);
|
|
}
|
/// <summary>
|
/// 显示所有用户
|
/// </summary>
|
/// <param name="middle"></param>
|
void UserAllView(VerticalScrolViewLayout middle,string macport)
|
{
|
|
for (int i = 0; i < Send.LockList.Count; i++)
|
{
|
var user = Send.LockList[i];
|
if (user.DoorLockMacPort != macport)
|
{
|
continue;
|
}
|
var userFramelayout = new FrameLayout
|
{
|
Height = Application.GetRealHeight(160),
|
BackgroundColor = ZigbeeColor.Current.LogicBlankBackgroundColor,
|
};
|
middle.AddChidren(userFramelayout);
|
|
var userRow = new RowLayout
|
{
|
Y = Application.GetRealHeight(30),
|
Width = Application.GetRealWidth(1080 - 58 - 58),
|
Height = Application.GetRealHeight(130),
|
X = Application.GetRealWidth(58),
|
LineColor = ZigbeeColor.Current.LogicRowLayoutLineColor,
|
};
|
userFramelayout.AddChidren(userRow);
|
|
var usernameBtn = new Button
|
{
|
Text = user.UserName,
|
TextAlignment = TextAlignment.CenterLeft,
|
TextColor = ZigbeeColor.Current.LogicTextBlackColor,
|
Width = Application.GetRealWidth(600),
|
Height = Application.GetRealHeight(130),
|
Tag = Send.LockList[i],
|
};
|
userRow.AddChidren(usernameBtn);
|
|
var btntimeback = new Button
|
{
|
Width = Application.GetRealWidth(58),
|
Height = Application.GetRealHeight(58),
|
UnSelectedImagePath = "ZigeeLogic/next.png",
|
X = userRow.Width - Application.GetRealWidth(58),
|
Gravity = Gravity.CenterVertical,
|
};
|
userRow.AddChidren(btntimeback);
|
|
|
EventHandler<MouseEventArgs> userclick = (sender, e) =>
|
{
|
SelectedUserID(user.UserIdMode, usernameBtn.Text);
|
};
|
usernameBtn.MouseUpEventHandler += userclick;
|
btntimeback.MouseUpEventHandler += userclick;
|
userFramelayout.MouseUpEventHandler += userclick;
|
userRow.MouseUpEventHandler += userclick;
|
|
|
}
|
}
|
/// <summary>
|
/// 选择某个用户
|
/// </summary>
|
/// <param name="membershipIfon">触发源列表</param>
|
/// <param name="userName">用户名字</param>
|
void SelectedUserID(List<Send.UnlockingMode> membershipIfon, string userName) {
|
|
var flMain = new FrameLayout { BackgroundColor = ZigbeeColor.Current.LogicViewBackgroundColor };
|
this.AddChidren(flMain);
|
|
flMain.MouseUpEventHandler += (sender1, e1) =>
|
{
|
flMain.RemoveFromParent();
|
};
|
|
var lockcolorfra = new FrameLayout
|
{
|
Width = Application.GetRealWidth(1080),
|
Height = Application.GetRealHeight(100),
|
Y = Application.GetRealHeight(1920 - 100),
|
BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
|
};
|
flMain.AddChidren(lockcolorfra);
|
|
var lockcolorfra1 = new FrameLayout
|
{
|
|
Width = Application.GetRealWidth(1080),
|
Height = Application.GetRealHeight(530),
|
Y = Application.GetRealHeight(1920 - 530),
|
BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
|
Radius = (uint)Application.GetRealHeight(60),
|
};
|
flMain.AddChidren(lockcolorfra1);
|
|
#region -------取消 完成
|
var lockRow = new RowLayout
|
{
|
Height = Application.GetRealHeight(140),
|
LineColor = ZigbeeColor.Current.LogicRowLayoutLineColor,
|
};
|
lockcolorfra1.AddChidren(lockRow);
|
var Btncancel = new Button
|
{
|
TextID = MyInternationalizationString.cancel,
|
TextColor = ZigbeeColor.Current.LogicBtnCancelColor,
|
Height = Application.GetRealHeight(140),
|
Width = Application.GetRealWidth(200),
|
X = Application.GetRealWidth(80),
|
TextAlignment = TextAlignment.CenterLeft,
|
};
|
lockRow.AddChidren(Btncancel);
|
Btncancel.MouseUpEventHandler += (sender16, e16) =>
|
{
|
flMain.RemoveFromParent();
|
UserView.HomePage.Instance.ScrollEnabled = true;
|
};
|
|
var Btntitle = new Button
|
{
|
TextID = MyInternationalizationString.security,
|
TextColor = ZigbeeColor.Current.LogicBtnTypeColor,
|
Height = Application.GetRealHeight(140),
|
Width = Application.GetRealWidth(320),
|
TextAlignment = TextAlignment.Center,
|
X = Btncancel.Right + Application.GetRealWidth(100),
|
TextSize = 16,
|
Text =userName,
|
};
|
lockRow.AddChidren(Btntitle);
|
var Btncomplete = new Button
|
{
|
TextID = MyInternationalizationString.complete,
|
TextColor = ZigbeeColor.Current.LogicBtnCompleteColor,
|
Height = Application.GetRealHeight(140),
|
Width = Application.GetRealWidth(200),
|
TextAlignment = TextAlignment.CenterRight,
|
X = Btntitle.Right + Application.GetRealWidth(100),
|
|
};
|
lockRow.AddChidren(Btncomplete);
|
#endregion
|
|
string SelectedLockStatus = "";
|
lockcolorfra1.Y = Application.GetRealHeight(1920 - 140 - (160 * membershipIfon.Count) - 20 - 50);
|
lockcolorfra1.Height = Application.GetRealHeight(140 + (160 * membershipIfon.Count) + 20 + 50);
|
///定义两个变量记录选中状态;
|
string attriButeId ="", attriButeData2 ="";
|
for (int j = 0; j < membershipIfon.Count; j++)
|
{
|
var userIdmode = membershipIfon[j];
|
var doorlockfra = new FrameLayout
|
{
|
Height = Application.GetRealHeight(160),
|
Y = lockRow.Bottom + Application.GetRealHeight(20 + 160 * j),
|
};
|
lockcolorfra1.AddChidren(doorlockfra);
|
|
var doorlockRow = new RowLayout
|
{
|
Y = Application.GetRealHeight(30),
|
Width = Application.GetRealWidth(920),
|
Height = Application.GetRealHeight(130),
|
X = Application.GetRealWidth(80),
|
LineColor = ZigbeeColor.Current.LogicRowLayoutLineColor,
|
};
|
doorlockfra.AddChidren(doorlockRow);
|
|
var doorlockBtn = new Button
|
{
|
Width = Application.GetRealWidth(600),
|
TextAlignment = TextAlignment.CenterLeft,
|
TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor,
|
Text = userIdmode.ModeName,
|
};
|
doorlockRow.AddChidren(doorlockBtn);
|
//(0按键/3卡/15指纹)
|
//switch (userIdmode.OpenMode.ToString())
|
//{
|
// case "0":
|
// {
|
// doorlockBtn.Text = Language.StringByID(MyInternationalizationString.lockpassword);
|
// }
|
// break;
|
// case "3":
|
// {
|
// doorlockBtn.Text = Language.StringByID(MyInternationalizationString.ic);
|
// }
|
// break;
|
// case "15":
|
// {
|
// doorlockBtn.Text = Language.StringByID(MyInternationalizationString.fingerprint);
|
// }
|
// break;
|
//}
|
|
|
var doorlockSelected = new Button
|
{
|
X = Application.GetRealWidth(860),
|
Width = Application.GetMinRealAverage(60),
|
Height = Application.GetMinRealAverage(60),
|
UnSelectedImagePath = "ZigeeLogic/selected.png",
|
Visible = false,
|
Gravity = Gravity.CenterVertical,
|
|
};
|
doorlockRow.AddChidren(doorlockSelected);
|
if ((membershipIfon.Count - 1) == j)
|
{
|
doorlockRow.LineColor = ZigbeeColor.Current.LogicBackgroundColor;
|
}
|
EventHandler<MouseEventArgs> doorlockclick = (sender2, e2) =>
|
{
|
SelectedLockStatus = "DoorLock";
|
selectedIcon.Visible = false;
|
selectedIcon = doorlockSelected;
|
doorlockSelected.Visible = true;
|
//doorlockBtn.TextColor = ZigbeeColor.Current.LogicBtnSelectedColor;
|
attriButeId = userIdmode.OpenMode.ToString();
|
attriButeData2 = userIdmode.UserId;
|
};
|
doorlockRow.MouseUpEventHandler += doorlockclick;
|
doorlockBtn.MouseUpEventHandler += doorlockclick;
|
doorlockSelected.MouseUpEventHandler += doorlockclick;
|
doorlockfra.MouseUpEventHandler += doorlockclick;
|
///显示之前的状态
|
if (conditionsIndex != -1)
|
{
|
var s = Common.Logic.CurrentLogic.Conditions[conditionsIndex];
|
if (s["AttriButeId"] == userIdmode.OpenMode.ToString() && s["AttriButeData2"] == userIdmode.UserId)
|
{
|
selectedIcon.Visible = false;
|
selectedIcon = doorlockSelected;
|
doorlockSelected.Visible = true;
|
}
|
}
|
}
|
|
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", attriButeId);
|
lockConditionsInfo.Add("AttriButeData2", attriButeData2);
|
lockConditionsInfo.Add("AttriButeData1", "2");
|
lockConditionsInfo.Add("Range", "0");
|
if (SelectedLockStatus != "")
|
{
|
if (conditionsIndex == -1)
|
{
|
bool add = 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"])
|
{
|
add = true;
|
break;
|
}
|
}
|
}
|
}
|
|
if (!add)
|
{
|
Common.Logic.CurrentLogic.Conditions.Add(lockConditionsInfo);
|
}
|
|
}
|
else
|
{
|
Common.Logic.CurrentLogic.Conditions.RemoveAt(conditionsIndex);
|
Common.Logic.CurrentLogic.Conditions.Insert(conditionsIndex, lockConditionsInfo);
|
}
|
|
}
|
else
|
{
|
if (conditionsIndex == -1)
|
{
|
var alert = new Alert(Language.StringByID(MyInternationalizationString.Prompt),
|
Language.StringByID(MyInternationalizationString.selectdevicestatuscondition),
|
Language.StringByID(MyInternationalizationString.complete));
|
alert.Show();
|
return;
|
}
|
}
|
var lockLogicCommunalPage = new LockLogicCommunalPage();
|
UserView.HomePage.Instance.AddChidren(lockLogicCommunalPage);
|
UserView.HomePage.Instance.PageIndex += 1;
|
lockLogicCommunalPage.Show(() => { });
|
};
|
}
|
|
}
|
}
|