using System;
using System.Collections.Generic;
using System.Text;
namespace Shared.Phone.UserCenter
{
///
/// 消息中心控件
///
public class MessageManagementControl : ButtonBase
{
///
/// 消息中心控件
///
public MessageManagementControl()
{
this.Height = this.GetPictrueRealSize(69);
this.Width = this.GetPictrueRealSize(69);
this.UnSelectedImagePath = "Item/MessageManagement.png";
this.SelectedImagePath = "Item/MessageManagementSelected.png";
//如果住宅为虚拟住宅,则此功能无效
if (Common.Config.Instance.Home.IsVirtually == false)
{
this.ButtonClickEvent += (sender, e) =>
{
//点击后,清空状态
this.IsSelected = false;
ControlCommonResourse.HadNewMessage = false;
var form = new UserMain.MessageManagementForm();
form.AddForm();
};
//添加缓存
ControlCommonResourse.listMessageManaContr.Add(this);
//刷新状态
this.RefreshStatu();
}
}
///
/// 刷新状态(也就是如果数据有更新的话,会显示红色角标)
///
public void RefreshStatu()
{
//如果住宅为虚拟住宅,则此功能无效
if (Common.Config.Instance.Home.IsVirtually == true)
{
return;
}
if (ControlCommonResourse.HadNewMessage == true)
{
//如果已经有新消息过来了,就不用读了
ControlCommonResourse.ReadMessageAgain = false;
this.IsSelected = true;
return;
}
if (ControlCommonResourse.ReadMessageAgain == false)
{
//无需再次读取
return;
}
ControlCommonResourse.ReadMessageAgain = false;
HdlThreadLogic.Current.RunThread(() =>
{
string nowHomeId = Common.Config.Instance.Home.Id;
var pra = new MessageInfoPra();
pra.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
var result = UserCenterLogic.GetResponseDataByRequestHttps("MessageCenter/GetMessageCenterPagger", false, pra, new List() { "NotCheck" });
if (string.IsNullOrEmpty(result) == true)
{
//出错,需要重新读取
ControlCommonResourse.ReadMessageAgain = true;
return;
}
if (nowHomeId != Common.Config.Instance.Home.Id)
{
//检测:切换了住宅??
return;
}
var dataInfo = Newtonsoft.Json.JsonConvert.DeserializeObject(result);
for (int i = 0; i < dataInfo.PageData.Count; i++)
{
if (dataInfo.PageData[i].IsReading == false)
{
if (dataInfo.PageData[i].Topic == "/DoorLock/DoorLockOperatingEventNotificationCommand")
{
//暂时不处理这个主题
continue;
}
ControlCommonResourse.HadNewMessage = true;
Application.RunOnMainThread(() =>
{
//有新消息
this.IsSelected = true;
});
break;
}
}
});
}
///
/// 控件移除
///
public override void RemoveFromParent()
{
ControlCommonResourse.listMessageManaContr.Remove(this);
base.RemoveFromParent();
}
}
}