summaryrefslogtreecommitdiffstats
path: root/comm/mailnews/news/content/downloadheaders.js
blob: 80d31935b82504e763bf92ce4215683d9c56241b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
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();
}