[Basilisk] Issue #31 - Part 3: Use nsIScriptableDateFormat in places library window.

This commit is contained in:
Moonchild 2020-12-04 18:13:16 +00:00 committed by roytam1
commit 443bc25ce0
2 changed files with 27 additions and 35 deletions

View file

@ -409,11 +409,8 @@ var PlacesOrganizer = {
populateRestoreMenu: function() {
let restorePopup = document.getElementById("fileRestorePopup");
const locale = Cc["@mozilla.org/chrome/chrome-registry;1"]
.getService(Ci.nsIXULChromeRegistry)
.getSelectedLocale("global", true);
const dtOptions = { year: 'numeric', month: 'long', day: 'numeric' };
let dateFormatter = new Intl.DateTimeFormat(locale, dtOptions);
let dateSvc = Cc["@mozilla.org/intl/scriptabledateformat;1"].
getService(Ci.nsIScriptableDateFormat);
// Remove existing menu items. Last item is the restoreFromFile item.
while (restorePopup.childNodes.length > 1)
@ -445,7 +442,13 @@ var PlacesOrganizer = {
let backupDate = PlacesBackups.getDateForFile(backupFiles[i]);
let m = restorePopup.insertBefore(document.createElement("menuitem"),
document.getElementById("restoreFromFile"));
m.setAttribute("label", dateFormatter.format(backupDate) + sizeInfo);
m.setAttribute("label",
dateSvc.FormatDate("",
Ci.nsIScriptableDateFormat.dateFormatLong,
backupDate.getFullYear(),
backupDate.getMonth() + 1,
backupDate.getDate()) +
sizeInfo);
m.setAttribute("value", OS.Path.basename(backupFiles[i]));
m.setAttribute("oncommand",
"PlacesOrganizer.onRestoreMenuItemClick(this);");

View file

@ -33,6 +33,15 @@ PlacesTreeView.prototype = {
return this.__xulStore;
},
__dateService: null,
get _dateService() {
if (!this.__dateService) {
this.__dateService = Cc["@mozilla.org/intl/scriptabledateformat;1"].
getService(Ci.nsIScriptableDateFormat);
}
return this.__dateService;
},
QueryInterface: XPCOMUtils.generateQI(PTV_interfaces),
// Bug 761494:
@ -495,36 +504,16 @@ PlacesTreeView.prototype = {
let midnight = now - (now % MS_PER_DAY);
midnight += new Date(midnight).getTimezoneOffset() * MS_PER_MINUTE;
let dateFormat = timeMs >= midnight ?
Ci.nsIScriptableDateFormat.dateFormatNone :
Ci.nsIScriptableDateFormat.dateFormatShort;
let timeObj = new Date(timeMs);
return timeMs >= midnight ? this._todayFormatter.format(timeObj)
: this._dateFormatter.format(timeObj);
},
// We use a different formatter for times within the current day,
// so we cache both a "today" formatter and a general date formatter.
__todayFormatter: null,
get _todayFormatter() {
if (!this.__todayFormatter) {
const locale = Cc["@mozilla.org/chrome/chrome-registry;1"]
.getService(Ci.nsIXULChromeRegistry)
.getSelectedLocale("global", true);
const dtOptions = { hour: 'numeric', minute: 'numeric' };
this.__todayFormatter = new Intl.DateTimeFormat(locale, dtOptions);
}
return this.__todayFormatter;
},
__dateFormatter: null,
get _dateFormatter() {
if (!this.__dateFormatter) {
const locale = Cc["@mozilla.org/chrome/chrome-registry;1"]
.getService(Ci.nsIXULChromeRegistry)
.getSelectedLocale("global", true);
const dtOptions = { year: 'numeric', month: 'numeric', day: 'numeric',
hour: 'numeric', minute: 'numeric' };
this.__dateFormatter = new Intl.DateTimeFormat(locale, dtOptions);
}
return this.__dateFormatter;
return (this._dateService.FormatDateTime("", dateFormat,
Ci.nsIScriptableDateFormat.timeFormatNoSeconds,
timeObj.getFullYear(), timeObj.getMonth() + 1,
timeObj.getDate(), timeObj.getHours(),
timeObj.getMinutes(), timeObj.getSeconds()));
},
COLUMN_TYPE_UNKNOWN: 0,