using System;
using System.Collections.Generic;
using HDL_ON.DAL.Server;
using HDL_ON.DriverLayer;
using HDL_ON.Entity;
using Shared;
namespace HDL_ON.UI
{
public partial class HomePage
{
///
/// 更新主页天气
///
public static void LoadEvent_RefreshAir()
{
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;
}
}
///
/// 更新室内传感器数据-湿度
///
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();
}
});
}
///
/// 更新室内传感器数据-晚点
///
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();
}
});
}
///
/// 更新功能列表主页
///
public static void RefreshFunctionView()
{
if (bodyView != null && MainPage.CurPageIndex==0)
{
bodyView.LoadDeviceFunctionControlZone();
}
}
///
/// 更新连接状态图标
///
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;
}
}
}
///
/// 确认连接状态
///
public static void LoadEvent_CheckLinkStatus()
{
Application.RunOnMainThread(() =>
{
if (bodyView != null)
{
bodyView.CheckLinkStatus();
}
});
}
///
/// 加载功能收藏按钮事件
///
void LoadEvent_FunctionCollection(Button btn, Function function)
{
btn.MouseUpEventHandler += (sender, e) =>
{
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);
LoadDeviceFunctionControlZone();
function.CollectFunction();
new PublicAssmebly().TipMsgAutoClose(msg, true);
};
}
///
/// 加载场景收藏按钮事件
///
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);
};
}
///
/// 修改显示的功能类型
/// 设备功能/场景功能
///
void LoadEvent_ChangeShowedFunctionType()
{
btnChangeFunction.MouseUpEventHandler = (sender, e) =>
{
btnChangeFunction.IsSelected = true;
btnChangeFunction.TextSize = CSS.CSS_FontSize.HeadlineFontSize;
btnChangeFunction.IsBold = true;
btnChangeScene.TextSize = CSS.CSS_FontSize.TextFontSize;
btnChangeScene.IsSelected = false;
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) =>
{
btnChangeScene.IsSelected = true;
btnChangeScene.TextSize = CSS.CSS_FontSize.HeadlineFontSize;
btnChangeScene.IsBold = true;
btnChangeFunction.TextSize = CSS.CSS_FontSize.TextFontSize;
btnChangeFunction.IsSelected = false;
btnChangeFunction.IsBold = false;
CurShowTypeIsFunction = false;
contentView.PageIndex = 1;
};
contentView.PageChange = (sender, e) =>
{
if (contentView.PageIndex == 0)
{
btnChangeFunction.IsSelected = true;
btnChangeFunction.TextSize = CSS.CSS_FontSize.HeadlineFontSize;
btnChangeFunction.IsBold = true;
btnChangeScene.TextSize = CSS.CSS_FontSize.TextFontSize;
btnChangeScene.IsSelected = false;
btnChangeScene.IsBold = false;
CurShowTypeIsFunction = true;
}
else
{
btnChangeScene.IsSelected = true;
btnChangeScene.TextSize = CSS.CSS_FontSize.HeadlineFontSize;
btnChangeScene.IsBold = true;
btnChangeFunction.TextSize = CSS.CSS_FontSize.TextFontSize;
btnChangeFunction.IsSelected = false;
btnChangeFunction.IsBold = false;
CurShowTypeIsFunction = false;
}
};
}
///
/// 更新显示状态
///
public static void UpdataFunctionStates(Function function)
{
Application.RunOnMainThread(() =>
{
try
{
if (bodyView != null)
{
foreach (var view in bodyView.functionViews)
{
if (view.Tag.ToString() == function.sid)
{
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))
{
var btn = view.GetChildren(i) as Button;
btn.IsSelected = state;
if (btn.Tag != null && btn.Tag.ToString() == "state")
{
if (function.Spk_Prefix == FunctionCategory.Music)
{
btn.Text = (function as Music.A31MusicModel).A31PlayStatus.Title;
}
else
{
if (function.spk != SPK.LightSwitch)
{
btn.Text = function.lastState;
}
}
}
}
}
}
}
}
}
catch (Exception ex)
{
MainPage.Log($"HomePage updata funciton states error {ex.Message}");
}
});
}
///
/// 加载场景控制事件
///
void LoadEvent_ControlScene(Button btnCoverd, Button btnName, Button btnZone,Button btnShowDelay, Scene scene)
{
EventHandler 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;
}
///
/// 加载灯光开关事件
///
///
///
void LoadEvent_SwitchFunction(Function function, Button btnSwitch)
{
btnSwitch.MouseUpEventHandler = (sender, e) =>
{
btnSwitch.IsSelected = !btnSwitch.IsSelected;
new System.Threading.Thread(() =>
{
function.trait_on_off.curValue = btnSwitch.IsSelected ? "on" : "off";
Dictionary d = new Dictionary();
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();
};
}
///
/// 加载电视控制事件
///
///
///
void LoadEvent_ControlTV(Function tV, Button button)
{
button.MouseUpEventHandler = (sender, e) =>
{
if (DB_ResidenceData.Instance.GatewayType == 1)
{
Dictionary d = new Dictionary();
d.Add("on_off", "");
Control.Ins.SendWriteCommand(tV, d);
}
else
{
new TV().ControlTV(InfraredCode_TV.Power, tV);
}
};
}
///
/// 加载窗帘控制事件
///
void LoadEvent_ControlCurtain(Function curtain, Button btnClose, Button btnOpen)
{
btnClose.MouseUpEventHandler = (sender, e) =>
{
btnClose.IsSelected = true;
curtain.trait_on_off.curValue = "off";
curtain.SetAttrState(FunctionAttributeKey.Percent, 0);
Dictionary d = new Dictionary();
d.Add(FunctionAttributeKey.OnOff, curtain.trait_on_off.curValue.ToString());
Control.Ins.SendWriteCommand(curtain, d);
};
btnOpen.MouseUpEventHandler = (sender, e) =>
{
btnOpen.IsSelected = true;
curtain.trait_on_off.curValue = "on";
curtain.SetAttrState(FunctionAttributeKey.Percent, 100);
Dictionary d = new Dictionary();
d.Add(FunctionAttributeKey.OnOff, curtain.trait_on_off.curValue.ToString());
Control.Ins.SendWriteCommand(curtain, d);
};
}
///
/// 加载晾衣架控制事件
///
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 d = new Dictionary();
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 d = new Dictionary();
d.Add(FunctionAttributeKey.Position, "down");
Control.Ins.SendWriteCommand(function, d);
};
}
///
/// 加载跳转信息中心页面
///
void LoadEvent_GotoMessageCenterPage()
{
EventHandler 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 查询未读读消息列表
///
/// 是否正在读取
///
bool isGetting;
///
/// 查询未读消息并显示
///
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();
var pushMessageInfoList = Newtonsoft.Json.JsonConvert.DeserializeObject>(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;
}
});
}
///
/// 显示未读读消息
///
///
/// 所有都已读
void ShowMesBtnState(PushMessageInfo pushMessageInfo, bool allRead)
{
if (bodyView == null) return;
btnMsg.Text = pushMessageInfo.messageTitle + ": " + pushMessageInfo.messageContent;
btnMsgTime.Text = GetUnixToDateTime(pushMessageInfo.createTime);
btnMsgIcon.IsSelected = !allRead;
}
///
/// 重置未读消息控件
///
void ResetMesBtnRead()
{
if (bodyView == null) return;
btnMsg.Text = "...";
btnMsgTime.Text = "00:00";
btnMsgIcon.IsSelected = false;
}
///
/// 时间格式转换处理
///
/// 毫秒时间戳
///
string GetUnixToDateTime(long time)
{
try
{
return Utlis.ToFriendlyDisplay(time);
}
catch (Exception ex)
{
return "";
}
}
///
/// 注册收到推送监听
///
void RegisterGetPushMessageAction()
{
Action RegisterGetPushMessageAction = () => {
if (bodyView != null)
{
//Utlis.WriteLine("GetPushMessageAction H收到推送");
GetUnreadPushMessages();
}
};
HDLCommon.GetPushMessageAction = RegisterGetPushMessageAction;
}
///
/// 取消收到推送监听
///
void UnregisterGetPushMessageAction()
{
HDLCommon.GetPushMessageAction = null;
}
#endregion
}
}