Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7)

Side by Side Diff: chrome/browser/resources/print_preview.js

Issue 6883032: Print Preview: Do not show an invalid summary on load and remove the "no printers" UI code. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
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 }
OLDNEW
« no previous file with comments | « chrome/app/generated_resources.grd ('k') | chrome/browser/ui/webui/print_preview_ui_html_source.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698