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.h" | 5 #include "printing/printing_context.h" |
6 | 6 |
7 #include "base/values.h" | 7 #include "base/values.h" |
8 #include "printing/page_setup.h" | |
8 #include "printing/print_settings_initializer.h" | 9 #include "printing/print_settings_initializer.h" |
9 | 10 |
10 namespace printing { | 11 namespace printing { |
11 | 12 |
12 PrintingContext::PrintingContext(const std::string& app_locale) | 13 PrintingContext::PrintingContext(const std::string& app_locale) |
13 : dialog_box_dismissed_(false), | 14 : dialog_box_dismissed_(false), |
14 in_print_job_(false), | 15 in_print_job_(false), |
15 abort_printing_(false), | 16 abort_printing_(false), |
16 app_locale_(app_locale) { | 17 app_locale_(app_locale) { |
17 } | 18 } |
18 | 19 |
19 PrintingContext::~PrintingContext() { | 20 PrintingContext::~PrintingContext() { |
20 } | 21 } |
21 | 22 |
23 void PrintingContext::set_margin_type(MarginType type) { | |
24 DCHECK(type != CUSTOM_MARGINS); | |
25 settings_.margin_type = type; | |
26 } | |
27 | |
22 void PrintingContext::ResetSettings() { | 28 void PrintingContext::ResetSettings() { |
23 ReleaseContext(); | 29 ReleaseContext(); |
24 | 30 |
25 settings_.Clear(); | 31 settings_.Clear(); |
26 | 32 |
27 in_print_job_ = false; | 33 in_print_job_ = false; |
28 dialog_box_dismissed_ = false; | 34 dialog_box_dismissed_ = false; |
29 abort_printing_ = false; | 35 abort_printing_ = false; |
30 } | 36 } |
31 | 37 |
32 PrintingContext::Result PrintingContext::OnError() { | 38 PrintingContext::Result PrintingContext::OnError() { |
33 ResetSettings(); | 39 ResetSettings(); |
34 return abort_printing_ ? CANCEL : FAILED; | 40 return abort_printing_ ? CANCEL : FAILED; |
35 } | 41 } |
36 | 42 |
37 PrintingContext::Result PrintingContext::UpdatePrintSettings( | 43 PrintingContext::Result PrintingContext::UpdatePrintSettings( |
38 const base::DictionaryValue& job_settings, | 44 const base::DictionaryValue& job_settings, |
39 const PageRanges& ranges) { | 45 const PageRanges& ranges) { |
46 ResetSettings(); | |
47 | |
48 if (!job_settings.GetBoolean(printing::kSettingHeaderFooterEnabled, | |
49 &settings_.display_header_footer)) { | |
50 NOTREACHED(); | |
51 } | |
52 | |
53 int margin_type = DEFAULT_MARGINS; | |
54 if (!job_settings.GetInteger(printing::kSettingMarginsType, &margin_type) || | |
55 (margin_type != DEFAULT_MARGINS && | |
Lei Zhang
2011/10/15 03:42:19
Maybe in printing/print_job_constants.h make sure
| |
56 margin_type != NO_MARGINS && | |
57 margin_type != CUSTOM_MARGINS && | |
58 margin_type != PRINTABLE_AREA_MARGINS)) { | |
59 NOTREACHED(); | |
60 } | |
61 settings_.margin_type = static_cast<MarginType>(margin_type); | |
62 | |
63 if (margin_type == CUSTOM_MARGINS) { | |
64 double top_margin_in_points = 0; | |
65 double bottom_margin_in_points = 0; | |
66 double left_margin_in_points = 0; | |
67 double right_margin_in_points = 0; | |
68 DictionaryValue* custom_margins; | |
69 if (!job_settings.GetDictionary(printing::kSettingMarginsCustom, | |
70 &custom_margins) || | |
71 !custom_margins->GetDouble(printing::kSettingMarginTop, | |
72 &top_margin_in_points) || | |
73 !custom_margins->GetDouble(printing::kSettingMarginBottom, | |
74 &bottom_margin_in_points) || | |
75 !custom_margins->GetDouble(printing::kSettingMarginLeft, | |
76 &left_margin_in_points) || | |
77 !custom_margins->GetDouble(printing::kSettingMarginRight, | |
78 &right_margin_in_points)) { | |
79 NOTREACHED(); | |
80 } | |
81 PageMargins margins_in_points; | |
82 margins_in_points.Clear(); | |
83 margins_in_points.top = top_margin_in_points; | |
84 margins_in_points.bottom = bottom_margin_in_points; | |
85 margins_in_points.left = left_margin_in_points; | |
86 margins_in_points.right = right_margin_in_points; | |
87 | |
88 settings_.SetCustomMargins(margins_in_points); | |
89 } | |
90 | |
40 PrintingContext::Result result = UpdatePrinterSettings(job_settings, ranges); | 91 PrintingContext::Result result = UpdatePrinterSettings(job_settings, ranges); |
41 printing::PrintSettingsInitializer::InitHeaderFooterStrings(job_settings, | 92 printing::PrintSettingsInitializer::InitHeaderFooterStrings(job_settings, |
42 &settings_); | 93 &settings_); |
43 return result; | 94 return result; |
44 } | 95 } |
45 | 96 |
46 } // namespace printing | 97 } // namespace printing |
OLD | NEW |