using System; using System.Collections.Generic; using System.Text; using System.Threading.Tasks; using ZigBee.Device; namespace Shared.Phone.UserCenter.SharedContent { /// /// 配置新共享内容的主界面 /// public class ConfigureNewSharedMainForm : UserCenterCommonForm { #region ■ 变量声明___________________________ /// /// 设备列表控件 /// private VerticalScrolViewLayout listDeviceView = null; /// /// 场景列表控件 /// private VerticalScrolViewLayout listSceneView = null; /// /// 成员信息 /// private MemberInfoRes memberResult = null; /// /// 成员的分享数据 /// private MemberShardInfoData memberShardInfo = 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) => { new System.Threading.Thread(() => { //确认分享 this.DoSaveSharedContent(); }) { IsBackground = true }.Start(); }; //初始化中部信息 this.InitMiddleFrame(); } /// /// 初始化中部信息 /// private void InitMiddleFrame() { bodyFrameLayout.RemoveAll(); //初始化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); new System.Threading.Thread(() => { //初始化功能Tab列表 this.InitFunctionTabList(); //初始化场景Tab列表 this.InitSceneTabList(); }) { IsBackground = true }.Start(); } #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 ViewNormalControl(frameSwich.Width / 2, Application.GetRealHeight(100)); btnFunction.Gravity = Gravity.CenterVertical; btnFunction.TextID = R.MyInternationalizationString.Function; btnFunction.TextAlignment = TextAlignment.Center; btnFunction.TextColor = UserCenterColor.Current.SelectTextColor; btnFunction.TextAlignment = TextAlignment.Center; frameSwich.AddChidren(btnFunction); //场景 var btnScene = new ViewNormalControl(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(() => { //添加设备行 var deviceRow = new DeviceSelectRow(this.listDeviceView, device); //不需要房间控件 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(() => { //添加场景行 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 = (DeviceSelectRow)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.ShowTip(msg); }); } } #endregion } }