コード例 #1
0
ファイル: EmojiListFunctions.cs プロジェクト: dumbie/CtrlUI
        //Show the emoji popup
        async Task ShowEmojiPopup()
        {
            //Play window open sound
            PlayInterfaceSound(vConfigurationCtrlUI, "PopupOpen", false, false);

            //Show the emoji menu
            border_EmojiListPopup.Visibility = Visibility.Visible;
            grid_Keyboard.Opacity            = 0.60;
            grid_Keyboard.IsEnabled          = false;

            //Update the help bar
            textblock_LeftTriggerOff.Text  = string.Empty;
            textblock_RightTriggerOff.Text = "Switch emoji";

            //Store close focus button
            FrameworkElementFocusSave(vEmojiFocusedButtonClose, null);

            //Focus on popup button
            if (vEmojiFocusedButtonOpen.FocusListBox == null)
            {
                FrameworkElementFocus focusListbox = new FrameworkElementFocus();
                focusListbox.FocusListBox = listbox_EmojiList;
                focusListbox.FocusIndex   = vLastPopupListEmojiIndex;
                await FrameworkElementFocusFocus(focusListbox, vProcessCurrent.MainWindowHandle);
            }
            else
            {
                await FrameworkElementFocusFocus(vEmojiFocusedButtonOpen, vProcessCurrent.MainWindowHandle);
            }
        }
コード例 #2
0
ファイル: ElementFocus.cs プロジェクト: dumbie/CtrlUI
        //Save framework focus element
        public static void FrameworkElementFocusSave(FrameworkElementFocus saveElement, FrameworkElement focusedElement)
        {
            try
            {
                AVActions.ActionDispatcherInvoke(delegate
                {
                    //Get the currently focused element
                    if (focusedElement == null)
                    {
                        focusedElement = (FrameworkElement)Keyboard.FocusedElement;
                    }

                    //Check the currently focused element
                    if (focusedElement != null)
                    {
                        //Get focus type
                        Type focusType = focusedElement.GetType().BaseType;

                        //Validate focus type
                        if (focusType == typeof(Window))
                        {
                            Debug.WriteLine("Invalid element focus type: " + focusType);
                            saveElement = null;
                            return;
                        }

                        //Check if save element is null
                        if (saveElement == null)
                        {
                            Debug.WriteLine("Save element is null creating new.");
                            saveElement = new FrameworkElementFocus();
                        }

                        //Save focused element
                        saveElement.FocusElement = focusedElement;
                        if (focusType == typeof(ListBoxItem))
                        {
                            saveElement.FocusListBox = AVFunctions.FindVisualParent <ListBox>(saveElement.FocusElement);
                            saveElement.FocusIndex   = saveElement.FocusListBox.SelectedIndex;
                        }

                        Debug.WriteLine("Saved element focus: " + focusedElement + " / index: " + saveElement.FocusIndex);
                    }
                });
            }
            catch (Exception ex)
            {
                Debug.WriteLine("Failed saving element focus: " + ex.Message);
            }
        }
コード例 #3
0
        //Save framework focus element
        public static void FrameworkElementFocusSave(FrameworkElementFocus saveElement, FrameworkElement focusedElement)
        {
            try
            {
                AVActions.ActionDispatcherInvoke(delegate
                {
                    //Check if save element is null
                    if (saveElement == null)
                    {
                        Debug.WriteLine("Save element is null creating new.");
                        saveElement = new FrameworkElementFocus();
                    }

                    if (focusedElement != null)
                    {
                        saveElement.FocusElement = focusedElement;
                        if (saveElement.FocusElement != null && saveElement.FocusElement.GetType() == typeof(ListBoxItem))
                        {
                            saveElement.FocusListBox = AVFunctions.FindVisualParent <ListBox>(saveElement.FocusElement);
                            saveElement.FocusIndex   = saveElement.FocusListBox.SelectedIndex;
                        }
                        Debug.WriteLine("Saved focused element: " + focusedElement + " / index: " + saveElement.FocusIndex);
                    }
                    else
                    {
                        //Get the currently focused element
                        FrameworkElement frameworkElement = (FrameworkElement)Keyboard.FocusedElement;

                        //Check the currently focused element
                        if (frameworkElement != null)
                        {
                            saveElement.FocusElement = frameworkElement;
                            if (saveElement.FocusElement != null && saveElement.FocusElement.GetType() == typeof(ListBoxItem))
                            {
                                saveElement.FocusListBox = AVFunctions.FindVisualParent <ListBox>(saveElement.FocusElement);
                                saveElement.FocusIndex   = saveElement.FocusListBox.SelectedIndex;
                            }
                            Debug.WriteLine("Saved focused keyboard: " + frameworkElement + " / index: " + saveElement.FocusIndex);
                        }
                    }
                });
            }
            catch (Exception ex)
            {
                Debug.WriteLine("Failed saving element focus: " + ex.Message);
            }
        }
コード例 #4
0
ファイル: TextListFunctions.cs プロジェクト: radtek/CtrlUI
        //Show the text popup
        async Task ShowTextPopup()
        {
            try
            {
                //Play window open sound
                PlayInterfaceSound(vConfigurationCtrlUI, "PopupOpen", false);

                //Show the textlist menu
                border_TextListPopup.Visibility = Visibility.Visible;
                grid_Keyboard.Opacity           = 0.60;
                grid_Keyboard.IsEnabled         = false;

                //Store close focus button
                FrameworkElementFocusSave(vTextFocusedButtonClose, null);

                //Focus on popup button
                if (vTextFocusedButtonOpen.FocusListBox == null)
                {
                    if (vDirectKeyboardTextList.Any())
                    {
                        FrameworkElementFocus focusListbox = new FrameworkElementFocus();
                        focusListbox.FocusListBox = listbox_TextList;
                        focusListbox.FocusIndex   = 0;
                        await FrameworkElementFocusFocus(focusListbox, vProcessCurrent.MainWindowHandle);
                    }
                    else
                    {
                        await FrameworkElementFocus(key_TextListClose, false, vInteropWindowHandle);
                    }
                }
                else
                {
                    await FrameworkElementFocusFocus(vTextFocusedButtonOpen, vProcessCurrent.MainWindowHandle);
                }
            }
            catch { }
        }
コード例 #5
0
        //Focus framework focus element
        public static async Task FrameworkElementFocusFocus(FrameworkElementFocus focusElement, IntPtr windowHandle)
        {
            try
            {
                await AVActions.ActionDispatcherInvokeAsync(async delegate
                {
                    //Check if focus element is disconnected
                    bool disconnectedSource = false;
                    if (focusElement.FocusElement != null)
                    {
                        disconnectedSource = focusElement.FocusElement.DataContext == BindingOperations.DisconnectedSource;
                    }

                    //Force focus on element
                    if (focusElement.FocusElement != null && !disconnectedSource)
                    {
                        Debug.WriteLine("Focusing on previous element: " + focusElement.FocusElement);
                        await FrameworkElementFocus(focusElement.FocusElement, false, windowHandle);
                    }
                    else if (focusElement.FocusListBox != null && !disconnectedSource)
                    {
                        Debug.WriteLine("Focusing on previous listbox: " + focusElement.FocusListBox);
                        await ListboxFocusIndex(focusElement.FocusListBox, false, false, focusElement.FocusIndex, windowHandle);
                    }
                    else
                    {
                        Debug.WriteLine("No previous focus element, pressing tab key.");
                        await KeySendSingle(KeysVirtual.Tab, windowHandle);
                    }

                    //Reset the previous focus
                    focusElement.Reset();
                });
            }
            catch { }
        }
コード例 #6
0
ファイル: EmojiListFunctions.cs プロジェクト: dumbie/CtrlUI
        //Switch the emoji type list by button
        async void SwitchEmojiTypeListButton(object sender)
        {
            try
            {
                //Update the emoji selected index
                UpdateSelectedIndexEmoji();

                //Background brush variable
                SolidColorBrush selectedBrush = (SolidColorBrush)Application.Current.Resources["ApplicationAccentDarkBrush"];
                SolidColorBrush defaultBrush  = (SolidColorBrush)Application.Current.Resources["ApplicationAccentLightBrush"];

                //Reset background brush
                key_EmojiSmiley.Background    = defaultBrush;
                key_EmojiSmiley.BorderBrush   = defaultBrush;
                key_EmojiActivity.Background  = defaultBrush;
                key_EmojiActivity.BorderBrush = defaultBrush;
                key_EmojiFood.Background      = defaultBrush;
                key_EmojiFood.BorderBrush     = defaultBrush;
                key_EmojiNature.Background    = defaultBrush;
                key_EmojiNature.BorderBrush   = defaultBrush;
                key_EmojiOther.Background     = defaultBrush;
                key_EmojiOther.BorderBrush    = defaultBrush;
                key_EmojiPeople.Background    = defaultBrush;
                key_EmojiPeople.BorderBrush   = defaultBrush;
                key_EmojiSymbol.Background    = defaultBrush;
                key_EmojiSymbol.BorderBrush   = defaultBrush;
                key_EmojiTravel.Background    = defaultBrush;
                key_EmojiTravel.BorderBrush   = defaultBrush;

                //Switch the emoji list
                int selectIndex = 0;
                if (sender == key_EmojiSmiley)
                {
                    listbox_EmojiList.ItemsSource = vDirectKeyboardEmojiListSmiley;
                    key_EmojiSmiley.Background    = selectedBrush;
                    key_EmojiSmiley.BorderBrush   = selectedBrush;
                    selectIndex = vDirectKeyboardEmojiIndexSmiley;
                }
                else if (sender == key_EmojiActivity)
                {
                    listbox_EmojiList.ItemsSource = vDirectKeyboardEmojiListActivity;
                    key_EmojiActivity.Background  = selectedBrush;
                    key_EmojiActivity.BorderBrush = selectedBrush;
                    selectIndex = vDirectKeyboardEmojiIndexActivity;
                }
                else if (sender == key_EmojiFood)
                {
                    listbox_EmojiList.ItemsSource = vDirectKeyboardEmojiListFood;
                    key_EmojiFood.Background      = selectedBrush;
                    key_EmojiFood.BorderBrush     = selectedBrush;
                    selectIndex = vDirectKeyboardEmojiIndexFood;
                }
                else if (sender == key_EmojiNature)
                {
                    listbox_EmojiList.ItemsSource = vDirectKeyboardEmojiListNature;
                    key_EmojiNature.Background    = selectedBrush;
                    key_EmojiNature.BorderBrush   = selectedBrush;
                    selectIndex = vDirectKeyboardEmojiIndexNature;
                }
                else if (sender == key_EmojiOther)
                {
                    listbox_EmojiList.ItemsSource = vDirectKeyboardEmojiListOther;
                    key_EmojiOther.Background     = selectedBrush;
                    key_EmojiOther.BorderBrush    = selectedBrush;
                    selectIndex = vDirectKeyboardEmojiIndexOther;
                }
                else if (sender == key_EmojiPeople)
                {
                    listbox_EmojiList.ItemsSource = vDirectKeyboardEmojiListPeople;
                    key_EmojiPeople.Background    = selectedBrush;
                    key_EmojiPeople.BorderBrush   = selectedBrush;
                    selectIndex = vDirectKeyboardEmojiIndexPeople;
                }
                else if (sender == key_EmojiSymbol)
                {
                    listbox_EmojiList.ItemsSource = vDirectKeyboardEmojiListSymbol;
                    key_EmojiSymbol.Background    = selectedBrush;
                    key_EmojiSymbol.BorderBrush   = selectedBrush;
                    selectIndex = vDirectKeyboardEmojiIndexSymbol;
                }
                else if (sender == key_EmojiTravel)
                {
                    listbox_EmojiList.ItemsSource = vDirectKeyboardEmojiListTravel;
                    key_EmojiTravel.Background    = selectedBrush;
                    key_EmojiTravel.BorderBrush   = selectedBrush;
                    selectIndex = vDirectKeyboardEmojiIndexTravel;
                }

                //Focus on the current emoji
                FrameworkElementFocus focusListbox = new FrameworkElementFocus();
                focusListbox.FocusListBox = listbox_EmojiList;
                focusListbox.FocusIndex   = selectIndex;
                await FrameworkElementFocusFocus(focusListbox, vProcessCurrent.MainWindowHandle);
            }
            catch { }
        }