Chromium Code Reviews| 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 #include "printing/printing_context_mac.h" | 5 #include "printing/printing_context_mac.h" |
| 6 | 6 |
| 7 #import <ApplicationServices/ApplicationServices.h> | 7 #import <ApplicationServices/ApplicationServices.h> |
| 8 #import <AppKit/AppKit.h> | 8 #import <AppKit/AppKit.h> |
| 9 | 9 |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 46 NSPrintPanel* panel = [NSPrintPanel printPanel]; | 46 NSPrintPanel* panel = [NSPrintPanel printPanel]; |
| 47 NSPrintInfo* printInfo = [NSPrintInfo sharedPrintInfo]; | 47 NSPrintInfo* printInfo = [NSPrintInfo sharedPrintInfo]; |
| 48 | 48 |
| 49 NSPrintPanelOptions options = [panel options]; | 49 NSPrintPanelOptions options = [panel options]; |
| 50 options |= NSPrintPanelShowsPaperSize; | 50 options |= NSPrintPanelShowsPaperSize; |
| 51 options |= NSPrintPanelShowsOrientation; | 51 options |= NSPrintPanelShowsOrientation; |
| 52 options |= NSPrintPanelShowsScaling; | 52 options |= NSPrintPanelShowsScaling; |
| 53 [panel setOptions:options]; | 53 [panel setOptions:options]; |
| 54 | 54 |
| 55 // Set the print job title text. | 55 // Set the print job title text. |
| 56 if (parent_view) { | 56 if (parent_view) |
| 57 NSString* job_title = [[parent_view window] title]; | 57 UpdatePrintInfoWithJobName(printInfo, [[parent_view window] title]); |
| 58 if (job_title) { | |
| 59 PMPrintSettings printSettings = | |
| 60 (PMPrintSettings)[printInfo PMPrintSettings]; | |
| 61 PMPrintSettingsSetJobName(printSettings, (CFStringRef)job_title); | |
| 62 [printInfo updateFromPMPrintSettings]; | |
| 63 } | |
| 64 } | |
| 65 | 58 |
| 66 // TODO(stuartmorgan): We really want a tab sheet here, not a modal window. | 59 // TODO(stuartmorgan): We really want a tab sheet here, not a modal window. |
| 67 // Will require restructuring the PrintingContext API to use a callback. | 60 // Will require restructuring the PrintingContext API to use a callback. |
| 68 NSInteger selection = [panel runModalWithPrintInfo:printInfo]; | 61 NSInteger selection = [panel runModalWithPrintInfo:printInfo]; |
| 69 if (selection == NSOKButton) { | 62 if (selection == NSOKButton) { |
| 70 ParsePrintInfo([panel printInfo]); | 63 ParsePrintInfo([panel printInfo]); |
| 71 callback->Run(OK); | 64 callback->Run(OK); |
| 72 } else { | 65 } else { |
| 73 callback->Run(CANCEL); | 66 callback->Run(CANCEL); |
| 74 } | 67 } |
| (...skipping 22 matching lines...) Expand all Loading... | |
| 97 return OnError(); | 90 return OnError(); |
| 98 settings_.SetOrientation(landscape); | 91 settings_.SetOrientation(landscape); |
| 99 | 92 |
| 100 std::string printer_name; | 93 std::string printer_name; |
| 101 if (!job_settings.GetString(kSettingPrinterName, &printer_name)) | 94 if (!job_settings.GetString(kSettingPrinterName, &printer_name)) |
| 102 return OnError(); | 95 return OnError(); |
| 103 | 96 |
| 104 if (!SetPrinter(printer_name)) | 97 if (!SetPrinter(printer_name)) |
| 105 return OnError(); | 98 return OnError(); |
| 106 | 99 |
| 100 string16 job_name; | |
| 101 if (!job_settings.GetString(kSettingPrintJobTitle, &job_name)) | |
| 102 return OnError(); | |
|
stuartmorgan
2011/03/30 22:59:17
It's not clear to me that not having/setting a job
| |
| 103 | |
| 104 if (!SetPrintJobName(job_name)) | |
| 105 return OnError(); | |
| 106 | |
| 107 InitPrintSettingsFromPrintInfo(ranges); | 107 InitPrintSettingsFromPrintInfo(ranges); |
| 108 return OK; | 108 return OK; |
| 109 } | 109 } |
| 110 | 110 |
| 111 void PrintingContextMac::InitPrintSettingsFromPrintInfo( | 111 void PrintingContextMac::InitPrintSettingsFromPrintInfo( |
| 112 const PageRanges& ranges) { | 112 const PageRanges& ranges) { |
| 113 PMPrintSession print_session = | 113 PMPrintSession print_session = |
| 114 static_cast<PMPrintSession>([print_info_.get() PMPrintSession]); | 114 static_cast<PMPrintSession>([print_info_.get() PMPrintSession]); |
| 115 PMPageFormat page_format = | 115 PMPageFormat page_format = |
| 116 static_cast<PMPageFormat>([print_info_.get() PMPageFormat]); | 116 static_cast<PMPageFormat>([print_info_.get() PMPageFormat]); |
| (...skipping 11 matching lines...) Expand all Loading... | |
| 128 if (![[[print_info_.get() printer] name] isEqualToString:new_printer_name]) { | 128 if (![[[print_info_.get() printer] name] isEqualToString:new_printer_name]) { |
| 129 NSPrinter* new_printer = [NSPrinter printerWithName:new_printer_name]; | 129 NSPrinter* new_printer = [NSPrinter printerWithName:new_printer_name]; |
| 130 if (new_printer == nil) | 130 if (new_printer == nil) |
| 131 return false; | 131 return false; |
| 132 | 132 |
| 133 [print_info_.get() setPrinter:new_printer]; | 133 [print_info_.get() setPrinter:new_printer]; |
| 134 } | 134 } |
| 135 return true; | 135 return true; |
| 136 } | 136 } |
| 137 | 137 |
| 138 bool PrintingContextMac::SetPrintJobName(const string16& job_name) { | |
| 139 NSString* print_job_name = base::SysUTF16ToNSString(job_name); | |
|
stuartmorgan
2011/03/30 22:59:17
Indentation is wrong here.
| |
| 140 if (!print_job_name) | |
| 141 return false; | |
| 142 UpdatePrintInfoWithJobName(print_info_.get(), print_job_name); | |
| 143 return true; | |
| 144 } | |
| 145 | |
| 146 void PrintingContextMac::UpdatePrintInfoWithJobName( | |
| 147 NSPrintInfo* printInfo, NSString* job_name) { | |
| 148 if (job_name) { | |
|
stuartmorgan
2011/03/30 22:59:17
Change to
if (!job_name)
return;
so the core
| |
| 149 PMPrintSettings settings = (PMPrintSettings)[printInfo PMPrintSettings]; | |
| 150 PMPrintSettingsSetJobName(settings, (CFStringRef)job_name); | |
| 151 [printInfo updateFromPMPrintSettings]; | |
| 152 } | |
| 153 } | |
| 154 | |
| 138 void PrintingContextMac::ParsePrintInfo(NSPrintInfo* print_info) { | 155 void PrintingContextMac::ParsePrintInfo(NSPrintInfo* print_info) { |
| 139 ResetSettings(); | 156 ResetSettings(); |
| 140 print_info_.reset([print_info retain]); | 157 print_info_.reset([print_info retain]); |
| 141 PageRanges page_ranges; | 158 PageRanges page_ranges; |
| 142 NSDictionary* print_info_dict = [print_info_.get() dictionary]; | 159 NSDictionary* print_info_dict = [print_info_.get() dictionary]; |
| 143 if (![[print_info_dict objectForKey:NSPrintAllPages] boolValue]) { | 160 if (![[print_info_dict objectForKey:NSPrintAllPages] boolValue]) { |
| 144 PageRange range; | 161 PageRange range; |
| 145 range.from = [[print_info_dict objectForKey:NSPrintFirstPage] intValue] - 1; | 162 range.from = [[print_info_dict objectForKey:NSPrintFirstPage] intValue] - 1; |
| 146 range.to = [[print_info_dict objectForKey:NSPrintLastPage] intValue] - 1; | 163 range.to = [[print_info_dict objectForKey:NSPrintLastPage] intValue] - 1; |
| 147 page_ranges.push_back(range); | 164 page_ranges.push_back(range); |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 251 void PrintingContextMac::ReleaseContext() { | 268 void PrintingContextMac::ReleaseContext() { |
| 252 print_info_.reset(); | 269 print_info_.reset(); |
| 253 context_ = NULL; | 270 context_ = NULL; |
| 254 } | 271 } |
| 255 | 272 |
| 256 gfx::NativeDrawingContext PrintingContextMac::context() const { | 273 gfx::NativeDrawingContext PrintingContextMac::context() const { |
| 257 return context_; | 274 return context_; |
| 258 } | 275 } |
| 259 | 276 |
| 260 } // namespace printing | 277 } // namespace printing |
| OLD | NEW |