aboutsummaryrefslogtreecommitdiff
path: root/lib/common.vala
diff options
context:
space:
mode:
Diffstat (limited to 'lib/common.vala')
-rw-r--r--lib/common.vala61
1 files changed, 61 insertions, 0 deletions
diff --git a/lib/common.vala b/lib/common.vala
new file mode 100644
index 00000000..83652c8d
--- /dev/null
+++ b/lib/common.vala
@@ -0,0 +1,61 @@
+string get_abbreviation (string name) {
+ string abbreviation = null;
+
+ if (name != null) {
+ char letters[2];
+ var index = 0;
+
+ for (var i = 0; i < name.length && index < 2; i++) {
+ if (name[i].isupper ()) {
+ letters[index++] = name[i];
+ }
+ }
+
+ if (index < 2) {
+ index = 0;
+
+ for (var i = 0; i < name.length && index < 2; i++) {
+ if (name[i].isalpha () && (i == 0 || !name[i - 1].isalpha ())) {
+ letters[index++] = name[i++].toupper ();
+ }
+ }
+
+ if (index < 2) {
+ index = 0;
+
+ for (var i = 0; i < name.length && index < 2; i++) {
+ if (name[i].isalpha ()) {
+ letters[index++] = name[i];
+ }
+ }
+ }
+ }
+
+ if (index == 2) {
+ abbreviation = @"$(letters[0])$(letters[1])";
+ } else if (index == 1) {
+ abbreviation = @"$(letters[0])";
+ }
+ }
+
+ return abbreviation;
+}
+
+string? get_display_name (string? layout) {
+ if (layout == null) {
+ return null;
+ }
+
+ var language = Xkl.get_language_name (layout);
+ var country = Xkl.get_country_name (layout);
+
+ if (language != null && country != null) {
+ return @"$language ($country)";
+ } else if (language != null) {
+ return language;
+ } else if (country != null) {
+ return country;
+ } else {
+ return null;
+ }
+}