using System; using Shared.Common; namespace Shared.Phone.Device.CommonForm { public class SceneMainView : FrameLayout { /// /// name /// public Button TimeButton; /// /// collect /// public Button CollectButton; /// /// SceneIcon /// public ImageView SceneIcon; /// /// statu /// public Button SceneNameButton; /// /// CardBG /// private Button CardBG; /// /// sceneBG /// public Button sceneBG; /// /// v_Selected /// private bool v_Selected; /// /// scene /// public SceneUI scene; /// /// CollectionAction /// public Action CollectionAction; /// /// IsSelected /// public bool IsSelected { set { try { v_Selected = value; //SetStatu(v_Selected); } catch { }; } get { return v_Selected; } } /// /// SceneMainView /// /// /// public SceneMainView(int x, int y) { X = Application.GetRealWidth(x); Y = Application.GetRealHeight(y); Width = Application.GetRealWidth(487); Height = Application.GetRealHeight(358); } /// /// init /// public void Init(SceneUI sceneUI) { this.scene = sceneUI; InitFrame(); InitStatu(); } /// /// InitFrame /// private void InitFrame() { //CardBG = new Button //{ // Width = Application.GetMinRealAverage(487), // Height = Application.GetMinRealAverage(348), // UnSelectedImagePath = "Item/FunctionCardView.png", // Gravity = Gravity.CenterHorizontal //}; //AddChidren(CardBG); SceneIcon = new ImageView { X=Application.GetRealWidth(14), Width = Application.GetMinRealAverage(458), Height = Application.GetMinRealAverage(305), Gravity = Gravity.CenterHorizontal, Radius= (uint)Application.GetRealHeight(17) }; AddChidren(SceneIcon); //SceneIcon.SetViewShadow(true); //SceneIcon.SetCornerWithSameRadius(Application.GetRealHeight(100), HDLUtils.RectCornerBottomRight); sceneBG = new Button { Width = Application.GetMinRealAverage(487), Height = Application.GetMinRealAverage(348), UnSelectedImagePath = "Scene/Background.png", Gravity = Gravity.CenterHorizontal }; AddChidren(sceneBG); TimeButton = new Button() { X = Application.GetMinRealAverage(30), Y = Application.GetMinRealAverage(20), Width = Application.GetMinRealAverage(63), Height = Application.GetMinRealAverage(63), TextColor = ZigbeeColor.Current.GXCTextSelectedColor3, TextAlignment = TextAlignment.CenterLeft, }; AddChidren(TimeButton); CollectButton = new Button { X = Application.GetMinRealAverage(350), Y = Application.GetMinRealAverage(1), Width = Application.GetMinRealAverage(107), Height = Application.GetMinRealAverage(107), UnSelectedImagePath = "Item/Collection1.png", SelectedImagePath = "Item/CollectionSelected1.png" }; AddChidren(CollectButton); SceneNameButton = new Button() { X = Application.GetMinRealAverage(46), Y = Application.GetMinRealAverage(239), Width = Application.GetMinRealAverage(279), Height = Application.GetMinRealAverage(60), TextColor = ZigbeeColor.Current.GXCTextWhiteColor, SelectedTextColor = ZigbeeColor.Current.GXCTextSelectedColor, TextAlignment = TextAlignment.CenterLeft, TextSize = 14, IsBold = true }; AddChidren(SceneNameButton); } /// /// InitStatu /// private void InitStatu() { SetTimeByDelayTime(scene.SceneDelayTime); SetSceneNameText(scene.Name); SetIcon(scene.IconPath); SetCollect(Common.Room.CurrentRoom.GetLoveRoom().SceneUIFilePathList.Contains(scene.FileName)); TimeButton.MouseUpEventHandler += SetTimeEvents; CollectButton.MouseUpEventHandler += CollectionEvent; SceneIcon.MouseUpEventHandler += SceneUpHandler; SceneNameButton.MouseUpEventHandler += SceneUpHandler; sceneBG.MouseUpEventHandler += SceneUpHandler; } /// /// SetTimeText /// /// public void SetTimeText(string name) { TimeButton.Width = Application.GetMinRealAverage(280); TimeButton.Height = Application.GetMinRealAverage(63); TimeButton.UnSelectedImagePath = string.Empty; TimeButton.Text = name; TimeButton.TextSize = 14; TimeButton.IsBold = true; } /// /// SetTimeImage /// public void SetTimeImage() { TimeButton.Width = Application.GetMinRealAverage(63); TimeButton.Height = Application.GetMinRealAverage(63); TimeButton.UnSelectedImagePath = "Item/Time.png"; TimeButton.Text = string.Empty; } /// /// SetIimeByDelayTime /// /// public void SetTimeByDelayTime(int time) { if (time > 0) { SetTimeText(CommonFormResouce.GetTimeString(time)); } else { SetTimeImage(); } } /// /// SetStatu /// /// public void SetSceneNameText(string statu) { SceneNameButton.Text = statu; } /// /// SetIcon /// /// public void SetIcon(string iconPath) { if (scene.IconPathType == 0) { SceneIcon.ImagePath = iconPath; } else { SceneIcon.ImagePath = System.IO.Path.Combine(Config.Instance.FullPath, iconPath); } } /// /// SetCollect /// /// public void SetCollect(bool collect) { CollectButton.IsSelected = collect; } /// /// 调用场景 /// /// /// private async void SceneUpHandler(object sender, MouseEventArgs args) { if (scene.RemainTime > 0 && scene.SceneDelayTime == 0) { CommonFormResouce.ShowTip(Language.StringByID(R.MyInternationalizationString.TheSceneIsDelaying)); return; } //1成功 0失败 //后面补上相关提示 // Error参数含义 //1:网关无法解析命令数据。 //2:协调器正在升级或备份/恢复数据 //3:操作设备/组/场景不存在 //4:其他错误 //5:数据传输错误(在某次客户端向网关发送数据的过程中,网关在合理时间范围内接收客户端数据不完整导致该错误发生。如客户端向网关一次发送100个字节的数据,但网关等待接收了一秒只接收了80个字节。发生该错误,网关将主动关闭客户端连接) var sceneOpenAllData = await ZigBee.Device.Scene.ControlSceneAsync(scene.Id, scene.SceneDelayTime); if (sceneOpenAllData == null || sceneOpenAllData.sceneOpenData == null) { return; } if (sceneOpenAllData.sceneOpenData.Result == 0) { if (sceneOpenAllData.errorResponData == null) { return; } CommonFormResouce.ShowTip(Language.StringByID(R.MyInternationalizationString.ControlSceneFail)); } scene.RemainTime = scene.SceneDelayTime; scene.SceneDelayTime = 0; Common.Room.CurrentRoom.ModifySceneDelayTime(scene); new System.Threading.Thread(() => { while (scene.RemainTime > 0) { System.Threading.Thread.Sleep(1000); Application.RunOnMainThread(() => { SetTimeText(CommonFormResouce.GetTimeString(scene.RemainTime)); }); scene.RemainTime -= 1; } Application.RunOnMainThread(() => { SetTimeImage(); }); }) { IsBackground = true }.Start(); } /// /// 收藏 /// /// /// private void CollectionEvent(object sender,MouseEventArgs mouseEventArgs) { if (Common.Room.CurrentRoom.IsLove) { Common.Room.CurrentRoom.GetLoveRoom().DeleteScene(scene); CollectionAction?.Invoke(); } else { (sender as Button).IsSelected = !(sender as Button).IsSelected; if ((sender as Button).IsSelected) { Common.Room.CurrentRoom.GetLoveRoom().AddScene(scene); } else { Common.Room.CurrentRoom.GetLoveRoom().DeleteScene(scene); } } } /// /// setTimeEvent /// /// /// private void SetTimeEvents(object sender, MouseEventArgs mouseEventArgs) { if (scene.RemainTime > 0) { CommonFormResouce.ShowTip(Language.StringByID(R.MyInternationalizationString.TheSceneIsDelaying)); return; } var timeSelect = new SelectTime(); CommonPage.Instance.AddChidren(timeSelect); timeSelect.TempTime = scene.SceneDelayTime; timeSelect.Init(); timeSelect.TimeAction = (t) => { scene.SceneDelayTime = t; SetTimeByDelayTime(t); Common.Room.CurrentRoom.ModifySceneDelayTime(scene); }; } } }