summaryrefslogtreecommitdiffstats
path: root/comm/mailnews/news/content
diff options
context:
space:
mode:
Diffstat (limited to 'comm/mailnews/news/content')
-rw-r--r--comm/mailnews/news/content/downloadheaders.js92
-rw-r--r--comm/mailnews/news/content/downloadheaders.xhtml82
2 files changed, 174 insertions, 0 deletions
diff --git a/comm/mailnews/news/content/downloadheaders.js b/comm/mailnews/news/content/downloadheaders.js
new file mode 100644
index 0000000000..80d31935b8
--- /dev/null
+++ b/comm/mailnews/news/content/downloadheaders.js
@@ -0,0 +1,92 @@
+/* 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 { MailServices } = ChromeUtils.import(
+ "resource:///modules/MailServices.jsm"
+);
+
+var markreadElement = null;
+var numberElement = null;
+
+var nntpServer = null;
+var args = null;
+
+document.addEventListener("dialogaccept", OkButtonCallback);
+document.addEventListener("dialogcancel", CancelButtonCallback);
+
+function OnLoad() {
+ let newsBundle = document.getElementById("bundle_news");
+
+ if ("arguments" in window && window.arguments[0]) {
+ args = window.arguments[0].QueryInterface(Ci.nsINewsDownloadDialogArgs);
+ /* by default, act like the user hit cancel */
+ args.hitOK = false;
+ /* by default, act like the user did not select download all */
+ args.downloadAll = false;
+
+ nntpServer = MailServices.accounts
+ .getIncomingServer(args.serverKey)
+ .QueryInterface(Ci.nsINntpIncomingServer);
+
+ document.title = newsBundle.getString("downloadHeadersTitlePrefix");
+
+ let infotext = newsBundle.getFormattedString("downloadHeadersInfoText", [
+ args.articleCount,
+ ]);
+ setText("info", infotext);
+ let okButtonText = newsBundle.getString("okButtonText");
+ let okbutton = document.querySelector("dialog").getButton("accept");
+ okbutton.setAttribute("label", okButtonText);
+ okbutton.focus();
+ setText("newsgroupLabel", args.groupName);
+ }
+
+ numberElement = document.getElementById("number");
+ numberElement.value = nntpServer.maxArticles;
+
+ markreadElement = document.getElementById("markread");
+ markreadElement.checked = nntpServer.markOldRead;
+
+ setupDownloadUI(true);
+
+ return true;
+}
+
+function setText(id, value) {
+ let element = document.getElementById(id);
+ if (!element) {
+ return;
+ }
+
+ while (element.lastChild) {
+ element.lastChild.remove();
+ }
+ let textNode = document.createTextNode(value);
+ element.appendChild(textNode);
+}
+
+function OkButtonCallback() {
+ nntpServer.maxArticles = numberElement.value;
+ nntpServer.markOldRead = markreadElement.checked;
+
+ let radio = document.getElementById("all");
+ if (radio) {
+ args.downloadAll = radio.selected;
+ }
+
+ args.hitOK = true;
+}
+
+function CancelButtonCallback() {
+ args.hitOK = false;
+}
+
+function setupDownloadUI(enable) {
+ let checkbox = document.getElementById("markread");
+ let numberFld = document.getElementById("number");
+
+ checkbox.disabled = !enable;
+ numberFld.disabled = !enable;
+ numberFld.select();
+}
diff --git a/comm/mailnews/news/content/downloadheaders.xhtml b/comm/mailnews/news/content/downloadheaders.xhtml
new file mode 100644
index 0000000000..b212d5d288
--- /dev/null
+++ b/comm/mailnews/news/content/downloadheaders.xhtml
@@ -0,0 +1,82 @@
+<?xml version="1.0"?>
+<!-- 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/. -->
+
+<?xml-stylesheet href="chrome://messenger/skin/messenger.css" type="text/css"?>
+<?xml-stylesheet href="chrome://messenger/skin/colors.css" type="text/css"?>
+<?xml-stylesheet href="chrome://messenger/skin/themeableDialog.css" type="text/css"?>
+
+<!DOCTYPE dialog SYSTEM "chrome://messenger/locale/downloadheaders.dtd">
+
+<dialog
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:html="http://www.w3.org/1999/xhtml"
+ style="max-width: 27em; padding: 10px"
+ buttonpack="center"
+ lightweightthemes="true"
+ onload="OnLoad();"
+>
+ <stringbundle
+ id="bundle_news"
+ src="chrome://messenger/locale/news.properties"
+ />
+ <script src="chrome://messenger/content/downloadheaders.js" />
+ <script src="chrome://messenger/content/dialogShadowDom.js" />
+
+ <label
+ id="newsgroupLabel"
+ control="downloadGroup"
+ class="header"
+ style="width: 25em; max-width: 25em; margin-inline-start: 6px"
+ />
+ <description
+ style="width: 25em; max-width: 25em"
+ id="info"
+ control="downloadGroup"
+ />
+ <separator class="thin" />
+ <vbox class="indent">
+ <radiogroup id="downloadGroup">
+ <radio
+ id="all"
+ label="&all.label;"
+ accesskey="&all.accesskey;"
+ oncommand="setupDownloadUI(false);"
+ value="all"
+ />
+ <separator class="thin" />
+ <hbox align="center">
+ <radio
+ id="some"
+ selected="true"
+ label="&download.label;"
+ accesskey="&download.accesskey;"
+ oncommand="setupDownloadUI(true);"
+ aria-labelledby="some number headers"
+ value="some"
+ />
+ <html:input
+ id="number"
+ type="number"
+ min="1"
+ aria-labelledby="some number headers"
+ />
+ <label
+ id="headers"
+ control="number"
+ value="&headers.label;"
+ accesskey="&headers.accesskey;"
+ />
+ </hbox>
+ </radiogroup>
+
+ <hbox class="indent" align="start">
+ <checkbox
+ id="markread"
+ label="&mark.label;"
+ accesskey="&mark.accesskey;"
+ />
+ </hbox>
+ </vbox>
+</dialog>