aboutsummaryrefslogtreecommitdiff
path: root/source/ShiftUI/Keyboard/InputLanguage.cs
diff options
context:
space:
mode:
authorMichael VanOverbeek <[email protected]>2016-07-25 12:57:52 -0400
committerGitHub <[email protected]>2016-07-25 12:57:52 -0400
commit46c1c31302f111a1f3ec23a70e6f3986a9aa2a27 (patch)
treef00af7ea3f6ad2641fb26fa1d310fd8b7179b39c /source/ShiftUI/Keyboard/InputLanguage.cs
parentaf48e774189596b8d7a058c564a7d6d75205ca03 (diff)
parent6fa16209519896de09949a27425dff00ebf2970a (diff)
downloadshiftos-c--46c1c31302f111a1f3ec23a70e6f3986a9aa2a27.tar.gz
shiftos-c--46c1c31302f111a1f3ec23a70e6f3986a9aa2a27.tar.bz2
shiftos-c--46c1c31302f111a1f3ec23a70e6f3986a9aa2a27.zip
Merge pull request #17 from MichaelTheShifter/shiftui_integration
Shiftui integration
Diffstat (limited to 'source/ShiftUI/Keyboard/InputLanguage.cs')
-rw-r--r--source/ShiftUI/Keyboard/InputLanguage.cs134
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
+ }
+}