184 lines
5.7 KiB
C#
184 lines
5.7 KiB
C#
using BeWoLauncher.Logic.Controller;
|
|
using BeWoLauncher.Logic.Utils.Download;
|
|
using BS.SharedLauncher.Enums;
|
|
using BS.SharedLauncher.Update;
|
|
using System;
|
|
using System.ComponentModel;
|
|
using System.Configuration;
|
|
using System.Threading;
|
|
|
|
namespace BeWoLauncher.View.Frames
|
|
{
|
|
public class UpdateProgressInfoFrame : GenericProgressInfo
|
|
{
|
|
public event EventHandler UpdateSuccessful;
|
|
|
|
public DownloadManager Manager => DownloadController.Manager;
|
|
|
|
public UpdateProgressInfoFrame()
|
|
{
|
|
Bar1SetLimit(Manager.ResponseInfo.FileCount);
|
|
Bar1Hide();
|
|
|
|
Bar2SetLimit(100);
|
|
}
|
|
|
|
public override void Start()
|
|
{
|
|
var skipLock = bool.TryParse(ConfigurationManager.AppSettings.Get("SkipLock"), out bool c) && c;
|
|
|
|
Worker.DoWork += worker_DoWork;
|
|
Worker.ProgressChanged += worker_ProgressChanged;
|
|
Worker.RunWorkerCompleted += worker_completed;
|
|
|
|
Worker.WorkerReportsProgress = true;
|
|
|
|
Worker.RunWorkerAsync(skipLock);
|
|
}
|
|
|
|
void worker_DoWork(object sender, DoWorkEventArgs e)
|
|
{
|
|
bool skipLock = (bool)e.Argument;
|
|
|
|
BackgroundWorker worker = sender as BackgroundWorker;
|
|
|
|
// UI: 0
|
|
worker.ReportProgress((int)LauncherProgress.ProgressStart);
|
|
|
|
// Wait
|
|
Thread.Sleep(1000);
|
|
|
|
// UI: 1
|
|
worker.ReportProgress((int)LauncherProgress.DownloadStart);
|
|
|
|
// Wait
|
|
Thread.Sleep(500);
|
|
|
|
// Process: 2
|
|
DownloadController.Manager.StartDownload(skipLock, worker.ReportProgress);
|
|
|
|
// UI: 3
|
|
worker.ReportProgress((int)LauncherProgress.DownloadFinish);
|
|
|
|
// Wait
|
|
Thread.Sleep(1000);
|
|
|
|
// UI: 4
|
|
worker.ReportProgress((int)LauncherProgress.ApplyStart);
|
|
|
|
// Wait
|
|
Thread.Sleep(500);
|
|
|
|
// Process: 5
|
|
DownloadController.Manager.StartApply(skipLock, worker.ReportProgress);
|
|
|
|
// UI: 6
|
|
worker.ReportProgress((int)LauncherProgress.ApplyFinished);
|
|
|
|
// Wait
|
|
Thread.Sleep(1000);
|
|
|
|
// Process: 7, Wait, 8
|
|
DownloadController.Manager.StartCleanup(worker.ReportProgress);
|
|
|
|
// UI: 9
|
|
worker.ReportProgress((int)LauncherProgress.DeleteFinished);
|
|
|
|
// Wait
|
|
Thread.Sleep(500);
|
|
|
|
// UI: 10
|
|
worker.ReportProgress((int)LauncherProgress.ProgressEnd);
|
|
}
|
|
|
|
private void worker_completed(object sender, RunWorkerCompletedEventArgs e)
|
|
{
|
|
if (e.Error != null)
|
|
{
|
|
ViewController.ViewBehavior.UpdateFailed(e.Error);
|
|
}
|
|
else
|
|
{
|
|
UpdateSuccessful.Invoke(this, new EventArgs());
|
|
}
|
|
}
|
|
|
|
private void worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
|
|
{
|
|
var progress = (LauncherProgress)e.ProgressPercentage;
|
|
var obj = e.UserState;
|
|
|
|
switch (progress)
|
|
{
|
|
case LauncherProgress.ProgressStart:
|
|
Message = "Update wird vorbereitet...";
|
|
SubMessage = "Lade benötigte Pakete herunter...";
|
|
break;
|
|
|
|
case LauncherProgress.DownloadStart:
|
|
Message = "Download startet...";
|
|
SubMessage = "";
|
|
Bar1Show();
|
|
Bar1Deactivate();
|
|
Bar2SetPercent(5);
|
|
break;
|
|
|
|
case LauncherProgress.DownloadUpdate:
|
|
throw new NotImplementedException("#fd42398");
|
|
var args = obj as DownloadProgressEventArgs;
|
|
SubMessage = $"{args.Progress.ToString("0.##")}% fertig";
|
|
break;
|
|
|
|
case LauncherProgress.DownloadFinish:
|
|
Message = "Download abgeschlossen!";
|
|
SubMessage = "";
|
|
Bar2SetPercent(40);
|
|
break;
|
|
|
|
case LauncherProgress.ApplyStart:
|
|
Message = "Füge Pakete hinzu...";
|
|
SubMessage = "";
|
|
Bar1Activate();
|
|
break;
|
|
|
|
case LauncherProgress.ApplyUpdate:
|
|
var args2 = obj as ApplyFileEventArgs;
|
|
SubMessage = $"{args2.Name} wurde erfolgreich von \n{args2.AbsolutePath} hinzugefügt!";
|
|
Bar1MakeStep();
|
|
break;
|
|
|
|
case LauncherProgress.ApplyFinished:
|
|
Message = "Hinzufügen abgeschlossen!";
|
|
SubMessage = "";
|
|
Bar2SetPercent(80);
|
|
Bar1Deactivate();
|
|
break;
|
|
|
|
case LauncherProgress.DeleteStart:
|
|
Message = "Ungebrauchte Datei(en) gefunden.";
|
|
SubMessage = "";
|
|
break;
|
|
case LauncherProgress.DeleteUpdate:
|
|
var args3 = obj as string;
|
|
SubMessage = $"{args3} wurde entfernt!";
|
|
break;
|
|
|
|
case LauncherProgress.DeleteFinished:
|
|
Message = "Säuberung abgeschlossen!";
|
|
SubMessage = "";
|
|
Bar2SetPercent(95);
|
|
Bar1Deactivate();
|
|
break;
|
|
|
|
case LauncherProgress.ProgressEnd:
|
|
Message = "Installation abgeschlossen!";
|
|
SubMessage = "";
|
|
Bar2Fill();
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|