private void SelectDatatoShow(NoticeSys.NoticeDataEx ex) { string empty = string.Empty; string text = "0"; if (this.IsShowTimes(ex.apolloNoticeData.MsgID, ex.maxShowCount, out empty, out text)) { string value = string.Format("{0}_{1}", ex.apolloNoticeData.MsgID, text); this.SaveShowTime(empty, value); this.m_NoticeDataList.Add(ex); } }
public void OnOpenForm(ApolloNoticeInfo noticeInfo, NoticeSys.NOTICE_STATE noticeState) { this.m_CurState = noticeState; this.m_NoticeDataList = new ListView <NoticeSys.NoticeDataEx>(); this.m_MatchUrlAction.Clear(); ListView <NoticeSys.NoticeDataEx> listView = new ListView <NoticeSys.NoticeDataEx>(); int count = noticeInfo.DataList.get_Count(); for (int i = 0; i < count; i++) { ApolloNoticeData apolloNoticeData = noticeInfo.DataList.get_Item(i); if (apolloNoticeData.MsgType == APOLLO_NOTICETYPE.APO_NOTICETYPE_ALERT) { ListView <UrlAction> listView2 = UrlAction.ParseFromText(apolloNoticeData.ContentUrl, null); if (listView2.Count > 0 && listView2[0].action == UrlAction.Action.openMatchUrl) { this.m_MatchUrlAction.Add(listView2[0]); } else { NoticeSys.NoticeDataEx noticeDataEx = new NoticeSys.NoticeDataEx(); noticeDataEx.apolloNoticeData = apolloNoticeData; if (noticeState == NoticeSys.NOTICE_STATE.LOGIN_After) { if (apolloNoticeData.ContentType == APOLLO_NOTICE_CONTENTTYPE.APO_CONTENTTYPE_WEB && this.IsImageNotice(ref noticeDataEx)) { listView.Add(noticeDataEx); } else { this.m_NoticeDataList.Add(noticeDataEx); } } else { this.m_NoticeDataList.Add(noticeDataEx); } } } } this.InitImageShowTimes(); this.FiterImageNotice(listView); if (this.m_NoticeDataList.Count > 0) { this.ShowNoticeWindow(0); } else if (this.m_CurState == NoticeSys.NOTICE_STATE.LOGIN_After) { this.ShowOtherTips(); } }
private bool IsImageNotice(ref NoticeSys.NoticeDataEx ImageData) { NoticeSys.NoticeDataEx noticeDataEx = ImageData; string text = noticeDataEx.apolloNoticeData.MsgUrl; if (string.IsNullOrEmpty(text)) { return(false); } int num = text.IndexOf("&end"); int length = text.get_Length(); if (num > 0 && num + "&end".get_Length() == length) { return(false); } string[] array = text.Split(new char[] { '&' }); for (int i = 0; i < array.Length; i++) { if (array[i].IndexOf("Count=", 1) >= 0) { string text2 = array[i].Replace("Count=", string.Empty); if (!string.IsNullOrEmpty(text2)) { int.TryParse(text2, ref noticeDataEx.maxShowCount); } } else if (array[i].IndexOf("Mode=", 1) >= 0) { string text3 = array[i].Replace("Mode=", string.Empty); if (!string.IsNullOrEmpty(text3)) { int playMode = 0; int.TryParse(text3, ref playMode); noticeDataEx.playMode = (NoticeSys.NoticePlayMode)playMode; } } } if (num + "&end".get_Length() < length && num >= 0) { text = text.Substring(0, num + "&end".get_Length()); noticeDataEx.apolloNoticeData.MsgUrl = text; ImageData = noticeDataEx; return(true); } return(false); }
private void FiterImageNotice(ListView <NoticeSys.NoticeDataEx> datalist) { int count = datalist.Count; if (count > 0 && count <= 3) { for (int i = 0; i < count; i++) { NoticeSys.NoticeDataEx ex = datalist[i]; this.SelectDatatoShow(ex); } return; } datalist.Sort(new NoticeSys.CNoticeDataExAscendingHelper()); ListView <NoticeSys.NoticeDataEx> listView = new ListView <NoticeSys.NoticeDataEx>(); ListView <NoticeSys.NoticeDataEx> listView2 = new ListView <NoticeSys.NoticeDataEx>(); for (int j = 0; j < datalist.Count; j++) { NoticeSys.NoticeDataEx noticeDataEx = datalist[j]; if (noticeDataEx.playMode == NoticeSys.NoticePlayMode.Always) { string empty = string.Empty; string text = "0"; if (this.IsShowTimes(noticeDataEx.apolloNoticeData.MsgID, noticeDataEx.maxShowCount, out empty, out text)) { listView.Add(noticeDataEx); } } else if (noticeDataEx.playMode == NoticeSys.NoticePlayMode.Random) { string empty2 = string.Empty; string text2 = "0"; if (this.IsShowTimes(noticeDataEx.apolloNoticeData.MsgID, noticeDataEx.maxShowCount, out empty2, out text2)) { listView2.Add(noticeDataEx); } } } int count2 = listView.Count; int count3 = listView2.Count; if (count2 <= 3) { for (int k = 0; k < count2; k++) { NoticeSys.NoticeDataEx ex2 = listView[k]; this.SelectDatatoShow(ex2); } int num = 3 - count2; if (num > 0) { if (count3 <= num) { for (int l = 0; l < count3; l++) { NoticeSys.NoticeDataEx ex3 = listView2[l]; this.SelectDatatoShow(ex3); } } else { List <int> list = new List <int>(num); Random random = new Random(); while (list.get_Count() < num) { int num2 = random.Next(0, count3); if (!list.Contains(num2)) { list.Add(num2); } } for (int m = 0; m < list.get_Count(); m++) { int num3 = list.get_Item(m); if (num3 < count3) { NoticeSys.NoticeDataEx ex4 = listView2[num3]; this.SelectDatatoShow(ex4); } } } } } else { for (int n = 0; n < 3; n++) { if (n < count2) { NoticeSys.NoticeDataEx ex5 = listView[n]; this.SelectDatatoShow(ex5); } } } }