manage_password_item_view.cc revision 4ad1aa43a48567659193a298fad74f55e00b3dd9
1489a0ec7301a86af8497d24748336db09ca278damikesamuel// Copyright 2013 The Chromium Authors. All rights reserved. 2489a0ec7301a86af8497d24748336db09ca278damikesamuel// Use of this source code is governed by a BSD-style license that can be 3I�b�pvt�r// found in the LICENSE file. 4C���!�FUj�ɮ)�L�| �a&�@�>h�a��不�� 5489a0ec7301a86af8497d24748336db09ca278damikesamuel#include "chrome/browser/ui/views/passwords/manage_password_item_view.h" 6489a0ec7301a86af8497d24748336db09ca278damikesamuel 7Cm��n#include "grit/generated_resources.h" 8489a0ec7301a86af8497d24748336db09ca278damikesamuel#include "grit/ui_resources.h" 9M�#include "ui/base/l10n/l10n_util.h" 10489a0ec7301a86af8497d24748336db09ca278damikesamuel#include "ui/base/resource/resource_bundle.h" 11489a0ec7301a86af8497d24748336db09ca278damikesamuel#include "ui/views/controls/button/button.h" 12Tt� �#include "ui/views/controls/button/image_button.h" 13489a0ec7301a86af8497d24748336db09ca278damikesamuel#include "ui/views/layout/grid_layout.h" 144M�G�O_H��%y�Vė�#���#include "ui/views/layout/layout_constants.h" 15489a0ec7301a86af8497d24748336db09ca278damikesamuel 16489a0ec7301a86af8497d24748336db09ca278damikesamuelManagePasswordItemView::ManagePasswordItemView( 17H��Ⱥ��B@D��Ւj�� ImfɼC��H�'�{�B���� J�M(f��=�����R� ManagePasswordsBubbleModel* manage_passwords_bubble_model, 18PKZp�wi��K� autofill::PasswordForm password_form, 19489a0ec7301a86af8497d24748336db09ca278damikesamuel int field_1_width, 20489a0ec7301a86af8497d24748336db09ca278damikesamuel int field_2_width) 21489a0ec7301a86af8497d24748336db09ca278damikesamuel : manage_passwords_bubble_model_(manage_passwords_bubble_model), 22h\;�އ����Y�KIi�t�JJ-<� password_form_(password_form), 23PƳ�j delete_password_(false), 24489a0ec7301a86af8497d24748336db09ca278damikesamuel field_1_width_(field_1_width), 25489a0ec7301a86af8497d24748336db09ca278damikesamuel field_2_width_(field_2_width) { 26489a0ec7301a86af8497d24748336db09ca278damikesamuel views::GridLayout* layout = new views::GridLayout(this); 27489a0ec7301a86af8497d24748336db09ca278damikesamuel ui::ResourceBundle* rb = &ui::ResourceBundle::GetSharedInstance(); 28489a0ec7301a86af8497d24748336db09ca278damikesamuel SetLayoutManager(layout); 29V4@I�� 306a-Mj=�"��C�D�� const int column_set_save_id = 0; 31489a0ec7301a86af8497d24748336db09ca278damikesamuel views::ColumnSet* column_set_save = layout->AddColumnSet(column_set_save_id); 32Lc'�.�P��hb column_set_save->AddPaddingColumn(0, views::kItemLabelSpacing); 33489a0ec7301a86af8497d24748336db09ca278damikesamuel column_set_save->AddColumn( 34489a0ec7301a86af8497d24748336db09ca278damikesamuel views::GridLayout::FILL, views::GridLayout::FILL, 0, 35489a0ec7301a86af8497d24748336db09ca278damikesamuel views::GridLayout::FIXED, field_1_width_, field_1_width_); 36489a0ec7301a86af8497d24748336db09ca278damikesamuel column_set_save->AddPaddingColumn(0, views::kItemLabelSpacing); 37M��_E�����E� column_set_save->AddColumn( 38489a0ec7301a86af8497d24748336db09ca278damikesamuel views::GridLayout::FILL, views::GridLayout::FILL, 1, 39bİhV/�����S�~�I�c�e&�#�o�b views::GridLayout::USE_PREF, field_2_width_, field_2_width_); 40489a0ec7301a86af8497d24748336db09ca278damikesamuel column_set_save->AddPaddingColumn(0, views::kItemLabelSpacing); 41489a0ec7301a86af8497d24748336db09ca278damikesamuel 42489a0ec7301a86af8497d24748336db09ca278damikesamuel const int column_set_manage_id = 1; 43489a0ec7301a86af8497d24748336db09ca278damikesamuel views::ColumnSet* column_set_manage = 44489a0ec7301a86af8497d24748336db09ca278damikesamuel layout->AddColumnSet(column_set_manage_id); 45z��].�� D�Pwv�~��m?}#�b���M�� column_set_manage->AddPaddingColumn(0, views::kItemLabelSpacing); 46489a0ec7301a86af8497d24748336db09ca278damikesamuel column_set_manage->AddColumn( 47Horg/objectweb/asm/tree/LdcInsnNode.class���J�@�� views::GridLayout::FILL, views::GridLayout::FILL, 0, 48489a0ec7301a86af8497d24748336db09ca278damikesamuel views::GridLayout::FIXED, field_1_width_, field_1_width_); 49489a0ec7301a86af8497d24748336db09ca278damikesamuel column_set_manage->AddPaddingColumn(0, views::kItemLabelSpacing); 50489a0ec7301a86af8497d24748336db09ca278damikesamuel column_set_manage->AddColumn( 51ML�O�b��ԓ�RD����B�B>eD^�ad��n�<����} views::GridLayout::FILL, views::GridLayout::FILL, 1, 52489a0ec7301a86af8497d24748336db09ca278damikesamuel views::GridLayout::USE_PREF, field_2_width_, field_2_width_); 53489a0ec7301a86af8497d24748336db09ca278damikesamuel column_set_manage->AddColumn(views::GridLayout::TRAILING, 54489a0ec7301a86af8497d24748336db09ca278damikesamuel views::GridLayout::FILL, 0, views::GridLayout::USE_PREF, 0, 0); 55489a0ec7301a86af8497d24748336db09ca278damikesamuel column_set_manage->AddPaddingColumn(0, views::kItemLabelSpacing); 56S��'����v��� 57489a0ec7301a86af8497d24748336db09ca278damikesamuel if (manage_passwords_bubble_model_->manage_passwords_bubble_state() != 58489a0ec7301a86af8497d24748336db09ca278damikesamuel ManagePasswordsBubbleModel::PASSWORD_TO_BE_SAVED) 59489a0ec7301a86af8497d24748336db09ca278damikesamuel layout->StartRowWithPadding(0, column_set_manage_id, 60489a0ec7301a86af8497d24748336db09ca278damikesamuel 0, views::kRelatedControlVerticalSpacing); 61489a0ec7301a86af8497d24748336db09ca278damikesamuel else 62489a0ec7301a86af8497d24748336db09ca278damikesamuel layout->StartRowWithPadding(0, column_set_save_id, 63489a0ec7301a86af8497d24748336db09ca278damikesamuel 0, views::kRelatedControlVerticalSpacing); 64489a0ec7301a86af8497d24748336db09ca278damikesamuel 65489a0ec7301a86af8497d24748336db09ca278damikesamuel label_1_ = new views::Label(password_form_.username_value); 66489a0ec7301a86af8497d24748336db09ca278damikesamuel label_1_->SetHorizontalAlignment(gfx::ALIGN_LEFT); 67489a0ec7301a86af8497d24748336db09ca278damikesamuel 68489a0ec7301a86af8497d24748336db09ca278damikesamuel label_2_ = 69489a0ec7301a86af8497d24748336db09ca278damikesamuel new views::Link(GetPasswordDisplayString(password_form_.password_value)); 70489a0ec7301a86af8497d24748336db09ca278damikesamuel label_2_->SetHorizontalAlignment(gfx::ALIGN_LEFT); 71T�x�+/d������ah�����$�pV��n<� label_2_->set_listener(this); 72489a0ec7301a86af8497d24748336db09ca278damikesamuel label_2_->SetFocusable(false); 73489a0ec7301a86af8497d24748336db09ca278damikesamuel label_2_->SetEnabled(false); 74489a0ec7301a86af8497d24748336db09ca278damikesamuel label_2_->SetUnderline(false); 75489a0ec7301a86af8497d24748336db09ca278damikesamuel 76489a0ec7301a86af8497d24748336db09ca278damikesamuel delete_button_ = new views::ImageButton(this); 77489a0ec7301a86af8497d24748336db09ca278damikesamuel delete_button_->SetImage(views::ImageButton::STATE_NORMAL, 78489a0ec7301a86af8497d24748336db09ca278damikesamuel rb->GetImageNamed(IDR_CLOSE_2).ToImageSkia()); 79489a0ec7301a86af8497d24748336db09ca278damikesamuel delete_button_->SetImage(views::ImageButton::STATE_HOVERED, 80489a0ec7301a86af8497d24748336db09ca278damikesamuel rb->GetImageNamed(IDR_CLOSE_2_H).ToImageSkia()); 81489a0ec7301a86af8497d24748336db09ca278damikesamuel delete_button_->SetImage(views::ImageButton::STATE_PRESSED, 82489a0ec7301a86af8497d24748336db09ca278damikesamuel rb->GetImageNamed(IDR_CLOSE_2_P).ToImageSkia()); 83489a0ec7301a86af8497d24748336db09ca278damikesamuel 84489a0ec7301a86af8497d24748336db09ca278damikesamuel layout->AddView(label_1_, 1, 1, 85489a0ec7301a86af8497d24748336db09ca278damikesamuel views::GridLayout::FILL, views::GridLayout::FILL); 86489a0ec7301a86af8497d24748336db09ca278damikesamuel layout->AddView(label_2_, 1, 1, 87489a0ec7301a86af8497d24748336db09ca278damikesamuel views::GridLayout::FILL, views::GridLayout::FILL); 88489a0ec7301a86af8497d24748336db09ca278damikesamuel 89489a0ec7301a86af8497d24748336db09ca278damikesamuel if (manage_passwords_bubble_model_->manage_passwords_bubble_state() != 90489a0ec7301a86af8497d24748336db09ca278damikesamuel ManagePasswordsBubbleModel::PASSWORD_TO_BE_SAVED) { 91ue="zEE�qIĐ�a M layout->AddView(delete_button_, 1, 1, 92489a0ec7301a86af8497d24748336db09ca278damikesamuel views::GridLayout::FILL, views::GridLayout::FILL); 93Dd�m��-]ϗ���IO����m�~�W�=dt�vl��> C�!?ܝ��e�KI,��hSH�Akq��C����wc�y#��p�� ɩws������y �t%�( } 94489a0ec7301a86af8497d24748336db09ca278damikesamuel layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing); 95489a0ec7301a86af8497d24748336db09ca278damikesamuel} 96489a0ec7301a86af8497d24748336db09ca278damikesamuel 97489a0ec7301a86af8497d24748336db09ca278damikesamuel// static 98Torg/objectweb/asm/tree/VarInsnNode.class���K�Pƿ�tK]j�YmeE�base::string16 ManagePasswordItemView::GetPasswordDisplayString( 99489a0ec7301a86af8497d24748336db09ca278damikesamuel const base::string16& password) { 100org�" org/objectweb/asm/tree/IntInsnNode.classPK x�<�o��� ) const wchar_t kPasswordBullet = 0x2022; 101489a0ec7301a86af8497d24748336db09ca278damikesamuel const size_t kMaxPasswordChar = 22; 102D�H org/objectweb/asm/tree/VarInsnNode.classPK � XJ return base::string16(std::min(password.length(), kMaxPasswordChar), 103 kPasswordBullet); 104} 105 106ManagePasswordItemView::~ManagePasswordItemView() { 107 if (delete_password_) 108 manage_passwords_bubble_model_->DeleteFromBestMatches(password_form_); 109} 110 111void ManagePasswordItemView::Refresh() { 112 if (delete_password_) { 113 label_1_->SetText(l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_DELETED)); 114 label_2_->SetText(l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_UNDO)); 115 label_2_->SetHorizontalAlignment(gfx::ALIGN_RIGHT); 116 label_2_->SetEnabled(true); 117 delete_button_->SetVisible(false); 118 manage_passwords_bubble_model_->OnPasswordAction(password_form_, true); 119 } else { 120 label_1_->SetText(password_form_.username_value); 121 label_2_->SetText(GetPasswordDisplayString(password_form_.password_value)); 122 label_2_->SetHorizontalAlignment(gfx::ALIGN_LEFT); 123 label_2_->SetEnabled(false); 124 delete_button_->SetVisible(true); 125 manage_passwords_bubble_model_->OnPasswordAction(password_form_, false); 126 } 127} 128 129void ManagePasswordItemView::ButtonPressed(views::Button* sender, 130 const ui::Event& event) { 131 DCHECK_EQ(delete_button_, sender); 132 delete_password_ = true; 133 Refresh(); 134} 135 136void ManagePasswordItemView::LinkClicked(views::Link* source, 137 int event_flags) { 138 DCHECK_EQ(source, label_2_); 139 delete_password_ = false; 140 Refresh(); 141} 142