commit 89dbc278bd9b17b7997f61daecf861d112447e3a
parent ad498143d38530b60b194c8849a011fe68450cb9
Author: Dan Stillman <dstillman@zotero.org>
Date: Sun, 9 Aug 2009 19:39:32 +0000
New method Zotero.updateZoteroPaneProgressMeter(percentage) for updating the overlay progress meter
Diffstat:
3 files changed, 34 insertions(+), 6 deletions(-)
diff --git a/chrome/content/zotero/fileInterface.js b/chrome/content/zotero/fileInterface.js
@@ -569,7 +569,7 @@ Zotero_File_Interface.Progress = new function() {
this.close = close;
function show(headline) {
- Zotero.showZoteroPaneProgressBar(headline)
+ Zotero.showZoteroPaneProgressMeter(headline)
}
function close() {
diff --git a/chrome/content/zotero/xpcom/translate.js b/chrome/content/zotero/xpcom/translate.js
@@ -1682,7 +1682,7 @@ Zotero.Translate.prototype._itemDone = function(item, attachedTo) {
delete item;
// Allow progress meter to update
- Zotero.wait(50);
+ Zotero.wait();
}
/*
diff --git a/chrome/content/zotero/xpcom/zotero.js b/chrome/content/zotero/xpcom/zotero.js
@@ -142,7 +142,10 @@ var Zotero = new function(){
var _localizedStringBundle;
var _localUserKey;
var _waiting;
+
var _locked;
+ var _progressMeters;
+ var _lastPercentage;
/*
* Initialize the extension
@@ -1098,9 +1101,9 @@ var Zotero = new function(){
*
* @param {String} msg
* @param {Boolean} [determinate=false]
- * @return {Element[]} Array of XUL <progressmeter> elements
+ * @return void
*/
- this.showZoteroPaneProgressBar = function (msg, determinate) {
+ this.showZoteroPaneProgressMeter = function (msg, determinate) {
var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
.getService(Components.interfaces.nsIWindowMediator);
var enumerator = wm.getEnumerator("navigator:browser");
@@ -1113,7 +1116,7 @@ var Zotero = new function(){
if (determinate) {
progressMeter.mode = 'determined';
progressMeter.value = 0;
- progressMeter.max = 100;
+ progressMeter.max = 1000;
}
else {
progressMeter.mode = 'undetermined';
@@ -1125,7 +1128,30 @@ var Zotero = new function(){
progressMeters.push(progressMeter);
}
_locked = true;
- return progressMeters;
+ _progressMeters = progressMeters;
+ }
+
+
+ /**
+ * @param {Number} percentage Percentage complete as integer or float
+ */
+ this.updateZoteroPaneProgressMeter = function (percentage) {
+ if (percentage < 0 || percentage > 100) {
+ Zotero.debug("Invalid percentage value '" + percentage + "' in Zotero.updateZoteroPaneProgressMeter()");
+ return;
+ }
+ percentage = Math.round(percentage * 10);
+ if (percentage == _lastPercentage) {
+ return;
+ }
+ for each(var pm in _progressMeters) {
+ if (pm.mode == 'undetermined') {
+ pm.max = 1000;
+ pm.mode = 'determined';
+ }
+ pm.value = percentage;
+ }
+ _lastPercentage = percentage;
}
@@ -1141,6 +1167,8 @@ var Zotero = new function(){
_hideWindowZoteroPaneOverlay(win);
}
_locked = false;
+ _progressMeters = [];
+ _lastPercentage = null;
}