Chromium Code Reviews| 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 |