Beispiel #1
0
        private void du_onStateFileNameDecide(object sender, StateFileNameDecideEventArgs e)
        {
            IProgressable d  = (IProgressable)sender;
            OperationInfo op = (OperationInfo)d.State;

            op.sliceFileName = e.SliceFileName;
        }
Beispiel #2
0
        public static ProgressWindow CreateAndShowDialog(IProgressable progressable)
        {
            ProgressWindow window = new ProgressWindow(progressable);

            //window.Progress.Completed += (sender, args) => window.Dispatcher.Invoke(() => window.Hide());
            window.Show();
            return(window);
        }
Beispiel #3
0
 public ProgressWindow(string title, IProgressable progressable)
 {
     InitializeComponent();
     new DraggableWindow(this);
     titleTextBlock.Text = title;
     progressable.ProgressChanged += Progressable_ProgressChanged;
     progressable.Completed += (s, e) => Dispatcher.Invoke(Close);
 }
        /// <summary>
        /// Constructs the popup window.
        /// </summary>
        public ProgressPopup(IProgressable model)
            : this()
        {
            _model = model;

            _model.Progress += model_Progress;
            _model.Finished += model_Finished;
        }
Beispiel #5
0
 public ProgressWindow(string title, IProgressable progressable)
 {
     InitializeComponent();
     new DraggableWindow(this);
     titleTextBlock.Text           = title;
     progressable.ProgressChanged += Progressable_ProgressChanged;
     progressable.Completed       += (s, e) => Dispatcher.Invoke(Close);
 }
Beispiel #6
0
        private void du_onThreadChanged(object sender, ThreadCountChangedEventArgs e)
        {
            IProgressable d  = (IProgressable)sender;
            OperationInfo op = (OperationInfo)d.State;

            op.runningThreadCount = e.RunningThreadCount;
            op.totalThreadCount   = e.TotalThreadCount;
            fireOnThreadChanged(op);
        }
        public SplashScreen(IProgressable contentToLoad)
        {
            InitializeComponent();

            contentToLoad.ItemLoaded += OnItemLoaded;

            PhraseLoadingProgress.Maximum = contentToLoad.TotalItems;
            TotalAssets.Text = contentToLoad.TotalItems.ToString();
            Asset.Text = "0";
        }
Beispiel #8
0
 public ProgressToken(IProgressable prograssable)
 {
     Progressable = prograssable;
     if (Progressable != null)
     {
         Progressable.Progress   = 0;
         CancellationTokenSource = new CancellationTokenSource
         {
         };
         CancellationToken = CancellationTokenSource.Token;
     }
 }
Beispiel #9
0
 internal void InitProgressable(IProgressable progressable)
 {
     Progressable = progressable;
     progressable.ProgressChangedEvent += Progressable_ProgressChangedEvent;
     Timer = new Timer
     {
         Interval = 100,
         Enabled  = true,
     };
     StartTime       = DateTime.Now;
     Timer.AutoReset = true;
     Timer.Start();
 }
Beispiel #10
0
        public void RemoveProgressable(IProgressable progressable)
        {
            int timeRequired = progressable.Setup();

            foreach (TickTimer timer in timers)
            {
                if (timer.TotalTicksToCall == timeRequired)
                {
                    timer.Remove(ref progressable);
                    break;
                }
            }
        }
        public void InitProgressable(IProgressable progress)
        {
            ProgressViewModel.InitProgressable(progress);

            CancelButton.Click += (sender, e) =>
            {
                if (!progress.IsCompleted)
                {
                    progress.Cancel();
                }
            };

            Closed += (sender, e) =>
            {
                if (!progress.IsCompleted)
                {
                    progress.Cancel();
                }
            };
        }
Beispiel #12
0
 public void SetData(IProgressable progressable)
 {
     if (progressable.IsAbortable)
     {
         MinimumSize          = new Size(350, 125);
         MaximumSize          = new Size(350, 125);
         button_Abort.Visible = true;
     }
     else
     {
         MinimumSize          = new Size(350, 100);
         MaximumSize          = new Size(350, 100);
         button_Abort.Visible = false;
     }
     m_progressable                   = progressable;
     progressable.Finished           += Progressable_Finished;
     progressable.DescriptionChanged += Progressable_DescriptionChanged;
     progressable.ProgressChanged    += Progressable_ProgressChanged;
     progressable.Error              += Progressable_Error;
 }
        private static void Run <T>(IProgressable progress) where T : IProgressView
        {
            IProgressView view = new ProgressView();

            view.InitProgressable(progress);
            view.StartShow(() =>
            {
                try
                {
                    Application.DoEvents();
                    progress.Start();
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                    throw;
                }
                view.EndShow(true, null);
            });

            progress?.WorkCompleted(progress);
        }
Beispiel #14
0
        private void du_onCompleted(object sender, CompletedEventArgs e)
        {
            IProgressable d  = (IProgressable)sender;
            OperationInfo op = (OperationInfo)d.State;

            if (e.Success)
            {
                op.status = OperationStatus.Success;
            }
            else if (op.status == OperationStatus.Processing)
            {
                if (e.Cancel)
                {
                    op.status = OperationStatus.Cancel;
                }
                else
                {
                    op.status = OperationStatus.Fail;
                    op.errmsg = e.Exception == null ? string.Empty : e.Exception.Message;
                }
            }
        }
Beispiel #15
0
        private void du_onProgress(object sender, ProgressEventArgs e)
        {
            IProgressable d  = (IProgressable)sender;
            OperationInfo op = (OperationInfo)d.State;

            op.totalSize = e.totalSize;
            op.doneSize  = e.doneSize;
            fireOnProgress(op);
            if (op.status != OperationStatus.Processing)
            {
                e.Cancel = true;
            }
            else if (IsPause)
            {
                e.Cancel  = true;
                op.status = OperationStatus.Pending;
            }
            else if (op.sid != Interlocked.Read(ref sid))
            {
                e.Cancel  = true;
                op.status = OperationStatus.Pending;
            }
        }
Beispiel #16
0
        public void AddProgressable(IProgressable progressable)
        {
            TickTimer timer        = null;
            int       timeRequired = progressable.Setup();

            // Looks for an existing timer
            foreach (TickTimer t in timers)
            {
                if (t.TotalTicksToCall == timeRequired)
                {
                    timer = t;
                    timer.Add(ref progressable);
                    break;
                }
            }

            // Makes a new timer
            if (timer == null)
            {
                timer = new TickTimer(timeRequired);
                timer.Add(ref progressable);
                timers.Add(timer);
            }
        }
Beispiel #17
0
 public Counter(IProgressable progressable, float max)
 {
     this.progressable = progressable ?? throw new ArgumentNullException(nameof(progressable));
     this.max          = max;
 }
Beispiel #18
0
 private ProgressWindow(IProgressable progressable)
 {
     Progress = progressable.Progress;
     InitializeComponent();
 }
Beispiel #19
0
 public Progress(IProgressable prograssable)
 {
     this.prograssable = prograssable;
 }
 public ProgressAction(IProgressable progressable)
 {
     this.progressable = progressable;
 }
Beispiel #21
0
 // If we want to stream a music file, we can't
 public StreamProgressInfo(IProgressable file)
 {
     this.file = file;
 }
 public static void Run(IProgressable progressable)
 {
     Run <ProgressView>(progressable);
 }
Beispiel #23
0
 public LoadProgress(string filter, IProgressable progressable)
 {
     Filter = filter;
     Token  = new ProgressToken(progressable);
 }
Beispiel #24
0
 public void Add(ref IProgressable progressable)
 {
     progressables.Add(progressable);
 }
Beispiel #25
0
 // If we want to stream a music file, we can't
 public StreamProgressInfo(IProgressable progressable)
 {
     this.progressable = progressable;
 }
Beispiel #26
0
        private static async Task <StorageFile> DownloadFile(StorageFile destinationFile, Uri source, Addon addon, IProgressable progressable)
        {
            try
            {
                var result = Http.WebHttpClient.GetAsync(source);
                var downloadProgessHandler = new DownloadProgressHandler()
                {
                    Progressable = progressable != null ? progressable : addon
                };
                result.Progress = downloadProgessHandler.DownloadProgressCallback;

                using (var filestream = await destinationFile.OpenAsync(FileAccessMode.ReadWrite))
                {
                    var res = await result;
                    await res.Content.WriteToStreamAsync(filestream);

                    await filestream.FlushAsync();
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine("[ERROR] DownloadFile. " + ex.Message + " " + ex.StackTrace);
            }
            return(destinationFile);
        }
Beispiel #27
0
        internal static async Task <StorageFile> DLWithHttpProgress(Addon addon, Download download, IProgressable progressable = null)
        {
            if (!NetworkInterface.GetIsNetworkAvailable())
            {
                return(null);
            }
            string downloadLink = GetDownLoadLink(addon, download);

            var source = new Uri(downloadLink);

            StorageFile destinationFile = await localFolder.CreateFileAsync(Util.RandomString(12) + ".zip", CreationCollisionOption.GenerateUniqueName);

            return(await DownloadFile(destinationFile, source, addon, progressable));
        }
Beispiel #28
0
        private void OnTryAgainPressed(object sender, RoutedEventArgs e)
        {
            IProgressable item = (e.Source as MenuItem).DataContext as IProgressable;

            item.DoWorkAsync();
        }
Beispiel #29
0
        internal static async Task <(string, List <string>)> UpdateAddonOld(Addon addon, Download download, StorageFile file, IProgressable progressable = null)
        {
            var extractFolderPath  = localFolder.Path + @"\" + file.Name.Replace(".zip", "");
            var subFoldersToDelete = new List <string>();

            try
            {
                ZipFile.ExtractToDirectory(file.Path, extractFolderPath);
                // int directoryCount = Directory.GetDirectories(extractFolderPath, "*", SearchOption.AllDirectories).Length;
                float fileCount = Directory.GetFiles(extractFolderPath, "*", SearchOption.AllDirectories).Length;

                var extractFolder = await StorageFolder.GetFolderFromPathAsync(extractFolderPath);

                var folders = await extractFolder.GetFoldersAsync();

                var gameFolder = await StorageFolder.GetFolderFromPathAsync(addon.Game.AbsolutePath);

                //var tasks = folders.SelectMany(folder => CopyFolderAsync2(folder, gameFolder));
                //await Task.WhenAll(tasks);
                var foldersAsList = new List <StorageFolder>(folders);
                subFoldersToDelete = foldersAsList.Select(f => f.Name)
                                     .Where(name => !name.Equals(addon.FolderName, StringComparison.OrdinalIgnoreCase))
                                     .ToList();
                if (Singleton <SettingsViewModel> .Instance.IsDeleteOldFilesBeforeUpdate ?? false)
                {
                    var subFolders = new List <string>(subFoldersToDelete)
                    {
                        addon.FolderName
                    };
                    await RemoveFolders(addon.Game.AbsolutePath, subFolders);
                }

                var counter = new Counter(progressable != null ? progressable : addon, Math.Max(fileCount, 1));
                foreach (var folder in folders)
                {
                    await CopyFolderAsync(folder, gameFolder, counter);
                }
            }
            catch (Exception e)
            {
                Debug.WriteLine("[ERROR] UpdateAddon. " + e.Message + ", " + e.StackTrace);
            }
            return(extractFolderPath, subFoldersToDelete);
        }
Beispiel #30
0
 public void Remove(ref IProgressable progressable)
 {
     progressables.Remove(progressable);
 }
 public void setProgressable(IProgressable p)
 {
     _Progressable = p;
 }
Beispiel #32
0
        internal static async Task <List <string> > UpdateAddon2(Addon addon, StorageFile file, IProgressable progressable = null)
        {
            var subFoldersToDelete = new HashSet <string>();

            try
            {
                Debug.WriteLine("Start: " + addon.FolderName + " " + DateTime.Now.ToString("mm:ss"));
                int entries = 0;

                using (ZipArchive archive = ZipFile.OpenRead(file.Path))
                {
                    foreach (ZipArchiveEntry entry in archive.Entries)
                    {
                        if (entry.FullName.Contains("/"))
                        {
                            var folderName = entry.FullName.Split("/").FirstOrDefault();
                            if (folderName != null && !folderName.Equals(addon.FolderName, StringComparison.OrdinalIgnoreCase))
                            {
                                subFoldersToDelete.Add(folderName);
                            }
                        }
                        entries++;
                    }
                }
                if (Singleton <SettingsViewModel> .Instance.IsDeleteOldFilesBeforeUpdate ?? false)
                {
                    var folders = new List <string>(subFoldersToDelete)
                    {
                        addon.FolderName
                    };
                    await RemoveFolders(addon.Game.AbsolutePath, folders);
                }

                var gameFolder = await StorageFolder.GetFolderFromPathAsync(addon.Game.AbsolutePath);

                var zipHelper = new ZipHelper()
                {
                    Progressable = progressable != null ? progressable : addon, Entries = Math.Max(entries, 1)
                };
                zipHelper.PropertyChanged += UnzipProgress;
                await zipHelper.UnZipFileAsync(file, gameFolder);

                Debug.WriteLine("Copy done: " + addon.FolderName + " " + DateTime.Now.ToString("mm:ss"));
            }
            catch (Exception e)
            {
                Debug.WriteLine("[ERROR] UpdateAddon. " + e.Message + ", " + e.StackTrace);
            }
            return(subFoldersToDelete.ToList());
        }