private static void TriggerEvent(TileProgressEventHandler evt, object sender, CallbackStates state, MapTilingConfiguration map, string group, int scaleindex, int row, int column, ref bool cancel)
        {
            var args = new TileProgressEventArgs(state, map, group, scaleindex, row, column, cancel);

            evt?.Invoke(sender, args);
            cancel = args.Cancel;
        }
Пример #2
0
        private void DisplayProgress(object sender, TileProgressEventArgs args)
        {
            if (m_cancel)
            {
                args.Cancel = true;
            }

            if (this.InvokeRequired)
            {
                TileProgressEventHandler action = DisplayProgress;
                this.Invoke(action, new object[] { sender, args });
            }
            else
            {
                label1.Text = string.Format(Strings.CurrentGroupStatus, args.Group, args.Map.ResourceId);

                tilePG.Value  = (int)Math.Max(Math.Min((m_tileCount / (double)m_totalTiles) * (tilePG.Maximum - tilePG.Minimum), tilePG.Maximum), tilePG.Minimum);
                totalPG.Value = (int)Math.Max(Math.Min((m_grandTotalTileCount / (double)m_grandTotalTiles) * (totalPG.Maximum - totalPG.Minimum), totalPG.Maximum), totalPG.Minimum);

                var percentage = (int)(((double)m_grandTotalTileCount / (double)m_grandTotalTiles) * 100.0);
                this.Text = $"{m_origTitle} - ({percentage}%)";

                if (m_failCount == 0)
                {
                    tileCounter.Text = string.Format(Strings.CurrentTileCounter, m_grandTotalTileCount, m_grandTotalTiles, string.Empty);
                }
                else
                {
                    tileCounter.Text = string.Format(Strings.CurrentTileCounter, m_grandTotalTileCount, m_grandTotalTiles, string.Format(Strings.TileErrorCount, m_failCount));
                }

                TimeSpan elapsed = DateTime.Now - m_grandBegin;
                DateTime finish  = DateTime.Now + (new TimeSpan(m_prevDuration.Ticks * m_grandTotalTiles) - elapsed);
                TimeSpan remain  = finish - DateTime.Now;

                if (finish < DateTime.Now)
                {
                    finishEstimate.Text = Strings.InsufficientTimePassed;
                }
                else
                {
                    finishEstimate.Text = string.Format(Strings.RemainingTime, finish.ToShortTimeString(), $"{Math.Floor(remain.TotalHours)}:{remain.Minutes.ToString("00")}:{remain.Seconds.ToString("00")}");
                }
            }
        }