/// <summary> /// Formats the balance. /// </summary> private void FormatBalance() { lblBalance.Text = $"{Character.Balance:N} ISK"; CCPCharacter ccpCharacter = Character as CCPCharacter; Color balanceColor = m_settingsForeColor; if (ccpCharacter != null && !Settings.UI.SafeForWork) { IQueryMonitor marketMonitor = ccpCharacter.QueryMonitors[ ESIAPICharacterMethods.MarketOrders]; // Orange if orders could fail on margin if (!ccpCharacter.HasSufficientBalance && marketMonitor != null && marketMonitor.Enabled) { balanceColor = Color.Orange; } else if (ccpCharacter.Balance < 0) { // Red if negative wallet balanceColor = Color.Red; } } lblBalance.ForeColor = balanceColor; }
/// <summary> /// Formats the balance. /// </summary> private void FormatBalance() { if (m_character == null) { return; } BalanceLabel.Text = $"Balance: {m_character.Balance:N} ISK"; CCPCharacter ccpCharacter = m_character as CCPCharacter; if (ccpCharacter == null) { return; } IQueryMonitor marketMonitor = ccpCharacter.QueryMonitors[ESIAPICharacterMethods.MarketOrders]; if (!Settings.UI.SafeForWork && !ccpCharacter.HasSufficientBalance && marketMonitor != null && marketMonitor.Enabled) { BalanceLabel.ForeColor = Color.Orange; BalanceLabel.Font = FontFactory.GetFont(Font, FontStyle.Bold); return; } BalanceLabel.ForeColor = !Settings.UI.SafeForWork && m_character.Balance < 0 ? Color.Red : SystemColors.ControlText; BalanceLabel.Font = FontFactory.GetFont(Font); }
/// <summary> /// Updates the countdown. /// </summary> private void UpdateCountdown() { CCPCharacter ccpCharacter = m_character as CCPCharacter; if (ccpCharacter == null) { return; } IQueryMonitor nextMonitor = ccpCharacter.QueryMonitors.NextMonitorToBeUpdated; if (nextMonitor == null) { UpdateLabel.Text = String.Empty; return; } TimeSpan timeLeft = nextMonitor.NextUpdate.Subtract(DateTime.UtcNow); if (timeLeft <= TimeSpan.Zero) { UpdateLabel.Text = @"Pending..."; return; } if (UpdateThrobber.State == ThrobberState.Rotating) { return; } UpdateLabel.Text = $"{Math.Floor(timeLeft.TotalHours):#00}:{timeLeft.Minutes:d2}:{timeLeft.Seconds:d2}"; }
/// <summary> /// Handles the TimerTick event of the EveMonClient control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param> private void EveMonClient_TimerTick(object sender, EventArgs e) { IQueryMonitor charPlanetaryColoniesMonitor = m_ccpCharacter.QueryMonitors[ESIAPICharacterMethods.PlanetaryColonies]; if (charPlanetaryColoniesMonitor == null || !charPlanetaryColoniesMonitor.Enabled) { return; } UpdateOnTimerTick(); }
/// <summary> /// Creates the new monitor tool strip menu item. /// </summary> /// <param name="monitor">The monitor.</param> /// <returns>New menu item for a monitor.</returns> private static ToolStripMenuItem CreateNewMonitorToolStripMenuItem(IQueryMonitor monitor) { string menuText = String.Format(CultureConstants.DefaultCulture, "Update {0} {1}", monitor.ToString(), GenerateTimeToNextUpdateText(monitor)); var menu = new ToolStripMenuItem(menuText) { Tag = (object)monitor.Method, Enabled = !monitor.ForceUpdateWillCauseError }; return(menu); }
/// <summary> /// Gets the update status for a monitor. /// </summary> /// <param name="monitor">The monitor.</param> /// <returns>Status text for the monitor.</returns> private static string GetStatusForMonitor(IQueryMonitor monitor) { var output = new StringBuilder(); output.AppendFormat(CultureConstants.DefaultCulture, "{0}: ", monitor); if (monitor.Status == QueryStatus.Pending) { output.Append(GetDetailedStatusForMonitor(monitor)); return(output.ToString()); } output.Append(monitor.Status.GetDescription()); return(output.ToString()); }
/// <summary> /// Gets the update status for a monitor. /// </summary> /// <param name="monitor">The monitor.</param> /// <returns>Status text for the monitor.</returns> private static string GetStatusForMonitor(IQueryMonitor monitor) { StringBuilder output = new StringBuilder(); output.Append($"{monitor}: "); if (monitor.Status == QueryStatus.Pending) { output.Append(GetDetailedStatusForMonitor(monitor)); return(output.ToString()); } output.Append(monitor.Status.GetDescription()); return(output.ToString()); }
/// <summary> /// Handles the TimerTick event of the EveMonClient control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param> private void EveMonClient_TimerTick(object sender, EventArgs e) { IQueryMonitor charIndustryJobsMonitor = m_ccpCharacter.QueryMonitors.Any(x => (ESIAPICharacterMethods)x.Method == ESIAPICharacterMethods.IndustryJobs) ? m_ccpCharacter.QueryMonitors[ESIAPICharacterMethods.IndustryJobs] : null; IQueryMonitor corpIndustryJobsMonitor = m_ccpCharacter.QueryMonitors.Any(x => (ESIAPICorporationMethods)x.Method == ESIAPICorporationMethods. CorporationIndustryJobs) ? m_ccpCharacter.QueryMonitors[ ESIAPICorporationMethods.CorporationIndustryJobs] : null; if ((charIndustryJobsMonitor != null && charIndustryJobsMonitor.Enabled) || (corpIndustryJobsMonitor != null && corpIndustryJobsMonitor.Enabled)) { UpdateOnTimerTick(); } }
/// <summary> /// Gets the detailed status for monitor. /// </summary> /// <param name="monitor">The monitor.</param> /// <returns>Detailed status text for the monitor.</returns> private static string GetDetailedStatusForMonitor(IQueryMonitor monitor) { if (monitor.NextUpdate == DateTime.MaxValue) { return("Never"); } TimeSpan remainingTime = monitor.NextUpdate.Subtract(DateTime.UtcNow); if (remainingTime.Minutes < 1) { return("Less than a minute"); } return(remainingTime.ToDescriptiveText( DescriptiveTextOptions.FullText | DescriptiveTextOptions.SpaceText | DescriptiveTextOptions.SpaceBetween, false)); }
/// <summary> /// Handles the TimerTick event of the EveMonClient control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param> private void EveMonClient_TimerTick(object sender, EventArgs e) { IQueryMonitor charIndustryJobsMonitor = m_ccpCharacter.QueryMonitors.Any(x => (CCPAPICharacterMethods)x.Method == CCPAPICharacterMethods.IndustryJobs) ? m_ccpCharacter.QueryMonitors[CCPAPICharacterMethods.IndustryJobs] : null; IQueryMonitor corpIndustryJobsMonitor = m_ccpCharacter.QueryMonitors.Any( x => (CCPAPICorporationMethods)x.Method == CCPAPICorporationMethods.CorporationIndustryJobs) ? m_ccpCharacter.QueryMonitors[CCPAPICorporationMethods.CorporationIndustryJobs] : null; if ((charIndustryJobsMonitor == null || !charIndustryJobsMonitor.Enabled) && (corpIndustryJobsMonitor == null || !corpIndustryJobsMonitor.Enabled)) { return; } UpdateOnTimerTick(); }
/// <summary> /// Formats the balance. /// </summary> private void FormatBalance() { lblBalance.Text = $"{Character.Balance:N} ISK"; CCPCharacter ccpCharacter = Character as CCPCharacter; if (ccpCharacter == null) { return; } IQueryMonitor marketMonitor = ccpCharacter.QueryMonitors[CCPAPICharacterMethods.MarketOrders]; if (!Settings.UI.SafeForWork && !ccpCharacter.HasSufficientBalance && marketMonitor != null && marketMonitor.Enabled) { lblBalance.ForeColor = Color.Orange; return; } lblBalance.ForeColor = !Settings.UI.SafeForWork && ccpCharacter.Balance < 0 ? Color.Red : m_settingsForeColor; }
/// <summary> /// Generates text representing the time to next update. /// </summary> /// <param name="monitor">The monitor.</param> /// <returns>String describing the time until the next update.</returns> private static string GenerateTimeToNextUpdateText(IQueryMonitor monitor) { TimeSpan timeToNextUpdate = monitor.NextUpdate.Subtract(DateTime.UtcNow); if (timeToNextUpdate <= TimeSpan.Zero) { return("(Pending)"); } if (monitor.NextUpdate == DateTime.MaxValue) { return("(Never)"); } if (timeToNextUpdate.TotalMinutes >= 60) { return(String.Format(CultureConstants.DefaultCulture, "({0}h)", Math.Floor(timeToNextUpdate.TotalHours))); } return(String.Format(CultureConstants.DefaultCulture, "({0}m)", Math.Floor(timeToNextUpdate.TotalMinutes))); }
/// <summary> /// Generates text representing the time to next update. /// </summary> /// <param name="monitor">The monitor.</param> /// <returns>String describing the time until the next update.</returns> private static string GenerateTimeToNextUpdateText(IQueryMonitor monitor) { TimeSpan timeToNextUpdate = monitor.NextUpdate.Subtract(DateTime.UtcNow); if (monitor.Status == QueryStatus.Disabled) { return("(Disabled)"); } if (timeToNextUpdate <= TimeSpan.Zero) { return("(Pending)"); } if (monitor.NextUpdate == DateTime.MaxValue) { return("(Never)"); } return(timeToNextUpdate.TotalMinutes >= 60 ? $"(~{Math.Floor(timeToNextUpdate.TotalHours)}h)" : $"({Math.Floor(timeToNextUpdate.TotalMinutes)}m)"); }
/// <summary> /// Creates the new monitor toolstrip menu item. /// </summary> /// <param name="monitor">The monitor.</param> /// <returns>New menu item for a monitor.</returns> private static ToolStripMenuItem CreateNewMonitorToolStripMenuItem(IQueryMonitor monitor) { string menuText = $"Update {monitor} {GenerateTimeToNextUpdateText(monitor)}"; ToolStripMenuItem menu; ToolStripMenuItem tempMenu = null; try { tempMenu = new ToolStripMenuItem(menuText) { Tag = monitor.Method, Enabled = monitor.Enabled && monitor.HasAccess && monitor.CanForceUpdate }; menu = tempMenu; tempMenu = null; } finally { tempMenu?.Dispose(); } return(menu); }
/// <summary> /// Generates text representing the time to next update. /// </summary> /// <param name="monitor">The monitor.</param> /// <returns>String describing the time until the next update.</returns> private static string GenerateTimeToNextUpdateText(IQueryMonitor monitor) { TimeSpan timeToNextUpdate = monitor.NextUpdate.Subtract(DateTime.UtcNow); if (timeToNextUpdate <= TimeSpan.Zero) return "(Pending)"; if (monitor.NextUpdate == DateTime.MaxValue) return "(Never)"; if (timeToNextUpdate.TotalMinutes >= 60) return String.Format(CultureConstants.DefaultCulture, "({0}h)", Math.Floor(timeToNextUpdate.TotalHours)); return String.Format(CultureConstants.DefaultCulture, "({0}m)", Math.Floor(timeToNextUpdate.TotalMinutes)); }
/// <summary> /// Creates the new monitor toolstrip menu item. /// </summary> /// <param name="monitor">The monitor.</param> /// <returns>New menu item for a monitor.</returns> private static ToolStripMenuItem CreateNewMonitorToolStripMenuItem(IQueryMonitor monitor) { string menuText = $"Update {monitor} {GenerateTimeToNextUpdateText(monitor)}"; ToolStripMenuItem menu; ToolStripMenuItem tempMenu = null; try { tempMenu = new ToolStripMenuItem(menuText) { Tag = monitor.Method, Enabled = monitor.Enabled && monitor.HasAccess && monitor.CanForceUpdate }; menu = tempMenu; tempMenu = null; } finally { tempMenu?.Dispose(); } return menu; }
/// <summary> /// Forces an update on the selected query monitor. /// </summary> /// <param name="queryMonitor">The query monitor.</param> public void ForceUpdate(IQueryMonitor queryMonitor) { var monitor = m_monitors[queryMonitor.Method] as IQueryMonitorEx; monitor.ForceUpdate(false); }
/// <summary> /// Generates text representing the time to next update. /// </summary> /// <param name="monitor">The monitor.</param> /// <returns>String describing the time until the next update.</returns> private static string GenerateTimeToNextUpdateText(IQueryMonitor monitor) { TimeSpan timeToNextUpdate = monitor.NextUpdate.Subtract(DateTime.UtcNow); if (monitor.Status == QueryStatus.Disabled) return "(Disabled)"; if (timeToNextUpdate <= TimeSpan.Zero) return "(Pending)"; if (monitor.NextUpdate == DateTime.MaxValue) return "(Never)"; return timeToNextUpdate.TotalMinutes >= 60 ? $"(~{Math.Floor(timeToNextUpdate.TotalHours)}h)" : $"({Math.Floor(timeToNextUpdate.TotalMinutes)}m)"; }
/// <summary> /// Gets the update status for a monitor. /// </summary> /// <param name="monitor">The monitor.</param> /// <returns>Status text for the monitor.</returns> private static string GetStatusForMonitor(IQueryMonitor monitor) { StringBuilder output = new StringBuilder(); output.Append($"{monitor}: "); if (monitor.Status == QueryStatus.Pending) { output.Append(GetDetailedStatusForMonitor(monitor)); return output.ToString(); } output.Append(monitor.Status.GetDescription()); return output.ToString(); }
/// <summary> /// Gets the update status for a monitor. /// </summary> /// <param name="monitor">The monitor.</param> /// <returns>Status text for the monitor.</returns> private static string GetStatusForMonitor(IQueryMonitor monitor) { var output = new StringBuilder(); output.AppendFormat(CultureConstants.DefaultCulture, "{0}: ", monitor); if (monitor.Status == QueryStatus.Pending) { output.Append(GetDetailedStatusForMonitor(monitor)); return output.ToString(); } output.Append(monitor.Status.GetDescription()); return output.ToString(); }
/// <summary> /// Gets the detailed status for monitor. /// </summary> /// <param name="monitor">The monitor.</param> /// <returns>Detailed status text for the monitor.</returns> private static string GetDetailedStatusForMonitor(IQueryMonitor monitor) { if (monitor.NextUpdate == DateTime.MaxValue) return "Never"; var remainingTime = monitor.NextUpdate.Subtract(DateTime.UtcNow); if (remainingTime.Minutes > 0) { return remainingTime.ToDescriptiveText( DescriptiveTextOptions.FullText | DescriptiveTextOptions.SpaceText | DescriptiveTextOptions.SpaceBetween, false); } else { return "Less than a minute"; } }
/// <summary> /// Creates the new monitor tool strip menu item. /// </summary> /// <param name="monitor">The monitor.</param> /// <returns>New menu item for a monitor.</returns> private static ToolStripMenuItem CreateNewMonitorToolStripMenuItem(IQueryMonitor monitor) { string menuText = String.Format(CultureConstants.DefaultCulture, "Update {0} {1}", monitor.ToString(), GenerateTimeToNextUpdateText(monitor)); var menu = new ToolStripMenuItem(menuText) { Tag = (object)monitor.Method, Enabled = !monitor.ForceUpdateWillCauseError }; return menu; }