Initial check in for BUg 113917 (not in the build yet)

This commit is contained in:
rods%netscape.com 2001-12-15 02:31:20 +00:00
Родитель 413613599a
Коммит f87c679575
3 изменённых файлов: 351 добавлений и 0 удалений

Просмотреть файл

@ -0,0 +1,247 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is Mozilla Communicator client code,
* released March 31, 1998.
*
* The Initial Developer of the Original Code is Netscape Communications
* Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*
* Contributors:
* William A. ("PowerGUI") Law <law@netscape.com>
* Scott MacGregor <mscott@netscape.com>
* jean-Francois Ducarroz <ducarroz@netscape.com>
* Rod Spears <rods@netscape.com>
*/
// dialog is just an array we'll use to store various properties from the dialog document...
var dialog;
// the printProgress is a nsIPrintProgress object
var printProgress = null;
// random global variables...
var targetFile;
var docTitle = "";
var docURL = "";
var progressParams = null;
// all progress notifications are done through the nsIWebProgressListener implementation...
var progressListener = {
onStateChange: function(aWebProgress, aRequest, aStateFlags, aStatus)
{
if (aStateFlags & Components.interfaces.nsIWebProgressListener.STATE_START)
{
// Put progress meter in undetermined mode.
// dialog.progress.setAttribute( "value", 0 );
dialog.progress.setAttribute( "mode", "undetermined" );
}
if (aStateFlags & Components.interfaces.nsIWebProgressListener.STATE_STOP)
{
// we are done sending/saving the message...
// Indicate completion in status area.
var msg = getString( "printComplete" );
dialog.status.setAttribute("value", msg);
// Put progress meter at 100%.
dialog.progress.setAttribute( "value", 100 );
dialog.progress.setAttribute( "mode", "normal" );
var percentPrint = getString( "progressText" );
percentPrint = replaceInsert( percentPrint, 1, 100 );
dialog.progressText.setAttribute("value", percentPrint);
window.close();
}
},
onProgressChange: function(aWebProgress, aRequest, aCurSelfProgress, aMaxSelfProgress, aCurTotalProgress, aMaxTotalProgress)
{
if (progressParams)
{
var docTitleStr = progressParams.docTitle;
if (docTitleStr != docTitle) {
SetTitle(docTitleStr);
docTitle = docTitleStr;
}
var docURLStr = progressParams.docURL;
if (docURLStr != docURL && dialog.status != null) {
dialog.status.value = docURLStr;
docURL = docURLStr;
}
}
// Calculate percentage.
var percent;
if ( aMaxTotalProgress > 0 )
{
percent = parseInt( (aCurTotalProgress*100)/aMaxTotalProgress + .5 );
if ( percent > 100 )
percent = 100;
dialog.progress.removeAttribute( "mode");
// Advance progress meter.
dialog.progress.setAttribute( "value", percent );
// Update percentage label on progress meter.
var percentPrint = getString( "progressText" );
percentPrint = replaceInsert( percentPrint, 1, percent );
dialog.progressText.setAttribute("value", percentPrint);
}
else
{
// Progress meter should be barber-pole in this case.
dialog.progress.setAttribute( "mode", "undetermined" );
// Update percentage label on progress meter.
dialog.progressText.setAttribute("value", "");
}
},
onLocationChange: function(aWebProgress, aRequest, aLocation)
{
// we can ignore this notification
},
onStatusChange: function(aWebProgress, aRequest, aStatus, aMessage)
{
if (aMessage != "")
dialog.status.setAttribute("value", aMessage);
},
onSecurityChange: function(aWebProgress, aRequest, state)
{
// we can ignore this notification
},
QueryInterface : function(iid)
{
if (iid.equals(Components.interfaces.nsIWebProgressListener) || iid.equals(Components.interfaces.nsISupportsWeakReference))
return this;
throw Components.results.NS_NOINTERFACE;
}
};
function getString( stringId ) {
// Check if we've fetched this string already.
if (!(stringId in dialog.strings)) {
// Try to get it.
var elem = document.getElementById( "dialog.strings."+stringId );
try {
if ( elem
&&
elem.childNodes
&&
elem.childNodes[0]
&&
elem.childNodes[0].nodeValue ) {
dialog.strings[ stringId ] = elem.childNodes[0].nodeValue;
} else {
// If unable to fetch string, use an empty string.
dialog.strings[ stringId ] = "";
}
} catch (e) { dialog.strings[ stringId ] = ""; }
}
return dialog.strings[ stringId ];
}
function loadDialog()
{
}
function replaceInsert( text, index, value ) {
var result = text;
var regExp = new RegExp( "#"+index );
result = result.replace( regExp, value );
return result;
}
function onLoad() {
// Set global variables.
printProgress = window.arguments[0];
if (window.arguments[1])
{
progressParams = window.arguments[1].QueryInterface(Components.interfaces.nsIPrintProgressParams)
if (progressParams)
{
docTitle = progressParams.docTitle;
docURL = progressParams.docURL;
}
}
if ( !printProgress ) {
dump( "Invalid argument to downloadProgress.xul\n" );
window.close()
return;
}
dialog = new Object;
dialog.strings = new Array;
dialog.status = document.getElementById("dialog.status");
dialog.progress = document.getElementById("dialog.progress");
dialog.progressText = document.getElementById("dialog.progressText");
dialog.cancel = document.getElementById("cancel");
dialog.status.value = docURL;
// Set up dialog button callbacks.
var object = this;
doSetOKCancel("", function () { return object.onCancel();});
// Fill dialog.
loadDialog();
// set our web progress listener on the helper app launcher
printProgress.registerListener(progressListener);
moveToAlertPosition();
//We need to delay the set title else dom will overwrite it
window.setTimeout(SetTitle, 0, docTitle);
}
function onUnload()
{
if (printProgress)
{
try
{
printProgress.unregisterListener(progressListener);
printProgress = null;
}
catch( exception ) {}
}
}
function SetTitle(str)
{
var prefix = getString("titlePrefixPrint");
window.title = prefix + " " + str;
}
// If the user presses cancel, tell the app launcher and close the dialog...
function onCancel ()
{
// Cancel app launcher.
try
{
printProgress.processCanceledByUser = true;
}
catch( exception ) {return true;}
// don't Close up dialog by returning false, the backend will close the dialog when everything will be aborted.
return false;
}

Просмотреть файл

@ -0,0 +1,84 @@
<?xml version="1.0"?>
<!-- The contents of this file are subject to the Netscape Public
License Version 1.1 (the "License"); you may not use this file
except in compliance with the License. You may obtain a copy of
the License at http://www.mozilla.org/NPL/
Software distributed under the License is distributed on an "AS
IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
implied. See the License for the specific language governing
rights and limitations under the License.
The Original Code is Mozilla Communicator client code, released
March 31, 1998.
The Initial Developer of the Original Code is Netscape
Communications Corporation. Portions created by Netscape are
Copyright (C) 1998-2000 Netscape Communications Corporation. All
Rights Reserved.
Contributor(s):
Scott MacGregor <mscott@netscape.com>
Jean-Francois Ducarroz <ducarroz@netscape.com>
Rod Spears <rods@netscape.com>
-->
<?xml-stylesheet href="chrome://messenger/skin/dialogs.css" type="text/css"?>
<?xul-overlay href="chrome://global/content/dialogOverlay.xul"?>
<!DOCTYPE window SYSTEM "chrome://global/locale/printProgress.dtd">
<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
class="dialog"
title="&printWindow.title;"
style="width: 36em;"
onload="onLoad()"
onunload="onUnload()">
<script type="application/x-javascript" src="chrome://global/content/printProgress.js"/>
<!-- This is non-visible content that simply adds translatable string
into the document so that it is accessible to JS code.
XXX-TODO:
convert to use string bundles.
-->
<data id="dialog.strings.dialogCloseLabel">&dialogClose.label;</data>
<data id="dialog.strings.titlePrefixPrint">&titlePrefixPrint;</data>
<data id="dialog.strings.printComplete">&printComplete;</data>
<data id="dialog.strings.progressText">&percentPrint;</data>
<grid flex="1">
<columns>
<column/>
<column flex="1"/>
</columns>
<rows>
<row>
<hbox pack="end">
<label value="&status;"/>
</hbox>
<label id="dialog.status"/>
</row>
<row class="thin-separator">
<hbox pack="end">
<label value="&progress;"/>
</hbox>
<progressmeter id="dialog.progress" mode="normal" value="0"/>
<hbox pack="end">
<label id="dialog.progressText"/>
</hbox>
</row>
</rows>
</grid>
<separator/>
<hbox id="CancelButton" pack="end">
<button id="cancel" label="&dialogCancel.label;" oncommand="doCancelButton()"/>
</hbox>
</window>

Просмотреть файл

@ -0,0 +1,20 @@
<!--LOCALIZATION NOTE sendprogress.dtd Main UI for Send Message Progress Dialog -->
<!ENTITY printWindow.title "Printing">
<!ENTITY titlePrefixPrint "Printing -">
<!ENTITY status "URL:">
<!ENTITY progress "Progress:">
<!ENTITY keepProgressDialogUpMsg.label "Keep this window open after the message is successfully sent.">
<!ENTITY dialogCancel.label "Cancel">
<!ENTITY dialogClose.label "Close">
<!-- LOCALIZATION NOTE (percentPrint):
This string is used to format the text to the right of the progress
meter.
#1 will be replaced by the percentage of the file that has been saved -->
<!ENTITY percentPrint "#1&#037;">
<!ENTITY printComplete "Prnit is complete.">