public MainWindow() {
Application.Current.MainWindow = this;
_cancelled = false;
if (AppArguments.Values.Any()) {
ProcessArguments();
}
if (_testGameDialog != null) {
Logging.Write("Testing mode");
var ui = new GameDialog();
ui.ShowDialogWithoutBlocking();
((IGameUi)ui).OnResult(JsonConvert.DeserializeObject<Game.Result>(FileUtils.ReadAllText(_testGameDialog)), null);
_cancelled = true;
}
if (_cancelled) {
Close();
return;
}
DataContext = new ViewModel();
InputBindings.AddRange(new[] {
new InputBinding(new NavigateCommand(this, AppStrings.Main_About), new KeyGesture(Key.F1, ModifierKeys.Alt)),
new InputBinding(new NavigateCommand(this, AppStrings.Main_Drive), new KeyGesture(Key.F1)),
new InputBinding(new NavigateCommand(this, AppStrings.Main_Media), new KeyGesture(Key.F2)),
new InputBinding(new NavigateCommand(this, AppStrings.Main_Content), new KeyGesture(Key.F3)),
new InputBinding(new NavigateCommand(this, AppStrings.Main_Settings), new KeyGesture(Key.F4))
});
InitializeComponent();
LinkNavigator.Commands.Add(new Uri("cmd://enterkey"), Model.EnterKeyCommand);
AppKeyHolder.ProceedMainWindow(this);
foreach (var result in MenuLinkGroups.OfType<LinkGroupFilterable>()
.Where(x => x.Source.OriginalString.Contains(@"/online.xaml", StringComparison.OrdinalIgnoreCase))) {
result.LinkChanged += OnlineLinkChanged;
}
foreach (var result in MenuLinkGroups.OfType<LinkGroupFilterable>()
.Where(x => x.GroupKey == "content")) {
result.LinkChanged += ContentLinkChanged;
}
UpdateLiveTabs();
SettingsHolder.Live.PropertyChanged += Live_PropertyChanged;
UpdateServerTab();
SettingsHolder.Online.PropertyChanged += Online_PropertyChanged;
if (!OfficialStarterNotification() && PluginsManager.Instance.HasAnyNew()) {
Toast.Show("Don’t forget to install plugins!", ""); // TODO?
}
EntryPoint.HandleSecondInstanceMessages(this, HandleMessagesAsync);
}