private void UpdatePairingButtons() { DeviceInformationDisplay deviceInfoDisp = (DeviceInformationDisplay)resultsListView.SelectedItem; if (null != deviceInfoDisp && deviceInfoDisp.DeviceInformation.Pairing.CanPair && !deviceInfoDisp.DeviceInformation.Pairing.IsPaired) { pairButton.IsEnabled = true; } else { pairButton.IsEnabled = false; } if (null != deviceInfoDisp && deviceInfoDisp.DeviceInformation.Pairing.IsPaired) { unpairButton.IsEnabled = true; } else { unpairButton.IsEnabled = false; } }
private async void PairButton_Click(object sender, RoutedEventArgs e) { // Gray out the pair button and results view while pairing is in progress. resultsListView.IsEnabled = false; pairButton.IsEnabled = false; rootPage.NotifyUser("Pairing started. Please wait...", NotifyType.StatusMessage); // Get the device selected for pairing DeviceInformationDisplay deviceInfoDisp = resultsListView.SelectedItem as DeviceInformationDisplay; // Get ceremony type and protection level selections DevicePairingKinds ceremoniesSelected = GetSelectedCeremonies(); ProtectionLevelSelectorInfo protectionLevelInfo = (ProtectionLevelSelectorInfo)protectionLevelComboBox.SelectedItem; DevicePairingProtectionLevel protectionLevel = protectionLevelInfo.ProtectionLevel; DeviceInformationCustomPairing customPairing = deviceInfoDisp.DeviceInformation.Pairing.Custom; customPairing.PairingRequested += PairingRequestedHandler; DevicePairingResult result = await customPairing.PairAsync(ceremoniesSelected, protectionLevel); customPairing.PairingRequested -= PairingRequestedHandler; rootPage.NotifyUser( "Pairing result = " + result.Status.ToString(), result.Status == DevicePairingResultStatus.Paired ? NotifyType.StatusMessage : NotifyType.ErrorMessage); HidePairingPanel(); UpdatePairingButtons(); resultsListView.IsEnabled = true; }
private async void PairButton_Click(object sender, RoutedEventArgs e) { DeviceInformationDisplay deviceInfoDisp = resultsListView.SelectedItem as DeviceInformationDisplay; pairButton.IsEnabled = false; DevicePairingResult dpr = await deviceInfoDisp.DeviceInformation.Pairing.PairAsync(); rootPage.NotifyUser( "Pairing result = " + dpr.Status.ToString(), dpr.Status == DevicePairingResultStatus.Paired ? NotifyType.StatusMessage : NotifyType.ErrorMessage); }
private void ResultsListView_SelectionChanged(object sender, SelectionChangedEventArgs e) { DeviceInformationDisplay deviceInfoDisp = (DeviceInformationDisplay)resultsListView.SelectedItem; if (null != deviceInfoDisp && true == deviceInfoDisp.DeviceInformation.Pairing.CanPair && false == deviceInfoDisp.DeviceInformation.Pairing.IsPaired) { pairButton.IsEnabled = true; } else { pairButton.IsEnabled = false; } }
private async void UnpairButton_Click(object sender, RoutedEventArgs e) { // Gray out the unpair button and results view while unpairing is in progress. resultsListView.IsEnabled = false; unpairButton.IsEnabled = false; rootPage.NotifyUser("Unpairing started. Please wait...", NotifyType.StatusMessage); DeviceInformationDisplay deviceInfoDisp = resultsListView.SelectedItem as DeviceInformationDisplay; DeviceUnpairingResult dupr = await deviceInfoDisp.DeviceInformation.Pairing.UnpairAsync(); rootPage.NotifyUser( "Unpairing result = " + dupr.Status.ToString(), dupr.Status == DeviceUnpairingResultStatus.Unpaired ? NotifyType.StatusMessage : NotifyType.ErrorMessage); UpdatePairingButtons(); resultsListView.IsEnabled = true; }
private void StartWatcher() { startWatcherButton.IsEnabled = false; ResultCollection.Clear(); // Get the device selector chosen by the UI then add additional constraints for devices that // can be paired or are already paired. DeviceSelectorInfo deviceSelectorInfo = (DeviceSelectorInfo)selectorComboBox.SelectedItem; string selector = "(" + deviceSelectorInfo.Selector + ")" + " AND (System.Devices.Aep.CanPair:=System.StructuredQueryType.Boolean#True OR System.Devices.Aep.IsPaired:=System.StructuredQueryType.Boolean#True)"; if (deviceSelectorInfo.Kind == DeviceInformationKind.Unknown) { // Kind will be determined by the selector deviceWatcher = DeviceInformation.CreateWatcher( selector, null // don't request additional properties for this sample ); } else { // Kind is specified in the selector info deviceWatcher = DeviceInformation.CreateWatcher( selector, null, // don't request additional properties for this sample deviceSelectorInfo.Kind); } // Hook up handlers for the watcher events before starting the watcher handlerAdded = new TypedEventHandler <DeviceWatcher, DeviceInformation>(async(watcher, deviceInfo) => { // Since we have the collection databound to a UI element, we need to update the collection on the UI thread. await rootPage.Dispatcher.RunAsync(CoreDispatcherPriority.Low, () => { ResultCollection.Add(new DeviceInformationDisplay(deviceInfo)); rootPage.NotifyUser( String.Format("{0} devices found.", ResultCollection.Count), NotifyType.StatusMessage); }); }); deviceWatcher.Added += handlerAdded; handlerUpdated = new TypedEventHandler <DeviceWatcher, DeviceInformationUpdate>(async(watcher, deviceInfoUpdate) => { // Since we have the collection databound to a UI element, we need to update the collection on the UI thread. await rootPage.Dispatcher.RunAsync(CoreDispatcherPriority.Low, () => { // Find the corresponding updated DeviceInformation in the collection and pass the update object // to the Update method of the existing DeviceInformation. This automatically updates the object // for us. foreach (DeviceInformationDisplay deviceInfoDisp in ResultCollection) { if (deviceInfoDisp.Id == deviceInfoUpdate.Id) { deviceInfoDisp.Update(deviceInfoUpdate); // If the item being updated is currently "selected", then update the pairing buttons DeviceInformationDisplay selectedDeviceInfoDisp = (DeviceInformationDisplay)resultsListView.SelectedItem; if (deviceInfoDisp == selectedDeviceInfoDisp) { UpdatePairingButtons(); } break; } } }); }); deviceWatcher.Updated += handlerUpdated; handlerRemoved = new TypedEventHandler <DeviceWatcher, DeviceInformationUpdate>(async(watcher, deviceInfoUpdate) => { // Since we have the collection databound to a UI element, we need to update the collection on the UI thread. await rootPage.Dispatcher.RunAsync(CoreDispatcherPriority.Low, () => { // Find the corresponding DeviceInformation in the collection and remove it foreach (DeviceInformationDisplay deviceInfoDisp in ResultCollection) { if (deviceInfoDisp.Id == deviceInfoUpdate.Id) { ResultCollection.Remove(deviceInfoDisp); break; } } rootPage.NotifyUser( String.Format("{0} devices found.", ResultCollection.Count), NotifyType.StatusMessage); }); }); deviceWatcher.Removed += handlerRemoved; handlerEnumCompleted = new TypedEventHandler <DeviceWatcher, Object>(async(watcher, obj) => { await rootPage.Dispatcher.RunAsync(CoreDispatcherPriority.Low, () => { rootPage.NotifyUser( String.Format("{0} devices found. Enumeration completed. Watching for updates...", ResultCollection.Count), NotifyType.StatusMessage); }); }); deviceWatcher.EnumerationCompleted += handlerEnumCompleted; handlerStopped = new TypedEventHandler <DeviceWatcher, Object>(async(watcher, obj) => { await rootPage.Dispatcher.RunAsync(CoreDispatcherPriority.Low, () => { rootPage.NotifyUser( String.Format("{0} devices found. Watcher {1}.", ResultCollection.Count, DeviceWatcherStatus.Aborted == watcher.Status ? "aborted" : "stopped"), NotifyType.StatusMessage); }); }); deviceWatcher.Stopped += handlerStopped; rootPage.NotifyUser("Starting Watcher...", NotifyType.StatusMessage); deviceWatcher.Start(); stopWatcherButton.IsEnabled = true; }