diff options
author | kmadhusu@chromium.org <kmadhusu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-06-25 02:17:40 +0000 |
---|---|---|
committer | kmadhusu@chromium.org <kmadhusu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-06-25 02:17:40 +0000 |
commit | 33c141aefc29ca5523cb2d462835969b6b3a5bf3 (patch) | |
tree | 7c9e38fedfd8538d313b3f44a1e4fe05e7a25334 | |
parent | 5c0e4507a7494db1efe56b6f2ecababddd3c2adf (diff) | |
download | chromium_src-33c141aefc29ca5523cb2d462835969b6b3a5bf3.zip chromium_src-33c141aefc29ca5523cb2d462835969b6b3a5bf3.tar.gz chromium_src-33c141aefc29ca5523cb2d462835969b6b3a5bf3.tar.bz2 |
PrintPreview: Read the printer driver default duplex setting and update the UI accordingly.
BUG=86569
TEST=Please refer to bug report.
Review URL: http://codereview.chromium.org/7198027
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@90475 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/resources/print_preview/print_preview.js | 10 | ||||
-rw-r--r-- | chrome/browser/ui/webui/print_preview_handler.cc | 22 |
2 files changed, 26 insertions, 6 deletions
diff --git a/chrome/browser/resources/print_preview/print_preview.js b/chrome/browser/resources/print_preview/print_preview.js index d33f981..0b6c7a6 100644 --- a/chrome/browser/resources/print_preview/print_preview.js +++ b/chrome/browser/resources/print_preview/print_preview.js @@ -212,9 +212,11 @@ function updateControlsWithSelectedPrinterCapabilities() { var selectedValue = printerList.options[selectedIndex].value; if (selectedValue == PRINT_TO_PDF) { - updateWithPrinterCapabilities({'disableColorOption': true, - 'setColorAsDefault': true, - 'disableCopiesOption': true}); + updateWithPrinterCapabilities({ + 'disableColorOption': true, + 'setColorAsDefault': true, + 'setDuplexAsDefault': false, + 'disableCopiesOption': true}); } else if (selectedValue == MANAGE_PRINTERS) { printerList.selectedIndex = lastSelectedPrinterIndex; chrome.send('managePrinters'); @@ -239,6 +241,7 @@ function updateWithPrinterCapabilities(settingInfo) { var disableColorOption = settingInfo.disableColorOption; var disableCopiesOption = settingInfo.disableCopiesOption; var setColorAsDefault = settingInfo.setColorAsDefault; + var setDuplexAsDefault = settingInfo.setDuplexAsDefault; var color = $('color'); var bw = $('bw'); var colorOptions = $('color-options'); @@ -259,6 +262,7 @@ function updateWithPrinterCapabilities(settingInfo) { color.checked = setColorAsDefault; bw.checked = !setColorAsDefault; } + $('two-sided').checked = setDuplexAsDefault; } /** diff --git a/chrome/browser/ui/webui/print_preview_handler.cc b/chrome/browser/ui/webui/print_preview_handler.cc index aff52a5..8d4aff6 100644 --- a/chrome/browser/ui/webui/print_preview_handler.cc +++ b/chrome/browser/ui/webui/print_preview_handler.cc @@ -44,16 +44,17 @@ namespace { -const bool kColorDefaultValue = false; -const bool kLandscapeDefaultValue = false; - const char kDisableColorOption[] = "disableColorOption"; const char kSetColorAsDefault[] = "setColorAsDefault"; +const char kSetDuplexAsDefault[] = "setDuplexAsDefault"; #if defined(USE_CUPS) const char kColorDevice[] = "ColorDevice"; +const char kDuplex[] = "Duplex"; +const char kDuplexNone[] = "None"; #elif defined(OS_WIN) const char kPskColor[] = "psk:Color"; +const char kPskOneSided[] = "psk:OneSided"; #endif enum UserActionBuckets { @@ -247,6 +248,7 @@ class PrintSystemTaskProxy VLOG(1) << "Get printer capabilities start for " << printer_name; printing::PrinterCapsAndDefaults printer_info; bool supports_color = true; + bool set_duplex_as_default = false; if (!print_backend_->GetPrinterCapsAndDefaults(printer_name, &printer_info)) { return; @@ -271,6 +273,17 @@ class PrintSystemTaskProxy ppd_attr_t* attr = ppdFindAttr(ppd, kColorDevice, NULL); if (attr && attr->value) supports_color = ppd->color_device; + + ppd_choice_t* ch = ppdFindMarkedChoice(ppd, kDuplex); + if (ch == NULL) { + ppd_option_t* option = ppdFindOption(ppd, kDuplex); + if (option != NULL) + ch = ppdFindChoice(option, option->defchoice); + } + + if (ch != NULL && strcmp(ch->choice, kDuplexNone) != 0) + set_duplex_as_default = true; + ppdClose(ppd); } file_util::Delete(ppd_file_path, false); @@ -281,6 +294,8 @@ class PrintSystemTaskProxy // http://msdn.microsoft.com/en-us/windows/hardware/gg463431. supports_color = (printer_info.printer_capabilities.find(kPskColor) != std::string::npos); + set_duplex_as_default = + (printer_info.printer_defaults.find(kPskOneSided) == std::string::npos); #else NOTIMPLEMENTED(); #endif @@ -288,6 +303,7 @@ class PrintSystemTaskProxy DictionaryValue settings_info; settings_info.SetBoolean(kDisableColorOption, !supports_color); settings_info.SetBoolean(kSetColorAsDefault, false); + settings_info.SetBoolean(kSetDuplexAsDefault, set_duplex_as_default); BrowserThread::PostTask( BrowserThread::UI, FROM_HERE, NewRunnableMethod(this, |