Index: chrome/browser/resources/print_preview.js |
diff --git a/chrome/browser/resources/print_preview.js b/chrome/browser/resources/print_preview.js |
index 7dfc1abaabd10f5ca058342fb7b1fae9c6b7cecb..c4675300077cec831604426063094a3b47f9e666 100644 |
--- a/chrome/browser/resources/print_preview.js |
+++ b/chrome/browser/resources/print_preview.js |
@@ -1,4 +1,4 @@ |
-// Copyright (c) 2010 The Chromium Authors. All rights reserved. |
+// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
@@ -10,9 +10,8 @@ var expectedPageCount = 0; |
* Window onload handler, sets up the page. |
*/ |
function load() { |
- $('print-button').addEventListener('click', function(e) { |
- chrome.send('print'); |
- }); |
+ $('print-button').addEventListener('click', printFile); |
+ |
$('cancel-button').addEventListener('click', function(e) { |
window.close(); |
}); |
@@ -21,6 +20,76 @@ function load() { |
}; |
/** |
+ * Page range text validation. |
+ * Returns true if |printFromText| and |printToText| are valid page numbers. |
+ * TODO (kmadhusu): Get the expected page count and validate the page range |
+ * with total number of pages. |
+ */ |
+function isValidPageRange(printFromText, printToText) { |
+ var numericExp = /^[0-9]+$/; |
+ if (numericExp.test(printFromText) && numericExp.test(printToText)) { |
+ var printFrom = Number(printFromText); |
+ var printTo = Number(printToText); |
+ if (printFrom <= printTo && printFrom != 0 && printTo != 0) |
+ return true; |
+ } |
+ return false; |
+} |
+ |
+/** |
+ * Parse page range text. |
+ * Eg: If page range is specified as '1-3,7-9,8'. Create an array with three |
+ * elements. Each array element contains the range information. |
+ * [{from:1, to:3}, {from:7, to:9}, {from:8, to:8}] |
+ * TODO (kmadhusu): Handle invalid characters. |
+ */ |
+function getPageRanges() { |
+ var pageRangesInfo = []; |
+ var pageRangeText = $('pages').value; |
+ var pageRangeList = pageRangeText.split(','); |
arv (Not doing code reviews)
2011/02/23 19:38:52
Should we not support white spaces in the text as
kmadhusu
2011/02/24 02:11:34
Done.
|
+ for (var i = 0; i < pageRangeList.length; i++) { |
+ var tempRange = pageRangeList[i].split('-'); |
+ var printFrom; |
+ var printTo; |
+ if (tempRange.length > 1) { |
+ printFrom = tempRange[0]; |
+ printTo = tempRange[1]; |
+ } else { |
+ printFrom = tempRange[0]; |
+ printTo = tempRange[0]; |
+ } |
+ // Validate the page range information. |
+ if (isValidPageRange(printFrom, printTo)) { |
+ pageRangesInfo.push({'from': parseInt(printFrom, 10), |
+ 'to': parseInt(printTo, 10)}); |
+ } |
+ } |
+ return pageRangesInfo; |
+} |
+ |
+function printFile() { |
+ var selectedPrinter = $('printer-list').selectedIndex; |
+ var printerName = $('printer-list').options[selectedPrinter].textContent; |
+ var pageRanges = getPageRanges(); |
+ var printAll = $('all-pages').checked; |
+ var twoSided = $('two-sided').checked; |
+ var copies = $('copies').value; |
+ var collate = $('collate').checked; |
+ var layout = $('layout').options[$('layout').selectedIndex].value; |
+ var color = $('color').options[$('color').selectedIndex].value; |
+ |
+ var jobSettings = JSON.stringify({'printerName': printerName, |
+ 'pageRange': pageRanges, |
+ 'printAll': printAll, |
+ 'twoSided': twoSided, |
+ 'copies': copies, |
+ 'collate': collate, |
+ 'layout': layout, |
+ 'color': color}); |
+ chrome.send('print', [jobSettings]); |
+} |
+ |
+/** |
* Fill the printer list drop down. |
*/ |
function setPrinters(printers) { |