From b428c3a627e7de45b7a9cde85893dcca06926561 Mon Sep 17 00:00:00 2001 From: Marvin W Date: Tue, 29 Aug 2017 21:51:08 +0200 Subject: support platforms without UTF-8 and use native file picker --- .../conversation_item_skeleton.vala | 33 ++++++++++++++-------- main/src/ui/conversation_summary/message_item.vala | 0 main/src/ui/manage_accounts/dialog.vala | 20 +++++++++---- plugins/http-files/src/contact_titlebar_entry.vala | 8 ++---- 4 files changed, 38 insertions(+), 23 deletions(-) create mode 100644 main/src/ui/conversation_summary/message_item.vala diff --git a/main/src/ui/conversation_summary/conversation_item_skeleton.vala b/main/src/ui/conversation_summary/conversation_item_skeleton.vala index b30d45d3..f9340c84 100644 --- a/main/src/ui/conversation_summary/conversation_item_skeleton.vala +++ b/main/src/ui/conversation_summary/conversation_item_skeleton.vala @@ -110,25 +110,34 @@ public class ConversationItemSkeleton : Grid { } } + private static string format_time(DateTime datetime, string format_24h, string format_12h) { + string format = Util.is_24h_format() ? format_24h : format_12h; + if (!get_charset(null)) { + // No UTF-8 support, use simple colon for time instead + format = format.replace("∶", ":"); + } + return datetime.format(format); + } + private static string get_relative_time(DateTime datetime) { DateTime now = new DateTime.now_local(); TimeSpan timespan = now.difference(datetime); if (timespan > 365 * TimeSpan.DAY) { - return datetime.format(Util.is_24h_format() ? - /* xgettext:no-c-format */ /* Date + time in 24h format (w/o seconds) */ _("%x, %H\u2236%M") : - /* xgettext:no-c-format */ /* Date + time in 12h format (w/o seconds)*/ _("%x, %l\u2236%M %p")); + return format_time(datetime, + /* xgettext:no-c-format */ /* Date + time in 24h format (w/o seconds) */ _("%x, %H∶%M"), + /* xgettext:no-c-format */ /* Date + time in 12h format (w/o seconds)*/ _("%x, %l∶%M %p")); } else if (timespan > 7 * TimeSpan.DAY) { - return datetime.format(Util.is_24h_format() ? - /* xgettext:no-c-format */ /* Month, day and time in 24h format (w/o seconds) */ _("%b %d, %H\u2236%M") : - /* xgettext:no-c-format */ /* Month, day and time in 12h format (w/o seconds) */ _("%b %d, %l\u2236%M %p")); + return format_time(datetime, + /* xgettext:no-c-format */ /* Month, day and time in 24h format (w/o seconds) */ _("%b %d, %H∶%M"), + /* xgettext:no-c-format */ /* Month, day and time in 12h format (w/o seconds) */ _("%b %d, %l∶%M %p")); } else if (datetime.get_day_of_month() != new DateTime.now_utc().get_day_of_month()) { - return datetime.format(Util.is_24h_format() ? - /* xgettext:no-c-format */ /* Day of week and time in 12h format (w/o seconds) */ _("%a, %H\u2236%M") : - /* xgettext:no-c-format */ _("%a, %l\u2236%M %p")); + return format_time(datetime, + /* xgettext:no-c-format */ /* Day of week and time in 24h format (w/o seconds) */ _("%a, %H∶%M"), + /* xgettext:no-c-format */ /* Day of week and time in 12h format (w/o seconds) */_("%a, %l∶%M %p")); } else if (timespan > 9 * TimeSpan.MINUTE) { - return datetime.format(Util.is_24h_format() ? - /* xgettext:no-c-format */ /* Time in 24h format (w/o seconds) */ _("%H\u2236%M") : - /* xgettext:no-c-format */ /* Time in 12h format (w/o seconds) */ _("%l\u2236%M %p")); + return format_time(datetime, + /* xgettext:no-c-format */ /* Time in 24h format (w/o seconds) */ _("%H∶%M"), + /* xgettext:no-c-format */ /* Time in 12h format (w/o seconds) */ _("%l∶%M %p")); } else if (timespan > TimeSpan.MINUTE) { ulong mins = (ulong) (timespan.abs() / TimeSpan.MINUTE); /* xgettext:this is the beginning of a sentence. */ diff --git a/main/src/ui/conversation_summary/message_item.vala b/main/src/ui/conversation_summary/message_item.vala new file mode 100644 index 00000000..e69de29b diff --git a/main/src/ui/manage_accounts/dialog.vala b/main/src/ui/manage_accounts/dialog.vala index 7fc926dc..62b797fa 100644 --- a/main/src/ui/manage_accounts/dialog.vala +++ b/main/src/ui/manage_accounts/dialog.vala @@ -146,18 +146,26 @@ public class Dialog : Gtk.Dialog { } private void show_select_avatar() { - FileChooserDialog chooser = new FileChooserDialog ( + FileChooserNative chooser = new FileChooserNative ( _("Select avatar"), this, FileChooserAction.OPEN, - _("Cancel"), ResponseType.CANCEL, - _("Select"), ResponseType.ACCEPT); + _("Select"), _("Cancel")); FileFilter filter = new FileFilter(); - filter.add_mime_type("image/*"); - chooser.set_filter(filter); + filter.add_pattern("*.png"); + filter.add_pattern("*.jpg"); + filter.add_pattern("*.jpeg"); + filter.add_pattern("*.gif"); + filter.add_pattern("*.svg"); + filter.add_pattern("*.bmp"); + filter.set_filter_name(_("Images")); + chooser.add_filter(filter); + filter = new FileFilter(); + filter.set_filter_name(_("All files")); + filter.add_pattern("*"); + chooser.add_filter(filter); if (chooser.run() == Gtk.ResponseType.ACCEPT) { string uri = chooser.get_filename(); stream_interactor.get_module(AvatarManager.IDENTITY).publish(selected_account, uri); } - chooser.close(); } private bool on_active_switch_state_changed(bool state) { diff --git a/plugins/http-files/src/contact_titlebar_entry.vala b/plugins/http-files/src/contact_titlebar_entry.vala index 064adca9..3fd8ee39 100644 --- a/plugins/http-files/src/contact_titlebar_entry.vala +++ b/plugins/http-files/src/contact_titlebar_entry.vala @@ -35,10 +35,9 @@ public class ConversationTitlebarWidget : Button, Plugins.ConversationTitlebarWi } public void on_clicked() { - FileChooserDialog chooser = new FileChooserDialog ( - "Select file", null, FileChooserAction.OPEN, - "Cancel", ResponseType.CANCEL, - "Select", ResponseType.ACCEPT); + FileChooserNative chooser = new FileChooserNative ( + "Select file", get_toplevel() as Window, FileChooserAction.OPEN, + "Select", "Cancel"); int? max_file_size = stream_interactor.get_module(Manager.IDENTITY).get_max_file_size(conversation.account); if (max_file_size != null) { FileFilter filter = new FileFilter(); @@ -53,7 +52,6 @@ public class ConversationTitlebarWidget : Button, Plugins.ConversationTitlebarWi string uri = chooser.get_filename(); stream_interactor.get_module(Manager.IDENTITY).send(conversation, uri); } - chooser.close(); } public void on_upload_available(Account account) { -- cgit v1.2.3-54-g00ecf