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 |