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;
private Button addBtn;
private FrameLayout itemView;
///
/// editStatus
///
private bool SelectAll;
///
/// low_High
///
private const int low_High = 127;
///
/// 功能
///
private ButtonLineForm functionBtn;
///
/// 场景
///
private ButtonLineForm sceneBtn;
///
/// 中部背景bodyView
///
public FrameLayout functionSceneBodyView;
///
/// 当前功能类型按钮
///
private FunctionButton tempFunctionTypeBtn;
///
/// 功能类型按钮
///
private FunctionButton functionTypeIMG;
///
/// 功能类型
///
private HorizontalScrolViewLayout functionTypeScrowView;
///
/// 设备类型RowLayout
///
private RowLayout typeRowLayout;
///
/// 相同的设备列表
///
public VerticalScrolViewLayout deviceListScrolView;
#endregion
public UnallocatedRoom()
{
BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor;
}
///
/// 未分配房间管理
///
public void Show()
{
AddTop();
AddBodyView();
}
#region Add____________________________________
///
/// AddTop
///
public void AddTop()
{
var top = new TopFrameLayout();
AddChidren(top);
top.InitTopview();
top.SetTopTitle(R.MyInternationalizationString.Unallocated);
top.backButton.MouseUpEventHandler += (sender, e) =>
{
RemoveFromParent();
};
addBtn = new Button()
{
X = Application.GetRealWidth(800),
Width = Application.GetRealWidth(150),
Height = Application.GetRealHeight(80),
Gravity = Gravity.CenterVertical,
TextColor = ZigbeeColor.Current.GXCTextBlackColor,
TextSize = CommonFormResouce.TopTitle_TextSize,
TextAlignment = TextAlignment.CenterRight,
TextID = R.MyInternationalizationString.AllSelect
};
top.topView.AddChidren(addBtn);
addBtn.MouseUpEventHandler += Edit_MouseUpEventHandler;
}
///
/// AddBodyView
///
public void AddBodyView()
{
bodyFrameLayout = new FrameLayout()
{
Y = Application.GetRealHeight(184),
Height = Application.GetRealHeight(1737),
BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor,
};
AddChidren(bodyFrameLayout);
var functionSceneBG = new FrameLayout()
{
Height = Application.GetRealHeight(low_High),
BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor
};
bodyFrameLayout.AddChidren(functionSceneBG);
//功能
functionBtn = new ButtonLineForm(CommonFormResouce.X_Left, 34, 150, 68);
functionSceneBG.AddChidren(functionBtn);
functionBtn.Init();
functionBtn.SetTitle(R.MyInternationalizationString.Function);
functionBtn.IsSelected = true;
//场景
sceneBtn = new ButtonLineForm(CommonFormResouce.X_Left + 150 + 20, 34, 150, 68);
functionSceneBG.AddChidren(sceneBtn);
sceneBtn.Init();
sceneBtn.SetTitle(R.MyInternationalizationString.Scence);
//选择功能分栏
functionBtn.NameBtn.MouseUpEventHandler += FunctionBtn_MouseUpEventHandler;
//选择场景分栏
sceneBtn.NameBtn.MouseUpEventHandler += SceneBtn_MouseUpEventHandler;
//功能和场景bodyView
functionSceneBodyView = new FrameLayout()
{
Y= Application.GetRealHeight(187-58),
Height = Application.GetRealHeight(1607),
BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor
};
bodyFrameLayout.AddChidren(functionSceneBodyView);
RefreshBodyView();
}
///
/// 选择功能分栏
///
/// Sender.
/// The ${ParameterType} instance containing the event data.
private void FunctionBtn_MouseUpEventHandler(object sender, MouseEventArgs mouseEventArgs)
{
functionBtn.IsSelected = true;
sceneBtn.IsSelected = false;
RefreshBodyView();
}
///
/// 选择场景分栏
///
/// Sender.
/// The ${ParameterType} instance containing the event data.
private void SceneBtn_MouseUpEventHandler(object sender, MouseEventArgs mouseEventArgs)
{
functionBtn.IsSelected = false;
sceneBtn.IsSelected = true;
RefreshBodyView();
}
///
/// 编辑
///
///
///
private void Edit_MouseUpEventHandler(object sender, MouseEventArgs mouseEventArgs)
{
SelectAll = !SelectAll;
if (SelectAll)
{
addBtn.TextID = R.MyInternationalizationString.Cancel;
}
else
{
addBtn.TextID = R.MyInternationalizationString.AllSelect;
}
if (functionBtn.IsSelected)
{
functionSceneBodyView.RemoveAll();
ShowFunction(SelectAll);
}
else if (sceneBtn.IsSelected)
{
functionSceneBodyView.RemoveAll();
ShowScene(SelectAll);
}
}
#endregion
#region ◆ 刷新____________________________
///
/// 刷新bodyView
///
public void RefreshBodyView()
{
functionSceneBodyView.RemoveAll();
SelectAll = false;
if (functionBtn.IsSelected)
{
ShowFunction(SelectAll);
}
else if (sceneBtn.IsSelected)
{
ShowScene(SelectAll);
}
}
#endregion
#region ◆ 功能____________________________
///
/// 功能
///
public void ShowFunction(bool selectAll)
{
SelectAll = selectAll;
//选择功能--直接从房间的devicelist中获取
if (Common.Room.AllRoomDeviceUIList == null)
{
return;
}
if (Common.Room.AllRoomDeviceUIList.Count == 0)
{
ShowNoFunctionTip();
}
else
{
functionTypeScrowView = new HorizontalScrolViewLayout
{
X = Application.GetRealWidth(CommonFormResouce.X_Left),
Height = Application.GetRealHeight(279),
Width = Application.GetRealWidth(1028),
BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
};
functionSceneBodyView.AddChidren(functionTypeScrowView);
deviceListScrolView = new VerticalScrolViewLayout
{
X = Application.GetRealWidth(CommonFormResouce.X_Left),
Y = functionTypeScrowView.Bottom + Application.GetRealHeight(50),
Width = Application.GetRealWidth(1028),
Height = functionSceneBodyView.Height - Application.GetRealHeight(279 + 50) - 1,
BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
};
functionSceneBodyView.AddChidren(deviceListScrolView);
tempFunctionTypeBtn = new FunctionButton();
foreach (var deviceType in Common.Room.AllRoomDeviceTypeList)
{
typeRowLayout = new RowLayout()
{
Width = Application.GetRealWidth(CommonPage.AppRealWidth / 5),
LineColor = ZigbeeColor.Current.GXCBackgroundColor,
Tag = deviceType
};
functionTypeScrowView.AddChidren(typeRowLayout);
functionTypeIMG = new FunctionButton()
{
Tag = deviceType
};
functionTypeIMG.Init(DeviceUI.GetDeviceTypeUnSelectedImagePath(deviceType), DeviceUI.GetDeviceTypeUnSelectedImagePath(deviceType));
functionTypeIMG.SetTitle(DeviceUI.GetDeviceTypeName(deviceType));
typeRowLayout.AddChidren(functionTypeIMG);
functionTypeIMG.ClickBtn.MouseUpEventHandler += ShowSameTypeFunction;
if (deviceType == Shared.Common.Room.AllRoomDeviceUIList[0].CommonDevice.Type)
{
ShowSameTypeFunction(functionTypeIMG.ImageBtn, null);
}
}
}
}
///
/// 显示相同类型的功能
///
/// typeSender.
/// The ${ParameterType} instance containing the event data.
private void ShowSameTypeFunction(object typeSender, MouseEventArgs mouseEventArgs)
{
//选择功能--直接从房间的devicelist中获取
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 { };
foreach (var devieceUI in Common.Room.AllRoomDeviceUIList)
{
if (devieceUI == null || devieceUI.CommonDevice == null)
{
continue;
}
if (devieceUI.CommonDevice.Type.ToString() == (typeSender as Button).Tag.ToString())
{
if (!sameTypeList.Contains(devieceUI))
{
sameTypeList.Add(devieceUI);
}
}
}
if (SelectAll)
{
selectedList.AddRange(sameTypeList);
}
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(deviceUI.CommonDevice.DeviceEpointName);
deviceRow.SetStatu(deviceUI.CommonDevice.IsOnline == 1);
deviceRow.SetSelectStatu(SelectAll);
deviceTypeRowLayout.AddChidren(deviceRow);
EventHandler eventHandler = (sender, e) =>
{
deviceRow.SelectBtn.IsSelected = !deviceRow.SelectBtn.IsSelected;
if (deviceRow.SelectBtn.IsSelected)
{
if (!selectedList.Contains(deviceUI))
{
selectedList.Add(deviceUI);
}
}
else
{
if (selectedList.Contains(deviceUI))
{
selectedList.Remove(deviceUI);
}
}
};
deviceRow.NameBtn.MouseUpEventHandler += eventHandler;
deviceRow.ImageBtn.MouseUpEventHandler += eventHandler;
deviceRow.MouseUpEventHandler+=eventHandler;
deviceRow.SelectBtn.MouseUpEventHandler += eventHandler;
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(17),
TextID = R.MyInternationalizationString.AddTo,
Gravity = Gravity.CenterHorizontal
};
functionSceneBodyView.AddChidren(add);
add.MouseUpEventHandler += (sender, e) =>
{
var selectZone = new SelectZone();
CommonPage.Instance.AddChidren(selectZone);
selectZone.Init();
selectZone.ZoneAction = (r) =>
{
foreach (var d in selectedList)
{
r.AddDevice(d.FileName);
}
};
};
}
}
///
/// 提示没有功能
///
private void ShowNoFunctionTip()
{
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,
TextID = R.MyInternationalizationString.NoFunction,
//Text = "没有功能 \n 请在个人中心中--设备管理处添加",
TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor,
TextAlignment = TextAlignment.Center,
IsMoreLines = true
};
functionSceneBodyView.AddChidren(noFunctionTip);
}
#endregion
#region ◆ 场景____________________________
///
/// 选择场景--所有房间的所有场景
///
public void ShowScene(bool selectAll)
{
//刷新场景
//var reFreshResult=await Shared.Common.Room.RefreshSceneUIList();
Shared.Common.SceneRoomUI.GetAllSceneRoomUIList();
if (SceneRoomUI.AllSceneRoomUIList == null)
{
return;
}
var sceneList = SceneRoomUI.AllSceneRoomUIList;
List selectedList = new List();
if(selectAll)
{
selectedList.AddRange(sceneList);
}
if (sceneList.Count == 0)
{
ShowNoSceneTip();
}
else
{
var sceneScrolView = new VerticalScrolViewLayout
{
Y = Application.GetRealHeight(0)
};
functionSceneBodyView.AddChidren(sceneScrolView);
foreach (var sceneRoomUI in sceneList)
{
var sceneFL = new FrameLayout()
{
Width=Application.GetRealWidth(CommonFormResouce.AppRealWidth),
Height = Application.GetRealHeight(397+58),
Gravity = Gravity.CenterHorizontal,
BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor,
Tag = sceneRoomUI
};
sceneScrolView.AddChidren(sceneFL);
var sceneImg = new Button()
{
X=Application.GetRealWidth(179),
Y=Application.GetRealHeight(58),
Width = Application.GetRealWidth(844),
Height = Application.GetRealHeight(397),
UnSelectedImagePath = sceneRoomUI.sceneUI.IconPath,
Radius = (uint)Application.GetRealHeight(17)
};
sceneImg.UnSelectedImagePath = "Room/r0.png";
sceneFL.AddChidren(sceneImg);
var selectedBtn = new Button
{
X = Application.GetRealWidth(919),
Y = Application.GetRealHeight(92),
Width = Application.GetMinRealAverage(60),
Height = Application.GetMinRealAverage(60),
UnSelectedImagePath = "Room/ItemUnSelected.png",
SelectedImagePath = "Room/ItemSelected.png",
IsSelected= selectAll
};
sceneFL.AddChidren(selectedBtn);
var leftFL = new FrameLayout
{
X = Application.GetRealWidth(CommonFormResouce.X_Left),
Y = Application.GetRealHeight(58 + 58),
Width = Application.GetRealWidth(251),
Height = Application.GetRealHeight(282),
BackgroundColor = ZigbeeColor.Current.GXCBlackBackgroundColor2
};
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 = sceneRoomUI.sceneUI.Name,
Gravity = Gravity.Center,
IsMoreLines = true
};
leftFL.AddChidren(sceneNameBtn);
EventHandler eventHandler = (sender,e) =>
{
selectedBtn.IsSelected = !selectedBtn.IsSelected;
if(selectedBtn.IsSelected)
{
if(!selectedList.Contains(sceneRoomUI))
{
selectedList.Add(sceneRoomUI);
}
}
else
{
if (selectedList.Contains(sceneRoomUI))
{
selectedList.Remove(sceneRoomUI);
}
}
};
selectedBtn.MouseUpEventHandler += eventHandler;
sceneImg.MouseUpEventHandler += eventHandler;
}
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(17),
TextID = R.MyInternationalizationString.AddTo,
Gravity=Gravity.CenterHorizontal
};
functionSceneBodyView.AddChidren(add);
add.MouseUpEventHandler += (sender, e) =>
{
var selectZone = new SelectZone();
CommonPage.Instance.AddChidren(selectZone);
selectZone.Init();
selectZone.ZoneAction = (r) =>
{
foreach(var s in selectedList)
{
r.AddScene(s.sceneUI);
}
};
};
}
}
///
/// 显示没有场景
///
private void ShowNoSceneTip()
{
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,
TextID = R.MyInternationalizationString.NoScene,
TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor,
TextAlignment = TextAlignment.Center,
IsMoreLines = true
};
functionSceneBodyView.AddChidren(noScenceTip);
}
#endregion
}
}