using System.Linq;
using System.Windows.Media.Imaging;
using Caliburn.Micro;
using WixSharp;
using WixSharp.UI.Forms;
using WixSharp.UI.WPF;
namespace Sai.RvKits_Setup
{
///
/// The standard SetupTypeDialog.
/// Follows the design of the canonical Caliburn.Micro View (MVVM).
/// See https://caliburnmicro.com/documentation/cheat-sheet
///
///
///
///
public partial class SetupTypeDialog : WpfDialog, IWpfDialog
{
///
/// Initializes a new instance of the class.
///
public SetupTypeDialog()
{
InitializeComponent();
}
///
/// This method is invoked by WixSHarp runtime when the custom dialog content is internally fully initialized.
/// This is a convenient place to do further initialization activities (e.g. localization).
///
public void Init()
{
ViewModelBinder.Bind(new SetupTypeDialogModel { Host = ManagedFormHost, }, this, null);
}
}
///
/// ViewModel for standard SetupTypeDialog.
/// Follows the design of the canonical Caliburn.Micro ViewModel (MVVM).
/// See https://caliburnmicro.com/documentation/cheat-sheet
///
///
internal class SetupTypeDialogModel : Caliburn.Micro.Screen
{
public ManagedForm Host;
ISession session => Host?.Runtime.Session;
IManagedUIShell shell => Host?.Shell;
public BitmapImage Banner => session?.GetResourceBitmap("WixSharpUI_Bmp_Banner").ToImageSource();
///
/// Initializes a new instance of the class.
///
void JumpToProgressDialog()
{
int index = shell.Dialogs.IndexOfDialogImplementing();
if (index != -1)
shell.GoTo(index);
else
shell.GoNext(); // if user did not supply progress dialog then simply go next
}
public void DoTypical()
{
if (shell != null)
JumpToProgressDialog();
}
public void DoComplete()
{
if (shell != null)
{
// mark all features to be installed
string[] names = session.Features.Select(x => x.Name).ToArray();
session["ADDLOCAL"] = names.JoinBy(",");
JumpToProgressDialog();
}
}
public void DoCustom()
=> shell?.GoNext(); // let the dialog flow through
public void GoPrev()
=> shell?.GoPrev();
public void GoNext()
=> shell?.GoNext();
public void Cancel()
=> shell?.Cancel();
}
}