[tor-launcher/master] Bug 12444: Feedback when âCopy Tor Logâ is clicked.
brade at torproject.org
brade at torproject.org
Wed Aug 20 12:25:06 UTC 2014
commit 561440e8d64ca9b60f09d2b6869c4d07c5d06834
Author: Kathy Brade <brade at pearlcrescent.com>
Date: Wed Aug 20 08:21:45 2014 -0400
Bug 12444: Feedback when âCopy Tor Logâ is clicked.
Show a transient popup near the "Copy Tor Log To Clipboard" button after
is is clicked. The popup panel fades away after 4 seconds and can also
be dismissed by clicking anywhere.
---
src/chrome/content/network-settings-overlay.xul | 4 ++++
src/chrome/content/network-settings-wizard.xul | 1 +
src/chrome/content/network-settings.js | 23 ++++++++++++++++++++++-
src/chrome/content/network-settings.xul | 1 +
src/chrome/locale/en/torlauncher.properties | 2 ++
src/chrome/skin/network-settings.css | 5 +++++
src/components/tl-protocol.js | 8 ++++++--
7 files changed, 41 insertions(+), 3 deletions(-)
diff --git a/src/chrome/content/network-settings-overlay.xul b/src/chrome/content/network-settings-overlay.xul
index 6422802..c9a6a82 100644
--- a/src/chrome/content/network-settings-overlay.xul
+++ b/src/chrome/content/network-settings-overlay.xul
@@ -124,5 +124,9 @@
</html:li>
</html:ol>
</vbox>
+ <panel id="copyLogFeedbackPanel" type="arrow" fade="slow"
+ onclick="closeCopyLogFeedbackPanel()">
+ <description flex="1" />
+ </panel>
</overlay>
diff --git a/src/chrome/content/network-settings-wizard.xul b/src/chrome/content/network-settings-wizard.xul
index 70d1bcf..6682fdd 100644
--- a/src/chrome/content/network-settings-wizard.xul
+++ b/src/chrome/content/network-settings-wizard.xul
@@ -189,4 +189,5 @@
<hbox pack="start">
<label id="forAssistance" />
</hbox>
+ <panel id="copyLogFeedbackPanel" />
</wizard>
diff --git a/src/chrome/content/network-settings.js b/src/chrome/content/network-settings.js
index 5f3f698..518d16d 100644
--- a/src/chrome/content/network-settings.js
+++ b/src/chrome/content/network-settings.js
@@ -713,9 +713,30 @@ function onCancel()
function onCopyLog()
{
+ // Copy tor log messages to the system clipboard.
var chSvc = Cc["@mozilla.org/widget/clipboardhelper;1"]
.getService(Ci.nsIClipboardHelper);
- chSvc.copyString(gProtocolSvc.TorGetLog());
+ let countObj = { value: 0 };
+ chSvc.copyString(gProtocolSvc.TorGetLog(countObj));
+
+ // Display a feedback popup that fades away after a few seconds.
+ let forAssistance = document.getElementById("forAssistance");
+ let panel = document.getElementById("copyLogFeedbackPanel");
+ if (forAssistance && panel)
+ {
+ panel.firstChild.textContent = TorLauncherUtil.getFormattedLocalizedString(
+ "copiedNLogMessages", [countObj.value], 1);
+ let rectObj = forAssistance.getBoundingClientRect();
+ panel.openPopup(null, null, rectObj.left, rectObj.top, false, false);
+ }
+}
+
+
+function closeCopyLogFeedbackPanel()
+{
+ let panel = document.getElementById("copyLogFeedbackPanel");
+ if (panel && (panel.state =="open"))
+ panel.hidePopup();
}
diff --git a/src/chrome/content/network-settings.xul b/src/chrome/content/network-settings.xul
index a81a5f0..4f98559 100644
--- a/src/chrome/content/network-settings.xul
+++ b/src/chrome/content/network-settings.xul
@@ -85,4 +85,5 @@
</deck>
<spring flex="1" />
<label id="forAssistance" />
+ <panel id="copyLogFeedbackPanel" />
</dialog>
diff --git a/src/chrome/locale/en/torlauncher.properties b/src/chrome/locale/en/torlauncher.properties
index 816d831..20f6db2 100644
--- a/src/chrome/locale/en/torlauncher.properties
+++ b/src/chrome/locale/en/torlauncher.properties
@@ -37,6 +37,8 @@ torlauncher.done=Done
torlauncher.forAssistance=For assistance, contact %S
+torlauncher.copiedNLogMessages=Copy complete. %S tor log messages are ready to be pasted into a text editor or an email message.
+
torlauncher.bootstrapStatus.conn_dir=Connecting to a relay directory
torlauncher.bootstrapStatus.handshake_dir=Establishing an encrypted directory connection
torlauncher.bootstrapStatus.requesting_status=Retrieving network status
diff --git a/src/chrome/skin/network-settings.css b/src/chrome/skin/network-settings.css
index 03f84d7..60f1ef2 100644
--- a/src/chrome/skin/network-settings.css
+++ b/src/chrome/skin/network-settings.css
@@ -148,6 +148,11 @@ dialog .help {
margin-bottom: 8px;
}
+#copyLogFeedbackPanel {
+ margin: -15px 0px 0px 0px;
+ max-width: 34em;
+}
+
/* Increase font size on Windows for readability */
.os-windows div,
.os-windows label,
diff --git a/src/components/tl-protocol.js b/src/components/tl-protocol.js
index 9c4d957..09ec468 100644
--- a/src/components/tl-protocol.js
+++ b/src/components/tl-protocol.js
@@ -458,7 +458,8 @@ TorProtocolService.prototype =
},
// Returns captured log message as a text string (one message per line).
- TorGetLog: function()
+ // If aCountObj is passed, aCountObj.value is set to the message count.
+ TorGetLog: function(aCountObj)
{
let s = "";
if (this.mTorLog)
@@ -468,7 +469,10 @@ TorProtocolService.prototype =
let dateFormat = dateFmtSvc.dateFormatShort;
let timeFormat = dateFmtSvc.timeFormatSecondsForce24Hour;
let eol = (TorLauncherUtil.isWindows) ? "\r\n" : "\n";
- for (let i = 0; i < this.mTorLog.length; ++i)
+ let count = this.mTorLog.length;
+ if (aCountObj)
+ aCountObj.value = count;
+ for (let i = 0; i < count; ++i)
{
let logObj = this.mTorLog[i];
let secs = logObj.date.getSeconds();
More information about the tor-commits
mailing list