OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 // TODO(rltoscano): Move data/* into print_preview.data namespace | 5 // TODO(rltoscano): Move data/* into print_preview.data namespace |
6 | 6 |
7 var localStrings = new LocalStrings(templateData); | 7 var localStrings = new LocalStrings(templateData); |
8 | 8 |
9 <include src="component.js"/> | 9 <include src="component.js"/> |
10 <include src="print_preview_focus_manager.js"/> | 10 <include src="print_preview_focus_manager.js"/> |
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
224 | 224 |
225 /** | 225 /** |
226 * Whether Print Preview is in App Kiosk mode, basically, use only printers | 226 * Whether Print Preview is in App Kiosk mode, basically, use only printers |
227 * available for the device. | 227 * available for the device. |
228 * @type {boolean} | 228 * @type {boolean} |
229 * @private | 229 * @private |
230 */ | 230 */ |
231 this.isInAppKioskMode_ = false; | 231 this.isInAppKioskMode_ = false; |
232 | 232 |
233 /** | 233 /** |
| 234 * Whether Print with System Dialog option is available. |
| 235 * @type {boolean} |
| 236 * @private |
| 237 */ |
| 238 this.isSystemDialogAvailable_ = false; |
| 239 |
| 240 /** |
234 * State of the print preview UI. | 241 * State of the print preview UI. |
235 * @type {print_preview.PrintPreview.UiState_} | 242 * @type {print_preview.PrintPreview.UiState_} |
236 * @private | 243 * @private |
237 */ | 244 */ |
238 this.uiState_ = PrintPreview.UiState_.INITIALIZING; | 245 this.uiState_ = PrintPreview.UiState_.INITIALIZING; |
239 | 246 |
240 /** | 247 /** |
241 * Whether document preview generation is in progress. | 248 * Whether document preview generation is in progress. |
242 * @type {boolean} | 249 * @type {boolean} |
243 * @private | 250 * @private |
244 */ | 251 */ |
245 this.isPreviewGenerationInProgress_ = true; | 252 this.isPreviewGenerationInProgress_ = true; |
| 253 |
| 254 /** |
| 255 * Whether to show system dialog before next printing. |
| 256 * @type {boolean} |
| 257 * @private |
| 258 */ |
| 259 this.showSystemDialogBeforeNextPrint_ = false; |
246 }; | 260 }; |
247 | 261 |
248 /** | 262 /** |
249 * States of the print preview. | 263 * States of the print preview. |
250 * @enum {string} | 264 * @enum {string} |
251 * @private | 265 * @private |
252 */ | 266 */ |
253 PrintPreview.UiState_ = { | 267 PrintPreview.UiState_ = { |
254 INITIALIZING: 'initializing', | 268 INITIALIZING: 'initializing', |
255 READY: 'ready', | 269 READY: 'ready', |
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
531 'Trying to print with invalid ticket'); | 545 'Trying to print with invalid ticket'); |
532 if (this.uiState_ == PrintPreview.UiState_.OPENING_CLOUD_PRINT_DIALOG) { | 546 if (this.uiState_ == PrintPreview.UiState_.OPENING_CLOUD_PRINT_DIALOG) { |
533 this.nativeLayer_.startShowCloudPrintDialog( | 547 this.nativeLayer_.startShowCloudPrintDialog( |
534 this.printTicketStore_.pageRange.getPageNumberSet().size); | 548 this.printTicketStore_.pageRange.getPageNumberSet().size); |
535 } else { | 549 } else { |
536 this.nativeLayer_.startPrint( | 550 this.nativeLayer_.startPrint( |
537 this.destinationStore_.selectedDestination, | 551 this.destinationStore_.selectedDestination, |
538 this.printTicketStore_, | 552 this.printTicketStore_, |
539 this.cloudPrintInterface_, | 553 this.cloudPrintInterface_, |
540 this.documentInfo_, | 554 this.documentInfo_, |
541 this.uiState_ == PrintPreview.UiState_.OPENING_PDF_PREVIEW); | 555 this.uiState_ == PrintPreview.UiState_.OPENING_PDF_PREVIEW, |
| 556 this.showSystemDialogBeforeNextPrint_); |
| 557 this.showSystemDialogBeforeNextPrint_ = false; |
542 } | 558 } |
543 return PrintPreview.PrintAttemptResult_.PRINTED; | 559 return PrintPreview.PrintAttemptResult_.PRINTED; |
544 }, | 560 }, |
545 | 561 |
546 /** | 562 /** |
547 * Closes the print preview. | 563 * Closes the print preview. |
548 * @private | 564 * @private |
549 */ | 565 */ |
550 close_: function() { | 566 close_: function() { |
551 this.exitDocument(); | 567 this.exitDocument(); |
552 this.uiState_ = PrintPreview.UiState_.CLOSING; | 568 this.uiState_ = PrintPreview.UiState_.CLOSING; |
553 this.nativeLayer_.startCloseDialog(); | 569 this.nativeLayer_.startCloseDialog(); |
554 }, | 570 }, |
555 | 571 |
556 /** | 572 /** |
557 * Opens the native system print dialog after disabling all controls. | 573 * Opens the native system print dialog after disabling all controls. |
558 * @private | 574 * @private |
559 */ | 575 */ |
560 openSystemPrintDialog_: function() { | 576 openSystemPrintDialog_: function() { |
| 577 if (!this.shouldShowSystemDialogLink_()) |
| 578 return; |
| 579 if (cr.isWindows) { |
| 580 this.showSystemDialogBeforeNextPrint_ = true; |
| 581 this.printDocumentOrOpenPdfPreview_(false /*isPdfPreview*/); |
| 582 return; |
| 583 } |
561 setIsVisible($('system-dialog-throbber'), true); | 584 setIsVisible($('system-dialog-throbber'), true); |
562 this.setIsEnabled_(false); | 585 this.setIsEnabled_(false); |
563 this.uiState_ = PrintPreview.UiState_.OPENING_NATIVE_PRINT_DIALOG; | 586 this.uiState_ = PrintPreview.UiState_.OPENING_NATIVE_PRINT_DIALOG; |
564 this.nativeLayer_.startShowSystemDialog(); | 587 this.nativeLayer_.startShowSystemDialog(); |
565 }, | 588 }, |
566 | 589 |
567 /** | 590 /** |
568 * Called when the native layer has initial settings to set. Sets the | 591 * Called when the native layer has initial settings to set. Sets the |
569 * initial settings of the print preview and begins fetching print | 592 * initial settings of the print preview and begins fetching print |
570 * destinations. | 593 * destinations. |
(...skipping 21 matching lines...) Expand all Loading... |
592 settings.documentHasSelection); | 615 settings.documentHasSelection); |
593 this.printTicketStore_.init( | 616 this.printTicketStore_.init( |
594 settings.thousandsDelimeter, | 617 settings.thousandsDelimeter, |
595 settings.decimalDelimeter, | 618 settings.decimalDelimeter, |
596 settings.unitType, | 619 settings.unitType, |
597 settings.selectionOnly); | 620 settings.selectionOnly); |
598 this.destinationStore_.init(settings.isInAppKioskMode); | 621 this.destinationStore_.init(settings.isInAppKioskMode); |
599 this.appState_.setInitialized(); | 622 this.appState_.setInitialized(); |
600 | 623 |
601 $('document-title').innerText = settings.documentTitle; | 624 $('document-title').innerText = settings.documentTitle; |
602 setIsVisible($('system-dialog-link'), | 625 this.isSystemDialogAvailable_ = !settings.hidePrintWithSystemDialogLink && |
603 !settings.hidePrintWithSystemDialogLink && | 626 !settings.isInAppKioskMode; |
604 !settings.isInAppKioskMode); | 627 setIsVisible($('system-dialog-link'), this.shouldShowSystemDialogLink_()); |
605 }, | 628 }, |
606 | 629 |
607 /** | 630 /** |
608 * Calls when the native layer enables Google Cloud Print integration. | 631 * Calls when the native layer enables Google Cloud Print integration. |
609 * Fetches the user's cloud printers. | 632 * Fetches the user's cloud printers. |
610 * @param {Event} event Contains the base URL of the Google Cloud Print | 633 * @param {Event} event Contains the base URL of the Google Cloud Print |
611 * service. | 634 * service. |
612 * @private | 635 * @private |
613 */ | 636 */ |
614 onCloudPrintEnable_: function(event) { | 637 onCloudPrintEnable_: function(event) { |
(...skipping 459 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1074 this.nativeLayer_.previewReadyForTest(); | 1097 this.nativeLayer_.previewReadyForTest(); |
1075 } else if (margins >= 0 && margins < combobox.length) { | 1098 } else if (margins >= 0 && margins < combobox.length) { |
1076 combobox.selectedIndex = margins; | 1099 combobox.selectedIndex = margins; |
1077 this.marginSettings_.onSelectChange_(); | 1100 this.marginSettings_.onSelectChange_(); |
1078 } else { | 1101 } else { |
1079 this.nativeLayer_.previewFailedForTest(); | 1102 this.nativeLayer_.previewFailedForTest(); |
1080 } | 1103 } |
1081 }, | 1104 }, |
1082 | 1105 |
1083 /** | 1106 /** |
| 1107 * Returns true if "Print using system dialog" link should be shown for |
| 1108 * current destination. |
| 1109 * @return {boolean} Returns true if link should be shown. |
| 1110 */ |
| 1111 shouldShowSystemDialogLink_: function() { |
| 1112 if (!this.isSystemDialogAvailable_) |
| 1113 return false; |
| 1114 if (!cr.isWindows) |
| 1115 return true; |
| 1116 var selectedDest = this.destinationStore_.selectedDestination; |
| 1117 return selectedDest && |
| 1118 selectedDest.origin == print_preview.Destination.Origin.LOCAL && |
| 1119 selectedDest.id != |
| 1120 print_preview.Destination.GooglePromotedId.SAVE_AS_PDF; |
| 1121 }, |
| 1122 |
| 1123 /** |
1084 * Called when the open-cloud-print-dialog link is clicked. Opens the Google | 1124 * Called when the open-cloud-print-dialog link is clicked. Opens the Google |
1085 * Cloud Print web dialog. | 1125 * Cloud Print web dialog. |
1086 * @private | 1126 * @private |
1087 */ | 1127 */ |
1088 onCloudPrintDialogLinkClick_: function() { | 1128 onCloudPrintDialogLinkClick_: function() { |
1089 assert(this.uiState_ == PrintPreview.UiState_.READY, | 1129 assert(this.uiState_ == PrintPreview.UiState_.READY, |
1090 'Opening Google Cloud Print dialog when not in ready state: ' + | 1130 'Opening Google Cloud Print dialog when not in ready state: ' + |
1091 this.uiState_); | 1131 this.uiState_); |
1092 setIsVisible($('cloud-print-dialog-throbber'), true); | 1132 setIsVisible($('cloud-print-dialog-throbber'), true); |
1093 this.setIsEnabled_(false); | 1133 this.setIsEnabled_(false); |
1094 this.uiState_ = PrintPreview.UiState_.OPENING_CLOUD_PRINT_DIALOG; | 1134 this.uiState_ = PrintPreview.UiState_.OPENING_CLOUD_PRINT_DIALOG; |
1095 this.printIfReady_(); | 1135 this.printIfReady_(); |
1096 }, | 1136 }, |
1097 | 1137 |
1098 /** | 1138 /** |
1099 * Called when a print destination is selected. Shows/hides the "Print with | 1139 * Called when a print destination is selected. Shows/hides the "Print with |
1100 * Cloud Print" link in the navbar. | 1140 * Cloud Print" link in the navbar. |
1101 * @private | 1141 * @private |
1102 */ | 1142 */ |
1103 onDestinationSelect_: function() { | 1143 onDestinationSelect_: function() { |
1104 var selectedDest = this.destinationStore_.selectedDestination; | 1144 var selectedDest = this.destinationStore_.selectedDestination; |
1105 setIsVisible( | 1145 setIsVisible( |
1106 $('cloud-print-dialog-link'), | 1146 $('cloud-print-dialog-link'), |
1107 selectedDest && !cr.isChromeOS && !selectedDest.isLocal); | 1147 selectedDest && !cr.isChromeOS && !selectedDest.isLocal); |
| 1148 setIsVisible( |
| 1149 $('system-dialog-link'), |
| 1150 this.shouldShowSystemDialogLink_()); |
1108 if (selectedDest && this.isInKioskAutoPrintMode_) { | 1151 if (selectedDest && this.isInKioskAutoPrintMode_) { |
1109 this.onPrintButtonClick_(); | 1152 this.onPrintButtonClick_(); |
1110 } | 1153 } |
1111 }, | 1154 }, |
1112 | 1155 |
1113 /** | 1156 /** |
1114 * Called when the destination store loads a group of destinations. Shows | 1157 * Called when the destination store loads a group of destinations. Shows |
1115 * a promo on Chrome OS if the user has no print destinations promoting | 1158 * a promo on Chrome OS if the user has no print destinations promoting |
1116 * Google Cloud Print. | 1159 * Google Cloud Print. |
1117 * @private | 1160 * @private |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1232 <include src="search/cloud_destination_list.js"/> | 1275 <include src="search/cloud_destination_list.js"/> |
1233 <include src="search/recent_destination_list.js"/> | 1276 <include src="search/recent_destination_list.js"/> |
1234 <include src="search/destination_list_item.js"/> | 1277 <include src="search/destination_list_item.js"/> |
1235 <include src="search/destination_search.js"/> | 1278 <include src="search/destination_search.js"/> |
1236 <include src="search/fedex_tos.js"/> | 1279 <include src="search/fedex_tos.js"/> |
1237 | 1280 |
1238 window.addEventListener('DOMContentLoaded', function() { | 1281 window.addEventListener('DOMContentLoaded', function() { |
1239 printPreview = new print_preview.PrintPreview(); | 1282 printPreview = new print_preview.PrintPreview(); |
1240 printPreview.initialize(); | 1283 printPreview.initialize(); |
1241 }); | 1284 }); |
OLD | NEW |