OLD | NEW |
---|---|
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/ui/views/passwords/manage_password_items_view.h" | 5 #include "chrome/browser/ui/views/passwords/manage_password_items_view.h" |
6 | 6 |
7 #include "chrome/browser/ui/passwords/manage_passwords_bubble_model.h" | 7 #include "chrome/browser/ui/passwords/manage_passwords_bubble_model.h" |
8 #include "chrome/browser/ui/views/passwords/manage_passwords_bubble_view.h" | |
vasilii
2015/06/03 18:32:02
Remove.
dvadym
2015/06/19 15:27:29
Done.
| |
8 #include "chrome/grit/generated_resources.h" | 9 #include "chrome/grit/generated_resources.h" |
9 #include "grit/components_strings.h" | 10 #include "grit/components_strings.h" |
10 #include "ui/base/l10n/l10n_util.h" | 11 #include "ui/base/l10n/l10n_util.h" |
11 #include "ui/base/resource/resource_bundle.h" | 12 #include "ui/base/resource/resource_bundle.h" |
12 #include "ui/resources/grit/ui_resources.h" | 13 #include "ui/resources/grit/ui_resources.h" |
13 #include "ui/views/controls/button/button.h" | 14 #include "ui/views/controls/button/button.h" |
14 #include "ui/views/controls/button/image_button.h" | 15 #include "ui/views/controls/button/image_button.h" |
15 #include "ui/views/controls/label.h" | 16 #include "ui/views/controls/label.h" |
16 #include "ui/views/controls/link.h" | 17 #include "ui/views/controls/link.h" |
17 #include "ui/views/controls/link_listener.h" | 18 #include "ui/views/controls/link_listener.h" |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
103 // views::ButtonListener: | 104 // views::ButtonListener: |
104 void ButtonPressed(views::Button* sender, const ui::Event& event) override; | 105 void ButtonPressed(views::Button* sender, const ui::Event& event) override; |
105 // views::LinkListener: | 106 // views::LinkListener: |
106 void LinkClicked(views::Link* source, int event_flags) override; | 107 void LinkClicked(views::Link* source, int event_flags) override; |
107 | 108 |
108 void ResetControls(); | 109 void ResetControls(); |
109 | 110 |
110 ManagePasswordItemsView* host_; | 111 ManagePasswordItemsView* host_; |
111 const autofill::PasswordForm* password_form_; | 112 const autofill::PasswordForm* password_form_; |
112 views::Link* undo_link_; | 113 views::Link* undo_link_; |
114 views::Link* update_link_; | |
113 views::ImageButton* delete_button_; | 115 views::ImageButton* delete_button_; |
114 bool deleted_; | 116 bool deleted_; |
115 }; | 117 }; |
116 | 118 |
117 ManagePasswordItemsView::PasswordFormRow::PasswordFormRow( | 119 ManagePasswordItemsView::PasswordFormRow::PasswordFormRow( |
118 ManagePasswordItemsView* host, const autofill::PasswordForm* password_form) | 120 ManagePasswordItemsView* host, const autofill::PasswordForm* password_form) |
119 : host_(host), | 121 : host_(host), |
120 password_form_(password_form), | 122 password_form_(password_form), |
121 undo_link_(nullptr), | 123 undo_link_(nullptr), |
122 delete_button_(nullptr), | 124 delete_button_(nullptr), |
123 deleted_(false) {} | 125 deleted_(false) {} |
124 | 126 |
125 void ManagePasswordItemsView::PasswordFormRow::AddRow( | 127 void ManagePasswordItemsView::PasswordFormRow::AddRow( |
126 views::GridLayout* layout) { | 128 views::GridLayout* layout) { |
127 if (deleted_) { | 129 if (deleted_) { |
128 AddUndoRow(layout); | 130 AddUndoRow(layout); |
129 } else { | 131 } else { |
130 AddCredentialsRow(layout); | 132 AddCredentialsRow(layout); |
131 } | 133 } |
132 } | 134 } |
133 | 135 |
134 void ManagePasswordItemsView::PasswordFormRow::AddCredentialsRow( | 136 void ManagePasswordItemsView::PasswordFormRow::AddCredentialsRow( |
135 views::GridLayout* layout) { | 137 views::GridLayout* layout) { |
136 ResetControls(); | 138 ResetControls(); |
137 int column_set_id = | 139 int column_set_id = |
138 host_->model_->state() == password_manager::ui::PENDING_PASSWORD_STATE | 140 host_->model_->state() == password_manager::ui::PENDING_PASSWORD_STATE && |
141 !host_->model_->account_for_update_selection() | |
139 ? TWO_COLUMN_SET | 142 ? TWO_COLUMN_SET |
140 : THREE_COLUMN_SET; | 143 : THREE_COLUMN_SET; |
141 BuildColumnSetIfNeeded(layout, column_set_id); | 144 BuildColumnSetIfNeeded(layout, column_set_id); |
142 layout->StartRowWithPadding(0, column_set_id, 0, | 145 layout->StartRowWithPadding(0, column_set_id, 0, |
143 views::kRelatedControlVerticalSpacing); | 146 views::kRelatedControlVerticalSpacing); |
144 layout->AddView(GenerateUsernameLabel(*password_form_)); | 147 layout->AddView(GenerateUsernameLabel(*password_form_)); |
145 layout->AddView(GeneratePasswordLabel(*password_form_)); | 148 layout->AddView(GeneratePasswordLabel(*password_form_)); |
146 if (column_set_id == THREE_COLUMN_SET) { | 149 if (column_set_id == THREE_COLUMN_SET) { |
147 ui::ResourceBundle* rb = &ui::ResourceBundle::GetSharedInstance(); | 150 if (host_->model_->account_for_update_selection()) { |
148 delete_button_ = new views::ImageButton(this); | 151 update_link_ = new views::Link( |
149 delete_button_->SetImage(views::ImageButton::STATE_NORMAL, | 152 l10n_util::GetStringUTF16(IDS_PASSWORD_MANAGER_UPDATE_LINK)); |
150 rb->GetImageNamed(IDR_CLOSE_2).ToImageSkia()); | 153 update_link_->SetHorizontalAlignment(gfx::ALIGN_RIGHT); |
151 delete_button_->SetImage(views::ImageButton::STATE_HOVERED, | 154 update_link_->set_listener(this); |
152 rb->GetImageNamed(IDR_CLOSE_2_H).ToImageSkia()); | 155 update_link_->SetUnderline(false); |
153 delete_button_->SetImage(views::ImageButton::STATE_PRESSED, | 156 update_link_->SetFontList( |
154 rb->GetImageNamed(IDR_CLOSE_2_P).ToImageSkia()); | 157 ui::ResourceBundle::GetSharedInstance().GetFontList( |
155 layout->AddView(delete_button_); | 158 ui::ResourceBundle::SmallFont)); |
159 layout->AddView(update_link_); | |
160 } else { | |
161 ui::ResourceBundle* rb = &ui::ResourceBundle::GetSharedInstance(); | |
162 delete_button_ = new views::ImageButton(this); | |
163 delete_button_->SetImage(views::ImageButton::STATE_NORMAL, | |
164 rb->GetImageNamed(IDR_CLOSE_2).ToImageSkia()); | |
165 delete_button_->SetImage(views::ImageButton::STATE_HOVERED, | |
166 rb->GetImageNamed(IDR_CLOSE_2_H).ToImageSkia()); | |
167 delete_button_->SetImage(views::ImageButton::STATE_PRESSED, | |
168 rb->GetImageNamed(IDR_CLOSE_2_P).ToImageSkia()); | |
169 layout->AddView(delete_button_); | |
170 } | |
156 } | 171 } |
157 } | 172 } |
158 | 173 |
159 void ManagePasswordItemsView::PasswordFormRow::AddUndoRow( | 174 void ManagePasswordItemsView::PasswordFormRow::AddUndoRow( |
160 views::GridLayout* layout) { | 175 views::GridLayout* layout) { |
161 ResetControls(); | 176 ResetControls(); |
162 views::Label* text = | 177 views::Label* text = |
163 new views::Label(l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_DELETED)); | 178 new views::Label(l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_DELETED)); |
164 text->SetHorizontalAlignment(gfx::ALIGN_LEFT); | 179 text->SetHorizontalAlignment(gfx::ALIGN_LEFT); |
165 text->SetFontList(ui::ResourceBundle::GetSharedInstance().GetFontList( | 180 text->SetFontList(ui::ResourceBundle::GetSharedInstance().GetFontList( |
(...skipping 14 matching lines...) Expand all Loading... | |
180 | 195 |
181 void ManagePasswordItemsView::PasswordFormRow::ButtonPressed( | 196 void ManagePasswordItemsView::PasswordFormRow::ButtonPressed( |
182 views::Button* sender, const ui::Event& event) { | 197 views::Button* sender, const ui::Event& event) { |
183 DCHECK_EQ(delete_button_, sender); | 198 DCHECK_EQ(delete_button_, sender); |
184 deleted_ = true; | 199 deleted_ = true; |
185 host_->NotifyPasswordFormStatusChanged(*password_form_, deleted_); | 200 host_->NotifyPasswordFormStatusChanged(*password_form_, deleted_); |
186 } | 201 } |
187 | 202 |
188 void ManagePasswordItemsView::PasswordFormRow::LinkClicked(views::Link* sender, | 203 void ManagePasswordItemsView::PasswordFormRow::LinkClicked(views::Link* sender, |
189 int event_flags) { | 204 int event_flags) { |
190 DCHECK_EQ(undo_link_, sender); | 205 DCHECK(sender == undo_link_ || sender == update_link_); |
191 deleted_ = false; | 206 if (sender == undo_link_) { |
192 host_->NotifyPasswordFormStatusChanged(*password_form_, deleted_); | 207 deleted_ = false; |
208 host_->NotifyPasswordFormStatusChanged(*password_form_, deleted_); | |
209 } else { | |
210 host_->NotifyAccountForUpdateWasSelected(*password_form_); | |
211 } | |
193 } | 212 } |
194 | 213 |
195 void ManagePasswordItemsView::PasswordFormRow::ResetControls() { | 214 void ManagePasswordItemsView::PasswordFormRow::ResetControls() { |
196 delete_button_ = nullptr; | 215 delete_button_ = nullptr; |
197 undo_link_ = nullptr; | 216 undo_link_ = nullptr; |
198 } | 217 } |
199 | 218 |
200 // ManagePasswordItemsView | 219 // ManagePasswordItemsView |
201 ManagePasswordItemsView::ManagePasswordItemsView( | 220 ManagePasswordItemsView::ManagePasswordItemsView( |
202 ManagePasswordsBubbleModel* manage_passwords_bubble_model, | 221 ManagePasswordsBubbleModel* manage_passwords_bubble_model, |
(...skipping 21 matching lines...) Expand all Loading... | |
224 const autofill::PasswordForm& password_form, bool deleted) { | 243 const autofill::PasswordForm& password_form, bool deleted) { |
225 Refresh(); | 244 Refresh(); |
226 // After the view is consistent, notify the model that the password needs to | 245 // After the view is consistent, notify the model that the password needs to |
227 // be updated (either removed or put back into the store, as appropriate. | 246 // be updated (either removed or put back into the store, as appropriate. |
228 model_->OnPasswordAction(password_form, | 247 model_->OnPasswordAction(password_form, |
229 deleted | 248 deleted |
230 ? ManagePasswordsBubbleModel::REMOVE_PASSWORD | 249 ? ManagePasswordsBubbleModel::REMOVE_PASSWORD |
231 : ManagePasswordsBubbleModel::ADD_PASSWORD); | 250 : ManagePasswordsBubbleModel::ADD_PASSWORD); |
232 } | 251 } |
233 | 252 |
253 void ManagePasswordItemsView::NotifyAccountForUpdateWasSelected( | |
254 const autofill::PasswordForm& password_form) { | |
255 model_->OnUpdateClicked(password_form); | |
256 // ManagePasswordsBubbleView::CloseBubble(); // todo do we need this? | |
vabr (Chromium)
2015/06/03 16:33:26
Shouldn't this go through the controller?
Also, if
vasilii
2015/06/03 18:32:02
ManagePasswordItemsView definitely shouldn't think
dvadym
2015/06/19 15:27:29
Thanks, I forgot to remove it. Done
| |
257 } | |
258 | |
234 void ManagePasswordItemsView::Refresh() { | 259 void ManagePasswordItemsView::Refresh() { |
235 DCHECK_NE(password_manager::ui::PENDING_PASSWORD_STATE, model_->state()); | 260 DCHECK_NE(password_manager::ui::PENDING_PASSWORD_STATE, model_->state()); |
236 RemoveAllChildViews(true); | 261 RemoveAllChildViews(true); |
237 AddRows(); | 262 AddRows(); |
238 } | 263 } |
OLD | NEW |