private void lstGeneralOverview_MouseDoubleClick(object sender, MouseEventArgs e) { if (lstGeneralOverview.SelectedItems.Count > 0) { ListViewItem listViewItem = lstGeneralOverview.SelectedItems[0]; foreach (TabPage rigPage in tbcMonitor.TabPages) { if (rigPage.Text == listViewItem.Group.Header) { tbcMonitor.SelectTab(rigPage); } if (listViewItem.Text != string.Empty) { foreach (object control in rigPage.Controls) { RigTab rigTab = control as RigTab; if (rigTab != null) { foreach (TabPage gpuPage in rigTab.tbcRig.TabPages) { if (gpuPage.Text.EndsWith( listViewItem.Text, StringComparison.Ordinal)) { rigTab.tbcRig.SelectTab(gpuPage); break; } } } } } } } }
private void UpdateGui() { lstGeneralOverview.BeginUpdate(); // Grabs all the selected items in the General Overview List int[] selectedIndexes = new int[lstGeneralOverview.SelectedIndices.Count]; if (lstGeneralOverview.SelectedIndices.Count > 0) { for (int i = 0; i < selectedIndexes.Length; i++) { selectedIndexes[i] = lstGeneralOverview.SelectedIndices[i]; } } // Completely refresh the General Overview List lstGeneralOverview.Items.Clear(); lstGeneralOverview.Groups.Clear(); foreach (RigController.Rig rig in _controller.RigLogs) { // Makes sure all rigs that are in the logs are shown in RigStats // And updates them bool tabPageExists = false; foreach (TabPage tabPage in tbcMonitor.TabPages) { if (tabPage.Text == rig.UserFriendlyName) { tabPageExists = true; } foreach (object control in tabPage.Controls) { RigTab rigTab = control as RigTab; if (rigTab != null) { rigTab.UpdateGui(); } } } if (!tabPageExists) { // Makes new tabpage in rigstats TabPage tabPage = new TabPage(rig.UserFriendlyName); RigTab rigTab = new RigTab(rig) { Dock = DockStyle.Fill }; rigTab.UpdateGui(); tabPage.Controls.Add(rigTab); tabPage.Dock = DockStyle.Fill; tbcMonitor.TabPages.Add(tabPage); } // Adds the controller info to the listview ListViewGroup lvg = new ListViewGroup(rig.UserFriendlyName); lstGeneralOverview.Groups.Add(lvg); ListViewItem lvi; foreach (GpuLogger gpu in rig.GpuLogs) { lvi = new ListViewItem(gpu.Info.MinerMap.ToString(CultureInfo.InvariantCulture), lvg); if (gpu.CurrentBenchmark.AvailableTimeStamps.Count == 0 || gpu.CurrentBenchmark.AvailableTimeStamps.Last().Available == false) { lvi.BackColor = Color.FromArgb(100, Color.Red); } lvi.SubItems.Add(gpu.Info.Name); lvi.SubItems.Add(string.Empty); if (gpu.CurrentBenchmark == null || gpu.CurrentBenchmark.CurrentStatistic == null) { lvi.SubItems.Add(string.Empty); lvi.SubItems.Add(string.Empty); lvi.SubItems.Add(string.Empty); lvi.SubItems.Add(string.Empty); lvi.SubItems.Add(string.Empty); lvi.SubItems.Add(string.Empty); lvi.SubItems.Add(string.Empty); } else { lvi.SubItems.Add(GuiHelper.GetRightMagnitude(gpu.CurrentBenchmark.CurrentStatistic.HarmonicAverageHashRate, "H")); lvi.SubItems.Add(GuiHelper.GetRightMagnitude(gpu.CurrentBenchmark.CurrentStatistic.StandardDeviation, "H")); lvi.SubItems.Add(GuiHelper.GetRightMagnitude(gpu.CurrentBenchmark.CurrentStatistic.TotalHashCount)); lvi.SubItems.Add(gpu.CurrentBenchmark.CurrentStatistic.Founds.ToString(CultureInfo.InvariantCulture)); lvi.SubItems.Add(string.Empty); lvi.SubItems.Add(string.Empty); lvi.SubItems.Add(gpu.CurrentBenchmark.SensorLog[gpu.CurrentBenchmark.SensorLog.Count - 1] .Temperature.ToString(CultureInfo.InvariantCulture) + " °C"); } lvi.SubItems.Add(string.Empty); lstGeneralOverview.Items.Add(lvi); } lvi = new ListViewItem(string.Empty, lvg); lvi.SubItems.Add("Total"); if (rig.CurrentStatistic == null) { lvi.SubItems.Add(string.Empty); lvi.SubItems.Add(string.Empty); lvi.SubItems.Add(string.Empty); lvi.SubItems.Add(string.Empty); lvi.SubItems.Add(string.Empty); lvi.SubItems.Add(string.Empty); lvi.SubItems.Add(string.Empty); lvi.SubItems.Add(string.Empty); lvi.SubItems.Add(string.Empty); } else { lvi.SubItems.Add(rig.CurrentStatistic.Algorithm); lvi.SubItems.Add(GuiHelper.GetRightMagnitude(rig.CurrentStatistic.TotalHashRate, "H")); lvi.SubItems.Add(GuiHelper.GetRightMagnitude(rig.CurrentStatistic.TotalStandardDeviation, "H")); lvi.SubItems.Add(GuiHelper.GetRightMagnitude(rig.CurrentStatistic.TotalHashCount)); lvi.SubItems.Add(string.Empty); lvi.SubItems.Add(rig.CurrentStatistic.Accepts.ToString(CultureInfo.InvariantCulture)); lvi.SubItems.Add(rig.CurrentStatistic.Rejects.ToString(CultureInfo.InvariantCulture)); lvi.SubItems.Add(string.Empty); lvi.SubItems.Add(rig.CurrentStatistic.ShareAnswerPing.ToString(CultureInfo.InvariantCulture)); } lstGeneralOverview.Items.Add(lvi); } // Restores all the previously selected items in the General Overview List if (lstGeneralOverview.Items.Count > 0) { foreach (int selectedIndex in selectedIndexes) { lstGeneralOverview.Items[selectedIndex].Selected = true; lstGeneralOverview.Select(); } } lstGeneralOverview.EndUpdate(); }