summaryrefslogtreecommitdiffstats
path: root/printing/printing_context_mac.mm
diff options
context:
space:
mode:
authorkmadhusu@chromium.org <kmadhusu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-04-05 18:50:23 +0000
committerkmadhusu@chromium.org <kmadhusu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-04-05 18:50:23 +0000
commitc97e5e844b09c0d70951beb0477fdc486b825188 (patch)
tree91524dfa7ec423ba0f27f75f7ea38b77c82d6e31 /printing/printing_context_mac.mm
parentd76bbf097760840a476decbadfa389865d1f53a3 (diff)
downloadchromium_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.mm35
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]);