private async Task CreateTerminal(ShellProfile profile, NewTerminalLocation location) { if (!_alreadyLaunched) { var viewModel = _container.Resolve <MainViewModel>(); await viewModel.AddTerminalAsync(profile); await CreateMainView(typeof(MainPage), viewModel, true).ConfigureAwait(true); } else if (location == NewTerminalLocation.Tab && _mainViewModels.Count > 0) { MainViewModel item = _mainViewModels.FirstOrDefault(o => o.ApplicationView.Id == _activeWindowId); if (item != null) { await item.AddTerminalAsync(profile); } else { await _mainViewModels.Last().AddTerminalAsync(profile); } } else { var viewModel = await CreateNewTerminalWindow().ConfigureAwait(true); await viewModel.AddTerminalAsync(profile); } }
private async Task CreateTerminal(ShellProfile profile, NewTerminalLocation location) { if (!_alreadyLaunched) { var viewModel = _container.Resolve <MainViewModel>(); viewModel.AddTerminal(profile); await CreateMainView(typeof(MainPage), viewModel, true).ConfigureAwait(true); } else if (location == NewTerminalLocation.Tab && _mainViewModels.Count > 0) { _mainViewModels.Last().AddTerminal(profile); } else { var viewModel = await CreateNewTerminalWindow().ConfigureAwait(true); viewModel.AddTerminal(profile); } }
private async Task CreateTerminal(ShellProfile profile, NewTerminalLocation location, ActivationViewSwitcher viewSwitcher = null) { async Task ShowAsStandaloneAsync(MainViewModel viewModel) { int viewId = viewModel.ApplicationView.Id; if (viewSwitcher != null) { await viewModel.ApplicationView.RunOnDispatcherThread(async() => await viewSwitcher.ShowAsStandaloneAsync(viewId)); } else { await ApplicationViewSwitcher.TryShowAsStandaloneAsync(viewId); } } if (!_alreadyLaunched) { var viewModel = _container.Resolve <MainViewModel>(); await viewModel.AddTerminalAsync(profile); await CreateMainView(typeof(MainPage), viewModel, true).ConfigureAwait(true); } else if (location == NewTerminalLocation.Tab && _mainViewModels.Count > 0) { MainViewModel item = _mainViewModels.FirstOrDefault(o => o.ApplicationView.Id == _activeWindowId); if (item == null) { item = _mainViewModels.Last(); } await item.AddTerminalAsync(profile); await ShowAsStandaloneAsync(item); } else { var viewModel = await CreateNewTerminalWindow().ConfigureAwait(true); await viewModel.AddTerminalAsync(profile); await ShowAsStandaloneAsync(viewModel); } }
private async Task CreateTerminalAsync(ShellProfile profile, NewTerminalLocation location, ActivationViewSwitcher viewSwitcher = null) { if (!_alreadyLaunched) { var viewModel = _container.Resolve <MainViewModel>(); await viewModel.AddTabAsync(profile); await CreateMainViewAsync(typeof(MainPage), viewModel, true); } else if (location == NewTerminalLocation.Tab && _mainViewModels.Count > 0) { var item = _mainViewModels.FirstOrDefault(o => o.ApplicationView.Id == _activeWindowId) ?? _mainViewModels.Last(); await item.AddTabAsync(profile); await ShowAsStandaloneAsync(item, viewSwitcher); } else { var viewModel = await CreateNewTerminalWindowAsync(); await viewModel.AddTabAsync(profile); await ShowAsStandaloneAsync(viewModel, viewSwitcher); } }