Beispiel #1
0
        /// <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));
        }
Beispiel #10
0
        /// <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();
        }
Beispiel #11
0
        /// <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;
        }
Beispiel #17
0
 /// <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;
        }