/// <summary> /// Populates the page with content passed during navigation. Any saved state is also /// provided when recreating a page from a prior session. /// </summary> /// <param name="sender"> /// The source of the event; typically <see cref="NavigationHelper"/> /// </param> /// <param name="e">Event data that provides both the navigation parameter passed to /// <see cref="Frame.Navigate(Type, Object)"/> when this page was initially requested and /// a dictionary of state preserved by this page during an earlier /// session. The state will be null the first time a page is visited.</param> private async void navigationHelper_LoadState(object sender, LoadStateEventArgs e) { FavoritesDataSource favoritesDataSource = (FavoritesDataSource)App.Current.Resources["favoritesDataSource"]; if (favoritesDataSource != null) { var items = new ObservableCollection <ConnectionData>(favoritesDataSource.Favorites.OrderBy(f => f.Name)); this.DefaultViewModel["Items"] = items; this.emptyHint.Visibility = this.itemGridView.Items.Count == 0 ? Visibility.Visible : Visibility.Collapsed; this.SetupAppBar(); } #if DEBUG this.licenseInformation = CurrentAppSimulator.LicenseInformation; #else this.licenseInformation = CurrentApp.LicenseInformation; #endif this.RefreshTrialHint(); this.licenseInformation.LicenseChanged += RefreshTrialHint; if (TerminalManager.Terminals.Count > 0) { this.previewGrid.ItemsSource = TerminalManager.Terminals; this.TopAppBar.IsOpen = true; await Task.Delay(1000); this.TopAppBar.IsOpen = false; } else { this.TopAppBar = null; } }
/// <summary> /// Occurs when the edit button is clicked. /// </summary> /// <param name="sender">The object where the event handler is attached.</param> /// <param name="e">The event data.</param> private void editButton_Click(object sender, RoutedEventArgs e) { FavoritesDataSource favoritesDataSource = (FavoritesDataSource)App.Current.Resources["favoritesDataSource"]; if (favoritesDataSource != null) { ConnectionData selectedItem = this.itemGridView.SelectedItem as ConnectionData; this.Frame.Navigate(typeof(ConnectionDataForm), selectedItem.Id); } }
/// <summary> /// Occurs when the save button is clicked. /// </summary> /// <param name="sender">The object where the event handler is attached.</param> /// <param name="e">The event data.</param> private void saveButton_Click(object sender, RoutedEventArgs e) { FavoritesDataSource favoritesDataSource = (FavoritesDataSource)App.Current.Resources["favoritesDataSource"]; if (favoritesDataSource != null) { var connectionData = this.CreateConnectionDataFromForm(); favoritesDataSource.AddOrUpdate(connectionData); } this.Frame.GoBack(); }
/// <summary> /// Occurs when the remove button is clicked. /// </summary> /// <param name="sender">The object where the event handler is attached.</param> /// <param name="e">The event data.</param> private void removeButton_Click(object sender, RoutedEventArgs e) { FavoritesDataSource favoritesDataSource = (FavoritesDataSource)App.Current.Resources["favoritesDataSource"]; if (favoritesDataSource != null) { var selectedItems = this.itemGridView.SelectedItems.ToArray(); foreach (ConnectionData selectedItem in selectedItems) { favoritesDataSource.Remove(selectedItem); ((ObservableCollection <ConnectionData>) this.DefaultViewModel["Items"]).Remove(selectedItem); } this.emptyHint.Visibility = this.itemGridView.Items.Count == 0 ? Visibility.Visible : Visibility.Collapsed; } }
private void CreateBindings() { var source = new FavoritesDataSource(TableView, _cellId, ViewModel) { UseAnimations = true }; this.CreateBinding(source) .For(v => v.ItemsSource) .To((FavoritesViewModel vm) => vm.FavoriteRecipes) .Apply(); this.CreateBinding(_emplyPlaceholderView) .For(v => v.Hidden) .To((FavoritesViewModel vm) => vm.IsTableNotEmpty) .Apply(); TableView.Source = source; TableView.ReloadData(); }
/// <summary> /// Occurs when an item in the favorites list view is clicked. /// </summary> /// <param name="sender">The object where the event handler is attached.</param> /// <param name="e">The event data.</param> private void ItemView_ItemClick(object sender, ItemClickEventArgs e) { if (e.ClickedItem == null) { return; } string id = ((ConnectionData)e.ClickedItem).Id; var connectionData = FavoritesDataSource.GetFavorite(id); if (connectionData == null) { return; } Guid guid = TerminalManager.Create(connectionData); this.Frame.Navigate(typeof(TerminalPage), guid); }
/// <summary> /// Invoked when the application is launched normally by the end user. Other entry points /// will be used such as when the application is launched to open a specific file. /// </summary> /// <param name="e">Details about the launch request and process.</param> protected async override void OnLaunched(LaunchActivatedEventArgs e) { #if DEBUG if (System.Diagnostics.Debugger.IsAttached) { this.DebugSettings.EnableFrameRateCounter = true; } #endif Frame rootFrame = Window.Current.Content as Frame; // Do not repeat app initialization when the Window already has content, // just ensure that the window is active if (rootFrame == null) { // Create a Frame to act as the navigation context and navigate to the first page rootFrame = new Frame(); //Associate the frame with a SuspensionManager key SuspensionManager.RegisterFrame(rootFrame, "AppFrame"); // Set the default language rootFrame.Language = Windows.Globalization.ApplicationLanguages.Languages[0]; rootFrame.NavigationFailed += OnNavigationFailed; await ApplicationData.Current.SetVersionAsync(0, SetVersionHandler); FavoritesDataSource favoritesDataSource = (FavoritesDataSource)App.Current.Resources["favoritesDataSource"]; if (favoritesDataSource != null) { if (favoritesDataSource.Favorites.Count == 0) { favoritesDataSource.GetFavorites(); } } PrivateKeysDataSource privateKeysDataSource = (PrivateKeysDataSource)App.Current.Resources["privateKeysDataSource"]; if (privateKeysDataSource != null) { if (privateKeysDataSource.PrivateKeys.Count == 0) { await privateKeysDataSource.GetPrivateKeys(); } } ColorThemesDataSource colorThemesDataSource = (ColorThemesDataSource)App.Current.Resources["colorThemesDataSource"]; if (colorThemesDataSource != null) { if (colorThemesDataSource.CustomTheme == null) { colorThemesDataSource.GetColorThemes(); } } if (e.PreviousExecutionState == ApplicationExecutionState.Terminated) { // Restore the saved session state only when appropriate try { await SuspensionManager.RestoreAsync(); } catch (SuspensionManagerException) { //Something went wrong restoring state. //Assume there is no state and continue } } // Place the frame in the current Window Window.Current.Content = rootFrame; } if (rootFrame.Content == null) { // When the navigation stack isn't restored navigate to the first page, // configuring the new page by passing required information as a navigation // parameter rootFrame.Navigate(typeof(FavoritesPage), e.Arguments); } // Ensure the current window is active Window.Current.Activate(); }
/// <summary> /// Populates the page with content passed during navigation. Any saved state is also /// provided when recreating a page from a prior session. /// </summary> /// <param name="sender"> /// The source of the event; typically <see cref="NavigationHelper"/> /// </param> /// <param name="e">Event data that provides both the navigation parameter passed to /// <see cref="Frame.Navigate(Type, Object)"/> when this page was initially requested and /// a dictionary of state preserved by this page during an earlier /// session. The state will be null the first time a page is visited.</param> private void navigationHelper_LoadState(object sender, LoadStateEventArgs e) { this.mode = ConnectionDataMode.Edit; string id = e.NavigationParameter as string; this.sshRadioButton.IsChecked = true; this.authenticationMethodComboBox.SelectedIndex = 0; PrivateKeysDataSource privateKeysDataSource = (PrivateKeysDataSource)App.Current.Resources["privateKeysDataSource"]; if (privateKeysDataSource != null) { var privateKeys = from privateKey in privateKeysDataSource.PrivateKeys orderby privateKey.FileName select privateKey.FileName; this.privateKeyComboBox.ItemsSource = privateKeys; } if (id == null) { this.mode = ConnectionDataMode.QuickConnect; this.nameOptions.Visibility = Visibility.Collapsed; } else if (id.Length == 0) { this.mode = ConnectionDataMode.New; } else { ConnectionData connectionData = FavoritesDataSource.GetFavorite(id); if (connectionData == null) { this.Frame.GoBack(); return; } this.nameTextBox.Text = connectionData.Name; switch (connectionData.Type) { case ConnectionType.Ssh: this.sshRadioButton.IsChecked = true; this.telnetRadioButton.IsChecked = false; break; case ConnectionType.Telnet: this.sshRadioButton.IsChecked = false; this.telnetRadioButton.IsChecked = true; break; } this.hostTextBox.Text = connectionData.Host; this.portTextBox.Text = connectionData.Port.ToString(); this.usernameTextBox.Text = connectionData.Username; this.authenticationMethodComboBox.SelectedIndex = (int)connectionData.Authentication; this.privateKeyComboBox.SelectedItem = connectionData.PrivateKeyName; this.privateKeyAgentForwardingCheckBox.IsChecked = connectionData.PrivateKeyAgentForwarding; this.id = connectionData.Id; } this.SetupPageTitle(); this.SetupAppBar(); }