mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-23 00:47:31 +09:00
Issue #1258 - Part 1: Import mailnews, ldap, and mork from comm-esr52.9.1
This commit is contained in:
parent
23e0d82436
commit
e400f4130a
1564 changed files with 510348 additions and 0 deletions
225
mailnews/base/content/dateFormat.js
Normal file
225
mailnews/base/content/dateFormat.js
Normal file
|
|
@ -0,0 +1,225 @@
|
|||
/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
Components.utils.import("resource://gre/modules/Services.jsm");
|
||||
|
||||
var gSearchDateFormat = 0;
|
||||
var gSearchDateSeparator;
|
||||
var gSearchDateLeadingZeros;
|
||||
|
||||
/**
|
||||
* Get the short date format option of the current locale.
|
||||
* This supports the common case which the date separator is
|
||||
* either '/', '-', '.' and using Christian year.
|
||||
*/
|
||||
function initLocaleShortDateFormat()
|
||||
{
|
||||
// default to mm/dd/yyyy
|
||||
gSearchDateFormat = 3;
|
||||
gSearchDateSeparator = "/";
|
||||
gSearchDateLeadingZeros = true;
|
||||
|
||||
try {
|
||||
var dateFormatService = Components.classes["@mozilla.org/intl/scriptabledateformat;1"]
|
||||
.getService(Components.interfaces.nsIScriptableDateFormat);
|
||||
var dateString = dateFormatService.FormatDate("",
|
||||
dateFormatService.dateFormatShort,
|
||||
1999,
|
||||
12,
|
||||
1);
|
||||
|
||||
// find out the separator
|
||||
var possibleSeparators = "/-.";
|
||||
var arrayOfStrings;
|
||||
for ( var i = 0; i < possibleSeparators.length; ++i )
|
||||
{
|
||||
arrayOfStrings = dateString.split( possibleSeparators[i] );
|
||||
if ( arrayOfStrings.length == 3 )
|
||||
{
|
||||
gSearchDateSeparator = possibleSeparators[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// check the format option
|
||||
if ( arrayOfStrings.length != 3 ) // no successfull split
|
||||
{
|
||||
dump("getLocaleShortDateFormat: could not analyze the date format, defaulting to mm/dd/yyyy\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
// the date will contain a zero if that system settings include leading zeros
|
||||
gSearchDateLeadingZeros = dateString.includes("0");
|
||||
|
||||
// match 1 as number, since that will match both "1" and "01"
|
||||
if ( arrayOfStrings[0] == 1 )
|
||||
{
|
||||
// 01.12.1999 or 01.1999.12
|
||||
gSearchDateFormat = arrayOfStrings[1] == "12" ? 5 : 6;
|
||||
}
|
||||
else if ( arrayOfStrings[1] == 1 )
|
||||
{
|
||||
// 12.01.1999 or 1999.01.12
|
||||
gSearchDateFormat = arrayOfStrings[0] == "12" ? 3 : 2;
|
||||
}
|
||||
else // implies arrayOfStrings[2] == 1
|
||||
{
|
||||
// 12.1999.01 or 1999.12.01
|
||||
gSearchDateFormat = arrayOfStrings[0] == "12" ? 4 : 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (e)
|
||||
{
|
||||
dump("getLocaleShortDateFormat: caught an exception!\n");
|
||||
}
|
||||
}
|
||||
|
||||
function initializeSearchDateFormat()
|
||||
{
|
||||
if (gSearchDateFormat)
|
||||
return;
|
||||
|
||||
// get a search date format option and a seprator
|
||||
try {
|
||||
gSearchDateFormat =
|
||||
Services.prefs.getComplexValue("mailnews.search_date_format",
|
||||
Components.interfaces.nsIPrefLocalizedString);
|
||||
gSearchDateFormat = parseInt(gSearchDateFormat);
|
||||
|
||||
// if the option is 0 then try to use the format of the current locale
|
||||
if (gSearchDateFormat == 0)
|
||||
initLocaleShortDateFormat();
|
||||
else
|
||||
{
|
||||
// initialize the search date format based on preferences
|
||||
if ( gSearchDateFormat < 1 || gSearchDateFormat > 6 )
|
||||
gSearchDateFormat = 3;
|
||||
|
||||
gSearchDateSeparator =
|
||||
Services.prefs.getComplexValue("mailnews.search_date_separator",
|
||||
Components.interfaces.nsIPrefLocalizedString);
|
||||
|
||||
gSearchDateLeadingZeros =
|
||||
(Services.prefs.getComplexValue(
|
||||
"mailnews.search_date_leading_zeros",
|
||||
Components.interfaces.nsIPrefLocalizedString).data == "true");
|
||||
}
|
||||
}
|
||||
catch (e)
|
||||
{
|
||||
Components.utils.reportError("initializeSearchDateFormat: caught an exception: " + e);
|
||||
// set to mm/dd/yyyy in case of error
|
||||
gSearchDateFormat = 3;
|
||||
gSearchDateSeparator = "/";
|
||||
gSearchDateLeadingZeros = true;
|
||||
}
|
||||
}
|
||||
|
||||
function convertPRTimeToString(tm)
|
||||
{
|
||||
var time = new Date();
|
||||
// PRTime is in microseconds, JavaScript time is in milliseconds
|
||||
// so divide by 1000 when converting
|
||||
time.setTime(tm / 1000);
|
||||
|
||||
return convertDateToString(time);
|
||||
}
|
||||
|
||||
function convertDateToString(time)
|
||||
{
|
||||
initializeSearchDateFormat();
|
||||
|
||||
var year = time.getFullYear();
|
||||
var month = time.getMonth() + 1; // since js month is 0-11
|
||||
if ( gSearchDateLeadingZeros && month < 10 )
|
||||
month = "0" + month;
|
||||
var date = time.getDate();
|
||||
if ( gSearchDateLeadingZeros && date < 10 )
|
||||
date = "0" + date;
|
||||
|
||||
var dateStr;
|
||||
var sep = gSearchDateSeparator;
|
||||
|
||||
switch (gSearchDateFormat)
|
||||
{
|
||||
case 1:
|
||||
dateStr = year + sep + month + sep + date;
|
||||
break;
|
||||
case 2:
|
||||
dateStr = year + sep + date + sep + month;
|
||||
break;
|
||||
case 3:
|
||||
dateStr = month + sep + date + sep + year;
|
||||
break;
|
||||
case 4:
|
||||
dateStr = month + sep + year + sep + date;
|
||||
break;
|
||||
case 5:
|
||||
dateStr = date + sep + month + sep + year;
|
||||
break;
|
||||
case 6:
|
||||
dateStr = date + sep + year + sep + month;
|
||||
break;
|
||||
default:
|
||||
dump("valid search date format option is 1-6\n");
|
||||
}
|
||||
|
||||
return dateStr;
|
||||
}
|
||||
|
||||
function convertStringToPRTime(str)
|
||||
{
|
||||
initializeSearchDateFormat();
|
||||
|
||||
var arrayOfStrings = str.split(gSearchDateSeparator);
|
||||
var year, month, date;
|
||||
|
||||
// set year, month, date based on the format option
|
||||
switch (gSearchDateFormat)
|
||||
{
|
||||
case 1:
|
||||
year = arrayOfStrings[0];
|
||||
month = arrayOfStrings[1];
|
||||
date = arrayOfStrings[2];
|
||||
break;
|
||||
case 2:
|
||||
year = arrayOfStrings[0];
|
||||
month = arrayOfStrings[2];
|
||||
date = arrayOfStrings[1];
|
||||
break;
|
||||
case 3:
|
||||
year = arrayOfStrings[2];
|
||||
month = arrayOfStrings[0];
|
||||
date = arrayOfStrings[1];
|
||||
break;
|
||||
case 4:
|
||||
year = arrayOfStrings[1];
|
||||
month = arrayOfStrings[0];
|
||||
date = arrayOfStrings[2];
|
||||
break;
|
||||
case 5:
|
||||
year = arrayOfStrings[2];
|
||||
month = arrayOfStrings[1];
|
||||
date = arrayOfStrings[0];
|
||||
break;
|
||||
case 6:
|
||||
year = arrayOfStrings[1];
|
||||
month = arrayOfStrings[2];
|
||||
date = arrayOfStrings[0];
|
||||
break;
|
||||
default:
|
||||
dump("valid search date format option is 1-6\n");
|
||||
}
|
||||
|
||||
month -= 1; // since js month is 0-11
|
||||
|
||||
var time = new Date(year, month, date);
|
||||
|
||||
// JavaScript time is in milliseconds, PRTime is in microseconds
|
||||
// so multiply by 1000 when converting
|
||||
return (time.getTime() * 1000);
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue