mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-25 18:07: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
133
mailnews/base/content/markByDate.js
Normal file
133
mailnews/base/content/markByDate.js
Normal file
|
|
@ -0,0 +1,133 @@
|
|||
/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* 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/. */
|
||||
|
||||
var MILLISECONDS_PER_HOUR = 60 * 60 * 1000;
|
||||
var MICROSECONDS_PER_DAY = 1000 * MILLISECONDS_PER_HOUR * 24;
|
||||
|
||||
function onLoad()
|
||||
{
|
||||
var upperDateBox = document.getElementById("upperDate");
|
||||
// focus the upper bound control - this is where we expect most users to enter
|
||||
// a date
|
||||
upperDateBox.focus();
|
||||
|
||||
// and give it an initial date - "yesterday"
|
||||
var initialDate = new Date();
|
||||
initialDate.setHours( 0 );
|
||||
initialDate.setTime( initialDate.getTime() - MILLISECONDS_PER_HOUR );
|
||||
// note that this is sufficient - though it is at the end of the previous day,
|
||||
// we convert it to a date string, and then the time part is truncated
|
||||
upperDateBox.value = convertDateToString( initialDate );
|
||||
upperDateBox.select(); // allows to start overwriting immediately
|
||||
}
|
||||
|
||||
function onAccept()
|
||||
{
|
||||
// get the times as entered by the user
|
||||
var lowerDateString = document.getElementById( "lowerDate" ).value;
|
||||
// the fallback for the lower bound, if not entered, is the "beginning of
|
||||
// time" (1970-01-01), which actually is simply 0 :)
|
||||
var prLower = lowerDateString ? convertStringToPRTime( lowerDateString ) : 0;
|
||||
|
||||
var upperDateString = document.getElementById( "upperDate" ).value;
|
||||
var prUpper;
|
||||
if ( upperDateString == "" )
|
||||
{
|
||||
// for the upper bound, the fallback is "today".
|
||||
var dateThisMorning = new Date();
|
||||
dateThisMorning.setMilliseconds( 0 );
|
||||
dateThisMorning.setSeconds( 0 );
|
||||
dateThisMorning.setMinutes( 0 );
|
||||
dateThisMorning.setHours( 0 );
|
||||
// Javascript time is in milliseconds, PRTime is in microseconds
|
||||
prUpper = dateThisMorning.getTime() * 1000;
|
||||
}
|
||||
else
|
||||
prUpper = convertStringToPRTime( upperDateString );
|
||||
|
||||
// for the upper date, we have to do a correction:
|
||||
// if the user enters a date, then she means (hopefully) that all messages sent
|
||||
// at this day should be marked, too, but the PRTime calculated from this would
|
||||
// point to the beginning of the day. So we need to increment it by
|
||||
// [number of micro seconds per day]. This will denote the first microsecond of
|
||||
// the next day then, which is later used as exclusive boundary
|
||||
prUpper += MICROSECONDS_PER_DAY;
|
||||
|
||||
markInDatabase( prLower, prUpper );
|
||||
|
||||
return true; // allow closing
|
||||
}
|
||||
|
||||
/** marks all headers in the database, whose time is between the two
|
||||
given times, as read.
|
||||
@param lower
|
||||
PRTime for the lower bound - this boundary is inclusive
|
||||
@param upper
|
||||
PRTime for the upper bound - this boundary is exclusive
|
||||
*/
|
||||
function markInDatabase( lower, upper )
|
||||
{
|
||||
var messageFolder;
|
||||
var messageDatabase;
|
||||
// extract the database
|
||||
if ( window.arguments && window.arguments[0] )
|
||||
{
|
||||
messageFolder = window.arguments[0];
|
||||
messageDatabase = messageFolder.msgDatabase;
|
||||
}
|
||||
|
||||
if ( !messageDatabase )
|
||||
{
|
||||
dump( "markByDate::markInDatabase: there /is/ no database to operate on!\n" );
|
||||
return;
|
||||
}
|
||||
|
||||
// the headers which are going to be marked
|
||||
var headers = Components.classes["@mozilla.org/array;1"].createInstance( Components.interfaces.nsIMutableArray );
|
||||
var searchSession = Components.classes["@mozilla.org/messenger/searchSession;1"].createInstance( Components.interfaces.nsIMsgSearchSession );
|
||||
var searchTerms = Components.classes["@mozilla.org/array;1"].createInstance( Components.interfaces.nsIMutableArray );
|
||||
searchSession.addScopeTerm( Components.interfaces.nsMsgSearchScope.offlineMail, messageFolder );
|
||||
|
||||
const nsMsgSearchAttrib = Components.interfaces.nsMsgSearchAttrib;
|
||||
const nsMsgSearchOp = Components.interfaces.nsMsgSearchOp;
|
||||
|
||||
var searchTerm = searchSession.createTerm();
|
||||
searchTerm.attrib = nsMsgSearchAttrib.Date;
|
||||
searchTerm.op = nsMsgSearchOp.IsBefore;
|
||||
var value = searchTerm.value;
|
||||
value.attrib = nsMsgSearchAttrib.Date;
|
||||
value.date = upper;
|
||||
searchTerm.value = value;
|
||||
searchTerms.appendElement( searchTerm, false );
|
||||
|
||||
if ( lower )
|
||||
{
|
||||
searchTerm = searchSession.createTerm();
|
||||
searchTerm.booleanAnd = true;
|
||||
searchTerm.attrib = nsMsgSearchAttrib.Date;
|
||||
searchTerm.op = nsMsgSearchOp.IsAfter;
|
||||
value = searchTerm.value;
|
||||
value.attrib = nsMsgSearchAttrib.Date;
|
||||
value.date = lower;
|
||||
searchTerm.value = value;
|
||||
searchTerms.appendElement( searchTerm, false );
|
||||
}
|
||||
|
||||
var filterEnumerator = messageDatabase.getFilterEnumerator( searchTerms );
|
||||
|
||||
if ( filterEnumerator )
|
||||
{
|
||||
var keepGoing;
|
||||
var numMatches = {};
|
||||
do
|
||||
{
|
||||
keepGoing = messageDatabase.nextMatchingHdrs(filterEnumerator, 0, 0, headers, numMatches);
|
||||
}
|
||||
while ( keepGoing );
|
||||
}
|
||||
|
||||
if ( headers.length )
|
||||
messageFolder.markMessagesRead( headers, true );
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue