| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using HDL_ON.DAL.Server; |
| | | using HDL_ON.DriverLayer; |
| | | using HDL_ON.Entity; |
| | | using Shared; |
| | | |
| | |
| | | /// </summary> |
| | | public static void LoadEvent_RefreshAir() |
| | | { |
| | | bodyView.btnTempValues.Text = MainPage.cityInfo.temperature == null ? "--" : MainPage.cityInfo.temperature + "°"; |
| | | bodyView.btnHumidityValues.Text = MainPage.cityInfo.humidity == null ? "--" : MainPage.cityInfo.humidity + "%"; |
| | | bodyView.btnPm25Values.Text = MainPage.cityInfo.pm25 == null ? "--" : MainPage.cityInfo.pm25; |
| | | if (bodyView != null) |
| | | { |
| | | bodyView.btnTempValues.Text = MainPage.cityInfo.temperature == null ? "--" : MainPage.cityInfo.temperature + "°"; |
| | | bodyView.btnHumidityValues.Text = MainPage.cityInfo.humidity == null ? "--" : MainPage.cityInfo.humidity + "%"; |
| | | bodyView.btnPm25Values.Text = MainPage.cityInfo.pm25 == null ? "--" : MainPage.cityInfo.pm25; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 更新室内传感器数据-湿度 |
| | | /// </summary> |
| | | public static void LoadEvent_RefreshEnvirIndoorHumi() |
| | | { |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | if (bodyView != null) |
| | | { |
| | | var humiSensorList = FunctionList.List.GetEnvirSensorsList().FindAll((obj) => obj.spk == SPK.SensorHumidity); |
| | | double humiTotalValues = 0; |
| | | foreach (var temp in humiSensorList) |
| | | { |
| | | double humiValue = 0; |
| | | double.TryParse(temp.GetAttrState(FunctionAttributeKey.Value), out humiValue); |
| | | humiTotalValues += humiValue; |
| | | } |
| | | if (humiTotalValues > 0) |
| | | { |
| | | bodyView.btnIndoorHumiValues.Text = "/" + humiTotalValues + "%"; |
| | | } |
| | | bodyView.btnIndoorHumiValues.Width = bodyView.btnIndoorHumiValues.GetTextWidth(); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 更新室内传感器数据-晚点 |
| | | /// </summary> |
| | | public static void LoadEvent_RefreshEnvirIndoorTemp() |
| | | { |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | if (bodyView != null) |
| | | { |
| | | var tempSensorList = FunctionList.List.GetEnvirSensorsList().FindAll((obj) => obj.spk == SPK.SensorTemperature); |
| | | double tempTotalValues = 0; |
| | | foreach (var temp in tempSensorList) |
| | | { |
| | | double tempValue = 0; |
| | | double.TryParse(temp.GetAttrState(FunctionAttributeKey.Value), out tempValue); |
| | | tempTotalValues += tempValue; |
| | | } |
| | | if (tempTotalValues > 0) |
| | | { |
| | | bodyView.btnIndoorTempValues.Text = "/" + tempTotalValues + "°"; |
| | | } |
| | | bodyView.btnIndoorTempValues.Width = bodyView.btnIndoorTempValues.GetTextWidth(); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 更新功能列表主页 |
| | | /// </summary> |
| | | public static void RefreshFunctionView() |
| | | { |
| | | if (bodyView != null && MainPage.CurPageIndex==0) |
| | | { |
| | | bodyView.LoadDeviceFunctionControlZone(); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 更新连接状态图标 |
| | | /// </summary> |
| | | void CheckLinkStatus() |
| | | { |
| | | //Dome模式 |
| | | if (MainPage.NoLoginMode) |
| | | { |
| | | bodyView.btnLinkStateTip.BackgroundColor = CSS.CSS_Color.MainColor; |
| | | return; |
| | | } |
| | | |
| | | if (!Control.Ins.GatewayOnline_Local && !Control.Ins.GatewayOnline_Cloud) |
| | | { |
| | | bodyView.btnLinkStateTip.BackgroundColor = CSS.CSS_Color.LinkTipFail; |
| | | } |
| | | else |
| | | { |
| | | if (Control.Ins.GatewayOnline_Local) |
| | | { |
| | | bodyView.btnLinkStateTip.BackgroundColor = CSS.CSS_Color.LinkTipLocal; |
| | | } |
| | | else |
| | | { |
| | | bodyView.btnLinkStateTip.BackgroundColor = CSS.CSS_Color.MainColor; |
| | | } |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 确认连接状态 |
| | | /// </summary> |
| | | public static void LoadEvent_CheckLinkStatus() |
| | | { |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | if (bodyView != null) |
| | | { |
| | | bodyView.CheckLinkStatus(); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 加载功能收藏按钮事件 |
| | | /// </summary> |
| | | void LoadEvent_FunctionCollection(Button btn,Function function,bool isDevice) |
| | | void LoadEvent_FunctionCollection(Button btn, Function function) |
| | | { |
| | | btn.MouseUpEventHandler += (sender, e) => |
| | | { |
| | | function.collection = false; |
| | | function.collect = false; |
| | | if (function.Spk_Prefix == FunctionCategory.Music)//处理音乐主从关系 |
| | | { |
| | | if ((function as Music.A31MusicModel).ServerClientType == 1) |
| | | { |
| | | (function as Music.A31MusicModel).MainPlayCollection = false; |
| | | Music.A31MusicModel.Save(); |
| | | } |
| | | } |
| | | string msg = function.name + Language.StringByID(StringId.CollectionCancelled); |
| | | if (isDevice) |
| | | { |
| | | LoadDeviceFunctionControlZone(); |
| | | } |
| | | else |
| | | { |
| | | LoadSceneFunctionControlZone(); |
| | | } |
| | | DB_ResidenceData.residenceData.SaveResidenceData(); |
| | | LoadDeviceFunctionControlZone(); |
| | | function.CollectFunction(); |
| | | new PublicAssmebly().TipMsgAutoClose(msg, true); |
| | | }; |
| | | } |
| | | /// <summary> |
| | | /// 加载场景收藏按钮事件 |
| | | /// </summary> |
| | | void LoadEvent_SceneCollection(Button btn, Scene scene) |
| | | { |
| | | btn.MouseUpEventHandler += (sender, e) => |
| | | { |
| | | scene.collect = false; |
| | | string msg = scene.name + Language.StringByID(StringId.CollectionCancelled); |
| | | LoadSceneFunctionControlZone(); |
| | | scene.CollectScene(); |
| | | new PublicAssmebly().TipMsgAutoClose(msg, true); |
| | | }; |
| | | } |
| | |
| | | btnChangeScene.IsBold = false; |
| | | CurShowTypeIsFunction = true; |
| | | contentView.PageIndex = 0; |
| | | |
| | | }; |
| | | |
| | | //var client = new BlufiClient(); |
| | | //client.PostPackageLengthLimit = 128; |
| | | //client.RequestDeviceScan(); |
| | | //client.RequestDeviceStatus(); |
| | | //client.BlufiDelegate.Blufi_DidReceiveDeviceScanResponse(); |
| | | |
| | | |
| | | btnChangeScene.MouseUpEventHandler = (sender, e) => |
| | | { |
| | |
| | | { |
| | | if (view.Tag.ToString() == function.sid) |
| | | { |
| | | var state = function.on_off == "on"; |
| | | var state = false; |
| | | if (function.spk == SPK.CurtainRoller || function.spk == SPK.CurtainShades || function.spk == SPK.CurtainTrietex || |
| | | function.spk == SPK.CurtainSwitch)//窗帘设备根据百分比判断开关状态 |
| | | { |
| | | state = function.GetAttrState(FunctionAttributeKey.Percent) != "0"; |
| | | } |
| | | else |
| | | { |
| | | state = function.trait_on_off.curValue.ToString() == "on"; |
| | | } |
| | | for (int i = 0; i < view.ChildrenCount; i++) |
| | | { |
| | | if (view.GetChildren(i).GetType() == typeof(Button)) |
| | |
| | | btn.IsSelected = state; |
| | | if (btn.Tag != null && btn.Tag.ToString() == "state") |
| | | { |
| | | btn.Text = function.lastState; |
| | | if (function.Spk_Prefix == FunctionCategory.Music) |
| | | { |
| | | btn.Text = (function as Music.A31MusicModel).A31PlayStatus.Title; |
| | | } |
| | | else |
| | | { |
| | | if (function.spk != SPK.LightSwitch) |
| | | { |
| | | btn.Text = function.lastState; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | /// <summary> |
| | | /// 加载场景控制事件 |
| | | /// </summary> |
| | | void LoadEvent_ControlScene(Button btnCoverd ,Function function) |
| | | void LoadEvent_ControlScene(Button btnCoverd, Button btnName, Button btnZone,Button btnShowDelay, Scene scene) |
| | | { |
| | | btnCoverd.MouseDownEventHandler = (sender, e) => |
| | | { |
| | | btnCoverd.IsSelected = true; |
| | | }; |
| | | btnCoverd.MouseUpEventHandler = (sender, e) => |
| | | { |
| | | string msg = function.name + Language.StringByID(StringId.AlreadyOpened); |
| | | new PublicAssmebly().TipMsgAutoClose(msg, true); |
| | | Control.Send(function as Scene); |
| | | }; |
| | | |
| | | EventHandler<MouseEventArgs> eventHandler = (sender, e) => |
| | | { |
| | | //场景正在倒计时执行中,不允许再点击 |
| | | if (scene.LastExecutionTime == "" || Convert.ToDouble(scene.LastExecutionTime) + Convert.ToDouble(scene.delay) < Convert.ToDouble(Utlis.GetTimestamp(false))) |
| | | { |
| | | scene.LastExecutionTime = Utlis.GetTimestamp(false); |
| | | } |
| | | else |
| | | { |
| | | return; |
| | | } |
| | | string msg = scene.name + Language.StringByID(StringId.AlreadyOpened); |
| | | new PublicAssmebly().TipMsgAutoClose(msg, true); |
| | | Control.Ins.ControlScene(scene); |
| | | scene.SceneCountDown(btnShowDelay); |
| | | //new System.Threading.Thread(() => { |
| | | // int time = Convert.ToInt32(scene.delay); |
| | | // if (time > 0) |
| | | // { |
| | | // while (time > 0) |
| | | // { |
| | | // Application.RunOnMainThread(() => |
| | | // { |
| | | // if (time / 60 > 1) |
| | | // { |
| | | // btnShowDelay.Text = (time / 60).ToString() + "min"; |
| | | // } |
| | | // else |
| | | // { |
| | | // btnShowDelay.Text = (time--).ToString() + "s"; |
| | | // } |
| | | // }); |
| | | // if (time / 60 > 1) |
| | | // { |
| | | // System.Threading.Thread.Sleep(time / 60 * 60000); |
| | | // } |
| | | // else |
| | | // { |
| | | // System.Threading.Thread.Sleep(1000); |
| | | // } |
| | | // } |
| | | // Application.RunOnMainThread(() => |
| | | // { |
| | | // btnShowDelay.Text = ""; |
| | | // }); |
| | | // } |
| | | //}) |
| | | //{ IsBackground = true, Priority = System.Threading.ThreadPriority.BelowNormal }.Start(); |
| | | |
| | | }; |
| | | btnCoverd.MouseUpEventHandler = eventHandler; |
| | | btnName.MouseUpEventHandler = eventHandler; |
| | | btnZone.MouseUpEventHandler = eventHandler; |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | btnSwitch.IsSelected = !btnSwitch.IsSelected; |
| | | new System.Threading.Thread(() => |
| | | { |
| | | function.on_off = btnSwitch.IsSelected ? "on" : "off"; |
| | | Control.Send(CommandType_A.write, function); |
| | | function.trait_on_off.curValue = btnSwitch.IsSelected ? "on" : "off"; |
| | | Dictionary<string, string> d = new Dictionary<string, string>(); |
| | | if (function.spk == SPK.LightDimming || function.spk == SPK.LightRGB) |
| | | { |
| | | d.Add(FunctionAttributeKey.OnOff, function.trait_on_off.curValue.ToString()); |
| | | if (btnSwitch.IsSelected) |
| | | { |
| | | d.Add(FunctionAttributeKey.Brightness, function.lastBrightness.ToString()); |
| | | } |
| | | else |
| | | { |
| | | function.lastBrightness = Convert.ToInt32(function.GetAttrState(FunctionAttributeKey.Brightness)); |
| | | } |
| | | d.Add(FunctionAttributeKey.FadeTime, function.GetAttrState(FunctionAttributeKey.FadeTime)); |
| | | Control.Ins.SendWriteCommand(function, d); |
| | | } |
| | | else |
| | | { |
| | | d.Add("on_off", function.trait_on_off.curValue.ToString()); |
| | | Control.Ins.SendWriteCommand(function, d); |
| | | } |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | }; |
| | |
| | | /// </summary> |
| | | /// <param name="tV"></param> |
| | | /// <param name="button"></param> |
| | | void LoadEvent_ControlTV(TV tV,Button button) |
| | | void LoadEvent_ControlTV(Function tV, Button button) |
| | | { |
| | | button.MouseUpEventHandler = (sender, e) => { |
| | | tV.ControlTV(InfraredCode_TV.Power); |
| | | button.MouseUpEventHandler = (sender, e) => |
| | | { |
| | | if (DB_ResidenceData.Instance.GatewayType == 1) |
| | | { |
| | | Dictionary<string, string> d = new Dictionary<string, string>(); |
| | | d.Add("on_off", ""); |
| | | Control.Ins.SendWriteCommand(tV, d); |
| | | } |
| | | else |
| | | { |
| | | new TV().ControlTV(InfraredCode_TV.Power, tV); |
| | | } |
| | | }; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 加载窗帘控制事件 |
| | | /// </summary> |
| | | void LoadEvent_ControlCurtain(Curtain curtain, Button btnClose, Button btnOpen) |
| | | void LoadEvent_ControlCurtain(Function curtain, Button btnClose, Button btnOpen) |
| | | { |
| | | btnClose.MouseDownEventHandler = (sender, e) => |
| | | { |
| | | btnClose.IsSelected = true; |
| | | }; |
| | | btnClose.MouseUpEventHandler = (sender, e) => |
| | | { |
| | | btnClose.IsSelected = false; |
| | | curtain.on_off = "off"; |
| | | Control.Send(CommandType_A.write, curtain); |
| | | btnClose.IsSelected = true; |
| | | curtain.trait_on_off.curValue = "off"; |
| | | curtain.SetAttrState(FunctionAttributeKey.Percent, 0); |
| | | Dictionary<string, string> d = new Dictionary<string, string>(); |
| | | d.Add(FunctionAttributeKey.OnOff, curtain.trait_on_off.curValue.ToString()); |
| | | Control.Ins.SendWriteCommand(curtain, d); |
| | | }; |
| | | |
| | | btnOpen.MouseDownEventHandler = (sender, e) => |
| | | { |
| | | btnOpen.IsSelected = true; |
| | | }; |
| | | btnOpen.MouseUpEventHandler = (sender, e) => |
| | | { |
| | | btnOpen.IsSelected = false; |
| | | curtain.on_off = "on"; |
| | | Control.Send(CommandType_A.write, curtain); |
| | | btnOpen.IsSelected = true; |
| | | curtain.trait_on_off.curValue = "on"; |
| | | curtain.SetAttrState(FunctionAttributeKey.Percent, 100); |
| | | Dictionary<string, string> d = new Dictionary<string, string>(); |
| | | d.Add(FunctionAttributeKey.OnOff, curtain.trait_on_off.curValue.ToString()); |
| | | Control.Ins.SendWriteCommand(curtain, d); |
| | | }; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 加载晾衣架控制事件 |
| | | /// </summary> |
| | | void LoadEvent_ControlClothesHanger(Function function,Button btnUp,Button btnDown) |
| | | { |
| | | btnUp.MouseDownEventHandler = (sender, e) => |
| | | { |
| | | btnUp.IsSelected = true; |
| | | }; |
| | | btnUp.MouseUpEventHandler = (sender, e) => |
| | | { |
| | | new System.Threading.Thread(() => |
| | | { |
| | | System.Threading.Thread.Sleep(2000); |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | btnUp.IsSelected = false; |
| | | }); |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | function.SetAttrState(FunctionAttributeKey.Position, "up"); |
| | | Dictionary<string, string> d = new Dictionary<string, string>(); |
| | | d.Add(FunctionAttributeKey.Position, "up"); |
| | | Control.Ins.SendWriteCommand(function, d); |
| | | }; |
| | | |
| | | btnDown.MouseDownEventHandler = (sender, e) => |
| | | { |
| | | btnDown.IsSelected = true; |
| | | }; |
| | | btnDown.MouseUpEventHandler = (sender, e) => |
| | | { |
| | | new System.Threading.Thread(() => |
| | | { |
| | | System.Threading.Thread.Sleep(2000); |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | btnDown.IsSelected = false; |
| | | }); |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | function.SetAttrState(FunctionAttributeKey.Position, "down"); |
| | | Dictionary<string, string> d = new Dictionary<string, string>(); |
| | | d.Add(FunctionAttributeKey.Position, "down"); |
| | | Control.Ins.SendWriteCommand(function, d); |
| | | }; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 加载跳转信息中心页面 |
| | | /// </summary> |
| | | void LoadEvent_GotoMessageCenterPage() |
| | | { |
| | | EventHandler<MouseEventArgs> eventHandler = (sender, e) => |
| | | { |
| | | |
| | | //房间删除事件 |
| | | Action backAction = () => { |
| | | RegisterGetPushMessageAction(); |
| | | GetUnreadPushMessages(); |
| | | }; |
| | | |
| | | var skipPage = new MessageCenterPage(); |
| | | MainPage.BasePageView.AddChidren(skipPage); |
| | | skipPage.LoadPage(backAction); |
| | | MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; |
| | | }; |
| | | btnMsgBg.MouseUpEventHandler = eventHandler; |
| | | btnMsgTime.MouseUpEventHandler = eventHandler; |
| | | btnMsg.MouseUpEventHandler = eventHandler; |
| | | btnMsgIcon.MouseUpEventHandler = eventHandler; |
| | | } |
| | | |
| | | |
| | | #region 查询未读读消息列表 |
| | | /// <summary> |
| | | /// 是否正在读取 |
| | | /// </summary> |
| | | bool isGetting; |
| | | /// <summary> |
| | | /// 查询未读消息并显示 |
| | | /// </summary> |
| | | void GetUnreadPushMessages() |
| | | { |
| | | System.Threading.Tasks.Task.Run(() => |
| | | { |
| | | try |
| | | { |
| | | if (isGetting) return; |
| | | |
| | | isGetting = true; |
| | | |
| | | var result = new HttpServerRequest().PushSerivceGetPushmessagelist(); |
| | | if (result.Code == StateCode.SUCCESS) |
| | | { |
| | | //未读的消息列表 |
| | | var unreadList = new List<PushMessageInfo>(); |
| | | |
| | | var pushMessageInfoList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<PushMessageInfo>>(result.Data.ToString()); |
| | | |
| | | if (pushMessageInfoList != null && pushMessageInfoList.Count > 0) |
| | | { |
| | | foreach (var info in pushMessageInfoList) |
| | | { |
| | | if (!info.isRead) |
| | | { |
| | | unreadList.Add(info); |
| | | break; // 跳出循环 |
| | | } |
| | | } |
| | | |
| | | if (unreadList != null && unreadList.Count > 0) |
| | | { |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | ShowMesBtnState(unreadList[0], false); |
| | | }); |
| | | } |
| | | else |
| | | { |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | ShowMesBtnState(pushMessageInfoList[0], true); |
| | | }); |
| | | } |
| | | } |
| | | } |
| | | else |
| | | { |
| | | |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | } |
| | | finally |
| | | { |
| | | isGetting = false; |
| | | } |
| | | }); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 显示未读读消息 |
| | | /// </summary> |
| | | /// <param name="pushMessageInfo"></param> |
| | | /// <param name="allRead">所有都已读</param> |
| | | void ShowMesBtnState(PushMessageInfo pushMessageInfo, bool allRead) |
| | | { |
| | | if (bodyView == null) return; |
| | | btnMsg.Text = pushMessageInfo.messageTitle + ": " + pushMessageInfo.messageContent; |
| | | btnMsgTime.Text = GetUnixToDateTime(pushMessageInfo.createTime); |
| | | btnMsgIcon.IsSelected = !allRead; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 重置未读消息控件 |
| | | /// </summary> |
| | | void ResetMesBtnRead() |
| | | { |
| | | if (bodyView == null) return; |
| | | btnMsg.Text = "..."; |
| | | btnMsgTime.Text = "00:00"; |
| | | btnMsgIcon.IsSelected = false; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 时间格式转换处理 |
| | | /// </summary> |
| | | /// <param name="time">毫秒时间戳</param> |
| | | /// <returns></returns> |
| | | string GetUnixToDateTime(long time) |
| | | { |
| | | try |
| | | { |
| | | return Utlis.ToFriendlyDisplay(time); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return ""; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 注册收到推送监听 |
| | | /// </summary> |
| | | void RegisterGetPushMessageAction() |
| | | { |
| | | Action RegisterGetPushMessageAction = () => { |
| | | if (bodyView != null) |
| | | { |
| | | //Utlis.WriteLine("GetPushMessageAction H收到推送"); |
| | | GetUnreadPushMessages(); |
| | | } |
| | | }; |
| | | HDLCommon.GetPushMessageAction = RegisterGetPushMessageAction; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 取消收到推送监听 |
| | | /// </summary> |
| | | void UnregisterGetPushMessageAction() |
| | | { |
| | | HDLCommon.GetPushMessageAction = null; |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | } |
| | | } |