Bug 517805 - Move printDialog to calendar/base/content. r=philipp
authorMartin Schroeder <mschroeder@mozilla.x-home.org>
Sun, 25 Oct 2009 23:32:13 +0100
changeset 4240 1cee73f0baea5f8f6b40a92018aadff059d8ff5f
parent 4239 a77204848e3eae1d02b88fb47888e09731146bd6
child 4241 0e7946684b94504eea39cdbf68d8f0ed5c1027e5
push idunknown
push userunknown
push dateunknown
reviewersphilipp
bugs517805
Bug 517805 - Move printDialog to calendar/base/content. r=philipp
calendar/base/content/dialogs/calendar-print-dialog.js
calendar/base/content/dialogs/calendar-print-dialog.xul
calendar/base/jar.mn
calendar/base/src/calUtils.js
calendar/lightning/jar.mn
calendar/resources/content/printDialog.js
calendar/resources/content/printDialog.xul
calendar/resources/jar.mn
rename from calendar/resources/content/printDialog.js
rename to calendar/base/content/dialogs/calendar-print-dialog.js
--- a/calendar/resources/content/printDialog.js
+++ b/calendar/base/content/dialogs/calendar-print-dialog.js
@@ -13,80 +13,77 @@
  *
  * The Original Code is OEone Calendar Code, released October 31st, 2001.
  *
  * The Initial Developer of the Original Code is
  * OEone Corporation.
  * Portions created by the Initial Developer are Copyright (C) 2001
  * the Initial Developer. All Rights Reserved.
  *
- * Contributor(s): Garth Smedley <garths@oeone.com>
- *                 Mike Potter <mikep@oeone.com>
- *                 Colin Phillips <colinp@oeone.com> 
- *                 Chris Charabaruk <ccharabaruk@meldstar.com>
- *                 ArentJan Banck <ajbanck@planet.nl>
- *                 Chris Allen
- *                 Eric Belhaire <belhaire@ief.u-psud.fr>
- *                 Michiel van Leeuwen <mvl@exedo.nl>
- *                 Matthew Willis <mattwillis@gmail.com>
+ * Contributor(s):
+ *   Garth Smedley <garths@oeone.com>
+ *   Mike Potter <mikep@oeone.com>
+ *   Colin Phillips <colinp@oeone.com>
+ *   Chris Charabaruk <ccharabaruk@meldstar.com>
+ *   ArentJan Banck <ajbanck@planet.nl>
+ *   Chris Allen <chris@netinflux.com>
+ *   Eric Belhaire <belhaire@ief.u-psud.fr>
+ *   Michiel van Leeuwen <mvl@exedo.nl>
+ *   Matthew Willis <mattwillis@gmail.com>
+ *   Martin Schroeder <mschroeder@mozilla.x-home.org>
  *
  * Alternatively, the contents of this file may be used under the terms of
  * either the GNU General Public License Version 2 or later (the "GPL"), or
  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
  * in which case the provisions of the GPL or the LGPL are applicable instead
  * of those above. If you wish to allow use of your version of this file only
  * under the terms of either the GPL or the LGPL, and not to allow others to
  * use your version of this file under the terms of the MPL, indicate your
  * decision by deleting the provisions above and replace them with the notice
  * and other provisions required by the GPL or the LGPL. If you do not delete
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
-var gPrintSettings = null;
-
-function getCalendarView()
-{
-    var theView = window.opener.currentView();
+function getCalendarView() {
+    let theView = window.opener.currentView();
     if (!theView.startDay) {
         theView = null;
     }
     return theView;
 }
 
-function loadCalendarPrintDialog()
-{
+function loadCalendarPrintDialog() {
     // set the datepickers to the currently selected dates
-    var theView = getCalendarView();
+    let theView = getCalendarView();
     if (theView) {
         document.getElementById("start-date-picker").value = theView.startDay.jsDate;
         document.getElementById("end-date-picker").value = theView.endDay.jsDate;
     } else {
         document.getElementById("printCurrentViewRadio").setAttribute("disabled", true);
     }
     if (!theView || !theView.getSelectedItems({}).length) {
         document.getElementById("selected").setAttribute("disabled", true);
     }
     document.getElementById(theView ? "printCurrentViewRadio" : "custom-range")
             .setAttribute("selected", true);
 
     // Get a list of formatters
-    var contractids = new Array();
-    var catman = Components.classes["@mozilla.org/categorymanager;1"]
+    let catman = Components.classes["@mozilla.org/categorymanager;1"]
                            .getService(Components.interfaces.nsICategoryManager);
-    var catenum = catman.enumerateCategory('cal-print-formatters');
+    let catenum = catman.enumerateCategory("cal-print-formatters");
 
     // Walk the list, adding items to the layout menupopup
-    var layoutList = document.getElementById("layout-field");
+    let layoutList = document.getElementById("layout-field");
     while (catenum.hasMoreElements()) {
-        var entry = catenum.getNext();
+        let entry = catenum.getNext();
         entry = entry.QueryInterface(Components.interfaces.nsISupportsCString);
-        var contractid = catman.getCategoryEntry('cal-print-formatters', entry);
-        var formatter = Components.classes[contractid]
+        let contractid = catman.getCategoryEntry("cal-print-formatters", entry);
+        let formatter = Components.classes[contractid]
                                   .getService(Components.interfaces.calIPrintFormatter);
         // Use the contractid as value
         layoutList.appendItem(formatter.name, contractid);
     }
     layoutList.selectedIndex = 0;
 
     opener.setCursor("auto");
 
@@ -95,140 +92,131 @@ function loadCalendarPrintDialog()
     self.focus();
 }
 
 /**
  * Gets the settings from the dialog's UI widgets.
  * notifies an Object with title, layoutCId, eventList, start, and end
  *          properties containing the appropriate values.
  */
-function getEventsAndDialogSettings(receiverFunc)
-{
-    var settings = new Object();
-    var tempTitle = document.getElementById("title-field").value;
+function getEventsAndDialogSettings(receiverFunc) {
+    let settings = {};
+    let tempTitle = document.getElementById("title-field").value;
     settings.title = (tempTitle || calGetString("calendar", "Untitled"));
     settings.layoutCId = document.getElementById("layout-field").value;
     settings.start = null;
     settings.end = null;
     settings.eventList = null;
 
-    var theView = getCalendarView();
+    let theView = getCalendarView();
     switch (document.getElementById("view-field").selectedItem.value) {
-        case 'currentview':
-        case '': //just in case
+        case "currentview":
+        case "": //just in case
             settings.start = theView.startDay;
             settings.end   = theView.endDay;
             break;
-        case 'selected':
+        case "selected":
             settings.eventList = theView.getSelectedItems({});
             break;
-        case 'custom':
+        case "custom":
             // We return the time from the timepickers using the selected
             // timezone, as not doing so in timezones with a positive offset
             // from UTC may cause the printout to include the wrong days.
-            var currentTimezone = calendarDefaultTimezone();
+            let currentTimezone = calendarDefaultTimezone();
             settings.start = jsDateToDateTime(document.getElementById("start-date-picker").value);
             settings.start = settings.start.getInTimezone(currentTimezone);
             settings.end   = jsDateToDateTime(document.getElementById("end-date-picker").value);
             settings.end   = settings.end.getInTimezone(currentTimezone);
             break ;
-        default :
-            dump("Error : no case in printDialog.js::printCalendar()");
+        default:
+            Components.utils.reportError("Calendar print dialog: No calendar view found!");
     }
 
     if (settings.eventList) {
         receiverFunc(settings);
     } else {
         // end isn't exclusive, so we need to add one day
         settings.end = settings.end.clone();
         settings.end.day = settings.end.day + 1;
         settings.eventList = [];
-        var listener = {
+        let listener = {
             onOperationComplete:
             function onOperationComplete(aCalendar, aStatus, aOperationType, aId, aDateTime) {
                 receiverFunc(settings);
             },
             onGetResult:
             function onGetResult(aCalendar, aStatus, aItemType, aDetail, aCount, aItems) {
                 settings.eventList = settings.eventList.concat(aItems);
             }
         };
         window.opener.getCompositeCalendar().getItems(
-            Components.interfaces.calICalendar.ITEM_FILTER_TYPE_EVENT | 
+            Components.interfaces.calICalendar.ITEM_FILTER_TYPE_EVENT |
             Components.interfaces.calICalendar.ITEM_FILTER_CLASS_OCCURRENCES,
             0, settings.start, settings.end, listener);
     }
 }
 
 /**
  * Looks at the selections the user has made (start date, layout, etc.), and
  * updates the HTML in the iframe accordingly. This is also called when a
  * dialog UI element has changed, since we'll want to refresh the preview.
  */
-function refreshHtml(finishFunc)
-{
+function refreshHtml(finishFunc) {
     getEventsAndDialogSettings(
         function getEventsAndDialogSettings_response(settings) {
-            // calGetString can't do "formatStringFromName".
-            var sbs = Components.classes["@mozilla.org/intl/stringbundle;1"]
-                                .getService(Components.interfaces.nsIStringBundleService);
-            var props = sbs.createBundle("chrome://calendar/locale/calendar.properties");
-            document.title = props.formatStringFromName("PrintPreviewWindowTitle", [settings.title], 1);
+            document.title = calGetString("calendar", "PrintPreviewWindowTitle", [settings.title]);
 
-            var printformatter = Components.classes[settings.layoutCId]
+            let printformatter = Components.classes[settings.layoutCId]
                                            .createInstance(Components.interfaces.calIPrintFormatter);
-
-            var html = "";
+            let html = "";
             try {
-                var pipe = Components.classes["@mozilla.org/pipe;1"]
+                let pipe = Components.classes["@mozilla.org/pipe;1"]
                                      .createInstance(Components.interfaces.nsIPipe);
                 const PR_UINT32_MAX = 4294967295; // signals "infinite-length"
                 pipe.init(true, true, 0, PR_UINT32_MAX, null);
                 printformatter.formatToHtml(pipe.outputStream,
                                             settings.start,
                                             settings.end,
                                             settings.eventList.length,
                                             settings.eventList,
                                             settings.title);
                 pipe.outputStream.close();
                 // convert byte-array to UTF-8 string:
-                var convStream =
-                    Components.classes["@mozilla.org/intl/converter-input-stream;1"]
-                              .createInstance(Components.interfaces.nsIConverterInputStream);
+                let convStream = Components.classes["@mozilla.org/intl/converter-input-stream;1"]
+                                           .createInstance(Components.interfaces.nsIConverterInputStream);
                 convStream.init(pipe.inputStream, "UTF-8", 0,
                                 Components.interfaces.nsIConverterInputStream.DEFAULT_REPLACEMENT_CHARACTER);
                 try {
-                    var portion = {};
+                    let portion = {};
                     while (convStream.readString(-1, portion)) {
                         html += portion.value;
                     }
                 } finally {
                     convStream.close();
                 }
             } catch (e) {
-                dump("printDialog::refreshHtml:" + e + "\n");
-                Components.utils.reportError(e);
+                Components.utils.reportError("Calendar print dialog:refreshHtml: " + e);
             }
-            var iframeDoc = document.getElementById("content").contentDocument;
+
+            let iframeDoc = document.getElementById("content").contentDocument;
             iframeDoc.documentElement.innerHTML = html;
             iframeDoc.title = settings.title;
 
             if (finishFunc) {
                 finishFunc();
             }
         }
     );
 }
 
-function printAndClose()
-{
+function printAndClose() {
     refreshHtml(
         function finish() {
             PrintUtils.print();
-            var closeDialog = true;
+            let closeDialog = true;
 #ifdef XP_UNIX
 #ifndef XP_MACOSX
             closeDialog = false;
 #endif
 #endif
             // XXX: printing fails "printing failed while in preview"
             //      if dialog is closed too early on Unix
             if (closeDialog) {
rename from calendar/resources/content/printDialog.xul
rename to calendar/base/content/dialogs/calendar-print-dialog.xul
--- a/calendar/resources/content/printDialog.xul
+++ b/calendar/base/content/dialogs/calendar-print-dialog.xul
@@ -14,147 +14,141 @@
    -
    - The Original Code is OEone Calendar Code, released October 31st, 2001.
    -
    - The Initial Developer of the Original Code is
    - OEone Corporation.
    - Portions created by the Initial Developer are Copyright (C) 2001
    - the Initial Developer. All Rights Reserved.
    -
-   - Contributor(s): Garth Smedley <garths@oeone.com> 
-   -                 Mike Potter <mikep@oeone.com>
-   -                 Colin Phillips <colinp@oeone.com> 
-   -                 Chris Charabaruk <ccharabaruk@meldstar.com>
-   -                 ArentJan Banck <ajbanck@planet.nl>
-   -                 Chris Allen <chris@netinflux.com>
-   -                 Matthew Willis <mattwillis@gmail.com>
+   - Contributor(s):
+   -   Garth Smedley <garths@oeone.com>
+   -   Mike Potter <mikep@oeone.com>
+   -   Colin Phillips <colinp@oeone.com>
+   -   Chris Charabaruk <ccharabaruk@meldstar.com>
+   -   ArentJan Banck <ajbanck@planet.nl>
+   -   Chris Allen <chris@netinflux.com>
+   -   Matthew Willis <mattwillis@gmail.com>
+   -   Martin Schroeder <mschroeder@mozilla.x-home.org>
    -
    - Alternatively, the contents of this file may be used under the terms of
    - either the GNU General Public License Version 2 or later (the "GPL"), or
    - the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
    - in which case the provisions of the GPL or the LGPL are applicable instead
    - of those above. If you wish to allow use of your version of this file only
    - under the terms of either the GPL or the LGPL, and not to allow others to
    - use your version of this file under the terms of the MPL, indicate your
    - decision by deleting the provisions above and replace them with the notice
    - and other provisions required by the LGPL or the GPL. If you do not delete
    - the provisions above, a recipient may use your version of this file under
    - the terms of any one of the MPL, the GPL or the LGPL.
    -
    - ***** END LICENSE BLOCK ***** -->
 
-<?xml-stylesheet href="chrome://global/skin/global.css" type="text/css"?>
-
-<?xul-overlay href="chrome://global/content/dialogOverlay.xul"?>
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<?xml-stylesheet href="chrome://calendar/content/datetimepickers/datetimepickers.css" type="text/css"?>
 
-<!-- CSS File with all styles specific to the dialog -->
-<?xml-stylesheet href="chrome://calendar/skin/dialogOverlay.css" type="text/css"?>
-
-<?xml-stylesheet href="chrome://calendar/content/datetimepickers/datetimepickers.css" type="text/css" ?>
-
-<!-- DTD File with all strings specific to the calendar -->
-<!DOCTYPE dialog 
-[
+<!DOCTYPE dialog [
     <!ENTITY % dtd1 SYSTEM "chrome://calendar/locale/global.dtd" > %dtd1;
     <!ENTITY % dtd2 SYSTEM "chrome://calendar/locale/calendar.dtd" > %dtd2;
     <!ENTITY % dtd3 SYSTEM "chrome://calendar/locale/menuOverlay.dtd"> %dtd3;
 ]>
 
 
-<dialog
-   id="calendar-new-printwindow"
-   title="&calendar.print.window.title;"
-   windowtype="Calendar:PrintDialog"
-   onload="loadCalendarPrintDialog()"
-   buttons="accept,cancel"
-   buttonlabelaccept="&calendar.print.button.label;"
-   buttonaccesskeyaccept="&calendar.print.accesskey;"
-   defaultButton="accept"
-   ondialogaccept="return printAndClose();"
-   ondialogcancel="return true;"
-   persist="screenX screenY width height"
-   xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-   xmlns:nc="http://home.netscape.com/NC-rdf#">
+<dialog id="calendar-new-printwindow"
+        title="&calendar.print.window.title;"
+        windowtype="Calendar:PrintDialog"
+        onload="loadCalendarPrintDialog();"
+        buttons="accept,cancel"
+        buttonlabelaccept="&calendar.print.button.label;"
+        buttonaccesskeyaccept="&calendar.print.accesskey;"
+        defaultButton="accept"
+        ondialogaccept="return printAndClose();"
+        ondialogcancel="return true;"
+        persist="screenX screenY width height"
+        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
 
-  <script type="application/javascript" src="chrome://calendar/content/printDialog.js"/>
+  <script type="application/javascript" src="chrome://calendar/content/calendar-print-dialog.js"/>
   <script type="application/javascript" src="chrome://calendar/content/calUtils.js"/>
   <script type="application/javascript" src="chrome://global/content/printUtils.js"/>
 
   <hbox id="firstHbox" flex="1">
     <vbox id="groupboxVbox">
-
       <groupbox id="settingsGroup">
         <caption label="&calendar.print.settingsGroup.label;"/>
 
         <grid>
           <columns>
             <column/>
             <column flex="1"/>
           </columns>
 
           <rows>
             <row align="center">
-              <label class="field-label-box-class"
-                     control="title-field"
+              <label control="title-field"
                      value="&calendar.print.title.label;"/>
               <textbox id="title-field"
                        class="padded"
                        flex="1"
                        onchange="refreshHtml();"/>
             </row>
             <row align="center">
-              <label class="field-label-box-class"
-                     control="layout-field"
+              <label control="layout-field"
                      value="&calendar.print.layout.label;"/>
               <hbox>
                 <menulist id="layout-field">
-                  <!-- This menupopup will be populated by printDialog.js -->
+                  <!-- This menupopup will be populated by calendar-print-dialog.js! -->
                   <menupopup id="layout-menulist-menupopup"
                              oncommand="refreshHtml();"/>
                 </menulist>
                 <spacer flex="1"/>
               </hbox>
             </row>
           </rows>
         </grid>
       </groupbox>
 
       <groupbox id="whatToPrintGroup">
         <caption label="&calendar.print.range.label;"/>
-        <radiogroup id="view-field" oncommand="refreshHtml();">
+        <radiogroup id="view-field"
+                    oncommand="refreshHtml();">
           <radio id="printCurrentViewRadio"
                  label="&calendar.print.currentview.label;"
                  value="currentview"/>
-          <radio id="selected" label="&calendar.print.selected.label;"
+          <radio id="selected"
+                 label="&calendar.print.selected.label;"
                  value="selected"/>
-          <radio id="custom-range" label="&calendar.print.custom.label;"
+          <radio id="custom-range"
+                 label="&calendar.print.custom.label;"
                  value="custom"/>
           <grid>
             <columns>
               <column/>
               <column flex="1"/>
             </columns>
 
             <rows>
               <row align="center">
-                <label class="field-label-box-class"
-                       control="start-date-picker"
+                <label control="start-date-picker"
                        value="&calendar.print.from.label;"/>
-                <datepicker id="start-date-picker" onchange="onDatePick();"/>
+                <datepicker id="start-date-picker"
+                            onchange="onDatePick();"/>
               </row>
               <row align="center">
-                <label class="field-label-box-class"
-                       control="end-date-picker"
+                <label control="end-date-picker"
                        value="&calendar.print.to.label;"/>
-                <datepicker id="end-date-picker" onchange="onDatePick();"/>
+                <datepicker id="end-date-picker"
+                            onchange="onDatePick();"/>
               </row>
             </rows>
           </grid>
         </radiogroup>
       </groupbox>
     </vbox>
 
     <splitter/>
 
-    <iframe src="about:blank" id="content" flex="1"
+    <iframe src="about:blank"
+            id="content"
+            flex="1"
             style="border: 2px solid #3c3c3c; width:30em; height:30em;"/>
   </hbox>
 </dialog>
--- a/calendar/base/jar.mn
+++ b/calendar/base/jar.mn
@@ -64,16 +64,18 @@ calendar.jar:
     content/calendar/calendar-event-dialog-timezone.js     (content/dialogs/calendar-event-dialog-timezone.js)
     content/calendar/calendar-event-dialog-timezone.xul    (content/dialogs/calendar-event-dialog-timezone.xul)
     content/calendar/calendar-event-dialog-attendees.xul   (content/dialogs/calendar-event-dialog-attendees.xul)
     content/calendar/calendar-event-dialog-attendees.js    (content/dialogs/calendar-event-dialog-attendees.js)
     content/calendar/calendar-invitations-dialog.css       (content/dialogs/calendar-invitations-dialog.css)
     content/calendar/calendar-invitations-dialog.js        (content/dialogs/calendar-invitations-dialog.js)
     content/calendar/calendar-invitations-dialog.xul       (content/dialogs/calendar-invitations-dialog.xul)
     content/calendar/calendar-invitations-list.xml         (content/dialogs/calendar-invitations-list.xml)
+*   content/calendar/calendar-print-dialog.js              (content/dialogs/calendar-print-dialog.js)
+    content/calendar/calendar-print-dialog.xul             (content/dialogs/calendar-print-dialog.xul)
     content/calendar/calendar-properties-dialog.xul        (content/dialogs/calendar-properties-dialog.xul)
     content/calendar/calendar-properties-dialog.js         (content/dialogs/calendar-properties-dialog.js)
     content/calendar/calendar-providerUninstall-dialog.xul (content/dialogs/calendar-providerUninstall-dialog.xul)
     content/calendar/calendar-providerUninstall-dialog.js  (content/dialogs/calendar-providerUninstall-dialog.js)
     content/calendar/calendar-subscriptions-dialog.css     (content/dialogs/calendar-subscriptions-dialog.css)
     content/calendar/calendar-subscriptions-dialog.js      (content/dialogs/calendar-subscriptions-dialog.js)
     content/calendar/calendar-subscriptions-dialog.xul     (content/dialogs/calendar-subscriptions-dialog.xul)
     content/calendar/calendar-summary-dialog.js            (content/dialogs/calendar-summary-dialog.js)
--- a/calendar/base/src/calUtils.js
+++ b/calendar/base/src/calUtils.js
@@ -309,17 +309,17 @@ function openCalendarProperties(aCalenda
                "chrome,titlebar,modal,resizable",
                {calendar: aCalendar});
 }
 
 /**
  * Opens the print dialog
  */
 function calPrint() {
-    openDialog("chrome://calendar/content/printDialog.xul", "Print",
+    openDialog("chrome://calendar/content/calendar-print-dialog.xul", "Print",
                "centerscreen,chrome,resizable");
 }
 
 /**
  * Other functions
  */
 
 /**
--- a/calendar/lightning/jar.mn
+++ b/calendar/lightning/jar.mn
@@ -50,15 +50,13 @@ lightning.jar:
     skin/lightning/lightning-widgets.css                   (themes/@THEME@/lightning-widgets.css)
 
 calendar.jar:
     content/calendar/calendarCreation.xul                  (/calendar/resources/content/calendarCreation.xul)
     content/calendar/calendarCreation.js                   (/calendar/resources/content/calendarCreation.js)
     content/calendar/datetimepickers/datetimepickers.css   (/calendar/resources/content/datetimepickers/datetimepickers.css)
 *   content/calendar/datetimepickers/datetimepickers.xml   (/calendar/resources/content/datetimepickers/datetimepickers.xml)
     content/calendar/mouseoverPreviews.js                  (/calendar/resources/content/mouseoverPreviews.js)
-*   content/calendar/printDialog.js                        (/calendar/resources/content/printDialog.js)
-    content/calendar/printDialog.xul                       (/calendar/resources/content/printDialog.xul)
     content/calendar/publish.js                            (/calendar/resources/content/publish.js)
     content/calendar/publishDialog.js                      (/calendar/resources/content/publishDialog.js)
     content/calendar/publishDialog.xul                     (/calendar/resources/content/publishDialog.xul)
     content/calendar/sound.wav                             (/calendar/resources/content/sound.wav)
     skin/calendar/datetimepickers/datetimepickers.css      (/calendar/resources/skin/classic/datetimepickers/datetimepickers.css)
--- a/calendar/resources/jar.mn
+++ b/calendar/resources/jar.mn
@@ -1,16 +1,14 @@
 #filter substitution
 calendar.jar:
 % content calendar %content/calendar/
     content/calendar/calendar.js                           (content/calendar.js)
     content/calendar/calendarCreation.xul                  (content/calendarCreation.xul)
     content/calendar/calendarCreation.js                   (content/calendarCreation.js)
-*   content/calendar/printDialog.js                        (content/printDialog.js)    
-    content/calendar/printDialog.xul                       (content/printDialog.xul)
     content/calendar/publish.js                            (content/publish.js)
     content/calendar/publishDialog.js                      (content/publishDialog.js)    
     content/calendar/publishDialog.xul                     (content/publishDialog.xul)
     content/calendar/mouseoverPreviews.js                  (content/mouseoverPreviews.js)
     content/calendar/sound.wav                             (content/sound.wav)
     content/calendar/datetimepickers/datetimepickers.css   (content/datetimepickers/datetimepickers.css)
 *   content/calendar/datetimepickers/datetimepickers.xml   (content/datetimepickers/datetimepickers.xml)
 *   content/calendar/preferences/advanced.js               (/calendar/base/content/preferences/advanced.js)