BEmailMessage: added missing const, Date() returns time_t.

* Added missing const to some getter methods.
* Date() now tries to parse the date of the mail, and return it as
  a time_t; you can still retrieve the actual string via
  HeaderField("Date") if you have to.
* Mail now shows the time in the local time zone, and with the
  current locale.
This commit is contained in:
Axel Dörfler
2015-09-04 17:33:17 +02:00
parent 66078c7911
commit 7bdee8beab
5 changed files with 46 additions and 19 deletions
+7 -7
View File
@@ -55,13 +55,13 @@ public:
// addresses the message appropriately, but ForwardMessage() // addresses the message appropriately, but ForwardMessage()
// leaves it unaddressed. // leaves it unaddressed.
const char* To(); const char* To() const;
const char* From(); const char* From() const;
const char* ReplyTo(); const char* ReplyTo() const;
const char* CC(); const char* CC() const;
const char* Subject(); const char* Subject() const;
const char* Date(); time_t Date() const;
int Priority(); int Priority() const;
void SetSubject(const char* to, void SetSubject(const char* to,
uint32 charset = B_MAIL_NULL_CONVERSION, uint32 charset = B_MAIL_NULL_CONVERSION,
+23 -2
View File
@@ -38,6 +38,7 @@ of their respective holders. All rights reserved.
#include <stdio.h> #include <stdio.h>
#include <ControlLook.h> #include <ControlLook.h>
#include <DateTimeFormat.h>
#include <E-mail.h> #include <E-mail.h>
#include <LayoutBuilder.h> #include <LayoutBuilder.h>
#include <Locale.h> #include <Locale.h>
@@ -429,6 +430,22 @@ THeaderView::Date() const
} }
void
THeaderView::SetDate(time_t date)
{
fDate = date;
if (fDateView != NULL) {
BDateTimeFormat formatter;
BString string;
formatter.Format(string, date, B_FULL_DATE_FORMAT,
B_MEDIUM_TIME_FORMAT);
SetDate(string);
}
}
void void
THeaderView::SetDate(const char* date) THeaderView::SetDate(const char* date)
{ {
@@ -505,8 +522,12 @@ THeaderView::SetFromMessage(BEmailMessage* mail)
SetAccount(accountName); SetAccount(accountName);
// Set the date on this message // Set the date on this message
const char* dateField = mail->Date(); time_t date = mail->Date();
SetDate(dateField != NULL ? dateField : B_TRANSLATE("Unknown")); if (date <= 0) {
const char* dateField = mail->HeaderField("Date");
SetDate(dateField != NULL ? dateField : B_TRANSLATE("Unknown"));
} else
SetDate(date);
return B_OK; return B_OK;
} }
+2
View File
@@ -79,6 +79,7 @@ public:
bool IsDateEmpty() const; bool IsDateEmpty() const;
const char* Date() const; const char* Date() const;
void SetDate(time_t date);
void SetDate(const char* date); void SetDate(const char* date);
int32 AccountID() const; int32 AccountID() const;
@@ -102,6 +103,7 @@ private:
AddressTextControl* fBccControl; AddressTextControl* fBccControl;
BTextControl* fSubjectControl; BTextControl* fSubjectControl;
BStringView* fDateView; BStringView* fDateView;
time_t fDate;
bool fIncoming; bool fIncoming;
bool fResending; bool fResending;
}; };
+1 -1
View File
@@ -2177,7 +2177,7 @@ TMailWindow::Reply(entry_ref* ref, TMailWindow* window, uint32 type)
if (address.Length() <= 0) if (address.Length() <= 0)
address = B_TRANSLATE("(Address unavailable)"); address = B_TRANSLATE("(Address unavailable)");
BString date(mail->Date()); BString date(mail->HeaderField("Date"));
if (date.Length() <= 0) if (date.Length() <= 0)
date = B_TRANSLATE("(Date unavailable)"); date = B_TRANSLATE("(Date unavailable)");
+13 -9
View File
@@ -226,28 +226,28 @@ BEmailMessage::ForwardMessage(bool accountFromMail, bool includeAttachments)
const char* const char*
BEmailMessage::To() BEmailMessage::To() const
{ {
return HeaderField("To"); return HeaderField("To");
} }
const char* const char*
BEmailMessage::From() BEmailMessage::From() const
{ {
return HeaderField("From"); return HeaderField("From");
} }
const char* const char*
BEmailMessage::ReplyTo() BEmailMessage::ReplyTo() const
{ {
return HeaderField("Reply-To"); return HeaderField("Reply-To");
} }
const char* const char*
BEmailMessage::CC() BEmailMessage::CC() const
{ {
return HeaderField("Cc"); return HeaderField("Cc");
// Note case of CC is "Cc" in our internal headers. // Note case of CC is "Cc" in our internal headers.
@@ -255,21 +255,25 @@ BEmailMessage::CC()
const char* const char*
BEmailMessage::Subject() BEmailMessage::Subject() const
{ {
return HeaderField("Subject"); return HeaderField("Subject");
} }
const char* time_t
BEmailMessage::Date() BEmailMessage::Date() const
{ {
return HeaderField("Date"); const char* dateField = HeaderField("Date");
if (dateField == NULL)
return -1;
return ParseDateWithTimeZone(dateField);
} }
int int
BEmailMessage::Priority() BEmailMessage::Priority() const
{ {
int priorityNumber; int priorityNumber;
const char* priorityString; const char* priorityString;