using System; using System.Collections.Generic; using System.Text; using System.Threading.Tasks; using ZigBee.Device; namespace Shared.Phone.UserCenter.SharedContent { /// /// 配置新共享内容的主界面 /// public class AddNewSharedContentForm : EditorCommonForm { #region ■ 变量声明___________________________ ///// ///// 设备列表控件 ///// //private VerticalScrolViewLayout listDeviceView = null; ///// ///// 场景列表控件 ///// //private VerticalScrolViewLayout listSceneView = null; ///// ///// 成员信息 ///// //private MemberInfoRes memberResult = null; ///// ///// 房间对象 ///// //private Common.Room room = null; ///// ///// Tab的选择。1:功能Tab 2:场景Tab ///// //private int TabSelectIndex = 1; #endregion #region ■ 初始化_____________________________ ///// ///// 画面显示(底层会固定调用此方法,借以完成画面创建) ///// ///// 房间对象 ///// 成员信息 ///// 成员的分享数据 //public void ShowForm(Common.Room i_room, MemberInfoRes i_memberResult, MemberShardInfoData i_memberShardInfo) //{ // this.memberResult = i_memberResult; // this.memberShardInfo = i_memberShardInfo; // this.room = i_room; // //设置头部信息 // base.SetTitleText(this.room.Name); // //分享 // //var btnShard = new TopLayoutFinshView(); // //btnShard.TextID = R.MyInternationalizationString.uShared; // //topFrameLayout.AddChidren(btnShard); // //btnShard.MouseUpEventHandler += (sender, e) => // //{ // // HdlThreadLogic.Current.Run(() => // // { // // //确认分享 // // this.DoSaveSharedContent(); // // }); // //}; // ////初始化中部信息 // //this.InitMiddleFrame(); //} ///// ///// 初始化中部信息 ///// //private void InitMiddleFrame() //{ // //清空bodyFrame // this.ClearBodyFrame(); // //初始化Tab控件 // var frame = this.InitTabControl(); // this.listDeviceView = new VerticalScrolViewLayout(); // listDeviceView.Y = frame.Bottom; // listDeviceView.Height = bodyFrameLayout.Height - frame.Bottom; // listDeviceView.Visible = this.TabSelectIndex == 1; // bodyFrameLayout.AddChidren(listDeviceView); // this.listSceneView = new VerticalScrolViewLayout(); // listSceneView.Y = frame.Bottom; // listSceneView.Height = bodyFrameLayout.Height - frame.Bottom; // listSceneView.Visible = this.TabSelectIndex == 2; // bodyFrameLayout.AddChidren(listSceneView); // HdlThreadLogic.Current.Run(() => // { // //初始化功能Tab列表 // this.InitFunctionTabList(); // //初始化场景Tab列表 // this.InitSceneTabList(); // }); //} #endregion //#region ■ 初始化Tab控件______________________ ///// ///// 初始化Tab控件 ///// ///// //private FrameLayout InitTabControl() //{ // //Tab切换控件 // var frameSwich = new FrameLayout(); // frameSwich.Height = Application.GetRealHeight(150); // frameSwich.BackgroundColor = UserCenterColor.Current.TopFrameLayout; // bodyFrameLayout.AddChidren(frameSwich); // //功能 // var btnFunction = new NormalViewControl(frameSwich.Width / 2, Application.GetRealHeight(100)); // btnFunction.Gravity = Gravity.CenterVertical; // btnFunction.TextID = R.MyInternationalizationString.uFunction; // btnFunction.TextAlignment = TextAlignment.Center; // btnFunction.TextColor = UserCenterColor.Current.SelectTextColor; // btnFunction.TextAlignment = TextAlignment.Center; // frameSwich.AddChidren(btnFunction); // //场景 // var btnScene = new NormalViewControl(frameSwich.Width / 2, Application.GetRealHeight(100)); // btnScene.Gravity = Gravity.CenterVertical; // btnScene.X = frameSwich.Width / 2; // btnScene.TextID = R.MyInternationalizationString.uScence; // btnScene.TextAlignment = TextAlignment.Center; // frameSwich.AddChidren(btnScene); // //线 // var btnLine = new ProgressLine(); // btnLine.Gravity = Gravity.BottomLeft; // frameSwich.AddChidren(btnLine); // btnLine.SetValue(50, true); // if (this.TabSelectIndex == 2) // { // btnScene.TextColor = UserCenterColor.Current.SelectTextColor; // btnFunction.TextColor = Common.ZigbeeColor.Current.TextColor; // btnLine.SetValue(50, false); // } // //功能Tab // btnFunction.MouseUpEventHandler += (sender, e) => // { // if (this.TabSelectIndex == 1) // { // return; // } // btnScene.TextColor = Common.ZigbeeColor.Current.TextColor; // btnFunction.TextColor = UserCenterColor.Current.SelectTextColor; // btnLine.SetValue(50); // this.TabSelectIndex = 1; // //隐藏场景列表控件,显示设备列表控件 // this.listSceneView.Visible = false; // this.listDeviceView.Visible = true; // }; // //场景Tab // btnScene.MouseUpEventHandler += (sender, e) => // { // if (this.TabSelectIndex == 2) // { // return; // } // btnScene.TextColor = UserCenterColor.Current.SelectTextColor; // btnFunction.TextColor = Common.ZigbeeColor.Current.TextColor; // btnLine.SetValue(50, false); // this.TabSelectIndex = 2; // //隐藏设备列表控件,显示场景列表控件 // this.listDeviceView.Visible = false; // this.listSceneView.Visible = true; // }; // return frameSwich; //} //#endregion //#region ■ 显示功能Tab列表____________________ ///// ///// 初始化功能Tab列表 ///// //private void InitFunctionTabList() //{ // if (memberShardInfo.dicAllMemberShard.ContainsKey(this.room.FileName) == false) // { // memberShardInfo.dicAllMemberShard[this.room.FileName] = new HashSet(); // } // var listCheck = memberShardInfo.dicAllMemberShard[this.room.FileName]; // foreach (var deviceUi in this.room.DeviceUIList) // { // var device = deviceUi.CommonDevice; // if (device == null || listCheck.Contains(device.FilePath) == true) // { // //异常,或者已经分享了的,不再显示 // continue; // } // Application.RunOnMainThread(() => // { // if (this.listDeviceView != null) // { // //添加设备行 // var deviceRow = new DeviceSelectControl(device); // this.listDeviceView.AddChidren(deviceRow); // deviceRow.InitControl(); // //不需要房间控件 // deviceRow.RemoveRoomControl(); // } // }); // } //} //#endregion //#region ■ 显示场景Tab列表____________________ ///// ///// 初始化场景Tab列表 ///// //private void InitSceneTabList() //{ // if (memberShardInfo.dicAllMemberShard.ContainsKey(this.room.FileName) == false) // { // memberShardInfo.dicAllMemberShard[this.room.FileName] = new HashSet(); // } // var listCheck = memberShardInfo.dicAllMemberShard[this.room.FileName]; // foreach (var sceneUi in this.room.SceneUIList) // { // if (sceneUi == null || listCheck.Contains(sceneUi.FileName) == true) // { // //异常,或者已经分享了的,不再显示 // continue; // } // Application.RunOnMainThread(() => // { // if (this.listSceneView != null) // { // //添加场景行 // var sceneRow = new SceneSelectRow(this.listSceneView, sceneUi); // } // }); // } //} //#endregion //#region ■ 获取选择的设备_____________________ ///// ///// 获取选择的设备 ///// ///// 重复检测 ///// //private List GetSelectedDevice(HashSet listCheck) //{ // var listDevice = new List(); // for (int i = 0; i < listDeviceView.ChildrenCount; i++) // { // var myView = listDeviceView.GetChildren(i); // var selectRow = (DeviceSelectControl)myView; // if (selectRow.IsSelected == true && listCheck.Contains(selectRow.device.FilePath) == false) // { // listCheck.Add(selectRow.device.FilePath); // listDevice.Add(selectRow.device); // } // } // return listDevice; //} //#endregion //#region ■ 获取选择的场景_____________________ ///// ///// 获取选择的场景 ///// ///// 重复检测 ///// //private List GetSelectedSceneUI(HashSet listCheck) //{ // var listSceneUI = new List(); // for (int i = 0; i < listSceneView.ChildrenCount; i++) // { // var myView = listSceneView.GetChildren(i); // var selectRow = (SceneSelectRow)myView; // if (selectRow.IsSelected == true && listCheck.Contains(selectRow.sceneUI.Id.ToString()) == false) // { // listCheck.Add(selectRow.sceneUI.Id.ToString()); // listSceneUI.Add(selectRow.sceneUI); // } // } // return listSceneUI; //} //#endregion //#region ■ 确认分享___________________________ ///// ///// 确认分享 ///// //private async void DoSaveSharedContent() //{ // var listCheck = new HashSet(); // //选择的设备 // var listSelectDevice = this.GetSelectedDevice(listCheck); // //选择的场景 // var listSelectScene = this.GetSelectedSceneUI(listCheck); // if (listSelectDevice.Count == 0 && listSelectScene.Count == 0) // { // //请选择目标后再执行分享操作 // string msg = Language.StringByID(R.MyInternationalizationString.uNotSelectDeviceBeforeSave); // this.ShowErrorMsg(msg); // return; // } // //执行上传分享内容 // var result = await HdlShardLogic.Current.DoUploadSharedContent(memberShardInfo, this.room, listSelectDevice, listSelectScene); // if (result == true) // { // Application.RunOnMainThread(() => // { // //重新刷新界面 // this.InitMiddleFrame(); // //分享成功 // string msg = Language.StringByID(R.MyInternationalizationString.uShardSuccess); // this.ShowMassage(msg); // }); // } //} //#endregion #region ■ 变量声明___________________________ /// /// 查看的房间对象 /// private Common.Room lookRoom = null; /// /// 成员的分享数据 /// private MemberShardInfoData memberShardInfo = null; /// /// 当前选择的分支,1:场景 2:功能 /// private int nowSelectIndex = 1; /// /// 设备桌布控件 /// private FrameLayout frameDeviceTable = null; /// /// 设备桌布控件 /// private FrameLayout frameSceneTable = null; /// /// 功能按钮 /// private BottomClickButton btnShard = null; #endregion #region ■ 初始化_____________________________ /// /// 画面显示(底层会固定调用此方法,借以完成画面创建) /// /// 查看的房间对象 public void ShowForm(Common.Room i_room, MemberShardInfoData i_memberShardInfo) { this.lookRoom = i_room; this.memberShardInfo = i_memberShardInfo; //设置头部信息 base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uAddShared)); //初始化中部信息 this.InitMiddleFrame(); } /// /// 初始化中部信息 /// private void InitMiddleFrame() { //清空bodyFrame this.ClearBodyFrame(); //初始化分支控件 this.InitSwitchControl(); //初始化桌布控件 this.frameSceneTable = new FrameLayout(); frameSceneTable.Y = Application.GetRealHeight(132); frameSceneTable.Height = bodyFrameLayout.Height - Application.GetRealHeight(132); bodyFrameLayout.AddChidren(frameSceneTable); this.frameDeviceTable = new FrameLayout(); frameDeviceTable.Y = frameSceneTable.Y; frameDeviceTable.Height = frameSceneTable.Height; bodyFrameLayout.AddChidren(frameDeviceTable); frameDeviceTable.Visible = false; //房间 var btnRoom = new NormalViewControl(400, 63, true); btnRoom.Y = Application.GetRealHeight(40); btnRoom.X = bodyFrameLayout.Width - Application.GetRealWidth(58 + 400); btnRoom.Text = this.lookRoom.Name; btnRoom.TextAlignment = TextAlignment.CenterRight; bodyFrameLayout.AddChidren(btnRoom); this.btnShard = new BottomClickButton(); btnShard.TextID = R.MyInternationalizationString.uShared2; bodyFrameLayout.AddChidren(btnShard); btnShard.Visible = false; btnShard.ButtonClickEvent += (sender, e) => { }; //初始化场景列表 this.InitSceneList(); //初始功能列表 this.InitFunctionList(); } /// /// 初始化分支控件 /// private void InitSwitchControl() { var btnTemp = new NormalViewControl(10, 10, false); btnTemp.TextID = R.MyInternationalizationString.uScence; //场景框(点击范围有点小,需要扩大它的点击范围) var frameScene = new FrameLayoutControl(); frameScene.UseClickStatu = false; frameScene.Height = Application.GetRealHeight(90); frameScene.Width = btnTemp.GetRealWidthByText(16); frameScene.X = ControlCommonResourse.XXLeft; frameScene.Y = Application.GetRealHeight(40); bodyFrameLayout.AddChidren(frameScene); //场景 var btnScene = new NormalViewControl(frameScene.Width, Application.GetRealHeight(63), false); btnScene.Text = btnTemp.Text; btnScene.TextSize = 16; btnScene.TextColor = UserCenterColor.Current.TextColor2; frameScene.AddChidren(btnScene, ChidrenBindMode.BindEventOnly); //底线 var btnSceneLine = new NormalViewControl(40, 10, true); btnSceneLine.Y = btnScene.Bottom + Application.GetRealHeight(14); btnSceneLine.X = btnScene.X + btnScene.Width / 2 - Application.GetRealWidth(40) / 2; btnSceneLine.Radius = (uint)Application.GetRealHeight(10) / 2; btnSceneLine.BackgroundColor = UserCenterColor.Current.TextOrangeColor; frameScene.AddChidren(btnSceneLine, ChidrenBindMode.BindEventOnly); btnTemp.TextID = R.MyInternationalizationString.uFunction; //功能框(点击范围有点小,需要扩大它的点击范围) var frameFunc = new FrameLayoutControl(); frameFunc.UseClickStatu = false; frameFunc.Height = Application.GetRealHeight(90); frameFunc.Width = btnTemp.GetRealWidthByText(16); frameFunc.X = frameScene.Right + Application.GetRealWidth(58); frameFunc.Y = Application.GetRealHeight(40); bodyFrameLayout.AddChidren(frameFunc); //功能 var btnFunc = new NormalViewControl(frameFunc.Width, Application.GetRealHeight(63), false); btnFunc.Text = btnTemp.Text; btnFunc.TextColor = UserCenterColor.Current.TextGrayColor3; frameFunc.AddChidren(btnFunc, ChidrenBindMode.BindEventOnly); //底线 var btnFuncLine = new NormalViewControl(40, 10, true); btnFuncLine.Y = btnFunc.Bottom + Application.GetRealHeight(14); btnFuncLine.X = btnFunc.X + btnFunc.Width / 2 - Application.GetRealWidth(40) / 2; btnFuncLine.Radius = (uint)Application.GetRealHeight(10) / 2; btnFuncLine.BackgroundColor = UserCenterColor.Current.TextOrangeColor; frameFunc.AddChidren(btnFuncLine, ChidrenBindMode.BindEventOnly); btnFuncLine.Visible = false; frameScene.ButtonClickEvent += (sender, e) => { //场景分支选择 if (this.nowSelectIndex == 1) { return; } this.nowSelectIndex = 1; btnScene.TextSize = 16; btnScene.TextColor = UserCenterColor.Current.TextColor2; btnFunc.TextSize = 14; btnFunc.TextColor = UserCenterColor.Current.TextGrayColor3; btnSceneLine.Visible = true; btnFuncLine.Visible = false; //显示场景列表 this.frameSceneTable.Visible = true; this.frameDeviceTable.Visible = false; }; frameFunc.ButtonClickEvent += (sender, e) => { //功能分支选择 if (this.nowSelectIndex == 2) { return; } this.nowSelectIndex = 2; btnScene.TextSize = 14; btnScene.TextColor = UserCenterColor.Current.TextGrayColor3; btnFunc.TextSize = 16; btnFunc.TextColor = UserCenterColor.Current.TextColor2; btnFuncLine.Visible = true; btnSceneLine.Visible = false; //显示功能列表 this.frameSceneTable.Visible = false; this.frameDeviceTable.Visible = true; }; } #endregion #region ■ 场景显示___________________________ /// /// 初始化场景列表 /// private void InitSceneList() { //清空桌布 this.frameSceneTable.RemoveAll(); var listView = new VerticalFrameControl(29); listView.Y = Application.GetRealHeight(53); listView.Height = bodyFrameLayout.Height - Application.GetRealHeight(187); frameSceneTable.AddChidren(listView); HdlThreadLogic.Current.RunMainInThread(() => { foreach (var data in lookRoom.SceneUIList) { //场景图片 var frameContr = new FrameLayoutControl(); frameContr.UseClickStatu = false; frameContr.Width = Application.GetRealWidth(878); frameContr.Height = Application.GetRealHeight(440); frameContr.Gravity = Gravity.CenterHorizontal; frameContr.BackgroundImagePath = data.IconPath; listView.AddChidrenFrame(frameContr); var btnSelect = new IconViewControl(58); btnSelect.UnSelectedImagePath = "Item/ItemUnSelected.png"; btnSelect.SelectedImagePath = "Item/ItemSelected.png"; btnSelect.X = Application.GetRealWidth(786); btnSelect.Y = Application.GetRealHeight(35); frameContr.AddChidren(btnSelect, ChidrenBindMode.BindEventOnly); frameContr.ButtonClickEvent += (sender, e) => { btnSelect.IsSelected = !btnSelect.IsSelected; }; } }); } #endregion #region ■ 功能显示___________________________ /// /// 初始化功能列表 /// private void InitFunctionList() { //清空桌布 this.frameDeviceTable.RemoveAll(); var frameBack = new FrameLayoutControl(false); frameBack.X = ControlCommonResourse.XXLeft; frameBack.Y = Application.GetRealHeight(178); frameBack.BackgroundColor = UserCenterColor.Current.White; frameBack.Width = bodyFrameLayout.Width; frameBack.Height = Application.GetRealHeight(1650); frameBack.RadiusEx = 20; frameDeviceTable.AddChidren(frameBack); var listView = new VerticalListControl(23); listView.Y = Application.GetRealHeight(23); listView.Height = Application.GetRealHeight(1437 - 23); frameBack.AddChidren(listView); HdlThreadLogic.Current.RunMainInThread(() => { //获取分组后的设备列表 var dicGroupDevice = this.GetAllGroupDevice(); //初始化设备类型行 this.InitDeviceObjectRow(dicGroupDevice, listView); }); } #endregion #region ■ 初始化设备类型行___________________ /// /// 初始化设备类型行 /// /// /// private void InitDeviceObjectRow(Dictionary> dicData, VerticalListControl listView) { var scrolContr = new HorizontalScrolViewLayout(); scrolContr.X = ControlCommonResourse.XXLeft / 2; scrolContr.Width = bodyFrameLayout.Width - ControlCommonResourse.XXLeft / 2; scrolContr.Height = Application.GetRealHeight(160); this.frameDeviceTable.AddChidren(scrolContr); int oldTextId = 0; FrameLayout oldFrameBack = null; NormalViewControl oldBtnText = null; foreach (int textId in dicData.Keys) { var frameMain = new FrameLayout(); frameMain.Height = scrolContr.Height; frameMain.Width = Application.GetRealWidth(250) + ControlCommonResourse.XXLeft; scrolContr.AddChidren(frameMain); var frameBack = new FrameLayoutControl(); frameBack.UseClickStatu = false; frameBack.Gravity = Gravity.CenterHorizontal; frameBack.Height = frameMain.Height; frameBack.Width = Application.GetRealWidth(187); if (scrolContr.ChildrenCount == 1) { oldTextId = textId; frameBack.BackgroundImagePath = "Item/RoomIconBackgroundSelected.png"; oldFrameBack = frameBack; } else { frameBack.BackgroundImagePath = "Item/RoomIconBackground.png"; } frameMain.AddChidren(frameBack); var btnText = new NormalViewControl(frameBack.Width - frameBack.Height, frameBack.Height, false); btnText.Gravity = Gravity.CenterHorizontal; btnText.TextID = textId; btnText.TextSize = 12; btnText.TextAlignment = TextAlignment.Center; if (scrolContr.ChildrenCount == 1) { btnText.TextColor = UserCenterColor.Current.White; oldBtnText = btnText; } else { btnText.TextColor = UserCenterColor.Current.TextGrayColor1; } frameBack.AddChidren(btnText, ChidrenBindMode.BindEventOnly); frameBack.ButtonClickEvent += (sender, e) => { if (oldTextId == textId) { //同一个东西 return; } oldTextId = textId; //状态变更 frameBack.BackgroundImagePath = "Room/RoomIconBackgroundSelected.png"; btnText.TextColor = UserCenterColor.Current.White; oldFrameBack.BackgroundImagePath = "Room/RoomIconBackground.png"; oldBtnText.TextColor = UserCenterColor.Current.TextGrayColor1; oldFrameBack = frameBack; oldBtnText = btnText; //添加设备行 this.AddDeviceRow(dicData[textId], listView); }; } //添加设备行 foreach (int textId in dicData.Keys) { this.AddDeviceRow(dicData[textId], listView); break; } } #endregion #region ■ 添加设备行_________________________ /// /// 添加设备行 /// /// /// private void AddDeviceRow(List listDevice, VerticalListControl listView) { listView.RemoveAll(); foreach (var device in listDevice) { var frameRow = new FrameRowControl(listView.rowSpace / 2); frameRow.UseClickStatu = false; frameRow.LeftOffset = Application.GetRealWidth(46) - ControlCommonResourse.XXLeft; frameRow.RightOffset = -ControlCommonResourse.XXLeft; listView.AddChidren(frameRow); //图标 var btnIcon = frameRow.AddLeftIcon(81); Common.LocalDevice.Current.SetDeviceIconToControl(btnIcon, device); //名称 var btnView = frameRow.AddLeftCaption(string.Empty, 600); btnView.Text = Common.LocalDevice.Current.GetDeviceEpointName(device); btnView.TextSize = 15; //底线 frameRow.AddBottomLine(); //选择 var btnSelect = frameRow.AddMostRightEmptyIcon(69, 69); btnSelect.UnSelectedImagePath = "Item/ItemUnSelected.png"; btnSelect.SelectedImagePath = "Item/ItemSelected.png"; frameRow.ChangedChidrenBindMode(btnSelect, ChidrenBindMode.NotBind); btnSelect.ButtonClickEvent += (sender, e) => { btnSelect.IsSelected = !btnSelect.IsSelected; }; } } #endregion #region ■ 整合设备___________________________ /// /// 获取分组后的设备 /// /// private Dictionary> GetAllGroupDevice() { //全部的设备 var listDevice = lookRoom.GetRoomListDevice(); var dic = new Dictionary>(); foreach (var device in listDevice) { var typeInfo = Common.LocalDevice.Current.GetNotHdlMyDeviceEnumInfo(new List() { device }); if (device.Type == DeviceType.IASZone) { //这个强制为传感器 typeInfo.BeloneTextId = R.MyInternationalizationString.uDeviceBelongId1200; typeInfo.ConcreteType = Common.DeviceConcreteType.Sensor; } if (device.Type == DeviceType.OnOffOutput) { //继电器的时候,需要特殊处理 if (device.DfunctionType == DeviceFunctionType.A开关) { typeInfo.BeloneTextId = R.MyInternationalizationString.uSwitch; } else if (device.DfunctionType == DeviceFunctionType.A插座) { typeInfo.BeloneTextId = R.MyInternationalizationString.uSocket1; } else if (device.DfunctionType == DeviceFunctionType.A灯光) { typeInfo.BeloneTextId = R.MyInternationalizationString.uLight; } else { //继电器 typeInfo.BeloneTextId = R.MyInternationalizationString.uDeviceBelongId2300; } if (dic.ContainsKey(typeInfo.BeloneTextId) == false) { dic[typeInfo.BeloneTextId] = new List(); } } else { if (dic.ContainsKey(typeInfo.BeloneTextId) == false) { dic[typeInfo.BeloneTextId] = new List(); } } dic[typeInfo.BeloneTextId].Add(device); } return dic; } #endregion } }