Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(326)

Unified Diff: chrome/browser/ui/webui/print_preview_handler.cc

Issue 8351048: Print Preview: Making margin selection sticky (part 2/2) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Handling source PDF case, fixing marginsUI flashing. Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/webui/print_preview_handler.cc
diff --git a/chrome/browser/ui/webui/print_preview_handler.cc b/chrome/browser/ui/webui/print_preview_handler.cc
index 66e4aa3f243d49b59090e79b268394955acda618..19bbd01e1f811ff785896adef50bbece5ea9cb77 100644
--- a/chrome/browser/ui/webui/print_preview_handler.cc
+++ b/chrome/browser/ui/webui/print_preview_handler.cc
@@ -50,6 +50,7 @@
#include "printing/metafile.h"
#include "printing/metafile_impl.h"
#include "printing/page_range.h"
+#include "printing/page_size_margins.h"
#include "printing/print_settings.h"
#include "unicode/ulocdata.h"
@@ -206,6 +207,8 @@ printing::ColorModels PrintPreviewHandler::last_used_color_model_ =
printing::UNKNOWN_COLOR_MODEL;
printing::MarginType PrintPreviewHandler::last_used_margins_type_ =
printing::DEFAULT_MARGINS;
+printing::PageSizeMargins*
+ PrintPreviewHandler::last_used_page_size_margins_ = NULL;
PrintPreviewHandler::PrintPreviewHandler()
: print_backend_(printing::PrintBackend::CreateInstance(NULL)),
@@ -264,13 +267,9 @@ void PrintPreviewHandler::RegisterMessages() {
web_ui_->RegisterMessageCallback("saveLastPrinter",
base::Bind(&PrintPreviewHandler::HandleSaveLastPrinter,
base::Unretained(this)));
- web_ui_->RegisterMessageCallback("getInitiatorTabTitle",
- base::Bind(&PrintPreviewHandler::HandleGetInitiatorTabTitle,
+ web_ui_->RegisterMessageCallback("getInitialSettings",
+ base::Bind(&PrintPreviewHandler::HandleGetInitialSettings,
base::Unretained(this)));
- web_ui_->RegisterMessageCallback("getNumberFormatAndMeasurementSystem",
- base::Bind(
- &PrintPreviewHandler::HandleGetNumberFormatAndMeasurementSystem,
- base::Unretained(this)));
}
TabContentsWrapper* PrintPreviewHandler::preview_tab_wrapper() const {
@@ -397,10 +396,19 @@ void PrintPreviewHandler::HandlePrint(const ListValue* args) {
last_used_color_model_ = static_cast<printing::ColorModels>(color_model);
// Storing last used margin settings.
- int margin_type;
- if (!settings->GetInteger(printing::kSettingMarginsType, &margin_type))
- margin_type = printing::DEFAULT_MARGINS;
- last_used_margins_type_ = static_cast<printing::MarginType>(margin_type);
+ bool is_modifiable;
+ settings->GetBoolean(printing::kSettingPreviewModifiable, &is_modifiable);
+ if (is_modifiable) {
+ int margin_type;
+ if (!settings->GetInteger(printing::kSettingMarginsType, &margin_type))
+ margin_type = printing::DEFAULT_MARGINS;
+ last_used_margins_type_ = static_cast<printing::MarginType>(margin_type);
+ if (last_used_margins_type_ == printing::CUSTOM_MARGINS) {
+ if (!last_used_page_size_margins_)
+ last_used_page_size_margins_ = new printing::PageSizeMargins();
+ getCustomMarginsFromJobSettings(*settings, last_used_page_size_margins_);
+ }
+ }
bool print_to_pdf = false;
settings->GetBoolean(printing::kSettingPrintToPDF, &print_to_pdf);
@@ -613,32 +621,61 @@ void PrintPreviewHandler::ReportStats() {
manage_printers_dialog_request_count_);
}
-void PrintPreviewHandler::HandleGetInitiatorTabTitle(
- const ListValue* /*args*/) {
- PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>(web_ui_);
- base::StringValue tab_title(print_preview_ui->initiator_tab_title());
- web_ui_->CallJavascriptFunction("setInitiatorTabTitle", tab_title);
-}
-
-void PrintPreviewHandler::HandleGetNumberFormatAndMeasurementSystem(
- const ListValue* /*args*/) {
+void PrintPreviewHandler::GetNumberFormatAndMeasurementSystem(
+ string16* number_format, int* measurement_system) {
// Getting the measurement system based on the locale.
UErrorCode errorCode = U_ZERO_ERROR;
const char* locale = g_browser_process->GetApplicationLocale().c_str();
- UMeasurementSystem measurement_system =
- ulocdata_getMeasurementSystem(locale, &errorCode);
- if (errorCode > U_ZERO_ERROR || measurement_system == UMS_LIMIT)
- measurement_system = UMS_SI;
+ UMeasurementSystem system = ulocdata_getMeasurementSystem(locale, &errorCode);
+ if (errorCode > U_ZERO_ERROR || system == UMS_LIMIT)
+ system = UMS_SI;
// Getting the number formatting based on the locale.
- StringValue number_format(base::FormatDouble(123456.78, 2));
+ *measurement_system = system;
+ *number_format = base::FormatDouble(123456.78, 2);
+}
+
+void PrintPreviewHandler::GetLastUsedMarginSettings(
+ printing::MarginType* margin_type, base::DictionaryValue* custom_margins) {
+ *margin_type = PrintPreviewHandler::last_used_margins_type_;
+ if (last_used_page_size_margins_) {
+ custom_margins->SetDouble(printing::kSettingMarginTop,
+ last_used_page_size_margins_->margin_top);
+ custom_margins->SetDouble(printing::kSettingMarginBottom,
+ last_used_page_size_margins_->margin_bottom);
+ custom_margins->SetDouble(printing::kSettingMarginLeft,
+ last_used_page_size_margins_->margin_left);
+ custom_margins->SetDouble(printing::kSettingMarginRight,
+ last_used_page_size_margins_->margin_right);
+ }
+}
+
+void PrintPreviewHandler::HandleGetInitialSettings(const ListValue* /*args*/) {
+ PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>(web_ui_);
+ base::StringValue tab_title(print_preview_ui->initiator_tab_title());
+
+ string16 number_format;
+ int measurement_system = -1;
+ GetNumberFormatAndMeasurementSystem(&number_format, &measurement_system);
+
+ printing::MarginType margin_type;
+ base::DictionaryValue custom_margins;
+ GetLastUsedMarginSettings(&margin_type, &custom_margins);
+
+ base::FundamentalValue m_type(margin_type);
+ base::StringValue format(number_format);
base::FundamentalValue system(measurement_system);
+ base::FundamentalValue modifiable(print_preview_ui->is_modifiable());
- web_ui_->CallJavascriptFunction(
- "print_preview.setNumberFormatAndMeasurementSystem",
- number_format,
- system);
+ std::vector<const base::Value*> args;
+ args.push_back(&tab_title);
+ args.push_back(&format);
+ args.push_back(&system);
+ args.push_back(&m_type);
+ args.push_back(&custom_margins);
+ args.push_back(&modifiable);
+ web_ui_->CallJavascriptFunction("setInitialSettings", args);
}
void PrintPreviewHandler::ActivateInitiatorTabAndClosePreviewTab() {
@@ -660,12 +697,8 @@ void PrintPreviewHandler::SendPrinterCapabilities(
void PrintPreviewHandler::SendDefaultPrinter(
const StringValue& default_printer,
const StringValue& cloud_print_data) {
- base::FundamentalValue margins_type(
- PrintPreviewHandler::last_used_margins_type_);
- web_ui_->CallJavascriptFunction("setDefaultPrinter",
- default_printer,
- cloud_print_data,
- margins_type);
+ web_ui_->CallJavascriptFunction(
+ "setDefaultPrinter", default_printer, cloud_print_data);
}
void PrintPreviewHandler::SetupPrinterList(const ListValue& printers) {

Powered by Google App Engine
This is Rietveld 408576698