Chromium Code Reviews| Index: chrome/browser/ui/crypto_module_password_dialog_view.cc |
| diff --git a/chrome/browser/ui/crypto_module_password_dialog_view.cc b/chrome/browser/ui/crypto_module_password_dialog_view.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..3a11e14c556778c860dd7a962122e5a84cdfffc0 |
| --- /dev/null |
| +++ b/chrome/browser/ui/crypto_module_password_dialog_view.cc |
| @@ -0,0 +1,147 @@ |
| +// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "chrome/browser/ui/crypto_module_password_dialog_view.h" |
| + |
| +#include "base/basictypes.h" |
| +#include "base/bind.h" |
| +#include "base/utf_string_conversions.h" |
| +#include "googleurl/src/gurl.h" |
| +#include "grit/generated_resources.h" |
| +#include "ui/base/l10n/l10n_util.h" |
| +#include "views/controls/button/text_button.h" |
| +#include "views/controls/label.h" |
| +#include "views/controls/textfield/textfield.h" |
| +#include "views/layout/grid_layout.h" |
| +#include "views/layout/layout_constants.h" |
| + |
| +namespace browser { |
| +// CryptoModulePasswordDialogView |
| +//////////////////////////////////////////////////////////////////////////////// |
| +CryptoModulePasswordDialogView::CryptoModulePasswordDialogView( |
| + const std::string& slot_name, |
| + browser::CryptoModulePasswordReason reason, |
| + const std::string& server, |
| + const base::Callback<void(const char*)>& callback) |
| + : callback_(callback) { |
| + Init(server, slot_name, reason); |
| +} |
| + |
| +void CryptoModulePasswordDialogView::Init( |
| + const std::string& server, |
| + const std::string& slot_name, |
| + browser::CryptoModulePasswordReason reason) { |
| + |
| + // Select an appropriate text for the reason. |
| + std::string text; |
| + const string16& server16 = UTF8ToUTF16(server); |
| + const string16& slot16 = UTF8ToUTF16(slot_name); |
| + switch (reason) { |
| + case browser::kCryptoModulePasswordKeygen: |
| + text = l10n_util::GetStringFUTF8( |
| + IDS_CRYPTO_MODULE_AUTH_DIALOG_TEXT_KEYGEN, slot16, server16); |
| + break; |
| + case browser::kCryptoModulePasswordCertEnrollment: |
| + text = l10n_util::GetStringFUTF8( |
| + IDS_CRYPTO_MODULE_AUTH_DIALOG_TEXT_CERT_ENROLLMENT, slot16, server16); |
| + break; |
| + case browser::kCryptoModulePasswordClientAuth: |
| + text = l10n_util::GetStringFUTF8( |
| + IDS_CRYPTO_MODULE_AUTH_DIALOG_TEXT_CLIENT_AUTH, slot16, server16); |
| + break; |
| + case browser::kCryptoModulePasswordListCerts: |
| + text = l10n_util::GetStringFUTF8( |
| + IDS_CRYPTO_MODULE_AUTH_DIALOG_TEXT_LIST_CERTS, slot16); |
| + break; |
| + case browser::kCryptoModulePasswordCertImport: |
| + text = l10n_util::GetStringFUTF8( |
| + IDS_CRYPTO_MODULE_AUTH_DIALOG_TEXT_CERT_IMPORT, slot16); |
| + break; |
| + case browser::kCryptoModulePasswordCertExport: |
| + text = l10n_util::GetStringFUTF8( |
| + IDS_CRYPTO_MODULE_AUTH_DIALOG_TEXT_CERT_EXPORT, slot16); |
| + break; |
| + default: |
| + NOTREACHED(); |
| + } |
| + reason_label_ = new views::Label(); |
| + reason_label_->SetText(UTF8ToWide(text)); |
| + reason_label_->SetMultiLine(true); |
| + reason_label_->SetHorizontalAlignment(views::Label::ALIGN_LEFT); |
| + |
| + password_label_ = new views::Label(); |
| + password_label_->SetText(UTF8ToWide( |
| + l10n_util::GetStringUTF8( |
| + IDS_CRYPTO_MODULE_AUTH_DIALOG_PASSWORD_FIELD))); |
| + password_label_->SetHorizontalAlignment(views::Label::ALIGN_LEFT); |
| + |
| + password_entry_ = new views::Textfield(views::Textfield::STYLE_PASSWORD); |
| + password_entry_->SetController(this); |
| + |
| + views::GridLayout* layout = views::GridLayout::CreatePanel(this); |
| + SetLayoutManager(layout); |
| + |
| + views::ColumnSet* column_set = layout->AddColumnSet(0); |
| + column_set->AddColumn(views::GridLayout::LEADING, views::GridLayout::FILL, 1, |
| + views::GridLayout::USE_PREF, 0, 0); |
| + column_set->AddPaddingColumn( |
| + 0, views::kUnrelatedControlLargeHorizontalSpacing); |
| + column_set->AddColumn(views::GridLayout::LEADING, views::GridLayout::FILL, 1, |
| + views::GridLayout::USE_PREF, 0, 0); |
| + |
| + layout->StartRow(0, 0); |
| + layout->AddView(reason_label_); |
| + layout->AddPaddingRow(0, views::kUnrelatedControlVerticalSpacing); |
| + |
| + layout->StartRow(0, 0); |
| + layout->AddView(password_label_); |
| + layout->AddView(password_entry_); |
| + layout->AddPaddingRow(0, views::kUnrelatedControlVerticalSpacing); |
| +} |
| + |
| +views::View* CryptoModulePasswordDialogView::GetInitiallyFocusedView() { |
| + return password_entry_; |
| +} |
| +bool CryptoModulePasswordDialogView::IsModal() const { |
| + return true; |
| +} |
| +views::View* CryptoModulePasswordDialogView::GetContentsView() { |
| + return this; |
| +} |
| + |
| +std::wstring CryptoModulePasswordDialogView::GetDialogButtonLabel( |
| + ui::MessageBoxFlags::DialogButton button) const { |
| + if (button == ui::MessageBoxFlags::DIALOGBUTTON_OK) |
| + return UTF8ToWide(l10n_util::GetStringUTF8( |
| + IDS_CRYPTO_MODULE_AUTH_DIALOG_OK_BUTTON_LABEL)); |
| + else if (button == ui::MessageBoxFlags::DIALOGBUTTON_CANCEL) |
|
Greg Spencer (Chromium)
2011/10/05 23:41:16
remove extra space after the "=="
alicet1
2011/10/06 22:04:08
Done.
|
| + return UTF8ToWide(l10n_util::GetStringUTF8(IDS_CANCEL)); |
| + return L""; |
| +} |
| + |
| +bool CryptoModulePasswordDialogView::Accept() { |
| + callback_.Run(UTF16ToUTF8(password_entry_->text()).c_str()); |
| + string16 empty; |
|
Greg Spencer (Chromium)
2011/10/05 23:41:16
probably can be const.
alicet1
2011/10/06 22:04:08
Done.
|
| + password_entry_->SetText(empty); |
| + return true; |
| +} |
| + |
| +bool CryptoModulePasswordDialogView::Cancel() { |
| + callback_.Run(static_cast<const char*>(NULL)); |
| + string16 empty; |
| + password_entry_->SetText(empty); |
| + return true; |
| +} |
| + |
| +bool CryptoModulePasswordDialogView::HandleKeyEvent( |
| + views::Textfield* sender, |
| + const views::KeyEvent& keystroke) { |
| + return false; |
| +} |
| + |
| +string16 CryptoModulePasswordDialogView::GetWindowTitle() const { |
| + return UTF8ToUTF16(l10n_util::GetStringUTF8( |
| + IDS_CRYPTO_MODULE_AUTH_DIALOG_TITLE)); |
| +} |
| +} // namespace browser |