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);
}
///
/// 显示所有用户
///
///
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 userclick = (sender, e) =>
{
SelectedUserID(user.UserIdMode, usernameBtn.Text);
};
usernameBtn.MouseUpEventHandler += userclick;
btntimeback.MouseUpEventHandler += userclick;
userFramelayout.MouseUpEventHandler += userclick;
userRow.MouseUpEventHandler += userclick;
}
}
///
/// 选择某个用户
///
/// 触发源列表
/// 用户名字
void SelectedUserID(List 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 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();
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(() => { });
};
}
}
}