86 lines
3.0 KiB
C#
86 lines
3.0 KiB
C#
using System;
|
|
using System.Linq;
|
|
using System.Reflection;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
using System.Windows.Input;
|
|
using Katteker;
|
|
using Prism.Commands;
|
|
using Prism.Mvvm;
|
|
|
|
namespace ExampleCore
|
|
{
|
|
public class MainWindowViewModel : BindableBase
|
|
{
|
|
private readonly UpdateManager _updateManager;
|
|
public static string WindowTitle { get; } = "Example Core " + Assembly.GetExecutingAssembly().GetName().Version?.ToString(3);
|
|
|
|
public MainWindowViewModel()
|
|
{
|
|
UpdateManager.TryCreate(out _updateManager);
|
|
UpdateCommand = new DelegateCommand<bool?>(async x => await UpdateAsync(x.GetValueOrDefault()).ConfigureAwait(false));
|
|
OpenFolderDialogCommand = new DelegateCommand(OpenFolder);
|
|
OpenFileDialogCommand = new DelegateCommand(OpenFile);
|
|
}
|
|
|
|
private static void OpenFile()
|
|
{
|
|
using var openFile = new OpenFileDialog();
|
|
if (openFile.ShowDialog() == DialogResult.OK)
|
|
{
|
|
MessageBox.Show(openFile.FileName, WindowTitle);
|
|
}
|
|
|
|
}
|
|
|
|
private static void OpenFolder()
|
|
{
|
|
using var folderBrowser = new FolderBrowserDialog();
|
|
if (folderBrowser.ShowDialog() == DialogResult.OK)
|
|
{
|
|
MessageBox.Show(folderBrowser.SelectedPath, WindowTitle);
|
|
}
|
|
}
|
|
|
|
private async Task UpdateAsync(bool startup)
|
|
{
|
|
try
|
|
{
|
|
var updates = await _updateManager.CheckForUpdatesAsync().ConfigureAwait(false);
|
|
if (updates.Any())
|
|
{
|
|
var dialogResult = MessageBox.Show("Update available, update now?", WindowTitle,
|
|
MessageBoxButtons.YesNo,
|
|
MessageBoxIcon.Information);
|
|
if (dialogResult == DialogResult.Yes && await _updateManager.UpdateAppAsync().ConfigureAwait(false))
|
|
{
|
|
dialogResult = MessageBox.Show("The update is ready to install. Do you want to install it now?",
|
|
WindowTitle,
|
|
MessageBoxButtons.YesNo, MessageBoxIcon.Question);
|
|
if (dialogResult == DialogResult.Yes) System.Windows.Application.Current.Shutdown();
|
|
}
|
|
}
|
|
else if (!startup)
|
|
{
|
|
MessageBox.Show("No Update available.", WindowTitle, MessageBoxButtons.OK,
|
|
MessageBoxIcon.Information);
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
if (startup)
|
|
{
|
|
MessageBox.Show(e.Message, WindowTitle, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
}
|
|
}
|
|
}
|
|
|
|
public ICommand UpdateCommand { get; }
|
|
|
|
public ICommand OpenFolderDialogCommand { get; }
|
|
|
|
public ICommand OpenFileDialogCommand { get; }
|
|
|
|
public string CommandLineParameters => Environment.CommandLine;
|
|
}
|
|
} |