void webClient2_DownloadDataCompleted(object sender, DownloadDataCompletedEventArgs e) { if (this.IsDisposed) { return; } if (e.Cancelled) { return; } UserRanklist currentRank = null; try { if (e.Error != null) { throw e.Error; } string result = System.Text.Encoding.UTF8.GetString(e.Result); if (worldRanks != null) { worldRanks.Clear(); } worldRanks = JsonConvert.DeserializeObject <List <UserRanklist> >(result); foreach (UserRanklist usub in worldRanks) { if (LocalDatabase.ContainsUser(usub.username)) { RegistryAccess.SetUserRank(usub); if (usub.username == currentUser.uname) { currentRank = usub; } } } worldRanklist.SetObjects(worldRanks); worldRanklist.Sort(rankRANK, SortOrder.Ascending); Interactivity.SetStatus(currentUser.uname + "'s rank-list downloaded."); Logger.Add("World rank downloaded - " + currentUser.uname, "World Rank | webClient2_DownloadDataCompleted"); } catch (Exception ex) { TaskQueue.AddTask(new TaskQueue.Function2(ShowWorldRank), e.UserState, 500); Interactivity.SetStatus("Rank-list download failed due to an error. Please try again."); Logger.Add(ex.Message, "World Rank | webClient2_DownloadDataCompleted"); } if ((int)e.UserState == -1) { BringUserToMiddle(currentRank); } }
private void worldRanklist_HyperlinkClicked(object sender, BrightIdeasSoftware.HyperlinkClickedEventArgs e) { if (e.Column == usernameRANK) { UserRanklist js = (UserRanklist)e.Model; usernameBox.Text = js.username; usernameBox.Focus(); } }
private void BringUserToMiddle(UserRanklist usub) { if (usub == null) { return; } int midpt = worldRanklist.Height / 2; int item = worldRanklist.GetItemAt(1, midpt).Index; int indx = worldRanklist.IndexOf(usub); for (int i = indx; i < worldRanklist.GetItemCount() && indx > item; ++i) { worldRanklist.EnsureVisible(i); item = worldRanklist.GetItemAt(1, midpt).Index; } }
private void ProcessList() { if (currentUser == null) { currentUser = new UserInfo(); currentUser.uid = currentUser.uname = currentUser.name = "[-]"; currentUser.subs = new List <List <long> >(); currentUser.Process(); } userRank = RegistryAccess.GetUserRank(currentUser.uname); if (userRank == null) { userRank = new UserRanklist(); userRank.username = currentUser.uname; userRank.rank = 0; userRank.activity = new List <long>(); for (int i = 0; i < 5; ++i) { userRank.activity.Add(0); } } _acOverTime.Clear(); _subOverTime.Clear(); _RankCount.Clear(); _firstSub = long.MaxValue; _solvedCount = _unsolvedCount = _tryCount = _totalSubmission = 0; _subInAnsiC = _subInCPP = _subInCPP11 = _subInJava = _subInPascal = 0; _acCount = _waCount = _tleCount = _reCount = _peCount = 0; _ceCount = _oleCount = _subeCount = _mleCount = 0; List <long> solved = new List <long>(); foreach (UserSubmission usub in currentUser.submissions) { //total submission count _totalSubmission++; //age meter if (_firstSub > usub.sbt) { _firstSub = usub.sbt; } //add rank count if (usub.IsAccepted()) { _RankCount.Add(usub.rank, usub.pid); //solve count if (!solved.Contains(usub.pnum)) { _solvedCount++; solved.Add(usub.pnum); } } //language switch ((Language)usub.lan) { case Language.C: _subInAnsiC++; break; case Language.Java: _subInJava++; break; case Language.Pascal: _subInPascal++; break; case Language.CPP: _subInCPP++; break; case Language.CPP11: _subInCPP11++; break; } //submissionPerTime double xval = new ZedGraph.XDate(UnixTimestamp.FromUnixTime(usub.sbt)); if (_totalSubmission == 1) { _subOverTime.Add(xval, 0); } _subOverTime.Add(xval, _totalSubmission); _acOverTime.Add(xval, _solvedCount); //verdict switch ((Verdict)usub.ver) { case Structures.Verdict.CompileError: _ceCount++; break; case Structures.Verdict.RuntimeError: _reCount++; break; case Structures.Verdict.OutputLimit: _oleCount++; break; case Structures.Verdict.TimLimit: _tleCount++; break; case Structures.Verdict.MemoryLimit: _mleCount++; break; case Structures.Verdict.WrongAnswer: _waCount++; break; case Structures.Verdict.PresentationError: _peCount++; break; case Structures.Verdict.Accepted: _acCount++; break; } } //finalize _tryCount = currentUser.TryList.Count; _unsolvedCount = _tryCount - _solvedCount; _subOverTime.Add(new ZedGraph.XDate(DateTime.Now), _totalSubmission); _acOverTime.Add(new ZedGraph.XDate(DateTime.Now), _solvedCount); }
private void worldRanklist_FormatCell(object sender, BrightIdeasSoftware.FormatCellEventArgs e) { if (e.Model == null) { return; } //change back-color of known users UserRanklist js = (UserRanklist)e.Model; if (js.username == RegistryAccess.DefaultUsername) { for (int i = 0; i < e.Item.SubItems.Count; ++i) { e.Item.SubItems[i].BackColor = Color.Turquoise; } } else if (LocalDatabase.ContainsUser(js.username)) { for (int i = 0; i < e.Item.SubItems.Count; ++i) { e.Item.SubItems[i].BackColor = Color.LightBlue; } } //format other cells string font = "Segoe UI"; float size = 9.0F; FontStyle style = FontStyle.Regular; Color fore = Color.Black; if (e.Column == rankRANK) { font = "Consolas"; fore = Color.Teal; } else if (e.Column == usernameRANK) { fore = Color.Blue; } else if (e.Column == nameRANK) { font = "Segoe UI Semibold"; } else if (e.Column == acRANK) { font = "Consolas"; fore = Color.Navy; } else if (e.Column == nosRANK) { font = "Consolas"; fore = Color.Maroon; } else { return; } e.SubItem.ForeColor = fore; e.SubItem.Font = new Font(font, size, style); }