using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace SL_Switcher { public partial class SwitcherUI : Form { private Switcher m_switcher; public SwitcherUI() { InitializeComponent(); m_switcher = new Switcher(Application.StartupPath); m_switcher.WorkStarted += new OperationDelegate(WorkStated); m_switcher.WorkFinished += new OperationDelegate(WorkFinished); m_switcher.Progress += new OperationProgressDelegate(Progress); } private void WorkStated(object sender, EventArgs e) { Status.Text = "Working..."; progressBar.Value = 0; this.Enabled = false; } private void WorkFinished(object sender, EventArgs e) { Status.Text = "Ready"; this.Enabled = true; } private void Progress(object sender, ProgressEventArgs e) { progressBar.Maximum = e.Max; progressBar.Value = e.Progress; Status.Text = e.Message; Application.DoEvents(); } private void Form1_Load(object sender, EventArgs e) { this.Show(); m_switcher.InitDirectories(); m_switcher.PrepareDirectories(); m_switcher.DetectInstalled(); RefreshList(); } private void RefreshList() { foreach (Program ver in m_switcher.DetectedVersions) { ListViewItem li = new ListViewItem(ver.Name); li.SubItems.Add(ver.Provider); li.SubItems.Add(ver.AppVersion); li.SubItems.Add(ver.State.ToString()); li.Tag = ver; versionsList.Items.Add(li); } } private void CloseButton_Click(object sender, EventArgs e) { this.Close(); } private void StartButton_Click(object sender, EventArgs e) { ListViewItem li = null; if (versionsList.SelectedItems.Count > 0) { li = versionsList.SelectedItems[0]; } if (li != null) { try { Program ver = (Program)li.Tag; m_switcher.LaunchVersion(ver); this.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message + "\n" + ex.StackTrace, "Failed to start program", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } } }