Exemplo n.º 1
0
        public void Add(MissionState ms, bool previousmissions, string search)
        {
            bool show = true;

            if (panelButtons.Visible)
            {
                DateTime startdateutc = customDateTimePickerStart.Checked ? EDDConfig.Instance.ConvertTimeToUTCFromSelected(customDateTimePickerStart.Value) : new DateTime(1980, 1, 1);
                DateTime enddateutc   = customDateTimePickerEnd.Checked ? EDDConfig.Instance.ConvertTimeToUTCFromSelected(customDateTimePickerEnd.Value) : new DateTime(8999, 1, 1);
                show = DateTime.Compare(ms.Mission.EventTimeUTC, startdateutc) >= 0 && DateTime.Compare(ms.Mission.EventTimeUTC, enddateutc) <= 0;
            }

            if (show)
            {
                string[] rowobj = { JournalFieldNaming.ShortenMissionName(ms.Mission.LocalisedName),
                                    EDDConfig.Instance.ConvertTimeToSelectedFromUTC(ms.Mission.EventTimeUTC).ToString(),
                                    EDDConfig.Instance.ConvertTimeToSelectedFromUTC(ms.Mission.Expiry).ToString(),
                                    ms.OriginatingSystem + ": " + ms.OriginatingStation,
                                    ms.Mission.Faction,
                                    ms.DestinationSystemStation(),
                                    ms.Mission.TargetFaction,
                                    previousmissions ? ms.StateText : ms.Mission.Reward.GetValueOrDefault().ToString("N0"),
                                    ms.MissionInfoColumn() };

                if (search.HasChars())
                {
                    if (Array.Find(rowobj, x => x.Contains(search, StringComparison.InvariantCultureIgnoreCase)) == null)
                    {
                        return;
                    }
                }

                if (ms.State == MissionState.StateTypes.Abandoned)
                {
                    abandonded++;
                }
                else if (ms.State == MissionState.StateTypes.Completed)
                {
                    completed++;
                }
                else if (ms.State == MissionState.StateTypes.Failed)
                {
                    failed++;
                }

                if (previousmissions)
                {
                    totalreward += ms.Value;
                }
                else if (ms.Mission.Reward.HasValue)
                {
                    totalreward += ms.Mission.Reward.Value;
                }

                var row = dataGridView.RowTemplate.Clone() as DataGridViewRow;
                row.CreateCells(dataGridView, rowobj);
                row.Tag = ms;
                dataGridView.Rows.Add(row);
            }
        }
Exemplo n.º 2
0
        private JArray MissionInfo(MissionState ms, bool previousmissions)
        {
            JArray e = new JArray
            {
                JournalFieldNaming.ShortenMissionName(ms.Mission.LocalisedName),
                EDDConfig.Instance.ConvertTimeToSelectedFromUTC(ms.Mission.EventTimeUTC).ToString(),
                EDDConfig.Instance.ConvertTimeToSelectedFromUTC(ms.Mission.Expiry).ToString(),
                ms.OriginatingSystem + ": " + ms.OriginatingStation,
                ms.Mission.Faction,
                ms.DestinationSystemStation(),
                ms.Mission.TargetFaction,
                previousmissions ? ms.StateText : ms.Mission.Reward.GetValueOrDefault().ToString("N0"),
                ms.MissionInfoColumn()
            };

            return(e);
        }
Exemplo n.º 3
0
        private void Display(HistoryEntry he, HistoryList hl, bool selectedEntry)
        {
            //System.Diagnostics.Debug.WriteLine("SI:Display ");

            if (neverdisplayed)
            {
                UpdateViewOnSelection();  // then turn the right ones on
                neverdisplayed = false;
            }

            last_he = he;

            if (last_he != null)
            {
                SetControlText(he.System.Name);

                HistoryEntry lastfsd = hl.GetLastHistoryEntry(x => x.journalEntry is EliteDangerousCore.JournalEvents.JournalFSDJump, he);

                textBoxSystem.Text      = he.System.Name;
                panelFD.BackgroundImage = (lastfsd != null && (lastfsd.journalEntry as EliteDangerousCore.JournalEvents.JournalFSDJump).EDSMFirstDiscover) ? EDDiscovery.Icons.Controls.firstdiscover : EDDiscovery.Icons.Controls.notfirstdiscover;

                discoveryform.history.FillEDSM(he); // Fill in any EDSM info we have

                //textBoxBody.Text = he.WhereAmI + ((he.IsInHyperSpace) ? " (HS)": "");
                textBoxBody.Text = he.WhereAmI + " (" + he.BodyType + ")";

                if (he.System.HasCoordinate)         // cursystem has them?
                {
                    string SingleCoordinateFormat = "0.##";

                    string separ = System.Globalization.CultureInfo.CurrentCulture.NumberFormat.NumberGroupSeparator + " ";

                    textBoxPosition.Text = he.System.X.ToString(SingleCoordinateFormat) + separ + he.System.Y.ToString(SingleCoordinateFormat) + separ + he.System.Z.ToString(SingleCoordinateFormat);

                    ISystem homesys = EDCommander.Current.HomeSystemIOrSol;

                    textBoxHomeDist.Text = he.System.Distance(homesys).ToString(SingleCoordinateFormat);
                    textBoxSolDist.Text  = he.System.Distance(0, 0, 0).ToString(SingleCoordinateFormat);
                }
                else
                {
                    textBoxPosition.Text = "?";
                    textBoxHomeDist.Text = "";
                    textBoxSolDist.Text  = "";
                }

                int count = discoveryform.history.GetVisitsCount(he.System.Name);
                textBoxVisits.Text = count.ToString();

                bool enableedddross = (he.System.EDDBID > 0);  // Only enable eddb/ross for system that it knows about

                buttonRoss.Enabled = buttonEDDB.Enabled = enableedddross;

                string allegiance, economy, gov, faction, factionstate, security;
                hl.ReturnSystemInfo(he, out allegiance, out economy, out gov, out faction, out factionstate, out security);

                textBoxAllegiance.Text = allegiance;
                textBoxEconomy.Text    = economy;
                textBoxGovernment.Text = gov;
                textBoxState.Text      = factionstate;

                List <MissionState> mcurrent = (from MissionState ms in he.MissionList.Missions.Values where ms.InProgressDateTime(last_he.EventTimeUTC) orderby ms.Mission.EventTimeUTC descending select ms).ToList();

                if (mcurrent == null || mcurrent.Count == 0)
                {
                    richTextBoxScrollMissions.Text = "No Missions".T(EDTx.UserControlSysInfo_NoMissions);
                }
                else
                {
                    string t = "";
                    foreach (MissionState ms in mcurrent)
                    {
                        t = ObjectExtensionsStrings.AppendPrePad(t,
                                                                 JournalFieldNaming.ShortenMissionName(ms.Mission.Name)
                                                                 + " Exp:" + (EDDiscoveryForm.EDDConfig.DisplayUTC ? ms.Mission.Expiry : ms.Mission.Expiry.ToLocalTime())
                                                                 + " @ " + ms.DestinationSystemStation(),
                                                                 Environment.NewLine);
                    }

                    richTextBoxScrollMissions.Text = t;
                }

                SetNote(he.snc != null ? he.snc.Note : "");
                textBoxGameMode.Text = he.GameModeGroup;
                if (he.isTravelling)
                {
                    textBoxTravelDist.Text  = he.TravelledDistance.ToStringInvariant("0.0") + "ly";
                    textBoxTravelTime.Text  = he.TravelledSeconds.ToString();
                    textBoxTravelJumps.Text = he.TravelledJumpsAndMisses;
                }
                else
                {
                    textBoxTravelDist.Text = textBoxTravelTime.Text = textBoxTravelJumps.Text = "";
                }

                int cc = (he.ShipInformation) != null?he.ShipInformation.CargoCapacity() : 0;

                if (cc > 0)
                {
                    textBoxCargo.Text = he.MaterialCommodity.CargoCount.ToStringInvariant() + "/" + cc.ToStringInvariant();
                }
                else
                {
                    textBoxCargo.Text = he.MaterialCommodity.CargoCount.ToStringInvariant();
                }

                textBoxMaterials.Text = he.MaterialCommodity.MaterialsCount.ToStringInvariant();
                textBoxData.Text      = he.MaterialCommodity.DataCount.ToStringInvariant();
                textBoxCredits.Text   = he.Credits.ToString("N0");

                textBoxJumpRange.Text = "";

                if (he.ShipInformation != null)
                {
                    ShipInformation si = he.ShipInformation;

                    textBoxShip.Text = si.ShipFullInfo(cargo: false, fuel: false);
                    if (si.FuelCapacity > 0 && si.FuelLevel > 0)
                    {
                        textBoxFuel.Text = si.FuelLevel.ToStringInvariant("0.#") + "/" + si.FuelCapacity.ToStringInvariant("0.#");
                    }
                    else if (si.FuelCapacity > 0)
                    {
                        textBoxFuel.Text = si.FuelCapacity.ToStringInvariant("0.#");
                    }
                    else
                    {
                        textBoxFuel.Text = "N/A".T(EDTx.UserControlSysInfo_NA);
                    }

                    EliteDangerousCalculations.FSDSpec fsd = si.GetFSDSpec();
                    if (fsd != null)
                    {
                        EliteDangerousCalculations.FSDSpec.JumpInfo ji = fsd.GetJumpInfo(he.MaterialCommodity.CargoCount,
                                                                                         si.ModuleMass() + si.HullMass(), si.FuelLevel, si.FuelCapacity / 2);

                        //System.Diagnostics.Debug.WriteLine("Jump range " + si.FuelLevel + " " + si.FuelCapacity + " " + ji.cursinglejump);
                        textBoxJumpRange.Text = ji.cursinglejump.ToString("N2") + "ly";
                    }
                }
                else
                {
                    textBoxShip.Text = textBoxFuel.Text = "";
                }

                RefreshTargetDisplay(this);
            }
            else
            {
                SetControlText("");
                textBoxSystem.Text                = textBoxBody.Text = textBoxPosition.Text =
                    textBoxAllegiance.Text        = textBoxEconomy.Text = textBoxGovernment.Text =
                        textBoxVisits.Text        = textBoxState.Text = textBoxHomeDist.Text = textBoxSolDist.Text =
                            textBoxGameMode.Text  = textBoxTravelDist.Text = textBoxTravelTime.Text = textBoxTravelJumps.Text =
                                textBoxCargo.Text = textBoxMaterials.Text = textBoxData.Text = textBoxShip.Text = textBoxFuel.Text =
                                    "";

                buttonRoss.Enabled = buttonEDDB.Enabled = false;
                SetNote("");
            }
        }
        private void Display()
        {
            MissionList ml = last_he?.MissionList;

            dataGridViewCurrent.Rows.Clear();
            dataGridViewPrevious.Rows.Clear();

            if (ml != null)
            {
                DateTime hetime = last_he.EventTimeUTC;

                List <MissionState> mcurrent = (from MissionState ms in ml.Missions.Values where ms.InProgressDateTime(hetime) orderby ms.Mission.EventTimeUTC descending select ms).ToList();

                var totalReward = 0;
                foreach (MissionState ms in mcurrent)
                {
                    object[] rowobj = { JournalFieldNaming.ShortenMissionName(ms.Mission.Name),
                                        EDDiscoveryForm.EDDConfig.DisplayUTC ? ms.Mission.EventTimeUTC : ms.Mission.EventTimeLocal,
                                        EDDiscoveryForm.EDDConfig.DisplayUTC ? ms.Mission.Expiry : ms.Mission.Expiry.ToLocalTime(),
                                        ms.OriginatingSystem + ":" + ms.OriginatingStation,
                                        ms.Mission.Faction,
                                        ms.DestinationSystemStation(),
                                        ms.Mission.TargetFaction,
                                        ms.Mission.Reward.GetValueOrDefault().ToString("N0"),
                                        ms.Info() };

                    if (ms.Mission.Reward.HasValue)
                    {
                        totalReward += ms.Mission.Reward.Value;
                    }

                    int rowno = dataGridViewCurrent.Rows.Add(rowobj);
                    dataGridViewCurrent.Rows[rowno].Tag = ms;
                }

                int count = mcurrent.Count();

                cColName.HeaderText  = (count > 0) ? (count.ToStringInvariant() + (count > 1 ? " Missions" : " Mission")) : "Name";
                cColValue.HeaderText = (totalReward != 0) ? $"Value (cr):\n{totalReward:N0}" : "Value (cr)";

//                cColValue.HeaderText = (count>0) ? (count.ToStringInvariant() + (count > 1 ? " Missions" : " Mission") + (totalReward>0 ? $", {totalReward:N0}" : "")) : "Value";

                List <MissionState> mprev = (from MissionState ms in ml.Missions.Values where !ms.InProgressDateTime(hetime) orderby ms.Mission.EventTimeUTC descending select ms).ToList();

                DateTime startdate = customDateTimePickerStart.Checked ? customDateTimePickerStart.Value : new DateTime(1980, 1, 1);
                DateTime enddate   = customDateTimePickerEnd.Checked ? customDateTimePickerEnd.Value : new DateTime(2999, 1, 1);

                long value = 0;
                int  completed = 0, abandonded = 0, failed = 0;

                foreach (MissionState ms in mprev)
                {
                    int cmps = EDDiscoveryForm.EDDConfig.DisplayUTC ? DateTime.Compare(ms.Mission.EventTimeUTC, startdate) : DateTime.Compare(ms.Mission.EventTimeLocal, startdate);

                    //System.Diagnostics.Debug.WriteLine(ms.Mission.EventTimeUTC.ToString() + " " + startdate.ToString() + " " + cmps);
                    if (cmps >= 0)
                    {
                        int cmpe = EDDiscoveryForm.EDDConfig.DisplayUTC ? DateTime.Compare(ms.Mission.EventTimeUTC, enddate) : DateTime.Compare(ms.Mission.EventTimeLocal, enddate);

                        if (cmpe <= 0)
                        {
                            if (ms.State == MissionState.StateTypes.Abandoned)
                            {
                                abandonded++;
                            }
                            else if (ms.State == MissionState.StateTypes.Completed)
                            {
                                completed++;
                            }
                            else if (ms.State == MissionState.StateTypes.Failed)
                            {
                                failed++;
                            }

                            object[] rowobj = { JournalFieldNaming.ShortenMissionName(ms.Mission.Name),
                                                EDDiscoveryForm.EDDConfig.DisplayUTC ? ms.Mission.EventTimeUTC : ms.Mission.EventTimeLocal,
                                                EDDiscoveryForm.EDDConfig.DisplayUTC ? ms.MissionEndTime : ms.MissionEndTime.ToLocalTime(),
                                                ms.OriginatingSystem + ":" + ms.OriginatingStation,
                                                ms.Mission.Faction,
                                                ms.DestinationSystemStation(),
                                                ms.Mission.TargetFaction,
                                                ms.StateText,
                                                ms.Info() };

                            int rowno = dataGridViewPrevious.Rows.Add(rowobj);
                            dataGridViewPrevious.Rows[rowno].Tag = ms;

                            value += ms.Value;
                        }
                    }
                }

                labelValue.Visible = (value != 0);
                labelValue.Text    = "Value: " + value.ToStringInvariant() + " C:" + completed.ToStringInvariant() + " A:" + abandonded.ToStringInvariant() + " F:" + failed.ToStringInvariant();
            }
        }
Exemplo n.º 5
0
        private void Display(HistoryEntry he)
        {
            currentHE = he;

            MissionList ml = currentHE?.MissionList;

            pictureBox.ClearImageList();

            if (ml != null)
            {
                Color textcolour = IsTransparent ? discoveryform.theme.SPanelColor : discoveryform.theme.LabelColor;
                Color backcolour = IsTransparent ? Color.Transparent : this.BackColor;

                DateTime hetime = currentHE.EventTimeUTC;

                List <MissionState> mcurrent = ml.GetAllCurrentMissions(hetime);

                int  vpos        = 4;
                Font displayfont = discoveryform.theme.GetFont;

                foreach (MissionState ms in mcurrent)
                {
                    string text = "";

                    if (missionNameToolStripMenuItem.Checked)
                    {
                        text += JournalFieldNaming.ShortenMissionName(ms.Mission.Name);
                    }

                    if (missionDescriptionToolStripMenuItem.Checked && ms.Mission.LocalisedName.HasChars())
                    {
                        text = text.AppendPrePad(ms.Mission.LocalisedName, ", ");
                    }

                    if (startDateToolStripMenuItem.Checked)
                    {
                        text = text.AppendPrePad(EDDiscoveryForm.EDDConfig.ConvertTimeToSelectedFromUTC(ms.Mission.EventTimeUTC).ToString(), ", ");
                    }

                    if (endDateToolStripMenuItem.Checked)
                    {
                        text = text.AppendPrePad(EDDiscoveryForm.EDDConfig.ConvertTimeToSelectedFromUTC(ms.Mission.Expiry).ToString(), startDateToolStripMenuItem.Checked ? "-" : ", ");
                    }

                    string mainpart = BaseUtils.FieldBuilder.Build(
                        "< ", ms.DestinationSystemStation(),
                        " ", factionInformationToolStripMenuItem.Checked ? ms.Mission.TargetFaction : null,
                        "< ", ms.Mission.TargetLocalised,
                        "< ", ms.Mission.KillCount?.ToString("N") ?? null,
                        " ", ms.Mission.CommodityLocalised,
                        "< ", ms.Mission.Count,
                        " Left ".T(EDTx.UserControlMissionOverlay_IL), ms.CargoDepot?.ItemsToGo
                        );

                    text = text.AppendPrePad(mainpart, ", ");

                    if (rewardToolStripMenuItem.Checked && ms.Mission.Reward.HasValue && ms.Mission.Reward > 0)
                    {
                        text = text.AppendPrePad(BaseUtils.FieldBuilder.Build(" ;cr", ms.Mission.Reward.GetValueOrDefault().ToString("N0")), ", ");
                    }

                    StringFormat frmt = new StringFormat();

                    var ie = pictureBox.AddTextAutoSize(new Point(10, vpos), new Size(this.Width - 20, this.Height), text, displayfont, textcolour, backcolour, 1.0F, frmt: frmt);
                    vpos = ie.pos.Bottom + displayfont.ScalePixels(4);
                }
            }

            pictureBox.Render();
        }
Exemplo n.º 6
0
        private void Display()
        {
            MissionList ml = last_he?.MissionList;

            DataGridViewColumn sortcolprev   = dataGridViewPrevious.SortedColumn != null ? dataGridViewPrevious.SortedColumn : dataGridViewPrevious.Columns[1];
            SortOrder          sortorderprev = dataGridViewPrevious.SortedColumn != null ? dataGridViewPrevious.SortOrder : SortOrder.Descending;

            DataGridViewColumn sortcolcur   = dataGridViewCurrent.SortedColumn != null ? dataGridViewCurrent.SortedColumn : dataGridViewCurrent.Columns[1];
            SortOrder          sortordercur = dataGridViewCurrent.SortedColumn != null ? dataGridViewCurrent.SortOrder : SortOrder.Descending;

            dataGridViewCurrent.Rows.Clear();
            dataGridViewPrevious.Rows.Clear();

            if (ml != null)
            {
                DateTime hetime = last_he.EventTimeUTC;

                List <MissionState> mcurrent = ml.GetAllCurrentMissions(hetime);

                var totalReward = 0;
                foreach (MissionState ms in mcurrent)
                {
                    object[] rowobj = { JournalFieldNaming.ShortenMissionName(ms.Mission.Name),
                                        EDDiscoveryForm.EDDConfig.DisplayUTC ? ms.Mission.EventTimeUTC : ms.Mission.EventTimeLocal,
                                        EDDiscoveryForm.EDDConfig.DisplayUTC ? ms.Mission.Expiry : ms.Mission.Expiry.ToLocalTime(),
                                        ms.OriginatingSystem + ":" + ms.OriginatingStation,
                                        ms.Mission.Faction,
                                        ms.DestinationSystemStation(),
                                        ms.Mission.TargetFaction,
                                        ms.Mission.Reward.GetValueOrDefault().ToString("N0"),
                                        ms.Info() };

                    if (ms.Mission.Reward.HasValue)
                    {
                        totalReward += ms.Mission.Reward.Value;
                    }

                    int rowno = dataGridViewCurrent.Rows.Add(rowobj);
                    dataGridViewCurrent.Rows[rowno].Tag = ms;
                }

                int count = mcurrent.Count();

                cColName.HeaderText  = (count > 0) ? (count.ToStringInvariant() + (count > 1 ? " Missions".Tx(this, "MPlural") : " Mission".Tx(this, "MSingular"))) : "Name".Tx(this, "Name");
                cColValue.HeaderText = (totalReward != 0) ? string.Format("Value (cr):\n{0:N0}".Tx(this, "Value"), totalReward) : "Value (cr)".Tx(this, "ValueN");

                //                cColValue.HeaderText = (count>0) ? (count.ToStringInvariant() + (count > 1 ? " Missions" : " Mission") + (totalReward>0 ? $", {totalReward:N0}" : "")) : "Value";

                List <MissionState> mprev = ml.GetAllExpiredMissions(hetime);

                DateTime startdate = customDateTimePickerStart.Checked ? customDateTimePickerStart.Value : new DateTime(1980, 1, 1);
                DateTime enddate   = customDateTimePickerEnd.Checked ? customDateTimePickerEnd.Value : new DateTime(2999, 1, 1);

                long value = 0;
                int  completed = 0, abandonded = 0, failed = 0;

                foreach (MissionState ms in mprev)
                {
                    int cmps = EDDiscoveryForm.EDDConfig.DisplayUTC ? DateTime.Compare(ms.Mission.EventTimeUTC, startdate) : DateTime.Compare(ms.Mission.EventTimeLocal, startdate);

                    //System.Diagnostics.Debug.WriteLine(ms.Mission.EventTimeUTC.ToString() + " " + startdate.ToString() + " " + cmps);
                    if (cmps >= 0)
                    {
                        int cmpe = EDDiscoveryForm.EDDConfig.DisplayUTC ? DateTime.Compare(ms.Mission.EventTimeUTC, enddate) : DateTime.Compare(ms.Mission.EventTimeLocal, enddate);

                        if (cmpe <= 0)
                        {
                            if (ms.State == MissionState.StateTypes.Abandoned)
                            {
                                abandonded++;
                            }
                            else if (ms.State == MissionState.StateTypes.Completed)
                            {
                                completed++;
                            }
                            else if (ms.State == MissionState.StateTypes.Failed)
                            {
                                failed++;
                            }

                            object[] rowobj = { JournalFieldNaming.ShortenMissionName(ms.Mission.Name),
                                                EDDiscoveryForm.EDDConfig.DisplayUTC ? ms.Mission.EventTimeUTC : ms.Mission.EventTimeLocal,
                                                EDDiscoveryForm.EDDConfig.DisplayUTC ? ms.MissionEndTime : ms.MissionEndTime.ToLocalTime(),
                                                ms.OriginatingSystem + ":" + ms.OriginatingStation,
                                                ms.Mission.Faction,
                                                ms.DestinationSystemStation(),
                                                ms.Mission.TargetFaction,
                                                ms.StateText,
                                                ms.Info() };

                            int rowno = dataGridViewPrevious.Rows.Add(rowobj);
                            dataGridViewPrevious.Rows[rowno].Tag = ms;

                            value += ms.Value;
                        }
                    }
                }

                labelValue.Visible = (value != 0);
                labelValue.Text    = "Value: ".Tx(this, "ValueC") + value.ToStringInvariant() + " C:" + completed.ToStringInvariant() + " A:" + abandonded.ToStringInvariant() + " F:" + failed.ToStringInvariant();

                //System.Diagnostics.Debug.WriteLine("Prev " + sortorderprev + " " + sortcolprev.Index);
                dataGridViewPrevious.Sort(sortcolprev, (sortorderprev == SortOrder.Descending) ? ListSortDirection.Descending : ListSortDirection.Ascending);
                dataGridViewPrevious.Columns[sortcolprev.Index].HeaderCell.SortGlyphDirection = sortorderprev;

                dataGridViewCurrent.Sort(sortcolcur, (sortordercur == SortOrder.Descending) ? ListSortDirection.Descending : ListSortDirection.Ascending);
                dataGridViewCurrent.Columns[sortcolcur.Index].HeaderCell.SortGlyphDirection = sortordercur;
            }
        }
Exemplo n.º 7
0
        private void Display()
        {
            MissionList ml = last_he?.MissionList;

            DataGridViewColumn sortcolprev   = dataGridViewPrevious.SortedColumn != null ? dataGridViewPrevious.SortedColumn : dataGridViewPrevious.Columns[1];
            SortOrder          sortorderprev = dataGridViewPrevious.SortedColumn != null ? dataGridViewPrevious.SortOrder : SortOrder.Descending;

            DataGridViewColumn sortcolcur   = dataGridViewCurrent.SortedColumn != null ? dataGridViewCurrent.SortedColumn : dataGridViewCurrent.Columns[1];
            SortOrder          sortordercur = dataGridViewCurrent.SortedColumn != null ? dataGridViewCurrent.SortOrder : SortOrder.Descending;

            dataGridViewCurrent.Rows.Clear();
            dataGridViewPrevious.Rows.Clear();

            if (ml != null)
            {
                DateTime hetime = last_he.EventTimeUTC;

                List <MissionState> mcurrent = ml.GetAllCurrentMissions(hetime);

                var totalReward = 0;
                var currentRows = new List <DataGridViewRow>(mcurrent.Count);
                foreach (MissionState ms in mcurrent)
                {
                    object[] rowobj = { JournalFieldNaming.ShortenMissionName(ms.Mission.LocalisedName),
                                        EDDiscoveryForm.EDDConfig.ConvertTimeToSelectedFromUTC(ms.Mission.EventTimeUTC),
                                        EDDiscoveryForm.EDDConfig.ConvertTimeToSelectedFromUTC(ms.Mission.Expiry),
                                        ms.OriginatingSystem + ": " + ms.OriginatingStation,
                                        ms.Mission.Faction,
                                        ms.DestinationSystemStation(),
                                        ms.Mission.TargetFaction,
                                        ms.Mission.Reward.GetValueOrDefault().ToString("N0"),
                                        ms.MissionInfoColumn() };

                    if (ms.Mission.Reward.HasValue)
                    {
                        totalReward += ms.Mission.Reward.Value;
                    }

                    var row = dataGridViewCurrent.RowTemplate.Clone() as DataGridViewRow;
                    row.CreateCells(dataGridViewCurrent, rowobj);
                    row.Tag = ms;
                    currentRows.Add(row);
                }

                dataGridViewCurrent.Rows.AddRange(currentRows.ToArray());

                int count = mcurrent.Count();

                cColName.HeaderText  = (count > 0) ? (count.ToString() + (count > 1 ? " Missions".T(EDTx.UserControlMissions_MPlural) : " Mission".T(EDTx.UserControlMissions_MSingular))) : "Name".T(EDTx.UserControlMissions_Name);
                cColValue.HeaderText = (totalReward != 0) ? string.Format("Value (cr):\n{0:N0}".T(EDTx.UserControlMissions_Value), totalReward) : "Value (cr)".T(EDTx.UserControlMissions_ValueN);

                //                cColValue.HeaderText = (count>0) ? (count.ToStringInvariant() + (count > 1 ? " Missions" : " Mission") + (totalReward>0 ? $", {totalReward:N0}" : "")) : "Value";

                List <MissionState> mprev = ml.GetAllExpiredMissions(hetime);

                DateTime startdateutc = customDateTimePickerStart.Checked ? EDDConfig.Instance.ConvertTimeToUTCFromSelected(customDateTimePickerStart.Value) : new DateTime(1980, 1, 1);
                DateTime enddateutc   = customDateTimePickerEnd.Checked ? EDDConfig.Instance.ConvertTimeToUTCFromSelected(customDateTimePickerEnd.Value) : new DateTime(8999, 1, 1);

                long value = 0;
                int  completed = 0, abandonded = 0, failed = 0;
                var  previousRows = new List <DataGridViewRow>(mprev.Count);

                foreach (MissionState ms in mprev)
                {
                    int cmps = DateTime.Compare(ms.Mission.EventTimeUTC, startdateutc);

                    //System.Diagnostics.Debug.WriteLine(ms.Mission.EventTimeUTC.ToString() + " " + startdate.ToString() + " " + cmps);
                    if (cmps >= 0)
                    {
                        int cmpe = DateTime.Compare(ms.Mission.EventTimeUTC, enddateutc);

                        if (cmpe <= 0)
                        {
                            if (ms.State == MissionState.StateTypes.Abandoned)
                            {
                                abandonded++;
                            }
                            else if (ms.State == MissionState.StateTypes.Completed)
                            {
                                completed++;
                            }
                            else if (ms.State == MissionState.StateTypes.Failed)
                            {
                                failed++;
                            }

                            object[] rowobj = { JournalFieldNaming.ShortenMissionName(ms.Mission.LocalisedName),
                                                EDDiscoveryForm.EDDConfig.ConvertTimeToSelectedFromUTC(ms.Mission.EventTimeUTC),
                                                EDDiscoveryForm.EDDConfig.ConvertTimeToSelectedFromUTC(ms.MissionEndTime),
                                                ms.OriginatingSystem + ": " + ms.OriginatingStation,
                                                ms.Mission.Faction,
                                                ms.DestinationSystemStation(),
                                                ms.Mission.TargetFaction,
                                                ms.StateText,
                                                ms.MissionInfoColumn() };

                            var row = dataGridViewPrevious.RowTemplate.Clone() as DataGridViewRow;
                            row.CreateCells(dataGridViewPrevious, rowobj);
                            row.Tag = ms;
                            previousRows.Add(row);

                            value += ms.Value;
                        }
                    }
                }

                dataGridViewPrevious.Rows.AddRange(previousRows.ToArray());

                labelValue.Visible = (value != 0);
                labelValue.Text    = "Value: ".T(EDTx.UserControlMissions_ValueC) + value.ToString("N0") + " C:" + completed.ToString("N0") + " A:" + abandonded.ToString("N0") + " F:" + failed.ToString("N0");

                //System.Diagnostics.Debug.WriteLine("Prev " + sortorderprev + " " + sortcolprev.Index);
                dataGridViewPrevious.Sort(sortcolprev, (sortorderprev == SortOrder.Descending) ? ListSortDirection.Descending : ListSortDirection.Ascending);
                dataGridViewPrevious.Columns[sortcolprev.Index].HeaderCell.SortGlyphDirection = sortorderprev;

                dataGridViewCurrent.Sort(sortcolcur, (sortordercur == SortOrder.Descending) ? ListSortDirection.Descending : ListSortDirection.Ascending);
                dataGridViewCurrent.Columns[sortcolcur.Index].HeaderCell.SortGlyphDirection = sortordercur;
            }
        }