예제 #1
0
        private void GenerateContent()
        {
            Log.DebugFormat("GenerateContent called. Keyboard language is '{0}' and Keyboard type is '{1}'",
                            Settings.Default.KeyboardAndDictionaryLanguage, Keyboard != null ? Keyboard.GetType() : null);

            //Clear out point to key map
            PointToKeyValueMap = null;

            object newContent = ErrorContent;

            if (Keyboard is ViewModelKeyboards.Alpha1)
            {
                if (Settings.Default.UsingCommuniKateKeyboardLayout)
                {
                    newContent = (object)new CommonViews.CommuniKate {
                        DataContext = Keyboard
                    };
                }
                else
                {
                    switch (Settings.Default.KeyboardAndDictionaryLanguage)
                    {
                    case Languages.CatalanSpain:
                        newContent = new CatalanViews.Alpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.CroatianCroatia:
                        newContent = new CroatianViews.Alpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.CzechCzechRepublic:
                        newContent = new CzechViews.Alpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.DanishDenmark:
                        newContent = new DanishViews.Alpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.DutchBelgium:
                        newContent = new DutchViews.BelgiumAlpha {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.DutchNetherlands:
                        newContent = new DutchViews.NetherlandsAlpha {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.FinnishFinland:
                        newContent = new FinnishViews.Alpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.FrenchCanada:
                        newContent = new FrenchViews.CanadaAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.FrenchFrance:
                        newContent = new FrenchViews.FranceAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.GeorgianGeorgia:
                        newContent = Settings.Default.UseSimplifiedKeyboardLayout
                            ? (object)new GeorgianViews.SimplifiedAlpha1 {
                            DataContext = Keyboard
                        }
                            : new GeorgianViews.Alpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.GermanGermany:
                        newContent = Settings.Default.UseSimplifiedKeyboardLayout
                            ? (object)new GermanViews.SimplifiedAlpha1 {
                            DataContext = Keyboard
                        }
                            : Settings.Default.UseAlphabeticalKeyboardLayout
                                ? (object)new GermanViews.AlphabeticalAlpha1 {
                            DataContext = Keyboard
                        }
                                : new GermanViews.Alpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.GreekGreece:
                        newContent = new GreekViews.Alpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.HebrewIsrael:
                        newContent = Settings.Default.UseSimplifiedKeyboardLayout
                            ? (object)new HebrewViews.SimplifiedAlpha1 {
                            DataContext = Keyboard
                        }
                            : new HebrewViews.Alpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.ItalianItaly:
                        newContent = new ItalianViews.Alpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.JapaneseJapan:
                        newContent = Settings.Default.UseSimplifiedKeyboardLayout
                            ? (object)new JapaneseViews.SimplifiedAlpha1 {
                            DataContext = Keyboard
                        }
                            : new JapaneseViews.Alpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.KoreanKorea:
                        newContent = new KoreanViews.Alpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.PersianIran:
                        newContent = new PersianViews.Alpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.PolishPoland:
                        newContent = new PolishViews.Alpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.PortuguesePortugal:
                        newContent = new PortugueseViews.Alpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.RussianRussia:
                        newContent = new RussianViews.Alpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.SerbianSerbia:
                        newContent = new SerbianViews.Alpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.SlovakSlovakia:
                        newContent = new SlovakViews.Alpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.SlovenianSlovenia:
                        newContent = new SlovenianViews.Alpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.SpanishSpain:
                        newContent = new SpanishViews.Alpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.TurkishTurkey:
                        newContent = Settings.Default.UseSimplifiedKeyboardLayout
                            ? (object)new TurkishViews.SimplifiedAlpha1 {
                            DataContext = Keyboard
                        }
                            : new TurkishViews.Alpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.UkrainianUkraine:
                        newContent = new UkrainianViews.Alpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.UrduPakistan:
                        newContent = new UrduViews.Alpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    default:
                        newContent = Settings.Default.UseSimplifiedKeyboardLayout
                            ? (object)new EnglishViews.SimplifiedAlpha1 {
                            DataContext = Keyboard
                        }
                            : Settings.Default.UseAlphabeticalKeyboardLayout
                                ? (object)new EnglishViews.AlphabeticalAlpha1 {
                            DataContext = Keyboard
                        }
                                : new EnglishViews.Alpha1 {
                            DataContext = Keyboard
                        };
                        break;
                    }
                }
            }
            else if (Keyboard is ViewModelKeyboards.Alpha2)
            {
                switch (Settings.Default.KeyboardAndDictionaryLanguage)
                {
                case Languages.HebrewIsrael:
                    newContent = new HebrewViews.Alpha2 {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.JapaneseJapan:
                    newContent = Settings.Default.UseSimplifiedKeyboardLayout
                            ? (object)new JapaneseViews.SimplifiedAlpha2 {
                        DataContext = Keyboard
                    }
                            : new JapaneseViews.Alpha2 {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.KoreanKorea:
                    newContent = new KoreanViews.Alpha2 {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.PersianIran:
                    newContent = new PersianViews.Alpha2 {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.UrduPakistan:
                    newContent = new UrduViews.Alpha2 {
                        DataContext = Keyboard
                    };
                    break;
                }
            }
            else if (Keyboard is ViewModelKeyboards.ConversationAlpha1)
            {
                if (Settings.Default.UsingCommuniKateKeyboardLayout)
                {
                    newContent = (object)new CommonViews.CommuniKate {
                        DataContext = Keyboard
                    };
                }
                else
                {
                    switch (Settings.Default.KeyboardAndDictionaryLanguage)
                    {
                    case Languages.CatalanSpain:
                        newContent = new CatalanViews.ConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.CroatianCroatia:
                        newContent = new CroatianViews.ConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.CzechCzechRepublic:
                        newContent = new CzechViews.ConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.DanishDenmark:
                        newContent = new DanishViews.ConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.DutchBelgium:
                        newContent = new DutchViews.BelgiumConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.DutchNetherlands:
                        newContent = new DutchViews.NetherlandsConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.FinnishFinland:
                        newContent = new FinnishViews.ConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.FrenchCanada:
                        newContent = new FrenchViews.CanadaConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.FrenchFrance:
                        newContent = new FrenchViews.FranceConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.GeorgianGeorgia:
                        newContent = Settings.Default.UseSimplifiedKeyboardLayout
                            ? (object)new GeorgianViews.SimplifiedConversationAlpha1 {
                            DataContext = Keyboard
                        }
                            : new GeorgianViews.ConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.GermanGermany:
                        newContent = Settings.Default.UseSimplifiedKeyboardLayout
                            ? (object)new GermanViews.SimplifiedConversationAlpha1 {
                            DataContext = Keyboard
                        }
                            : Settings.Default.UseAlphabeticalKeyboardLayout
                                ? (object)new GermanViews.AlphabeticalConversationAlpha1 {
                            DataContext = Keyboard
                        }
                                : new EnglishViews.ConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.GreekGreece:
                        newContent = new GreekViews.ConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.HebrewIsrael:
                        newContent = Settings.Default.UseSimplifiedKeyboardLayout
                            ? (object)new HebrewViews.SimplifiedConversationAlpha1 {
                            DataContext = Keyboard
                        }
                            : new HebrewViews.ConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.ItalianItaly:
                        newContent = new ItalianViews.ConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.JapaneseJapan:
                        newContent = new JapaneseViews.ConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.KoreanKorea:
                        newContent = new KoreanViews.ConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.PersianIran:
                        newContent = new PersianViews.ConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.PolishPoland:
                        newContent = new PolishViews.ConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.PortuguesePortugal:
                        newContent = new PortugueseViews.ConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.RussianRussia:
                        newContent = new RussianViews.ConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.SerbianSerbia:
                        newContent = new SerbianViews.ConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.SlovakSlovakia:
                        newContent = new SlovakViews.ConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.SlovenianSlovenia:
                        newContent = new SlovenianViews.ConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.SpanishSpain:
                        newContent = new SpanishViews.ConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.TurkishTurkey:
                        newContent = Settings.Default.UseSimplifiedKeyboardLayout
                            ? (object)new TurkishViews.SimplifiedConversationAlpha1 {
                            DataContext = Keyboard
                        }
                            : new TurkishViews.ConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.UkrainianUkraine:
                        newContent = new UkrainianViews.ConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.UrduPakistan:
                        newContent = new UrduViews.ConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    default:
                        newContent = Settings.Default.UseSimplifiedKeyboardLayout
                            ? (object)new EnglishViews.SimplifiedConversationAlpha1 {
                            DataContext = Keyboard
                        }
                            : Settings.Default.UseAlphabeticalKeyboardLayout
                                ? (object)new EnglishViews.AlphabeticalConversationAlpha1 {
                            DataContext = Keyboard
                        }
                                : new EnglishViews.ConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;
                    }
                }
            }
            else if (Keyboard is ViewModelKeyboards.ConversationAlpha2)
            {
                switch (Settings.Default.KeyboardAndDictionaryLanguage)
                {
                case Languages.JapaneseJapan:
                    newContent = new JapaneseViews.ConversationAlpha2 {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.KoreanKorea:
                    newContent = new KoreanViews.ConversationAlpha2 {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.PersianIran:
                    newContent = new PersianViews.ConversationAlpha2 {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.UrduPakistan:
                    newContent = new UrduViews.ConversationAlpha2 {
                        DataContext = Keyboard
                    };
                    break;
                }
            }
            else if (Keyboard is ViewModelKeyboards.ConversationConfirm)
            {
                newContent = new CommonViews.ConversationConfirm {
                    DataContext = Keyboard
                };
            }
            else if (Keyboard is ViewModelKeyboards.ConversationNumericAndSymbols)
            {
                switch (Settings.Default.KeyboardAndDictionaryLanguage)
                {
                case Languages.PersianIran:
                    newContent = new PersianViews.ConversationNumericAndSymbols {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.UrduPakistan:
                    newContent = new UrduViews.ConversationNumericAndSymbols {
                        DataContext = Keyboard
                    };
                    break;

                default:
                    newContent = new CommonViews.ConversationNumericAndSymbols {
                        DataContext = Keyboard
                    };
                    break;
                }
            }
            else if (Keyboard is ViewModelKeyboards.Currencies1)
            {
                newContent = new CommonViews.Currencies1 {
                    DataContext = Keyboard
                };
            }
            else if (Keyboard is ViewModelKeyboards.Currencies2)
            {
                newContent = new CommonViews.Currencies2 {
                    DataContext = Keyboard
                };
            }
            else if (Keyboard is ViewModelKeyboards.Diacritics1)
            {
                newContent = new CommonViews.Diacritics1 {
                    DataContext = Keyboard
                };
            }
            else if (Keyboard is ViewModelKeyboards.Diacritics2)
            {
                newContent = new CommonViews.Diacritics2 {
                    DataContext = Keyboard
                };
            }
            else if (Keyboard is ViewModelKeyboards.Diacritics3)
            {
                newContent = new CommonViews.Diacritics3 {
                    DataContext = Keyboard
                };
            }
            else if (Keyboard is ViewModelKeyboards.Language)
            {
                newContent = new CommonViews.Language {
                    DataContext = Keyboard
                };
            }
            else if (Keyboard is ViewModelKeyboards.Voice)
            {
                var voice = Keyboard as ViewModelKeyboards.Voice;

                // Since the Voice keyboard's view-model is in charge of creating the keys instead of the
                // view, we need to make sure any localized text is up-to-date with the current UI language.
                voice.LocalizeKeys();

                newContent = new CommonViews.Voice {
                    DataContext = Keyboard
                };
            }
            else if (Keyboard is ViewModelKeyboards.Menu)
            {
                newContent = new CommonViews.Menu {
                    DataContext = Keyboard
                };
            }
            else if (Keyboard is ViewModelKeyboards.Minimised)
            {
                newContent = new CommonViews.Minimised {
                    DataContext = Keyboard
                };
            }
            else if (Keyboard is ViewModelKeyboards.Mouse)
            {
                newContent = new CommonViews.Mouse {
                    DataContext = Keyboard
                };
            }
            else if (Keyboard is ViewModelKeyboards.NumericAndSymbols1)
            {
                switch (Settings.Default.KeyboardAndDictionaryLanguage)
                {
                case Languages.PersianIran:
                    newContent = new PersianViews.NumericAndSymbols1 {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.UrduPakistan:
                    newContent = new UrduViews.NumericAndSymbols1 {
                        DataContext = Keyboard
                    };
                    break;

                default:
                    newContent = new CommonViews.NumericAndSymbols1 {
                        DataContext = Keyboard
                    };
                    break;
                }
            }
            else if (Keyboard is ViewModelKeyboards.NumericAndSymbols2)
            {
                switch (Settings.Default.KeyboardAndDictionaryLanguage)
                {
                case Languages.PersianIran:
                    newContent = new PersianViews.NumericAndSymbols2 {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.UrduPakistan:
                    newContent = new UrduViews.NumericAndSymbols2 {
                        DataContext = Keyboard
                    };
                    break;

                default:
                    newContent = new CommonViews.NumericAndSymbols2 {
                        DataContext = Keyboard
                    };
                    break;
                }
            }
            else if (Keyboard is ViewModelKeyboards.NumericAndSymbols3)
            {
                switch (Settings.Default.KeyboardAndDictionaryLanguage)
                {
                case Languages.PersianIran:
                    newContent = new PersianViews.NumericAndSymbols3 {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.UrduPakistan:
                    newContent = new UrduViews.NumericAndSymbols3 {
                        DataContext = Keyboard
                    };
                    break;

                default:
                    newContent = new CommonViews.NumericAndSymbols3 {
                        DataContext = Keyboard
                    };
                    break;
                }
            }
            else if (Keyboard is ViewModelKeyboards.PhysicalKeys)
            {
                newContent = new CommonViews.PhysicalKeys {
                    DataContext = Keyboard
                };
            }
            else if (Keyboard is ViewModelKeyboards.SizeAndPosition)
            {
                newContent = new CommonViews.SizeAndPosition {
                    DataContext = Keyboard
                };
            }
            else if (Keyboard is ViewModelKeyboards.WebBrowsing)
            {
                newContent = new CommonViews.WebBrowsing {
                    DataContext = Keyboard
                };
            }
            else if (Keyboard is ViewModelKeyboards.YesNoQuestion)
            {
                newContent = new CommonViews.YesNoQuestion {
                    DataContext = Keyboard
                };
            }
            else if (Keyboard is ViewModelKeyboards.DynamicKeyboard)
            {
                var kb = Keyboard as ViewModelKeyboards.DynamicKeyboard;
                newContent = new CommonViews.DynamicKeyboard(kb.Link)
                {
                    DataContext = Keyboard
                };
            }
            else if (Keyboard is ViewModelKeyboards.DynamicKeyboardSelector)
            {
                var kb = Keyboard as ViewModelKeyboards.DynamicKeyboardSelector;
                newContent = new CommonViews.DynamicKeyboardSelector(kb.PageIndex)
                {
                    DataContext = Keyboard
                };
            }
            Content = newContent;
        }
예제 #2
0
        private void GenerateContent()
        {
            Log.DebugFormat("GenerateContent called. Keyboard language is '{0}' and Keyboard type is '{1}'",
                            Settings.Default.KeyboardAndDictionaryLanguage, Keyboard != null ? Keyboard.GetType() : null);

            //Clear out point to key map
            PointToKeyValueMap = null;

            mainWindow = mainWindow != null ? mainWindow : VisualAndLogicalTreeHelper.FindVisualParent <MainWindow>(this);

            //Clear any potential main window color overrides
            if (mainWindow != null)
            {
                keyFamily                           = mainWindow.KeyFamily;
                keyValueByGroup                     = mainWindow.KeyValueByGroup;
                overrideTimesByKey                  = mainWindow.OverrideTimesByKey;
                windowManipulationService           = mainWindow.WindowManipulationService;
                mainWindow.BackgroundColourOverride = null;
                mainWindow.BorderBrushOverride      = null;

                //Clear the dictionaries
                keyFamily?.Clear();
                keyValueByGroup?.Clear();
                overrideTimesByKey?.Clear();

                //https://github.com/OptiKey/OptiKey/pull/715
                //Fixing issue where navigating between dynamic and conversation keyboards causing sizing problems:
                //https://github.com/AdamRoden: "I think that because we use a dispatcher to apply the saved size and position,
                //we get in a situation where the main thread maximizes the window before it gets resized by the dispatcher thread.
                //My fix basically says, "don't try restoring the persisted state if we're navigating a maximized keyboard.""
                if (!(Keyboard is ViewModelKeyboards.DynamicKeyboard) &&
                    !(Keyboard is ViewModelKeyboards.ConversationAlpha1) &&
                    !(Keyboard is ViewModelKeyboards.ConversationAlpha2) &&
                    !(Keyboard is ViewModelKeyboards.ConversationConfirm) &&
                    !(Keyboard is ViewModelKeyboards.ConversationNumericAndSymbols))
                {
                    windowManipulationService.RestorePersistedState();
                }
            }

            object newContent = ErrorContent;

            if (Keyboard is ViewModelKeyboards.Alpha1)
            {
                if (Settings.Default.UsingCommuniKateKeyboardLayout)
                {
                    newContent = (object)new CommonViews.CommuniKate {
                        DataContext = Keyboard
                    };
                }
                else
                {
                    switch (Settings.Default.KeyboardAndDictionaryLanguage)
                    {
                    case Languages.CatalanSpain:
                        newContent = new CatalanViews.Alpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.CroatianCroatia:
                        newContent = new CroatianViews.Alpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.CzechCzechRepublic:
                        newContent = new CzechViews.Alpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.DanishDenmark:
                        newContent = new DanishViews.Alpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.DutchBelgium:
                        newContent = new DutchViews.BelgiumAlpha {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.DutchNetherlands:
                        newContent = new DutchViews.NetherlandsAlpha {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.FinnishFinland:
                        newContent = new FinnishViews.Alpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.FrenchCanada:
                        newContent = new FrenchViews.CanadaAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.FrenchFrance:
                        newContent = new FrenchViews.FranceAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.GeorgianGeorgia:
                        newContent = Settings.Default.UseSimplifiedKeyboardLayout
                            ? (object)new GeorgianViews.SimplifiedAlpha1 {
                            DataContext = Keyboard
                        }
                            : new GeorgianViews.Alpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.GermanGermany:
                        newContent = Settings.Default.UseSimplifiedKeyboardLayout
                            ? (object)new GermanViews.SimplifiedAlpha1 {
                            DataContext = Keyboard
                        }
                            : Settings.Default.UseAlphabeticalKeyboardLayout
                                ? (object)new GermanViews.AlphabeticalAlpha1 {
                            DataContext = Keyboard
                        }
                                : new GermanViews.Alpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.GreekGreece:
                        newContent = new GreekViews.Alpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.HebrewIsrael:
                        newContent = Settings.Default.UseSimplifiedKeyboardLayout
                            ? (object)new HebrewViews.SimplifiedAlpha1 {
                            DataContext = Keyboard
                        }
                            : new HebrewViews.Alpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.HindiIndia:
                        newContent = new HindiViews.Alpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.HungarianHungary:
                        newContent = new HungarianViews.Alpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.ItalianItaly:
                        newContent = Settings.Default.UseAlphabeticalKeyboardLayout
                            ? (object)new ItalianViews.AlphabeticalAlpha1 {
                            DataContext = Keyboard
                        }
                            : new ItalianViews.Alpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.JapaneseJapan:
                        newContent = Settings.Default.UseSimplifiedKeyboardLayout
                            ? (object)new JapaneseViews.SimplifiedAlpha1 {
                            DataContext = Keyboard
                        }
                            : new JapaneseViews.Alpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.KoreanKorea:
                        newContent = new KoreanViews.Alpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.PersianIran:
                        newContent = new PersianViews.Alpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.PolishPoland:
                        newContent = new PolishViews.Alpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.PortuguesePortugal:
                        newContent = new PortugueseViews.Alpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.RussianRussia:
                        newContent = new RussianViews.Alpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.SerbianSerbia:
                        newContent = new SerbianViews.Alpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.SlovakSlovakia:
                        newContent = new SlovakViews.Alpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.SlovenianSlovenia:
                        newContent = new SlovenianViews.Alpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.SpanishSpain:
                        newContent = new SpanishViews.Alpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.TurkishTurkey:
                        newContent = Settings.Default.UseSimplifiedKeyboardLayout
                            ? (object)new TurkishViews.SimplifiedAlpha1 {
                            DataContext = Keyboard
                        }
                            : new TurkishViews.Alpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.UkrainianUkraine:
                        newContent = new UkrainianViews.Alpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.UrduPakistan:
                        newContent = new UrduViews.Alpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    default:
                        newContent = Settings.Default.UseSimplifiedKeyboardLayout
                            ? (object)new EnglishViews.SimplifiedAlpha1 {
                            DataContext = Keyboard
                        }
                            : Settings.Default.UseAlphabeticalKeyboardLayout
                                ? (object)new EnglishViews.AlphabeticalAlpha1 {
                            DataContext = Keyboard
                        }
                                : new EnglishViews.Alpha1 {
                            DataContext = Keyboard
                        };
                        break;
                    }
                }
            }
            else if (Keyboard is ViewModelKeyboards.Alpha2)
            {
                switch (Settings.Default.KeyboardAndDictionaryLanguage)
                {
                case Languages.HebrewIsrael:
                    newContent = new HebrewViews.Alpha2 {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.HindiIndia:
                    newContent = new HindiViews.Alpha2 {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.JapaneseJapan:
                    newContent = Settings.Default.UseSimplifiedKeyboardLayout
                            ? (object)new JapaneseViews.SimplifiedAlpha2 {
                        DataContext = Keyboard
                    }
                            : new JapaneseViews.Alpha2 {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.KoreanKorea:
                    newContent = new KoreanViews.Alpha2 {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.PersianIran:
                    newContent = new PersianViews.Alpha2 {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.UrduPakistan:
                    newContent = new UrduViews.Alpha2 {
                        DataContext = Keyboard
                    };
                    break;
                }
            }
            //else if (Keyboard is ViewModelKeyboards.Alpha3)
            //{
            //    switch (Settings.Default.KeyboardAndDictionaryLanguage)
            //    {
            //        case Languages.PlaceholderForALanguageWith3AlphaKeyboards:
            //            newContent = new PlaceholderForALanguageWith3AlphaKeyboardsViews.Alpha3 {DataContext = Keyboard};
            //            break;
            //    }
            //}
            else if (Keyboard is ViewModelKeyboards.ConversationAlpha1)
            {
                if (Settings.Default.UsingCommuniKateKeyboardLayout)
                {
                    newContent = (object)new CommonViews.CommuniKate {
                        DataContext = Keyboard
                    };
                }
                else
                {
                    switch (Settings.Default.KeyboardAndDictionaryLanguage)
                    {
                    case Languages.CatalanSpain:
                        newContent = new CatalanViews.ConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.CroatianCroatia:
                        newContent = new CroatianViews.ConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.CzechCzechRepublic:
                        newContent = new CzechViews.ConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.DanishDenmark:
                        newContent = new DanishViews.ConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.DutchBelgium:
                        newContent = new DutchViews.BelgiumConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.DutchNetherlands:
                        newContent = new DutchViews.NetherlandsConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.FinnishFinland:
                        newContent = new FinnishViews.ConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.FrenchCanada:
                        newContent = new FrenchViews.CanadaConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.FrenchFrance:
                        newContent = new FrenchViews.FranceConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.GeorgianGeorgia:
                        newContent = Settings.Default.UseSimplifiedKeyboardLayout
                            ? (object)new GeorgianViews.SimplifiedConversationAlpha1 {
                            DataContext = Keyboard
                        }
                            : new GeorgianViews.ConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.GermanGermany:
                        newContent = Settings.Default.UseSimplifiedKeyboardLayout
                            ? (object)new GermanViews.SimplifiedConversationAlpha1 {
                            DataContext = Keyboard
                        }
                            : Settings.Default.UseAlphabeticalKeyboardLayout
                                ? (object)new GermanViews.AlphabeticalConversationAlpha1 {
                            DataContext = Keyboard
                        }
                                : new GermanViews.ConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.GreekGreece:
                        newContent = new GreekViews.ConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.HebrewIsrael:
                        newContent = Settings.Default.UseSimplifiedKeyboardLayout
                            ? (object)new HebrewViews.SimplifiedConversationAlpha1 {
                            DataContext = Keyboard
                        }
                            : new HebrewViews.ConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.HindiIndia:
                        newContent = new HindiViews.ConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.HungarianHungary:
                        newContent = new HungarianViews.ConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.ItalianItaly:
                        newContent = Settings.Default.UseAlphabeticalKeyboardLayout
                            ? (object)new ItalianViews.AlphabeticalConversationAlpha1 {
                            DataContext = Keyboard
                        }
                            : new ItalianViews.ConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.JapaneseJapan:
                        newContent = new JapaneseViews.ConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.KoreanKorea:
                        newContent = new KoreanViews.ConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.PersianIran:
                        newContent = new PersianViews.ConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.PolishPoland:
                        newContent = new PolishViews.ConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.PortuguesePortugal:
                        newContent = new PortugueseViews.ConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.RussianRussia:
                        newContent = new RussianViews.ConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.SerbianSerbia:
                        newContent = new SerbianViews.ConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.SlovakSlovakia:
                        newContent = new SlovakViews.ConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.SlovenianSlovenia:
                        newContent = new SlovenianViews.ConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.SpanishSpain:
                        newContent = new SpanishViews.ConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.TurkishTurkey:
                        newContent = Settings.Default.UseSimplifiedKeyboardLayout
                            ? (object)new TurkishViews.SimplifiedConversationAlpha1 {
                            DataContext = Keyboard
                        }
                            : new TurkishViews.ConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.UkrainianUkraine:
                        newContent = new UkrainianViews.ConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    case Languages.UrduPakistan:
                        newContent = new UrduViews.ConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;

                    default:
                        newContent = Settings.Default.UseSimplifiedKeyboardLayout
                            ? (object)new EnglishViews.SimplifiedConversationAlpha1 {
                            DataContext = Keyboard
                        }
                            : Settings.Default.UseAlphabeticalKeyboardLayout
                                ? (object)new EnglishViews.AlphabeticalConversationAlpha1 {
                            DataContext = Keyboard
                        }
                                : new EnglishViews.ConversationAlpha1 {
                            DataContext = Keyboard
                        };
                        break;
                    }
                }
            }
            else if (Keyboard is ViewModelKeyboards.ConversationAlpha2)
            {
                switch (Settings.Default.KeyboardAndDictionaryLanguage)
                {
                case Languages.HindiIndia:
                    newContent = new HindiViews.ConversationAlpha2 {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.JapaneseJapan:
                    newContent = new JapaneseViews.ConversationAlpha2 {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.KoreanKorea:
                    newContent = new KoreanViews.ConversationAlpha2 {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.PersianIran:
                    newContent = new PersianViews.ConversationAlpha2 {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.UrduPakistan:
                    newContent = new UrduViews.ConversationAlpha2 {
                        DataContext = Keyboard
                    };
                    break;
                }
            }
            //else if (Keyboard is ViewModelKeyboards.ConversationAlpha3)
            //{
            //    switch (Settings.Default.KeyboardAndDictionaryLanguage)
            //    {
            //        case Languages.PlaceholderForALanguageWith3AlphaKeyboards:
            //            newContent = new PlaceholderForALanguageWith3AlphaKeyboardsViews.ConversationAlpha3 { DataContext = Keyboard };
            //            break;
            //    }
            //}
            else if (Keyboard is ViewModelKeyboards.ConversationConfirm)
            {
                newContent = new CommonViews.ConversationConfirm {
                    DataContext = Keyboard
                };
            }
            else if (Keyboard is ViewModelKeyboards.ConversationNumericAndSymbols)
            {
                switch (Settings.Default.KeyboardAndDictionaryLanguage)
                {
                case Languages.HindiIndia:
                    newContent = new HindiViews.ConversationNumericAndSymbols {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.PersianIran:
                    newContent = new PersianViews.ConversationNumericAndSymbols {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.UrduPakistan:
                    newContent = new UrduViews.ConversationNumericAndSymbols {
                        DataContext = Keyboard
                    };
                    break;

                default:
                    newContent = new CommonViews.ConversationNumericAndSymbols {
                        DataContext = Keyboard
                    };
                    break;
                }
            }
            else if (Keyboard is ViewModelKeyboards.Currencies1)
            {
                newContent = new CommonViews.Currencies1 {
                    DataContext = Keyboard
                };
            }
            else if (Keyboard is ViewModelKeyboards.Currencies2)
            {
                newContent = new CommonViews.Currencies2 {
                    DataContext = Keyboard
                };
            }
            else if (Keyboard is ViewModelKeyboards.Diacritics1)
            {
                newContent = new CommonViews.Diacritics1 {
                    DataContext = Keyboard
                };
            }
            else if (Keyboard is ViewModelKeyboards.Diacritics2)
            {
                newContent = new CommonViews.Diacritics2 {
                    DataContext = Keyboard
                };
            }
            else if (Keyboard is ViewModelKeyboards.Diacritics3)
            {
                newContent = new CommonViews.Diacritics3 {
                    DataContext = Keyboard
                };
            }
            else if (Keyboard is ViewModelKeyboards.Language)
            {
                newContent = new CommonViews.Language {
                    DataContext = Keyboard
                };
            }
            else if (Keyboard is ViewModelKeyboards.Voice)
            {
                var voice = Keyboard as ViewModelKeyboards.Voice;

                // Since the Voice keyboard's view-model is in charge of creating the keys instead of the
                // view, we need to make sure any localized text is up-to-date with the current UI language.
                voice.LocalizeKeys();

                newContent = new CommonViews.Voice {
                    DataContext = Keyboard
                };
            }
            else if (Keyboard is ViewModelKeyboards.Menu)
            {
                newContent = new CommonViews.Menu {
                    DataContext = Keyboard
                };
            }
            else if (Keyboard is ViewModelKeyboards.Minimised)
            {
                newContent = new CommonViews.Minimised {
                    DataContext = Keyboard
                };
            }
            else if (Keyboard is ViewModelKeyboards.Mouse)
            {
                newContent = new CommonViews.Mouse {
                    DataContext = Keyboard
                };
            }
            else if (Keyboard is ViewModelKeyboards.NumericAndSymbols1)
            {
                switch (Settings.Default.KeyboardAndDictionaryLanguage)
                {
                case Languages.HindiIndia:
                    newContent = new HindiViews.NumericAndSymbols1 {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.PersianIran:
                    newContent = new PersianViews.NumericAndSymbols1 {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.UrduPakistan:
                    newContent = new UrduViews.NumericAndSymbols1 {
                        DataContext = Keyboard
                    };
                    break;

                default:
                    newContent = new CommonViews.NumericAndSymbols1 {
                        DataContext = Keyboard
                    };
                    break;
                }
            }
            else if (Keyboard is ViewModelKeyboards.NumericAndSymbols2)
            {
                switch (Settings.Default.KeyboardAndDictionaryLanguage)
                {
                case Languages.HindiIndia:
                    newContent = new HindiViews.NumericAndSymbols2 {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.PersianIran:
                    newContent = new PersianViews.NumericAndSymbols2 {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.UrduPakistan:
                    newContent = new UrduViews.NumericAndSymbols2 {
                        DataContext = Keyboard
                    };
                    break;

                default:
                    newContent = new CommonViews.NumericAndSymbols2 {
                        DataContext = Keyboard
                    };
                    break;
                }
            }
            else if (Keyboard is ViewModelKeyboards.NumericAndSymbols3)
            {
                switch (Settings.Default.KeyboardAndDictionaryLanguage)
                {
                case Languages.HindiIndia:
                    newContent = new HindiViews.NumericAndSymbols3 {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.PersianIran:
                    newContent = new PersianViews.NumericAndSymbols3 {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.UrduPakistan:
                    newContent = new UrduViews.NumericAndSymbols3 {
                        DataContext = Keyboard
                    };
                    break;

                default:
                    newContent = new CommonViews.NumericAndSymbols3 {
                        DataContext = Keyboard
                    };
                    break;
                }
            }
            else if (Keyboard is ViewModelKeyboards.PhysicalKeys)
            {
                newContent = new CommonViews.PhysicalKeys {
                    DataContext = Keyboard
                };
            }
            else if (Keyboard is ViewModelKeyboards.SizeAndPosition)
            {
                newContent = new CommonViews.SizeAndPosition {
                    DataContext = Keyboard
                };
            }
            else if (Keyboard is ViewModelKeyboards.WebBrowsing)
            {
                newContent = new CommonViews.WebBrowsing {
                    DataContext = Keyboard
                };
            }
            else if (Keyboard is ViewModelKeyboards.YesNoQuestion)
            {
                newContent = new CommonViews.YesNoQuestion {
                    DataContext = Keyboard
                };
            }
            else if (Keyboard is ViewModelKeyboards.DynamicKeyboard)
            {
                var kb = Keyboard as ViewModelKeyboards.DynamicKeyboard;
                newContent = new CommonViews.DynamicKeyboard(mainWindow, kb.Link, keyFamily, keyValueByGroup, overrideTimesByKey, windowManipulationService)
                {
                    DataContext = Keyboard
                };
            }
            else if (Keyboard is ViewModelKeyboards.DynamicKeyboardSelector)
            {
                var kb = Keyboard as ViewModelKeyboards.DynamicKeyboardSelector;
                newContent = new CommonViews.DynamicKeyboardSelector(kb.PageIndex)
                {
                    DataContext = Keyboard
                };
            }
            Content = newContent;
        }
예제 #3
0
        private void GenerateContent()
        {
            Log.DebugFormat("GenerateContent called. Keyboard language is '{0}' and Keyboard type is '{1}'",
                            Settings.Default.KeyboardAndDictionaryLanguage, Keyboard != null ? Keyboard.GetType() : null);

            //Clear out point to key map
            PointToKeyValueMap = null;

            object newContent = ErrorContent;

            if (Keyboard is ViewModelKeyboards.Alpha)
            {
                switch (Settings.Default.KeyboardAndDictionaryLanguage)
                {
                case Languages.CatalanSpain:
                    newContent = new CatalanViews.Alpha {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.CroatianCroatia:
                    newContent = new CroatianViews.Alpha {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.CzechCzechRepublic:
                    newContent = new CzechViews.Alpha {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.DanishDenmark:
                    newContent = new DanishViews.Alpha {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.DutchBelgium:
                    newContent = new DutchViews.BelgiumAlpha {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.DutchNetherlands:
                    newContent = new DutchViews.NetherlandsAlpha {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.FrenchFrance:
                    newContent = new FrenchViews.Alpha {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.GermanGermany:
                    newContent = new GermanViews.Alpha {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.GreekGreece:
                    newContent = new GreekViews.Alpha {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.ItalianItaly:
                    newContent = new ItalianViews.Alpha {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.PortuguesePortugal:
                    newContent = new PortugueseViews.Alpha {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.RussianRussia:
                    newContent = new RussianViews.Alpha {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.SlovakSlovakia:
                    newContent = new SlovakViews.Alpha {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.SlovenianSlovenia:
                    newContent = new SlovenianViews.Alpha {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.SpanishSpain:
                    newContent = new SpanishViews.Alpha {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.TurkishTurkey:
                    newContent = new TurkishViews.Alpha {
                        DataContext = Keyboard
                    };
                    break;

                default:
                    newContent = Settings.Default.UsingCommuniKateKeyboardLayout
                            ? (object)new EnglishViews.CommuniKate {
                        DataContext = Keyboard
                    }
                            : Settings.Default.UseSimplifiedKeyboardLayout
                            ? (object)new EnglishViews.SimplifiedAlpha {
                        DataContext = Keyboard
                    }
                            : Settings.Default.UseAlphabeticalKeyboardLayout
                            ? (object)new EnglishViews.AlphabeticalAlpha {
                        DataContext = Keyboard
                    }
                            : new EnglishViews.Alpha {
                        DataContext = Keyboard
                    };
                    break;
                }
            }
            else if (Keyboard is ViewModelKeyboards.ConversationAlpha)
            {
                switch (Settings.Default.KeyboardAndDictionaryLanguage)
                {
                case Languages.CatalanSpain:
                    newContent = new CatalanViews.ConversationAlpha {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.CroatianCroatia:
                    newContent = new CroatianViews.ConversationAlpha {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.CzechCzechRepublic:
                    newContent = new CzechViews.ConversationAlpha {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.DanishDenmark:
                    newContent = new DanishViews.ConversationAlpha {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.DutchBelgium:
                    newContent = new DutchViews.BelgiumConversationAlpha {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.DutchNetherlands:
                    newContent = new DutchViews.NetherlandsConversationAlpha {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.FrenchFrance:
                    newContent = new FrenchViews.ConversationAlpha {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.GermanGermany:
                    newContent = new GermanViews.ConversationAlpha {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.GreekGreece:
                    newContent = new GreekViews.ConversationAlpha {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.ItalianItaly:
                    newContent = new ItalianViews.ConversationAlpha {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.PortuguesePortugal:
                    newContent = new PortugueseViews.ConversationAlpha {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.RussianRussia:
                    newContent = new RussianViews.ConversationAlpha {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.SlovakSlovakia:
                    newContent = new SlovakViews.ConversationAlpha {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.SlovenianSlovenia:
                    newContent = new SlovenianViews.ConversationAlpha {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.SpanishSpain:
                    newContent = new SpanishViews.ConversationAlpha {
                        DataContext = Keyboard
                    };
                    break;

                case Languages.TurkishTurkey:
                    newContent = new TurkishViews.ConversationAlpha {
                        DataContext = Keyboard
                    };
                    break;

                default:
                    newContent = Settings.Default.UsingCommuniKateKeyboardLayout
                            ? (object)new EnglishViews.CommuniKate {
                        DataContext = Keyboard
                    }
                            : Settings.Default.UseSimplifiedKeyboardLayout
                            ? (object)new EnglishViews.SimplifiedConversationAlpha {
                        DataContext = Keyboard
                    }
                            : Settings.Default.UseAlphabeticalKeyboardLayout
                            ? (object)new EnglishViews.AlphabeticalConversationAlpha {
                        DataContext = Keyboard
                    }
                            : new EnglishViews.ConversationAlpha {
                        DataContext = Keyboard
                    };
                    break;
                }
            }
            else if (Keyboard is ViewModelKeyboards.ConversationConfirm)
            {
                newContent = new CommonViews.ConversationConfirm {
                    DataContext = Keyboard
                };
            }
            else if (Keyboard is ViewModelKeyboards.ConversationNumericAndSymbols)
            {
                newContent = new CommonViews.ConversationNumericAndSymbols {
                    DataContext = Keyboard
                };
            }
            else if (Keyboard is ViewModelKeyboards.Currencies1)
            {
                newContent = new CommonViews.Currencies1 {
                    DataContext = Keyboard
                };
            }
            else if (Keyboard is ViewModelKeyboards.Currencies2)
            {
                newContent = new CommonViews.Currencies2 {
                    DataContext = Keyboard
                };
            }
            else if (Keyboard is ViewModelKeyboards.Diacritics1)
            {
                newContent = new CommonViews.Diacritics1 {
                    DataContext = Keyboard
                };
            }
            else if (Keyboard is ViewModelKeyboards.Diacritics2)
            {
                newContent = new CommonViews.Diacritics2 {
                    DataContext = Keyboard
                };
            }
            else if (Keyboard is ViewModelKeyboards.Diacritics3)
            {
                newContent = new CommonViews.Diacritics3 {
                    DataContext = Keyboard
                };
            }
            else if (Keyboard is ViewModelKeyboards.Language)
            {
                newContent = new CommonViews.Language {
                    DataContext = Keyboard
                };
            }
            else if (Keyboard is ViewModelKeyboards.Menu)
            {
                newContent = new CommonViews.Menu {
                    DataContext = Keyboard
                };
            }
            else if (Keyboard is ViewModelKeyboards.Minimised)
            {
                newContent = new CommonViews.Minimised {
                    DataContext = Keyboard
                };
            }
            else if (Keyboard is ViewModelKeyboards.Mouse)
            {
                newContent = new CommonViews.Mouse {
                    DataContext = Keyboard
                };
            }
            else if (Keyboard is ViewModelKeyboards.NumericAndSymbols2)
            {
                newContent = new CommonViews.NumericAndSymbols2 {
                    DataContext = Keyboard
                };
            }
            else if (Keyboard is ViewModelKeyboards.NumericAndSymbols3)
            {
                newContent = new CommonViews.NumericAndSymbols3 {
                    DataContext = Keyboard
                };
            }
            else if (Keyboard is ViewModelKeyboards.NumericAndSymbols1)
            {
                newContent = new CommonViews.NumericAndSymbols1 {
                    DataContext = Keyboard
                };
            }
            else if (Keyboard is ViewModelKeyboards.PhysicalKeys)
            {
                newContent = new CommonViews.PhysicalKeys {
                    DataContext = Keyboard
                };
            }
            else if (Keyboard is ViewModelKeyboards.SizeAndPosition)
            {
                newContent = new CommonViews.SizeAndPosition {
                    DataContext = Keyboard
                };
            }
            else if (Keyboard is ViewModelKeyboards.WebBrowsing)
            {
                newContent = new CommonViews.WebBrowsing {
                    DataContext = Keyboard
                };
            }
            else if (Keyboard is ViewModelKeyboards.YesNoQuestion)
            {
                newContent = new CommonViews.YesNoQuestion {
                    DataContext = Keyboard
                };
            }
            else if (Keyboard is ViewModelKeyboards.DynamicKeyboard)
            {
                var kb = Keyboard as ViewModelKeyboards.DynamicKeyboard;
                newContent = new CommonViews.DynamicKeyboard(kb.Link, kb.ResizeAction)
                {
                    DataContext = Keyboard
                };
            }
            else if (Keyboard is ViewModelKeyboards.DynamicKeyboardSelector)
            {
                var kb = Keyboard as ViewModelKeyboards.DynamicKeyboardSelector;
                newContent = new CommonViews.DynamicKeyboardSelector(kb.PageIndex)
                {
                    DataContext = Keyboard
                };
            }
            Content = newContent;
        }
        public DynamicKeyboardSelector(int pageIndex)
        {
            InitializeComponent();
            this.pageIndex = pageIndex;

            // Populate model
            folder = new DynamicKeyboardFolder();

            int numKeyboardFilesLoaded = folder.GetNumberOfDynamicKeyboards();

            if (numKeyboardFilesLoaded % mCols == 0)
            {
                mRows = numKeyboardFilesLoaded / mCols;
            }
            else
            {
                mRows = numKeyboardFilesLoaded / mCols + 1;
            }

            // Setup grid
            for (int i = 0; i < this.mRows; i++)
            {
                MainGrid.RowDefinitions.Add(new RowDefinition());
            }

            for (int i = 0; i < this.mCols; i++)
            {
                MainGrid.ColumnDefinitions.Add(new ColumnDefinition());
            }

            // Add quit key, bottom right
            {
                Key newKey = new Key();
                newKey.SharedSizeGroup = "BackButton";
                newKey.SymbolGeometry  = (System.Windows.Media.Geometry)App.Current.Resources["QuitIcon"];
                newKey.Text            = JuliusSweetland.OptiKey.Properties.Resources.QUIT;
                newKey.Value           = KeyValues.QuitKey;
                this.AddKey(newKey, this.mRows - 1, this.mCols - 1);
            }

            // Sleep key for bottom left
            {
                Key newKey = new Key();
                newKey.SymbolGeometry = (System.Windows.Media.Geometry)App.Current.Resources["SleepIcon"];
                newKey.Text           = JuliusSweetland.OptiKey.Properties.Resources.SLEEP;
                newKey.Value          = KeyValues.SleepKey;
                this.AddKey(newKey, this.mRows - 1, 0);
            }

            // Add keyboard keys, or blanks
            int maxKeyboardsPerPage = (this.mCols - 2) * this.mRows;
            int totalNumKeyboards   = folder.keyboards.Count;
            int remainingKeyboards  = totalNumKeyboards - maxKeyboardsPerPage * pageIndex;
            int nKBs    = Math.Min(remainingKeyboards, maxKeyboardsPerPage);
            int firstKB = maxKeyboardsPerPage * pageIndex;

            if (totalNumKeyboards > 0)
            {
                for (int i = 0; i < maxKeyboardsPerPage; i++)
                {
                    var r = i / (this.mCols - 2); // integer division
                    var c = 1 + (i % (this.mCols - 2));

                    if (i < nKBs)
                    {
                        KeyboardInfo kbInfo = folder.keyboards.ElementAt(firstKB + i);
                        // Add key to link to keyboard
                        this.AddKeyboardKey(kbInfo, r, c);
                    }
                    else
                    {
                        // Add empty/inactive key for consistent aesthetic
                        this.AddKey(new Key(), r, c);
                    }
                }
            }
            else
            {
                // Error layout for when there are no keyboards
                {
                    Key newKey = new Key();
                    newKey.SharedSizeGroup = "ErrorText1";
                    newKey.Text            = JuliusSweetland.OptiKey.Properties.Resources.NO_KEYBOARDS_FOUND;
                    this.AddKey(newKey, 0, 1, 1, 2);
                }
                {
                    Key newKey = new Key();
                    newKey.SharedSizeGroup = "ErrorText1";
                    newKey.Text            = DynamicKeyboard.StringWithValidNewlines(JuliusSweetland.OptiKey.Properties.Resources.KEYBOARD_FOLDER_CAN_BE_CHANGED_SPLIT_LINE);
                    this.AddKey(newKey, 1, 1, 1, 2);
                }
                {
                    Key newKey = new Key();
                    newKey.SharedSizeGroup = "ErrorText2";
                    newKey.Text            = JuliusSweetland.OptiKey.Properties.Resources.DYNAMIC_KEYBOARDS_LOCATION_LABEL;
                    newKey.Text           += "\n";
                    newKey.Text           += Settings.Default.DynamicKeyboardsLocation;
                    this.AddKey(newKey, 2, 1, 1, 2);
                }
            }

            // Add prev/next keys (may be disabled)
            {
                Key newKey = new Key();
                newKey.SharedSizeGroup = "BackButton";
                newKey.SymbolGeometry  = (System.Windows.Media.Geometry)App.Current.Resources["ArrowPointingToLeftIcon"];
                newKey.Text            = JuliusSweetland.OptiKey.Properties.Resources.PREV;
                if (this.pageIndex > 0)
                {
                    newKey.Value = KeyValues.DynamicKeyboardPrev;
                }
                this.AddKey(newKey, 0, 0, 2, 1);
            }
            {
                Key newKey = new Key();
                newKey.SharedSizeGroup = "BackButton";
                newKey.SymbolGeometry  = (System.Windows.Media.Geometry)App.Current.Resources["ArrowPointingToRightIcon"];
                newKey.Text            = JuliusSweetland.OptiKey.Properties.Resources.NEXT;
                if (nKBs < remainingKeyboards)
                {
                    newKey.Value = KeyValues.DynamicKeyboardNext;
                }
                this.AddKey(newKey, 0, this.mCols - 1, 2, 1);
            }
        }