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 // require: cr/ui/print_preview_cloud.js | 5 // require: cr/ui/print_preview_cloud.js |
6 | 6 |
7 var localStrings = new LocalStrings(); | 7 var localStrings = new LocalStrings(); |
8 | 8 |
9 // If useCloudPrint is true we attempt to connect to cloud print | 9 // If useCloudPrint is true we attempt to connect to cloud print |
10 // and populate the list of printers with cloud print printers. | 10 // and populate the list of printers with cloud print printers. |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
46 | 46 |
47 // True when a pending print file request exists. | 47 // True when a pending print file request exists. |
48 var hasPendingPrintDocumentRequest = false; | 48 var hasPendingPrintDocumentRequest = false; |
49 | 49 |
50 // True when the complete metafile for the previewed doc is ready. | 50 // True when the complete metafile for the previewed doc is ready. |
51 var isPrintReadyMetafileReady = false; | 51 var isPrintReadyMetafileReady = false; |
52 | 52 |
53 // True when preview tab is hidden. | 53 // True when preview tab is hidden. |
54 var isTabHidden = false; | 54 var isTabHidden = false; |
55 | 55 |
56 // Object holding all the pages related settings. | 56 // @type {print_preview.PageSettings} Holds all the pages related settings. |
57 var pageSettings; | 57 var pageSettings; |
58 | 58 |
59 // Object holding all the copies related settings. | 59 // @type {print_preview.CopiesSettings} Holds all the copies related settings. |
60 var copiesSettings; | 60 var copiesSettings; |
61 | 61 |
62 // Object holding all the layout related settings. | 62 // @type {print_preview.LayoutSettings} Holds all the layout related settings. |
63 var layoutSettings; | 63 var layoutSettings; |
64 | 64 |
65 // Object holding all the margin related settings. | 65 // @type {print_preview.MarginSettings} Holds all the margin related settings. |
66 var marginSettings; | 66 var marginSettings; |
67 | 67 |
68 // Object holding all the header footer related settings. | 68 // @type {print_preview.HeaderFooterSettings} Holds all the header footer |
69 // related settings. | |
69 var headerFooterSettings; | 70 var headerFooterSettings; |
70 | 71 |
71 // Object holding all the color related settings. | 72 // @type {print_preview.ColorSettings} Holds all the color related settings. |
72 var colorSettings; | 73 var colorSettings; |
73 | 74 |
75 // @type {print_preview.PreviewArea} Holds information related to the preview | |
76 // area (on the right). | |
77 var previewArea; | |
78 | |
74 // True if the user has click 'Advanced...' in order to open the system print | 79 // True if the user has click 'Advanced...' in order to open the system print |
75 // dialog. | 80 // dialog. |
76 var showingSystemDialog = false; | 81 var showingSystemDialog = false; |
77 | 82 |
78 // The range of options in the printer dropdown controlled by cloud print. | 83 // The range of options in the printer dropdown controlled by cloud print. |
79 var firstCloudPrintOptionPos = 0; | 84 var firstCloudPrintOptionPos = 0; |
80 var lastCloudPrintOptionPos = firstCloudPrintOptionPos; | 85 var lastCloudPrintOptionPos = firstCloudPrintOptionPos; |
81 | 86 |
82 // Store the current previewUid. | 87 // Store the current previewUid. |
83 var currentPreviewUid = ''; | 88 var currentPreviewUid = ''; |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
118 | 123 |
119 $('printer-list').disabled = true; | 124 $('printer-list').disabled = true; |
120 | 125 |
121 printHeader = print_preview.PrintHeader.getInstance(); | 126 printHeader = print_preview.PrintHeader.getInstance(); |
122 pageSettings = print_preview.PageSettings.getInstance(); | 127 pageSettings = print_preview.PageSettings.getInstance(); |
123 copiesSettings = print_preview.CopiesSettings.getInstance(); | 128 copiesSettings = print_preview.CopiesSettings.getInstance(); |
124 layoutSettings = print_preview.LayoutSettings.getInstance(); | 129 layoutSettings = print_preview.LayoutSettings.getInstance(); |
125 marginSettings = print_preview.MarginSettings.getInstance(); | 130 marginSettings = print_preview.MarginSettings.getInstance(); |
126 headerFooterSettings = print_preview.HeaderFooterSettings.getInstance(); | 131 headerFooterSettings = print_preview.HeaderFooterSettings.getInstance(); |
127 colorSettings = print_preview.ColorSettings.getInstance(); | 132 colorSettings = print_preview.ColorSettings.getInstance(); |
133 previewArea = print_preview.PreviewArea.getInstance(); | |
128 printHeader.addEventListeners(); | 134 printHeader.addEventListeners(); |
129 pageSettings.addEventListeners(); | 135 pageSettings.addEventListeners(); |
130 copiesSettings.addEventListeners(); | 136 copiesSettings.addEventListeners(); |
131 headerFooterSettings.addEventListeners(); | 137 headerFooterSettings.addEventListeners(); |
132 layoutSettings.addEventListeners(); | 138 layoutSettings.addEventListeners(); |
133 marginSettings.addEventListeners(); | 139 marginSettings.addEventListeners(); |
134 colorSettings.addEventListeners(); | 140 colorSettings.addEventListeners(); |
141 previewArea.addEventListeners(); | |
135 $('printer-list').onchange = updateControlsWithSelectedPrinterCapabilities; | 142 $('printer-list').onchange = updateControlsWithSelectedPrinterCapabilities; |
136 | 143 |
137 showLoadingAnimation(); | 144 showLoadingAnimation(); |
138 chrome.send('getInitiatorTabTitle'); | 145 chrome.send('getInitiatorTabTitle'); |
139 chrome.send('getDefaultPrinter'); | 146 chrome.send('getDefaultPrinter'); |
140 } | 147 } |
141 | 148 |
142 /** | 149 /** |
143 * Disables the input elements in the sidebar. | 150 * Disables the input elements in the sidebar. |
144 */ | 151 */ |
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
306 } | 313 } |
307 | 314 |
308 /** | 315 /** |
309 * Checks whether the specified settings are valid. | 316 * Checks whether the specified settings are valid. |
310 * | 317 * |
311 * @return {boolean} true if settings are valid, false if not. | 318 * @return {boolean} true if settings are valid, false if not. |
312 */ | 319 */ |
313 function areSettingsValid() { | 320 function areSettingsValid() { |
314 var selectedPrinter = getSelectedPrinterName(); | 321 var selectedPrinter = getSelectedPrinterName(); |
315 return pageSettings.isPageSelectionValid() && | 322 return pageSettings.isPageSelectionValid() && |
316 (copiesSettings.isValid() || | 323 marginSettings.areMarginSettingsValid() && |
317 selectedPrinter == PRINT_TO_PDF || | 324 (copiesSettings.isValid() || selectedPrinter == PRINT_TO_PDF || |
318 selectedPrinter == PRINT_WITH_CLOUD_PRINT); | 325 selectedPrinter == PRINT_WITH_CLOUD_PRINT); |
319 } | 326 } |
320 | 327 |
321 /** | 328 /** |
322 * Creates an object based on the values in the printer settings. | 329 * Creates an object based on the values in the printer settings. |
323 * | 330 * |
324 * @return {Object} Object containing print job settings. | 331 * @return {Object} Object containing print job settings. |
325 */ | 332 */ |
326 function getSettings() { | 333 function getSettings() { |
327 var deviceName = getSelectedPrinterName(); | 334 var deviceName = getSelectedPrinterName(); |
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
489 loadSelectedPages(); | 496 loadSelectedPages(); |
490 generateDraftData = false; | 497 generateDraftData = false; |
491 } else { | 498 } else { |
492 hasPendingPreviewRequest = true; | 499 hasPendingPreviewRequest = true; |
493 generateDraftData = true; | 500 generateDraftData = true; |
494 pageSettings.updatePageSelection(); | 501 pageSettings.updatePageSelection(); |
495 } | 502 } |
496 | 503 |
497 printSettings.save(); | 504 printSettings.save(); |
498 layoutSettings.updateState(); | 505 layoutSettings.updateState(); |
506 previewArea.resetState(); | |
499 isPrintReadyMetafileReady = false; | 507 isPrintReadyMetafileReady = false; |
500 isFirstPageLoaded = false; | 508 isFirstPageLoaded = false; |
501 | 509 |
502 var totalPageCount = pageSettings.totalPageCount; | 510 var totalPageCount = pageSettings.totalPageCount; |
503 if (!previewModifiable && totalPageCount > 0) | 511 if (!previewModifiable && totalPageCount > 0) |
504 generateDraftData = false; | 512 generateDraftData = false; |
505 | 513 |
506 var pageCount = totalPageCount != undefined ? totalPageCount : -1; | 514 var pageCount = totalPageCount != undefined ? totalPageCount : -1; |
507 chrome.send('getPreview', [JSON.stringify(getSettingsWithRequestID()), | 515 chrome.send('getPreview', [JSON.stringify(getSettingsWithRequestID()), |
508 pageCount, | 516 pageCount, |
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
666 var option = createDestinationListOption(optionText, | 674 var option = createDestinationListOption(optionText, |
667 optionValue, | 675 optionValue, |
668 isDefault, | 676 isDefault, |
669 isDisabled, | 677 isDisabled, |
670 isSeparator); | 678 isSeparator); |
671 var printerList = $('printer-list'); | 679 var printerList = $('printer-list'); |
672 var before = printerList[position]; | 680 var before = printerList[position]; |
673 printerList.add(option, before); | 681 printerList.add(option, before); |
674 return option; | 682 return option; |
675 } | 683 } |
684 | |
676 /** | 685 /** |
677 * Sets the color mode for the PDF plugin. | 686 * Sets the color mode for the PDF plugin. |
678 * Called from PrintPreviewHandler::ProcessColorSetting(). | 687 * Called from PrintPreviewHandler::ProcessColorSetting(). |
679 * @param {boolean} color is true if the PDF plugin should display in color. | 688 * @param {boolean} color is true if the PDF plugin should display in color. |
680 */ | 689 */ |
681 function setColor(color) { | 690 function setColor(color) { |
682 var pdfViewer = $('pdf-viewer'); | 691 var pdfViewer = $('pdf-viewer'); |
683 if (!pdfViewer) { | 692 if (!pdfViewer) { |
684 return; | 693 return; |
685 } | 694 } |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
747 displayErrorMessage(localStrings.getString('invalidPrinterSettings')); | 756 displayErrorMessage(localStrings.getString('invalidPrinterSettings')); |
748 } | 757 } |
749 | 758 |
750 /** | 759 /** |
751 * Called when the PDF plugin loads its document. | 760 * Called when the PDF plugin loads its document. |
752 */ | 761 */ |
753 function onPDFLoad() { | 762 function onPDFLoad() { |
754 if (previewModifiable) { | 763 if (previewModifiable) { |
755 setPluginPreviewPageCount(); | 764 setPluginPreviewPageCount(); |
756 } | 765 } |
757 $('pdf-viewer').fitToHeight(); | |
758 cr.dispatchSimpleEvent(document, 'PDFLoaded'); | 766 cr.dispatchSimpleEvent(document, 'PDFLoaded'); |
759 isFirstPageLoaded = true; | 767 isFirstPageLoaded = true; |
760 checkAndHideOverlayLayerIfValid(); | 768 checkAndHideOverlayLayerIfValid(); |
761 sendPrintDocumentRequestIfNeeded(); | 769 sendPrintDocumentRequestIfNeeded(); |
762 } | 770 } |
763 | 771 |
764 function setPluginPreviewPageCount() { | 772 function setPluginPreviewPageCount() { |
765 $('pdf-viewer').printPreviewPageCount( | 773 $('pdf-viewer').printPreviewPageCount( |
766 pageSettings.previouslySelectedPages.length); | 774 pageSettings.previouslySelectedPages.length); |
767 } | 775 } |
(...skipping 11 matching lines...) Expand all Loading... | |
779 if (!isExpectedPreviewResponse(previewResponseId)) | 787 if (!isExpectedPreviewResponse(previewResponseId)) |
780 return; | 788 return; |
781 pageSettings.updateState(pageCount); | 789 pageSettings.updateState(pageCount); |
782 previewModifiable = isModifiable; | 790 previewModifiable = isModifiable; |
783 if (!previewModifiable && pageSettings.requestPrintPreviewIfNeeded()) | 791 if (!previewModifiable && pageSettings.requestPrintPreviewIfNeeded()) |
784 return; | 792 return; |
785 | 793 |
786 cr.dispatchSimpleEvent(document, 'updateSummary'); | 794 cr.dispatchSimpleEvent(document, 'updateSummary'); |
787 } | 795 } |
788 | 796 |
797 /** | |
798 * @param {printing::PageSizeMargins} pageLayout The default layout of the page | |
799 * in points. | |
800 */ | |
789 function onDidGetDefaultPageLayout(pageLayout) { | 801 function onDidGetDefaultPageLayout(pageLayout) { |
790 // TODO(aayushkumar): Do something here! | 802 marginSettings.currentDefaultPageLayout = new print_preview.PageLayout( |
803 pageLayout.contentWidth, | |
804 pageLayout.contentHeight, | |
805 pageLayout.marginLeft, | |
806 pageLayout.marginTop, | |
807 pageLayout.marginRight, | |
808 pageLayout.marginBottom); | |
791 } | 809 } |
792 | 810 |
793 /** | 811 /** |
794 * This function sends a request to hide the overlay layer only if there is no | 812 * This function sends a request to hide the overlay layer only if there is no |
795 * pending print document request and we are not waiting for the print ready | 813 * pending print document request and we are not waiting for the print ready |
796 * metafile. | 814 * metafile. |
797 */ | 815 */ |
798 function checkAndHideOverlayLayerIfValid() { | 816 function checkAndHideOverlayLayerIfValid() { |
799 var selectedPrinter = getSelectedPrinterName(); | 817 var selectedPrinter = getSelectedPrinterName(); |
800 var printToDialog = selectedPrinter == PRINT_TO_PDF || | 818 var printToDialog = selectedPrinter == PRINT_TO_PDF || |
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
956 | 974 |
957 pdfViewer = document.createElement('embed'); | 975 pdfViewer = document.createElement('embed'); |
958 pdfViewer.setAttribute('id', 'pdf-viewer'); | 976 pdfViewer.setAttribute('id', 'pdf-viewer'); |
959 pdfViewer.setAttribute('type', | 977 pdfViewer.setAttribute('type', |
960 'application/x-google-chrome-print-preview-pdf'); | 978 'application/x-google-chrome-print-preview-pdf'); |
961 pdfViewer.setAttribute('src', srcURL); | 979 pdfViewer.setAttribute('src', srcURL); |
962 pdfViewer.setAttribute('aria-live', 'polite'); | 980 pdfViewer.setAttribute('aria-live', 'polite'); |
963 pdfViewer.setAttribute('aria-atomic', 'true'); | 981 pdfViewer.setAttribute('aria-atomic', 'true'); |
964 $('mainview').appendChild(pdfViewer); | 982 $('mainview').appendChild(pdfViewer); |
965 pdfViewer.onload('onPDFLoad()'); | 983 pdfViewer.onload('onPDFLoad()'); |
984 pdfViewer.onScroll('onPreviewPositionChanged()'); | |
985 pdfViewer.onPluginSizeChanged('onPreviewPositionChanged()'); | |
966 pdfViewer.removePrintButton(); | 986 pdfViewer.removePrintButton(); |
967 pdfViewer.grayscale(true); | 987 pdfViewer.grayscale(true); |
968 } | 988 } |
969 | 989 |
970 /** | 990 /** |
991 * Called either when there is a scroll event or when the plugin size changes. | |
992 */ | |
993 function onPreviewPositionChanged() { | |
994 marginSettings.onPreviewPositionChanged(); | |
995 } | |
996 | |
997 /** | |
971 * @return {boolean} true if a compatible pdf plugin exists. | 998 * @return {boolean} true if a compatible pdf plugin exists. |
972 */ | 999 */ |
973 function checkCompatiblePluginExists() { | 1000 function checkCompatiblePluginExists() { |
974 var dummyPlugin = $('dummy-viewer') | 1001 var dummyPlugin = $('dummy-viewer'); |
975 return !!(dummyPlugin.onload && | 1002 var pluginInterface = [ dummyPlugin.onload, |
Evan Stade
2011/10/05 22:42:14
I don't see anything wrong with the old format, wh
dpapad
2011/10/06 00:05:39
Because this way is much easier to find which func
Evan Stade
2011/10/07 03:29:58
I suggest you leave the console.log there.
| |
976 dummyPlugin.goToPage && | 1003 dummyPlugin.goToPage, |
977 dummyPlugin.removePrintButton && | 1004 dummyPlugin.removePrintButton, |
978 dummyPlugin.loadPreviewPage && | 1005 dummyPlugin.loadPreviewPage, |
979 dummyPlugin.printPreviewPageCount && | 1006 dummyPlugin.printPreviewPageCount, |
980 dummyPlugin.resetPrintPreviewUrl); | 1007 dummyPlugin.resetPrintPreviewUrl, |
1008 dummyPlugin.onPluginSizeChanged, | |
1009 dummyPlugin.onScroll, | |
1010 dummyPlugin.pageXOffset, | |
1011 dummyPlugin.pageYOffset, | |
1012 dummyPlugin.setZoomLevel, | |
1013 dummyPlugin.setPageXOffset, | |
1014 dummyPlugin.setPageYOffset, | |
1015 dummyPlugin.getHorizontalScrollbarThickness, | |
1016 dummyPlugin.getVerticalScrollbarThickness, | |
1017 dummyPlugin.getPageLocationNormalized, | |
1018 dummyPlugin.getHeight, | |
1019 dummyPlugin.getWidth ]; | |
1020 | |
1021 for (var i = 0; i < pluginInterface.length; i++) { | |
1022 if (!pluginInterface[i]) | |
1023 return false; | |
1024 } | |
1025 return true; | |
981 } | 1026 } |
982 | 1027 |
983 window.addEventListener('DOMContentLoaded', onLoad); | 1028 window.addEventListener('DOMContentLoaded', onLoad); |
984 | 1029 |
985 /** | 1030 /** |
986 * Sets the default values and sends a request to regenerate preview data. | 1031 * Sets the default values and sends a request to regenerate preview data. |
987 * Resets the margin options only if |resetMargins| is true. | 1032 * Resets the margin options only if |resetMargins| is true. |
988 */ | 1033 */ |
989 function setDefaultValuesAndRegeneratePreview(resetMargins) { | 1034 function setDefaultValuesAndRegeneratePreview(resetMargins) { |
990 if (resetMargins) | 1035 if (resetMargins) |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1028 <include src="print_preview_animations.js"/> | 1073 <include src="print_preview_animations.js"/> |
1029 <include src="print_preview_cloud.js"/> | 1074 <include src="print_preview_cloud.js"/> |
1030 <include src="print_preview_utils.js"/> | 1075 <include src="print_preview_utils.js"/> |
1031 <include src="print_header.js"/> | 1076 <include src="print_header.js"/> |
1032 <include src="page_settings.js"/> | 1077 <include src="page_settings.js"/> |
1033 <include src="copies_settings.js"/> | 1078 <include src="copies_settings.js"/> |
1034 <include src="header_footer_settings.js"/> | 1079 <include src="header_footer_settings.js"/> |
1035 <include src="layout_settings.js"/> | 1080 <include src="layout_settings.js"/> |
1036 <include src="color_settings.js"/> | 1081 <include src="color_settings.js"/> |
1037 <include src="margin_settings.js"/> | 1082 <include src="margin_settings.js"/> |
1083 <include src="margin_textbox.js"/> | |
1084 <include src="margin_line.js"/> | |
1085 <include src="margin_utils.js"/> | |
1086 <include src="margins_ui.js"/> | |
1087 <include src="preview_area.js"/> | |
OLD | NEW |