using System;
using System.Collections.Generic;
using Shared.Common;
using Shared.Phone.Device.Category;
using Shared.Phone.Device.CommonForm;
using Shared.Phone.UserView;
using ZigBee.Device;
namespace Shared.Phone.Device.Room
{
public class UnallocatedRoom:FrameLayout
{
#region ◆ 变量____________________________
///
/// bodyFrameLayout
///
private FrameLayout bodyFrameLayout;
///
/// top
///
private TopFrameLayout top;
private Button selectAllBtn;
///
/// 中部背景bodyView
///
public FrameLayout functionSceneBodyView;
///
/// 当前功能类型按钮
///
private FunctionButton tempFunctionTypeBtn;
///
/// 功能类型按钮
///
private FunctionButton functionTypeIMG;
///
/// 功能类型
///
private HorizontalScrolViewLayout functionTypeScrowView;
///
/// 设备类型RowLayout
///
private FrameLayout typeRowLayout;
///
/// 相同的设备列表
///
public VerticalScrolViewLayout deviceListScrolView;
///
/// dList
///
private List devList;
///
/// sceneList
///
private List sceneList;
///
/// 相同类型的设备列表
///
private Dictionary> typeDeviceDic;
///
/// 设备类型的图id
///
private Dictionary typeIdDic;
///
/// 当前选择的分支 0:场景 1:功能
///
private int NowSelectIndex = 0;
#endregion
///
/// UnallocatedRoom
///
public UnallocatedRoom()
{
BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor;
}
///
/// 未分配房间管理
///
public void Show()
{
RemoveAll();
InitData();
AddTop();
AddBodyView();
}
///
/// InitData
///
private void InitData()
{
typeDeviceDic = new Dictionary> { };
typeIdDic = new Dictionary { };
RefreshData();
}
///
/// RefreshData
///
private void RefreshData()
{
devList = UserCenter.HdlRoomLogic.Current.GetUnalloctedDevice();
sceneList = UserCenter.HdlSceneLogic.Current.GetUnalloctedScenes();
typeDeviceDic.Clear();
typeIdDic.Clear();
if (devList == null)
{
return;
}
foreach (var device in devList)
{
var info = Common.LocalDevice.Current.GetDeviceBelongEnumInfo(device);
if (typeDeviceDic.ContainsKey(info.BeloneTextId) == false)
{
var sameDevList = new List { };
sameDevList.Add(device);
typeDeviceDic[info.BeloneTextId] = sameDevList;
}
else
{
typeDeviceDic[info.BeloneTextId].Add(device);
}
typeIdDic[info.BeloneTextId] = info.ConcreteType;
}
}
#region Add____________________________________
///
/// AddTop
///
public void AddTop()
{
top = new TopFrameLayout();
AddChidren(top);
top.InitTopview();
top.SetTopTitle(R.MyInternationalizationString.Unallocated);
top.backButton.MouseUpEventHandler += (sender, e) =>
{
RemoveFromParent();
};
}
///
/// AddBodyView
///
public void AddBodyView()
{
bodyFrameLayout = new FrameLayout()
{
Y = Application.GetRealHeight(184),
Height = Application.GetRealHeight(1737),
BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor,
};
AddChidren(bodyFrameLayout);
//场景功能切换控件
var btnSceneFunctionSwitch = new UserCenter.SceneFunctionSwitchControl();
btnSceneFunctionSwitch.Y = Application.GetRealHeight(43);
bodyFrameLayout.AddChidren(btnSceneFunctionSwitch);
btnSceneFunctionSwitch.SelectTabEvent += (index) =>
{
this.NowSelectIndex = index;
this.RefreshBodyView();
};
//功能和场景bodyView
functionSceneBodyView = new FrameLayout()
{
Y = Application.GetRealHeight(127),
Height = Application.GetRealHeight(1607),
BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor
};
bodyFrameLayout.AddChidren(functionSceneBodyView);
//开始初始化场景功能切换控件
var listTitle = new List();
listTitle.Add(Language.StringByID(R.MyInternationalizationString.uScence));
listTitle.Add(Language.StringByID(R.MyInternationalizationString.uFunction));
btnSceneFunctionSwitch.InitControl(listTitle);
}
#endregion
#region ◆ 刷新____________________________
///
/// 刷新bodyView
///
public void RefreshBodyView()
{
functionSceneBodyView.RemoveAll();
if (this.NowSelectIndex == 1)
{
ShowFunction();
}
else if (this.NowSelectIndex == 0)
{
ShowScene();
}
}
#endregion
#region ◆ 功能____________________________
///
/// 功能
///
public void ShowFunction()
{
if (typeIdDic.Count == 0)
{
ShowNoFunctionTip();
}
else
{
var functionTypeView1 = new FrameLayout
{
X = Application.GetRealWidth(CommonFormResouce.X_Left),
Y = Application.GetRealHeight(58),
Height = Application.GetRealHeight(160),
Width = Application.GetRealWidth(1028),
BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
};
functionSceneBodyView.AddChidren(functionTypeView1);
functionTypeView1.SetCornerWithSameRadius(Application.GetRealHeight(17), HDLUtils.RectCornerTopLeft);
var functionTypeView2 = new FrameLayout
{
X = Application.GetRealWidth(CommonFormResouce.X_Left),
Y = Application.GetRealHeight(58+150),
Height = Application.GetRealHeight(279-150),
Width = Application.GetRealWidth(1028),
BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
};
functionSceneBodyView.AddChidren(functionTypeView2);
functionTypeView2.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerBottomLeft);
functionTypeScrowView = new HorizontalScrolViewLayout
{
X = Application.GetRealWidth(CommonFormResouce.X_Left),
Y=Application.GetRealHeight(58),
Height = Application.GetRealHeight(279),
Width = Application.GetRealWidth(1028)
};
functionSceneBodyView.AddChidren(functionTypeScrowView);
deviceListScrolView = new VerticalScrolViewLayout
{
X = Application.GetRealWidth(CommonFormResouce.X_Left),
Y = Application.GetRealHeight(372),
Width = Application.GetRealWidth(1028),
Height = Application.GetRealHeight(1034),
BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor,
};
functionSceneBodyView.AddChidren(deviceListScrolView);
deviceListScrolView.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerTopLeft);
tempFunctionTypeBtn = new FunctionButton();
tempFunctionTypeBtn.Init("", "");
foreach (var deviceType in typeIdDic)
{
typeRowLayout = new FrameLayout()
{
Width = Application.GetRealWidth(220),
};
functionTypeScrowView.AddChidren(typeRowLayout);
functionTypeIMG = new FunctionButton()
{
Tag = deviceType.Key
};
string imgPath=string.Empty;
string imgSeletedPath=string.Empty;
Common.LocalDevice.Current.GetDeviceObjectIcon(deviceType.Value, ref imgPath ,ref imgSeletedPath);
functionTypeIMG.Init(imgPath,imgSeletedPath);
functionTypeIMG.SetTitle(deviceType.Key);
typeRowLayout.AddChidren(functionTypeIMG);
functionTypeIMG.ClickBtn.MouseUpEventHandler += ShowSameTypeFunction;
if (functionTypeScrowView.ChildrenCount == 1)
{
ShowSameTypeFunction(functionTypeIMG.ImageBtn, null);
}
}
}
}
///
/// 显示相同类型的功能
///
/// typeSender.
/// The ${ParameterType} instance containing the event data.
private void ShowSameTypeFunction(object typeSender, MouseEventArgs mouseEventArgs)
{
tempFunctionTypeBtn.IsSelected = false;
tempFunctionTypeBtn = (typeSender as Button).Parent as FunctionButton;
((typeSender as Button).Parent as FunctionButton).IsSelected = true;
deviceListScrolView.RemoveAll();
var sameTypeList = new List { };
var selectedList = new List { };
sameTypeList = typeDeviceDic[int.Parse((typeSender as Button).Tag.ToString())];
foreach (var deviceUI in sameTypeList)
{
var deviceTypeRowLayout = new FrameLayout()
{
Height = Application.GetRealHeight(127 + 35),
Tag = deviceUI
};
deviceListScrolView.AddChidren(deviceTypeRowLayout);
var deviceRow = new SelectFunctionView(0, 35);
deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath);
deviceRow.SetTitle(Common.LocalDevice.Current.GetDeviceEpointName(deviceUI));
deviceTypeRowLayout.AddChidren(deviceRow);
EventHandler eventHandler = (sender, e) =>
{
deviceRow.IsSelected = !deviceRow.IsSelected;
if (deviceRow.IsSelected)
{
if (!selectedList.Contains(deviceUI))
{
selectedList.Add(deviceUI);
}
}
else
{
if (selectedList.Contains(deviceUI))
{
selectedList.Remove(deviceUI);
}
}
};
deviceRow.ClickBtn.MouseUpEventHandler += eventHandler;
}
selectAllBtn?.RemoveFromParent();
selectAllBtn = new Button()
{
X = Application.GetRealWidth(1080 - 150 - 80),
Width = Application.GetRealWidth(150),
Height = Application.GetRealHeight(80),
Gravity = Gravity.CenterVertical,
TextColor = ZigbeeColor.Current.GXCTextBlackColor,
SelectedTextColor = ZigbeeColor.Current.GXCTextBlackColor,
TextSize = CommonFormResouce.TopTitle_TextSize,
TextAlignment = TextAlignment.CenterRight,
TextID = R.MyInternationalizationString.AllSelect
};
top.topView.AddChidren(selectAllBtn);
selectAllBtn.MouseUpEventHandler += (sender, e) =>
{
try
{
(sender as Button).IsSelected = !(sender as Button).IsSelected;
for (int i = 0; i < deviceListScrolView.ChildrenCount; i++)
{
var frame = deviceListScrolView.GetChildren(i) as FrameLayout;
(frame.GetChildren(0) as SelectFunctionView).IsSelected = (sender as Button).IsSelected;
}
if ((sender as Button).IsSelected)
{
(sender as Button).TextID = R.MyInternationalizationString.Cancel;
selectedList.Clear();
selectedList.AddRange(sameTypeList);
}
else
{
(sender as Button).TextID = R.MyInternationalizationString.AllSelect;
selectedList.Clear();
}
}
catch
{
}
};
var addBackground = new Button
{
Y = Application.GetRealHeight(1405),
Width = Application.GetMinRealAverage(1080),
Height = Application.GetMinRealAverage(202),
UnSelectedImagePath = "Room/AddBackground.png"
};
functionSceneBodyView.AddChidren(addBackground);
var add = new Button
{
Y = Application.GetRealHeight(1428),
Width = Application.GetRealWidth(1034),
Height = Application.GetRealHeight(156),
BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor,
TextColor = ZigbeeColor.Current.GXCTextSelectedColor4,
Radius = (uint)Application.GetRealHeight(35),
TextID = R.MyInternationalizationString.AddTo,
Gravity = Gravity.CenterHorizontal,
TextSize = 17
};
functionSceneBodyView.AddChidren(add);
add.MouseUpEventHandler += (sender, e) =>
{
var selectZone = new SelectZone();
selectZone.title = Language.StringByID(R.MyInternationalizationString.AddTo);
selectZone.Init();
selectZone.ZoneAction += (r) =>
{
foreach (var d in selectedList)
{
UserCenter.HdlRoomLogic.Current.AddDevice(r, d, true);
deviceListScrolView.RemoveViewByTag(d);
}
if (sameTypeList.Count == selectedList.Count)
{
RefreshData();
RefreshBodyView();
}
else
{
RefreshData();
sameTypeList = typeDeviceDic[int.Parse((typeSender as Button).Tag.ToString())];
}
};
};
}
///
/// 提示没有功能
///
private void ShowNoFunctionTip()
{
return;
var noFunction = new Button()
{
Y = Application.GetRealHeight(320),
Width = Application.GetMinRealAverage(757),
Height = Application.GetMinRealAverage(435),
UnSelectedImagePath = "Item/NoFunction.png",
Gravity = Gravity.CenterHorizontal
};
functionSceneBodyView.AddChidren(noFunction);
var noFunctionTip = new Button()
{
Y = noFunction.Bottom + Application.GetRealHeight(32),
Height = Application.GetRealHeight(200),
Width = Application.GetRealWidth(700),
Gravity = Gravity.CenterHorizontal,
Text= Language.StringByID(R.MyInternationalizationString.NoFunction_Tip).Replace("{\\r\\n}", "\r\n"),
TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor,
TextAlignment = TextAlignment.Center,
IsMoreLines = true
};
functionSceneBodyView.AddChidren(noFunctionTip);
}
#endregion
#region ◆ 场景____________________________
///
/// 选择场景--所有房间的所有场景
///
public void ShowScene()
{
List selectedList = new List();
if (sceneList == null || sceneList.Count == 0)
{
ShowNoSceneTip();
}
else
{
var sceneScrolView = new VerticalScrolViewLayout
{
Y = Application.GetRealHeight(81),
Height=Application.GetRealHeight(1405-22)
};
functionSceneBodyView.AddChidren(sceneScrolView);
foreach (var sceneUI in sceneList)
{
var sceneFL = new FrameLayout()
{
Width = Application.GetRealWidth(CommonFormResouce.AppRealWidth),
Height = Application.GetRealHeight(397 + 46),
Gravity = Gravity.CenterHorizontal,
BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor,
Tag = sceneUI,
Radius = (uint)Application.GetRealHeight(17)
};
sceneScrolView.AddChidren(sceneFL);
var sceneImg = new ImageView()
{
X = Application.GetRealWidth(179),
Width = Application.GetRealWidth(844),
Height = Application.GetRealHeight(397),
ImagePath = sceneUI.IconPath,
Radius = (uint)Application.GetRealHeight(17)
};
sceneFL.AddChidren(sceneImg);
//阴影
var btnShadow = new UserCenter.PicViewControl(sceneImg.Width + Application.GetRealWidth(14 * 2), sceneImg.Height + Application.GetRealHeight(43), false);
btnShadow.X = sceneImg.X - Application.GetRealWidth(14);
btnShadow.UnSelectedImagePath = "Scene/SceneShadow.png";
sceneFL.AddChidren(btnShadow);
var selectedBtn = new Button
{
X = Application.GetRealWidth(919),
Y = Application.GetRealHeight(45),
Width = Application.GetMinRealAverage(60),
Height = Application.GetMinRealAverage(60),
UnSelectedImagePath = "Room/ItemUnSelected.png",
SelectedImagePath = "Room/ItemSelected.png",
};
sceneFL.AddChidren(selectedBtn);
var leftFL = new FrameLayout
{
X = Application.GetRealWidth(CommonFormResouce.X_Left),
Y = Application.GetRealHeight(58),
Width = Application.GetRealWidth(251),
Height = Application.GetRealHeight(282),
BackgroundColor = 0xd6333333,
Radius = (uint)Application.GetRealHeight(17)
};
sceneFL.AddChidren(leftFL);
var collectionBtn = new Button
{
X = Application.GetRealWidth(23),
Y = Application.GetRealHeight(23),
Width = Application.GetMinRealAverage(65),
Height = Application.GetMinRealAverage(65),
UnSelectedImagePath = "Item/Collection.png",
SelectedImagePath = "Item/CollectionSelected.png"
};
leftFL.AddChidren(collectionBtn);
var sceneNameBtn = new Button()
{
Width = Application.GetRealWidth(176),
Height = Application.GetRealHeight(200),
TextColor = ZigbeeColor.Current.GXCTextWhiteColor,
Text = sceneUI.Name,
Gravity = Gravity.Center,
IsMoreLines = true
};
leftFL.AddChidren(sceneNameBtn);
EventHandler eventHandler = (sender, e) =>
{
selectedBtn.IsSelected = !selectedBtn.IsSelected;
if (selectedBtn.IsSelected)
{
if (!selectedList.Contains(sceneUI))
{
selectedList.Add(sceneUI);
}
}
else
{
if (selectedList.Contains(sceneUI))
{
selectedList.Remove(sceneUI);
}
}
};
selectedBtn.MouseUpEventHandler += eventHandler;
sceneImg.MouseUpEventHandler += eventHandler;
}
selectAllBtn?.RemoveFromParent();
selectAllBtn = new Button()
{
X = Application.GetRealWidth(1080 - 150 - 80),
Width = Application.GetRealWidth(150),
Height = Application.GetRealHeight(80),
Gravity = Gravity.CenterVertical,
TextColor = ZigbeeColor.Current.GXCTextBlackColor,
SelectedTextColor = ZigbeeColor.Current.GXCTextBlackColor,
TextSize = CommonFormResouce.TopTitle_TextSize,
TextAlignment = TextAlignment.CenterRight,
TextID = R.MyInternationalizationString.AllSelect
};
top.topView.AddChidren(selectAllBtn);
selectAllBtn.MouseUpEventHandler += (sender, e) =>
{
try
{
(sender as Button).IsSelected = !(sender as Button).IsSelected;
for (int i = 0; i < sceneScrolView.ChildrenCount; i++)
{
var frame = sceneScrolView.GetChildren(i) as FrameLayout;
(frame.GetChildren(1) as Button).IsSelected = (sender as Button).IsSelected;
}
if ((sender as Button).IsSelected)
{
(sender as Button).TextID = R.MyInternationalizationString.Cancel;
selectedList.AddRange(sceneList);
}
else
{
(sender as Button).TextID = R.MyInternationalizationString.AllSelect;
selectedList.Clear();
}
}
catch
{
}
};
var addBackground = new Button
{
Y = Application.GetRealHeight(1405),
Width = Application.GetMinRealAverage(1080),
Height = Application.GetMinRealAverage(202),
UnSelectedImagePath = "Room/AddBackground.png"
};
functionSceneBodyView.AddChidren(addBackground);
var add = new Button
{
Y = Application.GetRealHeight(1428),
Width = Application.GetRealWidth(1034),
Height = Application.GetRealHeight(156),
BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor,
TextColor = ZigbeeColor.Current.GXCTextSelectedColor4,
Radius = (uint)Application.GetRealHeight(35),
TextID = R.MyInternationalizationString.AddTo,
Gravity = Gravity.CenterHorizontal,
TextSize=17,
};
functionSceneBodyView.AddChidren(add);
add.MouseUpEventHandler += (sender, e) =>
{
var selectZone = new SelectZone();
selectZone.title = Language.StringByID(R.MyInternationalizationString.AddTo);
selectZone.Init();
selectZone.ZoneAction += (r) =>
{
foreach (var s in selectedList)
{
UserCenter.HdlSceneLogic.Current.AddScene(r, s);
sceneScrolView.RemoveViewByTag(s);
}
RefreshData();
};
};
}
}
///
/// 显示没有场景
///
private void ShowNoSceneTip()
{
return;
var noFunction = new Button()
{
Y = Application.GetRealHeight(320),
Width = Application.GetMinRealAverage(757),
Height = Application.GetMinRealAverage(435),
UnSelectedImagePath = "Item/NoFunction.png",
Gravity = Gravity.CenterHorizontal
};
functionSceneBodyView.AddChidren(noFunction);
var noScenceTip = new Button()
{
Y = noFunction.Bottom + Application.GetRealHeight(32),
Height = Application.GetRealHeight(200),
Width = Application.GetRealWidth(700),
Gravity = Gravity.CenterHorizontal,
Text = Language.StringByID(R.MyInternationalizationString.NoScene_Tip).Replace("{\\r\\n}", "\r\n"),
TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor,
TextAlignment = TextAlignment.Center,
IsMoreLines = true
};
functionSceneBodyView.AddChidren(noScenceTip);
}
#endregion
}
}