using System;
using System.Collections.Generic;
using System.Text;
namespace Shared.Phone
{
///
/// 消息中心控件
///
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;
HdlControlResourse.HadNewMessage = false;
var form = new UserCenter.UserMain.MessageManagementForm();
form.AddForm();
};
//添加缓存
HdlControlResourse.listMessageManaContr.Add(this);
//刷新状态
this.RefreshStatu();
}
}
///
/// 刷新状态(也就是如果数据有更新的话,会显示红色角标)
///
public void RefreshStatu()
{
//如果住宅为虚拟住宅,则此功能无效
if (Common.Config.Instance.Home.IsVirtually == true)
{
return;
}
if (HdlControlResourse.HadNewMessage == true)
{
//如果已经有新消息过来了,就不用读了
HdlControlResourse.ReadMessageAgain = false;
this.IsSelected = true;
return;
}
if (HdlControlResourse.ReadMessageAgain == false)
{
//无需再次读取
return;
}
HdlControlResourse.ReadMessageAgain = false;
HdlThreadLogic.Current.RunThread(() =>
{
//获取消息列表
string nowHomeId = Common.Config.Instance.Home.Id;
var listMsg = HdlMessageLogic.Current.GetListMessageFromDb();
if (listMsg == null)
{
//出错,需要重新读取
HdlControlResourse.ReadMessageAgain = true;
return;
}
if (nowHomeId != Common.Config.Instance.Home.Id)
{
//检测:切换了住宅??
return;
}
for (int i = 0; i < listMsg.Count; i++)
{
if (listMsg[i].IsRead == false)
{
if (listMsg[i].MessageTitle == "/DoorLock/DoorLockOperatingEventNotificationCommand")
{
//暂时不处理这个主题
continue;
}
HdlControlResourse.HadNewMessage = true;
HdlThreadLogic.Current.RunMain(() =>
{
//有新消息
this.IsSelected = true;
}, ShowErrorMode.NO);
break;
}
}
});
}
///
/// 控件移除
///
public override void RemoveFromParent()
{
HdlControlResourse.listMessageManaContr.Remove(this);
base.RemoveFromParent();
}
}
}