//Hide or show the search async Task Popup_ShowHide_Search(bool ForceShow) { try { if (vSearchOpen) { await Popup_Close_Top(); return; } if (ForceShow) { await Popup_Close_All(); } if (Popup_Any_Open()) { return; } //Check if keyboard is visible IntPtr keyboardWindowHandle = FindWindowEx(IntPtr.Zero, IntPtr.Zero, null, "DirectXInput Keyboard (Visible)"); //Show the search popup if (!vControllerAnyConnected() || (vControllerAnyConnected() && keyboardWindowHandle != IntPtr.Zero)) { PlayInterfaceSound(vConfigurationCtrlUI, "PopupOpen", false, false); } //Save the previous focus element FrameworkElementFocusSave(vSearchElementFocus, null); //Show the popup Popup_Show_Element(grid_Popup_Search); vSearchOpen = true; //Check if search list has items if (!List_Search.Any()) { //Force focus on searchbox await FrameworkElementFocus(grid_Popup_Search_textbox, false, vProcessCurrent.MainWindowHandle); //Launch the keyboard controller if (vAppActivated && vControllerAnyConnected()) { await KeyboardControllerHideShow(true); } } else { //Force focus on listbox await ListboxFocusIndex(lb_Search, false, false, lb_Search.SelectedIndex, vProcessCurrent.MainWindowHandle); } } catch { } }
async void Grid_Popup_Search_textbox_TextChanged(object sender, TextChangedEventArgs e) { try { string searchString = grid_Popup_Search_textbox.Text; string placeholderString = (string)grid_Popup_Search_textbox.GetValue(TextboxPlaceholder.PlaceholderProperty); if (!string.IsNullOrWhiteSpace(searchString) && searchString != placeholderString) { //Clear the current popup list List_Search.Clear(); //Search and add applications IEnumerable <DataBindApp> searchResult = CombineAppLists(true, true, true).Where(x => x.Name.ToLower().Contains(searchString.ToLower())); foreach (DataBindApp dataBindApp in searchResult) { try { await ListBoxAddItem(lb_Search, List_Search, dataBindApp, false, false); } catch { } } //Update the search results count UpdateSearchResults(); //Select the first search index lb_Search.SelectedIndex = 0; Debug.WriteLine("Added search application: " + searchString); } else { //Clear the current popup list List_Search.Clear(); //Reset the search text grid_Popup_Search_Count_TextBlock.Text = string.Empty; grid_Popup_Search_textblock_Result.Text = "Please enter a search term above."; grid_Popup_Search_textblock_Result.Visibility = Visibility.Visible; } } catch { } }
//Reset the popup to defaults async Task Popup_Reset_Search(bool FocusTextbox) { try { //Clear the current popup list List_Search.Clear(); //Reset the search text grid_Popup_Search_Count_TextBlock.Text = string.Empty; if (FocusTextbox) { //Empty the textbox text grid_Popup_Search_textbox.Text = string.Empty; //Force focus on element await FrameworkElementFocus(grid_Popup_Search_textbox, false, vProcessCurrent.MainWindowHandle); } else { string placeholderString = (string)grid_Popup_Search_textbox.GetValue(TextboxPlaceholder.PlaceholderProperty); grid_Popup_Search_textbox.Text = placeholderString; } grid_Popup_Search_textblock_Result.Text = "Please enter a search term above."; grid_Popup_Search_textblock_Result.Visibility = Visibility.Visible; //Show or hide the keyboard icon if (CheckKeyboardEnabled()) { grid_Popup_Search_button_KeyboardControllerIcon.Visibility = Visibility.Visible; } else { grid_Popup_Search_button_KeyboardControllerIcon.Visibility = Visibility.Collapsed; } } catch { } }