OLD | NEW |
---|---|
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 var localStrings = new LocalStrings(); | 5 var localStrings = new LocalStrings(); |
6 var hasPDFPlugin = true; | 6 var hasPDFPlugin = true; |
7 var expectedPageCount = 0; | 7 var expectedPageCount = 0; |
8 var pageRangesInfo = []; | 8 var pageRangesInfo = []; |
9 var printJobTitle = ''; | 9 var printJobTitle = ''; |
10 | 10 |
11 /** | 11 /** |
12 * Window onload handler, sets up the page. | 12 * Window onload handler, sets up the page. |
13 */ | 13 */ |
14 function load() { | 14 function load() { |
15 initializeAnimation(); | 15 initializeAnimation(); |
16 | 16 |
17 updateSummary(); | |
18 | |
19 $('printer-list').disabled = true; | 17 $('printer-list').disabled = true; |
20 $('print-button').disabled = true; | 18 $('print-button').disabled = true; |
21 $('print-button').addEventListener('click', printFile); | 19 $('print-button').addEventListener('click', printFile); |
22 $('cancel-button').addEventListener('click', function(e) { | 20 $('cancel-button').addEventListener('click', function(e) { |
23 window.close(); | 21 window.close(); |
24 }); | 22 }); |
25 | 23 |
26 $('copies').addEventListener('input', validateNumberOfCopies); | 24 $('copies').addEventListener('input', validateNumberOfCopies); |
27 $('copies').addEventListener('blur', handleCopiesFieldBlur); | 25 $('copies').addEventListener('blur', handleCopiesFieldBlur); |
28 $('individual-pages').addEventListener('blur', handlePageRangesFieldBlur); | 26 $('individual-pages').addEventListener('blur', handlePageRangesFieldBlur); |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
115 var pageRanges = getPageRanges(); | 113 var pageRanges = getPageRanges(); |
116 var parsedPageRanges = ''; | 114 var parsedPageRanges = ''; |
117 var individualPagesField = $('individual-pages'); | 115 var individualPagesField = $('individual-pages'); |
118 | 116 |
119 if (pageRanges.length == 1 && pageRanges[0].from == 1 && | 117 if (pageRanges.length == 1 && pageRanges[0].from == 1 && |
120 pageRanges[0].to == expectedPageCount) { | 118 pageRanges[0].to == expectedPageCount) { |
121 individualPagesField.value = parsedPageRanges; | 119 individualPagesField.value = parsedPageRanges; |
122 return; | 120 return; |
123 } | 121 } |
124 | 122 |
125 for (var i = 0; i < pageRanges.length; i++) { | 123 for (var i = 0; i < pageRanges.length; ++i) { |
Lei Zhang
2011/04/19 01:29:17
There's no rule for this in JS, but I'd like to do
| |
126 if (pageRanges[i].from == pageRanges[i].to) | 124 if (pageRanges[i].from == pageRanges[i].to) |
127 parsedPageRanges += pageRanges[i].from; | 125 parsedPageRanges += pageRanges[i].from; |
128 else | 126 else |
129 parsedPageRanges += pageRanges[i].from + '-' + pageRanges[i].to; | 127 parsedPageRanges += pageRanges[i].from + '-' + pageRanges[i].to; |
130 if (i < pageRanges.length - 1) | 128 if (i < pageRanges.length - 1) |
131 parsedPageRanges += ', '; | 129 parsedPageRanges += ', '; |
132 } | 130 } |
133 individualPagesField.value = parsedPageRanges; | 131 individualPagesField.value = parsedPageRanges; |
134 updateSummary(); | 132 updateSummary(); |
135 } | 133 } |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
222 function getPreview() { | 220 function getPreview() { |
223 chrome.send('getPreview', [getSettingsJSON()]); | 221 chrome.send('getPreview', [getSettingsJSON()]); |
224 } | 222 } |
225 | 223 |
226 /** | 224 /** |
227 * Fill the printer list drop down. | 225 * Fill the printer list drop down. |
228 * @param {Array} printers Array of printer names. | 226 * @param {Array} printers Array of printer names. |
229 * @param {number} defaultPrinterIndex The index of the default printer. | 227 * @param {number} defaultPrinterIndex The index of the default printer. |
230 */ | 228 */ |
231 function setPrinters(printers, defaultPrinterIndex) { | 229 function setPrinters(printers, defaultPrinterIndex) { |
232 if (printers.length > 0) { | 230 var printerList = $('printer-list'); |
233 for (var i = 0; i < printers.length; ++i) { | 231 for (var i = 0; i < printers.length; ++i) { |
234 var option = document.createElement('option'); | |
235 option.textContent = printers[i]; | |
236 $('printer-list').add(option); | |
237 if (i == defaultPrinterIndex) | |
238 option.selected = true; | |
239 } | |
240 } else { | |
241 var option = document.createElement('option'); | 232 var option = document.createElement('option'); |
dpapad
2011/04/19 01:50:36
Removing the "No printer found" is ok with me, sin
| |
242 option.textContent = localStrings.getString('noPrinter'); | 233 option.textContent = printers[i]; |
243 $('printer-list').add(option); | 234 printerList.add(option); |
235 if (i == defaultPrinterIndex) | |
236 option.selected = true; | |
244 } | 237 } |
245 | 238 |
246 // Adding option for saving PDF to disk. | 239 // Adding option for saving PDF to disk. |
247 var option = document.createElement('option'); | 240 var option = document.createElement('option'); |
248 option.textContent = localStrings.getString('printToPDF'); | 241 option.textContent = localStrings.getString('printToPDF'); |
249 $('printer-list').add(option); | 242 printerList.add(option); |
250 $('printer-list').disabled = false; | 243 printerList.disabled = false; |
251 | 244 |
252 // Once the printer list is populated, generate the initial preview. | 245 // Once the printer list is populated, generate the initial preview. |
253 getPreview(); | 246 getPreview(); |
254 } | 247 } |
255 | 248 |
256 /** | 249 /** |
257 * Sets the color mode for the PDF plugin. | 250 * Sets the color mode for the PDF plugin. |
258 * @param {boolean} color is true if the PDF plugin should display in color. | 251 * @param {boolean} color is true if the PDF plugin should display in color. |
259 */ | 252 */ |
260 function setColor(color) { | 253 function setColor(color) { |
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
455 */ | 448 */ |
456 function getPageList() { | 449 function getPageList() { |
457 var pageText = $('individual-pages').value; | 450 var pageText = $('individual-pages').value; |
458 | 451 |
459 if ($('all-pages').checked || pageText == '') | 452 if ($('all-pages').checked || pageText == '') |
460 pageText = '1-' + expectedPageCount; | 453 pageText = '1-' + expectedPageCount; |
461 | 454 |
462 var pageList = []; | 455 var pageList = []; |
463 var parts = pageText.split(/,/); | 456 var parts = pageText.split(/,/); |
464 | 457 |
465 for (var i = 0; i < parts.length; i++) { | 458 for (var i = 0; i < parts.length; ++i) { |
466 var part = parts[i]; | 459 var part = parts[i]; |
467 var match = part.match(/([0-9]+)-([0-9]+)/); | 460 var match = part.match(/([0-9]+)-([0-9]+)/); |
468 | 461 |
469 if (match && match[1] && match[2]) { | 462 if (match && match[1] && match[2]) { |
470 var from = parseInt(match[1], 10); | 463 var from = parseInt(match[1], 10); |
471 var to = parseInt(match[2], 10); | 464 var to = parseInt(match[2], 10); |
472 | 465 |
473 if (from && to) { | 466 if (from && to) { |
474 for (var j = from; j <= to; j++) | 467 for (var j = from; j <= to; ++j) |
475 if (j <= expectedPageCount) | 468 if (j <= expectedPageCount) |
476 pageList.push(j); | 469 pageList.push(j); |
477 } | 470 } |
478 } else if (parseInt(part, 10)) { | 471 } else if (parseInt(part, 10)) { |
479 if (parseInt(part, 10) <= expectedPageCount) | 472 if (parseInt(part, 10) <= expectedPageCount) |
480 pageList.push(parseInt(part, 10)); | 473 pageList.push(parseInt(part, 10)); |
481 } | 474 } |
482 } | 475 } |
483 return pageList; | 476 return pageList; |
484 } | 477 } |
485 | 478 |
486 /** | 479 /** |
487 * Parses the selected page ranges, processes them and returns the results. | 480 * Parses the selected page ranges, processes them and returns the results. |
488 * It squashes whenever possible. Example '1-2,3,5-7' becomes 1-3,5-7 | 481 * It squashes whenever possible. Example '1-2,3,5-7' becomes 1-3,5-7 |
489 * | 482 * |
490 * @return {Array} an array of page range objects. A page range object has | 483 * @return {Array} an array of page range objects. A page range object has |
491 * fields 'from' and 'to'. | 484 * fields 'from' and 'to'. |
492 */ | 485 */ |
493 function getPageRanges() { | 486 function getPageRanges() { |
494 var pageList = getPageList(); | 487 var pageList = getPageList(); |
495 var pageRanges = []; | 488 var pageRanges = []; |
496 for (var i = 0; i < pageList.length; i++) { | 489 for (var i = 0; i < pageList.length; ++i) { |
497 tempFrom = pageList[i]; | 490 tempFrom = pageList[i]; |
498 while (i + 1 < pageList.length && pageList[i + 1] == pageList[i] + 1) | 491 while (i + 1 < pageList.length && pageList[i + 1] == pageList[i] + 1) |
499 i++; | 492 ++i; |
500 tempTo = pageList[i]; | 493 tempTo = pageList[i]; |
501 pageRanges.push({'from': tempFrom, 'to': tempTo}); | 494 pageRanges.push({'from': tempFrom, 'to': tempTo}); |
502 } | 495 } |
503 return pageRanges; | 496 return pageRanges; |
504 } | 497 } |
OLD | NEW |