/* 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 gMailListView;
var gListBox;
var gEditButton;
var gDeleteButton;

function mailViewListOnLoad() {
  gMailListView = Cc["@mozilla.org/messenger/mailviewlist;1"].getService(
    Ci.nsIMsgMailViewList
  );
  gListBox = document.getElementById("mailViewList");

  // Construct list view based on current mail view list data
  refreshListView(null);
  gEditButton = document.getElementById("editButton");
  gDeleteButton = document.getElementById("deleteButton");

  updateButtons();
}

function refreshListView(aSelectedMailView) {
  // remove any existing items in the view...
  for (var index = gListBox.getRowCount(); index > 0; index--) {
    gListBox.getItemAtIndex(index - 1).remove();
  }

  var numItems = gMailListView.mailViewCount;
  var mailView;
  for (index = 0; index < numItems; index++) {
    mailView = gMailListView.getMailViewAt(index);
    gListBox.appendItem(mailView.prettyName, index);
    if (
      aSelectedMailView &&
      mailView.prettyName == aSelectedMailView.prettyName
    ) {
      gListBox.selectedIndex = index;
    }
  }
}

function onNewMailView() {
  window.openDialog(
    "chrome://messenger/content/mailViewSetup.xhtml",
    "",
    "centerscreen,resizable,modal,titlebar,chrome",
    { onOkCallback: refreshListView }
  );
}

function onDeleteMailView() {
  var bundle = Services.strings.createBundle(
    "chrome://messenger/locale/messenger.properties"
  );

  if (
    !Services.prompt.confirm(
      window,
      bundle.GetStringFromName("confirmViewDeleteTitle"),
      bundle.GetStringFromName("confirmViewDeleteMessage")
    )
  ) {
    return;
  }

  // get the selected index
  var selectedIndex = gListBox.selectedIndex;
  if (selectedIndex >= 0) {
    var mailView = gMailListView.getMailViewAt(selectedIndex);
    if (mailView) {
      gMailListView.removeMailView(mailView);
      // now remove it from the view...
      gListBox.selectedItem.remove();

      // select the next item in the list..
      if (selectedIndex < gListBox.getRowCount()) {
        gListBox.selectedIndex = selectedIndex;
      } else {
        gListBox.selectedIndex = gListBox.getRowCount() - 1;
      }

      gMailListView.save();
    }
  }
}

function onEditMailView() {
  // get the selected index
  var selectedIndex = gListBox.selectedIndex;
  if (selectedIndex >= 0) {
    var selMailView = gMailListView.getMailViewAt(selectedIndex);
    // open up the mail view setup dialog passing in the mail view as an argument....

    var args = { mailView: selMailView, onOkCallback: refreshListView };

    window.openDialog(
      "chrome://messenger/content/mailViewSetup.xhtml",
      "",
      "centerscreen,modal,resizable,titlebar,chrome",
      args
    );
  }
}

function onMailViewSelect(event) {
  updateButtons();
}

function updateButtons() {
  var selectedIndex = gListBox.selectedIndex;
  // "edit" and "delete" only enabled when one filter selected
  gEditButton.disabled = selectedIndex < 0;
  gDeleteButton.disabled = selectedIndex < 0;
}
