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_CheckLinkStatus()
{
if (bodyView != null)
{
Application.RunOnMainThread(() =>
{
if (Control.Ins.GatewayOnline)
{
if (Control.Ins.IsRemote)
{
bodyView.btnLinkStateTip.BackgroundColor = CSS.CSS_Color.LinkTipRemote;
}
else
{
bodyView.btnLinkStateTip.BackgroundColor = CSS.CSS_Color.MainColor;
}
}
else
{
bodyView.btnLinkStateTip.BackgroundColor = CSS.CSS_Color.LinkTipFail;
}
});
}
}
///
/// 加载功能收藏按钮事件
///
void LoadEvent_FunctionCollection(Button btn, Function function)
{
btn.MouseUpEventHandler += (sender, e) =>
{
function.collect = false;
if (function.functionCategory == 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.SaveFunctionData(true);
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.SaveSceneData(true);
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;
};
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 = 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.functionCategory == FunctionCategory.Music)
{
btn.Text = (function as Music.A31MusicModel).A31PlayStatus.Title;
}
else
{
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, Scene scene)
{
EventHandler eventHandler = (sender, e) =>
{
string msg = scene.name + Language.StringByID(StringId.AlreadyOpened);
new PublicAssmebly().TipMsgAutoClose(msg, true);
Control.Ins.ControlScene(scene);
};
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";
System.Collections.Generic.Dictionary d = new System.Collections.Generic.Dictionary();
d.Add("on_off", function.trait_on_off.curValue.ToString());
Control.Ins.SendWriteCommand(function, d);
})
{ IsBackground = true }.Start();
};
}
///
/// 加载电视控制事件
///
///
///
void LoadEvent_ControlTV(TV tV, Button button)
{
button.MouseUpEventHandler = (sender, e) =>
{
tV.ControlTV(InfraredCode_TV.Power);
};
}
///
/// 加载窗帘控制事件
///
void LoadEvent_ControlCurtain(Curtain curtain, Button btnClose, Button btnOpen)
{
btnClose.MouseDownEventHandler = (sender, e) =>
{
btnClose.IsSelected = true;
};
btnClose.MouseUpEventHandler = (sender, e) =>
{
btnClose.IsSelected = false;
curtain.trait_on_off.curValue = "off";
curtain.percent = 0;
System.Collections.Generic.Dictionary d = new System.Collections.Generic.Dictionary();
d.Add("on_off", 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.trait_on_off.curValue = "on";
curtain.percent = 100;
System.Collections.Generic.Dictionary d = new System.Collections.Generic.Dictionary();
d.Add("on_off", curtain.trait_on_off.curValue.ToString());
Control.Ins.SendWriteCommand(curtain, d);
};
}
///
/// 加载跳转信息中心页面
///
void LoadEvent_GotoMessageCenterPage()
{
EventHandler eventHandler = (sender, e) =>
{
//房间删除事件
Action backAction = () => {
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.UnixToDateTimeWithFormatMS(time, "HH:mm");
}
catch (Exception ex)
{
return "";
}
}
#endregion
}
}