diff options
| author | MichaelTheShifter <[email protected]> | 2016-07-20 09:40:36 -0400 |
|---|---|---|
| committer | MichaelTheShifter <[email protected]> | 2016-07-20 09:40:36 -0400 |
| commit | d40fed5ce2bc806a91245adb18039634eac13ed0 (patch) | |
| tree | f1d7168aee6db109ac2c738ad18c9db667a6ba69 /source/ShiftUI/Keyboard/InputLanguage.cs | |
| parent | f1856e8ed30ed882229fd3fa2a4038122a5fb441 (diff) | |
| download | shiftos-c--d40fed5ce2bc806a91245adb18039634eac13ed0.tar.gz shiftos-c--d40fed5ce2bc806a91245adb18039634eac13ed0.tar.bz2 shiftos-c--d40fed5ce2bc806a91245adb18039634eac13ed0.zip | |
Move ShiftUI source code to ShiftOS
This'll be a lot easier to work on.
Diffstat (limited to 'source/ShiftUI/Keyboard/InputLanguage.cs')
| -rw-r--r-- | source/ShiftUI/Keyboard/InputLanguage.cs | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/source/ShiftUI/Keyboard/InputLanguage.cs b/source/ShiftUI/Keyboard/InputLanguage.cs new file mode 100644 index 0000000..e2f7edd --- /dev/null +++ b/source/ShiftUI/Keyboard/InputLanguage.cs @@ -0,0 +1,134 @@ +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to +// the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +// Copyright (c) 2004 Novell, Inc. +// +// Authors: +// Peter Bartok [email protected] +// + + +// NOT COMPLETE + +using System.Globalization; +using System; + +namespace ShiftUI { + public sealed class InputLanguage { + private static InputLanguageCollection all; + private IntPtr handle; + private CultureInfo culture; + private string layout_name; + private static InputLanguage current_input; + private static InputLanguage default_input; + + #region Private Constructor + [MonoInternalNote ("Pull Microsofts InputLanguages and enter them here")] + internal InputLanguage() + { + } + + internal InputLanguage(IntPtr handle, CultureInfo culture, string layout_name) : this() { + this.handle=handle; + this.culture=culture; + this.layout_name=layout_name; + } + #endregion // Private Constructor + + #region Public Static Properties + public static InputLanguage CurrentInputLanguage { + get { + if (current_input == null) + current_input = InputLanguage.FromCulture (CultureInfo.CurrentUICulture); + return current_input; + } + + set { + if (InstalledInputLanguages.Contains (value)) + current_input = value; + } + } + + public static InputLanguage DefaultInputLanguage { + get { + if (default_input == null) + default_input = InputLanguage.FromCulture (CultureInfo.CurrentUICulture); + + return default_input; + } + } + + public static InputLanguageCollection InstalledInputLanguages { + get { + if (all == null) + all = new InputLanguageCollection (new InputLanguage[] { new InputLanguage (IntPtr.Zero, new CultureInfo(string.Empty), "US") }); + + return all; + } + } + #endregion // Public Static Properties + + #region Public Instance Properties + public CultureInfo Culture { + get { + return this.culture; + } + } + + public IntPtr Handle { + get { + return this.handle; + } + } + + public string LayoutName { + get { + return this.layout_name; + } + } + #endregion // Public Instance Properties + + #region Public Static Methods + public static InputLanguage FromCulture(System.Globalization.CultureInfo culture) { + foreach (InputLanguage c in InstalledInputLanguages) { + if (culture.EnglishName==c.culture.EnglishName) { + return new InputLanguage(c.handle, c.culture, c.layout_name); + } + } + + return new InputLanguage (InstalledInputLanguages[0].handle, InstalledInputLanguages[0].culture, InstalledInputLanguages[0].layout_name); + } + #endregion // Public Static Methods + + #region Public Instance Methods + public override bool Equals(object value) { + if (value is InputLanguage) { + if ((((InputLanguage)value).culture==this.culture) && (((InputLanguage)value).handle==this.handle) && (((InputLanguage)value).layout_name==this.layout_name)) { + return true; + } + } + return false; + } + + public override int GetHashCode() { + return base.GetHashCode(); + } + #endregion // Public Instance Methods + } +} |
