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.classPKx�<�o���)  const wchar_t kPasswordBullet = 0x2022;
101489a0ec7301a86af8497d24748336db09ca278damikesamuel  const size_t kMaxPasswordChar = 22;
102D�Horg/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