You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
CleanFlashInstaller/CleanFlashUninstaller/UninstallForm.cs

130 lines
3.9 KiB
C#

using CleanFlashCommon;
using System;
using System.Diagnostics;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace CleanFlashUninstaller {
public partial class UninstallForm : Form, IProgressForm {
private static int UNINSTALL_TICKS = 9;
public UninstallForm() {
InitializeComponent();
}
private void HideAllPanels() {
beforeInstallPanel.Visible = false;
installPanel.Visible = false;
completePanel.Visible = false;
failurePanel.Visible = false;
}
private void OpenBeforeInstall() {
HideAllPanels();
beforeInstallPanel.Visible = true;
prevButton.Enabled = true;
nextButton.Text = "UNINSTALL";
}
private void OpenInstall() {
HideAllPanels();
installPanel.Visible = true;
prevButton.Enabled = false;
nextButton.Visible = false;
BeginInstall();
}
private void OpenComplete() {
HideAllPanels();
completePanel.Visible = true;
prevButton.Enabled = true;
completeLabel.Links.Clear();
completeLabel.Links.Add(new LinkLabel.Link(110, 28));
}
private void OpenFailure(Exception e) {
HideAllPanels();
failurePanel.Visible = true;
prevButton.Enabled = true;
nextButton.Text = "RETRY";
nextButton.Visible = true;
failureBox.Text = e.ToString();
}
private void BeginInstall() {
progressBar.Value = 0;
progressBar.Maximum = UNINSTALL_TICKS;
new Task(new Action(() => {
IntPtr redirection = RedirectionManager.DisableRedirection();
try {
Uninstaller.Uninstall(this);
Complete();
} catch (Exception e) {
Failure(e);
} finally {
RedirectionManager.EnableRedirection(redirection);
}
})).Start();
}
private void UninstallForm_Load(object sender, EventArgs e) {
string version = UpdateChecker.GetFlashVersion();
subtitleLabel.Text = string.Format("built from version {0} (China)", version);
Text = string.Format("Clean Flash Player {0} Uninstaller", version);
OpenBeforeInstall();
}
private void prevButton_Click(object sender, EventArgs e) {
Application.Exit();
}
private void nextButton_Click(object sender, EventArgs e) {
if (beforeInstallPanel.Visible || failurePanel.Visible) {
OpenInstall();
}
}
public void UpdateProgressLabel(string text, bool tick) {
Invoke(new Action(() => {
progressLabel.Text = text;
if (tick) {
progressBar.Value++;
}
}));
}
public void TickProgress() {
Invoke(new Action(() => {
progressBar.Value++;
}));
}
public void Complete() {
Invoke(new Action(OpenComplete));
}
public void Failure(Exception e) {
Invoke(new Action(() => OpenFailure(e)));
}
private void completeLabel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) {
if (e.Link.Start == 212) {
Process.Start("https://classic.waterfox.net");
} else {
Process.Start("https://cleanflash.github.io");
}
}
private void copyErrorButton_Click(object sender, EventArgs e) {
Clipboard.SetText(failureBox.Text);
MessageBox.Show("Copied error message to clipboard!", "Clean Flash Installer", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
}