140 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			140 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
From 51b8c501be7d952e0023a72b24c91254b98fc48c Mon Sep 17 00:00:00 2001
 | 
						|
From: Michael Gratton <mike@vee.net>
 | 
						|
Date: Sat, 10 Oct 2020 23:55:02 +1100
 | 
						|
Subject: [PATCH 063/124] Util.Email: Use a single unambiguous date format for
 | 
						|
 reply quote dates
 | 
						|
 | 
						|
Rather than using the UI pref for 12/24h clocks, use a single format
 | 
						|
string that should be reasonably unambiguous and that includes the
 | 
						|
time zone.
 | 
						|
 | 
						|
Fixes #888
 | 
						|
---
 | 
						|
 src/client/composer/composer-widget.vala |  9 +--
 | 
						|
 src/client/util/util-email.vala          | 78 ++++++++++++++----------
 | 
						|
 2 files changed, 49 insertions(+), 38 deletions(-)
 | 
						|
 | 
						|
diff --git a/src/client/composer/composer-widget.vala b/src/client/composer/composer-widget.vala
 | 
						|
index 37e93fb4..503727a9 100644
 | 
						|
--- a/src/client/composer/composer-widget.vala
 | 
						|
+++ b/src/client/composer/composer-widget.vala
 | 
						|
@@ -740,7 +740,7 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface {
 | 
						|
             );
 | 
						|
             add_recipients_and_ids(type, full_context);
 | 
						|
             complete_quote = Util.Email.quote_email_for_reply(
 | 
						|
-                full_context, quote, this.config.clock_format, HTML
 | 
						|
+                full_context, quote, HTML
 | 
						|
             );
 | 
						|
             if (!Geary.String.is_empty(quote)) {
 | 
						|
                 this.top_posting = false;
 | 
						|
@@ -1291,12 +1291,7 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface {
 | 
						|
         // Always use reply styling, since forward styling doesn't
 | 
						|
         // work for inline quotes
 | 
						|
         this.editor.body.insert_html(
 | 
						|
-            Util.Email.quote_email_for_reply(
 | 
						|
-                referred,
 | 
						|
-                to_quote,
 | 
						|
-                this.config.clock_format,
 | 
						|
-                Geary.RFC822.TextFormat.HTML
 | 
						|
-            )
 | 
						|
+            Util.Email.quote_email_for_reply(referred, to_quote, HTML)
 | 
						|
         );
 | 
						|
     }
 | 
						|
 
 | 
						|
diff --git a/src/client/util/util-email.vala b/src/client/util/util-email.vala
 | 
						|
index a18a45cf..4a1754a7 100644
 | 
						|
--- a/src/client/util/util-email.vala
 | 
						|
+++ b/src/client/util/util-email.vala
 | 
						|
@@ -177,41 +177,57 @@ namespace Util.Email {
 | 
						|
      */
 | 
						|
     public string quote_email_for_reply(Geary.Email email,
 | 
						|
                                         string? quote,
 | 
						|
-                                        Util.Date.ClockFormat clock_format,
 | 
						|
                                         Geary.RFC822.TextFormat format) {
 | 
						|
-        if (email.body == null && quote == null)
 | 
						|
-            return "";
 | 
						|
-
 | 
						|
         string quoted = "";
 | 
						|
+        if (email.body != null || quote != null) {
 | 
						|
+            /// GLib g_date_time_format format string for the date and
 | 
						|
+            /// time that a message being replied to was
 | 
						|
+            /// received. This should be roughly similar to an RFC
 | 
						|
+            /// 822-style date header value with optional additional
 | 
						|
+            /// punctuation for readability. Note that this date may
 | 
						|
+            /// be sent to someone in a different locale than the
 | 
						|
+            /// sender, so should be unambiguous (for example, do not
 | 
						|
+            /// use mm/dd/yyyy since it could be confused with
 | 
						|
+            /// dd/mm/yyyy) and must include the time zone.
 | 
						|
+            string date_format = _("%a, %b %-e %Y at %X %Z");
 | 
						|
 
 | 
						|
-        string DATE_FORMAT = Util.Date.get_full_date(clock_format);
 | 
						|
-
 | 
						|
-        if (email.date != null && email.from != null) {
 | 
						|
-            /// The quoted header for a message being replied to.
 | 
						|
-            /// %1$s will be substituted for the date, and %2$s will be substituted for
 | 
						|
-            /// the original sender.
 | 
						|
-            string QUOTED_LABEL = _("On %1$s, %2$s wrote:");
 | 
						|
-            quoted += QUOTED_LABEL.printf(email.date.value.format(DATE_FORMAT),
 | 
						|
-                                          Geary.RFC822.Utils.email_addresses_for_reply(email.from, format));
 | 
						|
-
 | 
						|
-        } else if (email.from != null) {
 | 
						|
-            /// The quoted header for a message being replied to (in case the date is not known).
 | 
						|
-            /// %s will be replaced by the original sender.
 | 
						|
-            string QUOTED_LABEL = _("%s wrote:");
 | 
						|
-            quoted += QUOTED_LABEL.printf(Geary.RFC822.Utils.email_addresses_for_reply(email.from, format));
 | 
						|
-
 | 
						|
-        } else if (email.date != null) {
 | 
						|
-            /// The quoted header for a message being replied to (in case the sender is not known).
 | 
						|
-            /// %s will be replaced by the original date
 | 
						|
-            string QUOTED_LABEL = _("On %s:");
 | 
						|
-            quoted += QUOTED_LABEL.printf(email.date.value.format(DATE_FORMAT));
 | 
						|
-        }
 | 
						|
+            if (email.date != null && email.from != null) {
 | 
						|
+                /// The quoted header for a message being replied to.
 | 
						|
+                /// %1$s will be substituted for the date, and %2$s
 | 
						|
+                /// will be substituted for the original sender.
 | 
						|
+                string QUOTED_LABEL = _("On %1$s, %2$s wrote:");
 | 
						|
+                quoted += QUOTED_LABEL.printf(
 | 
						|
+                    email.date.value.format(date_format),
 | 
						|
+                    Geary.RFC822.Utils.email_addresses_for_reply(
 | 
						|
+                        email.from, format
 | 
						|
+                    )
 | 
						|
+                );
 | 
						|
+            } else if (email.from != null) {
 | 
						|
+                /// The quoted header for a message being replied to
 | 
						|
+                /// (in case the date is not known).  %s will be
 | 
						|
+                /// replaced by the original sender.
 | 
						|
+                string QUOTED_LABEL = _("%s wrote:");
 | 
						|
+                quoted += QUOTED_LABEL.printf(
 | 
						|
+                    Geary.RFC822.Utils.email_addresses_for_reply(
 | 
						|
+                        email.from, format
 | 
						|
+                    )
 | 
						|
+                );
 | 
						|
+            } else if (email.date != null) {
 | 
						|
+                /// The quoted header for a message being replied to
 | 
						|
+                /// (in case the sender is not known).  %s will be
 | 
						|
+                /// replaced by the original date
 | 
						|
+                string QUOTED_LABEL = _("On %s:");
 | 
						|
+                quoted += QUOTED_LABEL.printf(
 | 
						|
+                    email.date.value.format(date_format)
 | 
						|
+                );
 | 
						|
+            }
 | 
						|
 
 | 
						|
-        quoted += "<br />";
 | 
						|
-        try {
 | 
						|
-            quoted += quote_body(email, quote, true, format);
 | 
						|
-        } catch (Error err) {
 | 
						|
-            debug("Failed to quote body for replying: %s".printf(err.message));
 | 
						|
+            quoted += "<br />";
 | 
						|
+            try {
 | 
						|
+                quoted += quote_body(email, quote, true, format);
 | 
						|
+            } catch (Error err) {
 | 
						|
+                debug("Failed to quote body for replying: %s".printf(err.message));
 | 
						|
+            }
 | 
						|
         }
 | 
						|
 
 | 
						|
         return quoted;
 | 
						|
-- 
 | 
						|
2.29.2
 | 
						|
 |