diff options
author | kmadhusu@chromium.org <kmadhusu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-05 18:50:23 +0000 |
---|---|---|
committer | kmadhusu@chromium.org <kmadhusu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-05 18:50:23 +0000 |
commit | c97e5e844b09c0d70951beb0477fdc486b825188 (patch) | |
tree | 91524dfa7ec423ba0f27f75f7ea38b77c82d6e31 /printing/printing_context_mac.mm | |
parent | d76bbf097760840a476decbadfa389865d1f53a3 (diff) | |
download | chromium_src-c97e5e844b09c0d70951beb0477fdc486b825188.zip chromium_src-c97e5e844b09c0d70951beb0477fdc486b825188.tar.gz chromium_src-c97e5e844b09c0d70951beb0477fdc486b825188.tar.bz2 |
PrintPreview: Set number of copies and collate in print ticket.
BUG=none
TEST=Enable print preview on mac. Print preview a webpage. Change the number of copies and collate setting values. Print the preview data.
Review URL: http://codereview.chromium.org/6780001
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@80499 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'printing/printing_context_mac.mm')
-rw-r--r-- | printing/printing_context_mac.mm | 35 |
1 files changed, 31 insertions, 4 deletions
diff --git a/printing/printing_context_mac.mm b/printing/printing_context_mac.mm index 9357e77..cc5b808 100644 --- a/printing/printing_context_mac.mm +++ b/printing/printing_context_mac.mm @@ -11,6 +11,7 @@ #include "base/mac/scoped_cftyperef.h" #include "base/sys_string_conversions.h" #include "base/values.h" +#include "printing/print_job_constants.h" #include "printing/print_settings_initializer_mac.h" namespace printing { @@ -85,22 +86,33 @@ PrintingContext::Result PrintingContextMac::UpdatePrintSettings( const DictionaryValue& job_settings, const PageRanges& ranges) { DCHECK(!in_print_job_); - // TODO (kmadhusu): Update other print job settings such as number of copies, - // collate, etc., - ResetSettings(); print_info_.reset([[NSPrintInfo sharedPrintInfo] copy]); bool landscape; std::string printer_name; - if (!GetSettingsFromDict(job_settings, &landscape, &printer_name)) + int copies; + bool collate; + if (!job_settings.GetBoolean(kSettingLandscape, &landscape) || + !job_settings.GetString(kSettingPrinterName, &printer_name) || + !job_settings.GetInteger(kSettingCopies, &copies) || + !job_settings.GetBoolean(kSettingCollate, &collate)) { return OnError(); + } settings_.SetOrientation(landscape); if (!SetPrinter(printer_name)) return OnError(); + if (!SetCopiesInPrintSettings(copies)) + return OnError(); + + if (!SetCollateInPrintSettings(collate)) + return OnError(); + + [print_info_.get() updateFromPMPrintSettings]; + InitPrintSettingsFromPrintInfo(ranges); return OK; } @@ -132,6 +144,21 @@ bool PrintingContextMac::SetPrinter(const std::string& printer_name) { return true; } +bool PrintingContextMac::SetCopiesInPrintSettings(int copies) { + if (copies < 1) + return false; + + PMPrintSettings pmPrintSettings = + static_cast<PMPrintSettings>([print_info_.get() PMPrintSettings]); + return PMSetCopies(pmPrintSettings, copies, false) == noErr; +} + +bool PrintingContextMac::SetCollateInPrintSettings(bool collate) { + PMPrintSettings pmPrintSettings = + static_cast<PMPrintSettings>([print_info_.get() PMPrintSettings]); + return PMSetCollate(pmPrintSettings, collate) == noErr; +} + void PrintingContextMac::ParsePrintInfo(NSPrintInfo* print_info) { ResetSettings(); print_info_.reset([print_info retain]); |