From 7f9e0c6f74e4d85db873f2d8782f6b3da2d74c85 Mon Sep 17 00:00:00 2001 From: William Hua Date: Tue, 4 Jun 2013 10:09:22 -0400 Subject: Factor out common code. --- lib/Makefile.am | 3 ++- lib/common.vala | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++ lib/main.vala | 68 +++------------------------------------------------------ 3 files changed, 66 insertions(+), 66 deletions(-) create mode 100644 lib/common.vala (limited to 'lib') diff --git a/lib/Makefile.am b/lib/Makefile.am index b7fae014..80496827 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -5,7 +5,8 @@ AM_VALAFLAGS = --metadatadir $(top_srcdir)/deps \ libexec_PROGRAMS = indicator-keyboard-service -indicator_keyboard_service_SOURCES = main.vala +indicator_keyboard_service_SOURCES = main.vala \ + common.vala indicator_keyboard_service_VALAFLAGS = $(AM_VALAFLAGS) \ --pkg posix \ --pkg pangocairo \ 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; + } +} diff --git a/lib/main.vala b/lib/main.vala index f6f823fc..d85a8c1b 100644 --- a/lib/main.vala +++ b/lib/main.vala @@ -125,50 +125,6 @@ public class Indicator.Keyboard.Service : Object { return new BytesIcon (ByteArray.free_to_bytes ((owned) buffer)); } - [DBus (visible = false)] - private string abbreviate_display_name (string display_name) { - string abbreviation = null; - - if (display_name != null) { - char letters[2]; - var index = 0; - - for (var i = 0; i < display_name.length && index < 2; i++) { - if (display_name[i].isupper ()) { - letters[index++] = display_name[i]; - } - } - - if (index < 2) { - index = 0; - - for (var i = 0; i < display_name.length && index < 2; i++) { - if (display_name[i].isalpha () && (i == 0 || !display_name[i - 1].isalpha ())) { - letters[index++] = display_name[i++].toupper (); - } - } - - if (index < 2) { - index = 0; - - for (var i = 0; i < display_name.length && index < 2; i++) { - if (display_name[i].isalpha ()) { - letters[index++] = display_name[i]; - } - } - } - } - - if (index == 1) { - abbreviation = @"$(letters[0])"; - } else if (index == 2) { - abbreviation = @"$(letters[0])$(letters[1])"; - } - } - - return abbreviation; - } - [DBus (visible = false)] private uint get_icon_string_subscript (uint index) { uint icon_string_subscript = 0; @@ -228,19 +184,10 @@ public class Indicator.Keyboard.Service : Object { this.xkb_info.get_layout_info (name, out display_name, null, out layout_name, null); if (display_name == null) { - var language = Xkl.get_language_name (layout_name); - var country = Xkl.get_country_name (layout_name); - - if (language != null && country != null) { - display_name = @"$language ($country)"; - } else if (language != null) { - display_name = language; - } else if (country != null) { - display_name = country; - } + display_name = get_display_name (layout_name); } - this.icon_strings[index] = abbreviate_display_name (display_name); + this.icon_strings[index] = get_abbreviation (display_name); icon_string = this.icon_strings[index]; } } @@ -407,16 +354,7 @@ public class Indicator.Keyboard.Service : Object { this.xkb_info.get_layout_info (name, out display_name, null, out layout_name, null); if (display_name == null) { - var language = Xkl.get_language_name (layout_name); - var country = Xkl.get_country_name (layout_name); - - if (language != null && country != null) { - name = @"$language ($country)"; - } else if (language != null) { - name = language; - } else if (country != null) { - name = country; - } + name = get_display_name (layout_name); } else { name = display_name; } -- cgit v1.2.3