OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 #ifndef CHROME_BROWSER_VIEWS_AUTOFILL_PROFILES_VIEW_WIN_H_ | 5 #ifndef CHROME_BROWSER_VIEWS_AUTOFILL_PROFILES_VIEW_WIN_H_ |
6 #define CHROME_BROWSER_VIEWS_AUTOFILL_PROFILES_VIEW_WIN_H_ | 6 #define CHROME_BROWSER_VIEWS_AUTOFILL_PROFILES_VIEW_WIN_H_ |
7 | 7 |
8 #include <list> | 8 #include <list> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
11 #include "app/combobox_model.h" | 11 #include "app/combobox_model.h" |
12 #include "app/table_model.h" | 12 #include "app/table_model.h" |
13 #include "chrome/browser/autofill/autofill_dialog.h" | 13 #include "chrome/browser/autofill/autofill_dialog.h" |
14 #include "chrome/browser/autofill/autofill_profile.h" | 14 #include "chrome/browser/autofill/autofill_profile.h" |
15 #include "chrome/browser/autofill/personal_data_manager.h" | 15 #include "chrome/browser/autofill/personal_data_manager.h" |
16 #include "views/controls/combobox/combobox.h" | 16 #include "views/controls/combobox/combobox.h" |
17 #include "views/controls/link.h" | 17 #include "views/controls/link.h" |
18 #include "views/controls/table/table_view_observer.h" | 18 #include "views/controls/table/table_view_observer.h" |
19 #include "views/controls/textfield/textfield.h" | 19 #include "views/controls/textfield/textfield.h" |
20 #include "views/focus/focus_manager.h" | 20 #include "views/focus/focus_manager.h" |
21 #include "views/view.h" | 21 #include "views/view.h" |
22 #include "views/window/dialog_delegate.h" | 22 #include "views/window/dialog_delegate.h" |
23 | 23 |
24 namespace views { | 24 namespace views { |
| 25 class Checkbox; |
25 class GridLayout; | 26 class GridLayout; |
26 class ImageButton; | 27 class ImageButton; |
27 class Label; | 28 class Label; |
28 class RadioButton; | 29 class RadioButton; |
29 class TableView; | 30 class TableView; |
30 class TextButton; | 31 class TextButton; |
31 } | 32 } |
32 | 33 |
33 class PrefService; | 34 class PrefService; |
34 class SkBitmap; | 35 class SkBitmap; |
(...skipping 18 matching lines...) Expand all Loading... |
53 public views::LinkController, | 54 public views::LinkController, |
54 public views::FocusChangeListener, | 55 public views::FocusChangeListener, |
55 public views::TableViewObserver, | 56 public views::TableViewObserver, |
56 public PersonalDataManager::Observer { | 57 public PersonalDataManager::Observer { |
57 public: | 58 public: |
58 virtual ~AutoFillProfilesView(); | 59 virtual ~AutoFillProfilesView(); |
59 | 60 |
60 static int Show(gfx::NativeWindow parent, | 61 static int Show(gfx::NativeWindow parent, |
61 AutoFillDialogObserver* observer, | 62 AutoFillDialogObserver* observer, |
62 PersonalDataManager* personal_data_manager, | 63 PersonalDataManager* personal_data_manager, |
| 64 Profile* profile, |
63 PrefService* preferences, | 65 PrefService* preferences, |
64 AutoFillProfile* imported_profile, | 66 AutoFillProfile* imported_profile, |
65 CreditCard* imported_credit_card); | 67 CreditCard* imported_credit_card); |
66 | 68 |
67 protected: | 69 protected: |
68 // forward declaration. This struct defined further down. | 70 // forward declaration. This struct defined further down. |
69 struct EditableSetInfo; | 71 struct EditableSetInfo; |
70 // Called when 'Add Address' (|group_type| is | 72 // Called when 'Add Address' (|group_type| is |
71 // ContentListTableModel::kAddressGroup) or 'Add Credit Card' (|group_type| is | 73 // ContentListTableModel::kAddressGroup) or 'Add Credit Card' (|group_type| is |
72 // ContentListTableModel::kCreditCardGroup) is clicked. | 74 // ContentListTableModel::kCreditCardGroup) is clicked. |
73 void AddClicked(int group_type); | 75 void AddClicked(int group_type); |
74 // Called when 'Edit...' is clicked. | 76 // Called when 'Edit...' is clicked. |
75 void EditClicked(); | 77 void EditClicked(); |
76 // Called when 'Remove' is clicked. | 78 // Called when 'Remove' is clicked. |
77 void DeleteClicked(); | 79 void DeleteClicked(); |
78 | 80 |
79 // Updates state of the buttons. | 81 // Updates state of the buttons. |
80 void UpdateButtonState(); | 82 void UpdateButtonState(); |
81 | 83 |
| 84 // Updates inferred labels. |
| 85 void UpdateProfileLabels(); |
| 86 |
82 // Following two functions are called from opened child dialog to | 87 // Following two functions are called from opened child dialog to |
83 // disable/enable buttons. | 88 // disable/enable buttons. |
84 void ChildWindowOpened(); | 89 void ChildWindowOpened(); |
85 void ChildWindowClosed(); | 90 void ChildWindowClosed(); |
86 | 91 |
87 // Returns warning bitmap to set on warning indicator. If |good| is true it | 92 // Returns warning bitmap to set on warning indicator. If |good| is true it |
88 // returns the bitmap idicating validity, if false - indicating error. | 93 // returns the bitmap idicating validity, if false - indicating error. |
89 // Caller owns the bitmap after the call. | 94 // Caller owns the bitmap after the call. |
90 SkBitmap* GetWarningBimap(bool good); | 95 SkBitmap* GetWarningBimap(bool good); |
91 | 96 |
(...skipping 29 matching lines...) Expand all Loading... |
121 | 126 |
122 // views::FocusChangeListener methods: | 127 // views::FocusChangeListener methods: |
123 virtual void FocusWillChange(views::View* focused_before, | 128 virtual void FocusWillChange(views::View* focused_before, |
124 views::View* focused_now); | 129 views::View* focused_now); |
125 | 130 |
126 // views::TableViewObserver methods: | 131 // views::TableViewObserver methods: |
127 virtual void OnSelectionChanged(); | 132 virtual void OnSelectionChanged(); |
128 virtual void OnDoubleClick(); | 133 virtual void OnDoubleClick(); |
129 | 134 |
130 // PersonalDataManager::Observer methods: | 135 // PersonalDataManager::Observer methods: |
131 void OnPersonalDataLoaded(); | 136 virtual void OnPersonalDataLoaded(); |
132 | 137 |
133 // Helper structure to keep info on one address or credit card. | 138 // Helper structure to keep info on one address or credit card. |
134 // Keeps info on one item in EditableSetViewContents. | 139 // Keeps info on one item in EditableSetViewContents. |
135 // Also keeps info on opened status. Allows to quickly add and delete items, | 140 // Also keeps info on opened status. Allows to quickly add and delete items, |
136 // and then rebuild EditableSetViewContents. | 141 // and then rebuild EditableSetViewContents. |
137 struct EditableSetInfo { | 142 struct EditableSetInfo { |
138 bool is_address; | 143 bool is_address; |
139 bool has_credit_card_number_been_edited; | 144 bool has_credit_card_number_been_edited; |
140 // If |is_address| is true |address| has some data and |credit_card| | 145 // If |is_address| is true |address| has some data and |credit_card| |
141 // is empty, and vice versa | 146 // is empty, and vice versa |
(...skipping 19 matching lines...) Expand all Loading... |
161 | 166 |
162 struct FocusedItem { | 167 struct FocusedItem { |
163 int group; | 168 int group; |
164 int item; | 169 int item; |
165 FocusedItem() : group(kNoItemFocused), item(kNoItemFocused) {} | 170 FocusedItem() : group(kNoItemFocused), item(kNoItemFocused) {} |
166 FocusedItem(int g, int i) : group(g), item(i) {} | 171 FocusedItem(int g, int i) : group(g), item(i) {} |
167 }; | 172 }; |
168 | 173 |
169 AutoFillProfilesView(AutoFillDialogObserver* observer, | 174 AutoFillProfilesView(AutoFillDialogObserver* observer, |
170 PersonalDataManager* personal_data_manager, | 175 PersonalDataManager* personal_data_manager, |
| 176 Profile* profile, |
171 PrefService* preferences, | 177 PrefService* preferences, |
172 AutoFillProfile* imported_profile, | 178 AutoFillProfile* imported_profile, |
173 CreditCard* imported_credit_card); | 179 CreditCard* imported_credit_card); |
174 void Init(); | 180 void Init(); |
175 | 181 |
176 void GetData(); | 182 void GetData(); |
177 bool IsDataReady() const; | 183 bool IsDataReady() const; |
178 | 184 |
179 // Rebuilds the view by deleting and re-creating sub-views | 185 // Rebuilds the view by deleting and re-creating sub-views |
180 void RebuildView(const FocusedItem& new_focus_index); | 186 void RebuildView(const FocusedItem& new_focus_index); |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
266 const string16& new_contents); | 272 const string16& new_contents); |
267 virtual bool HandleKeystroke(views::Textfield* sender, | 273 virtual bool HandleKeystroke(views::Textfield* sender, |
268 const views::Textfield::Keystroke& keystroke); | 274 const views::Textfield::Keystroke& keystroke); |
269 | 275 |
270 // views::Combobox::Listener methods: | 276 // views::Combobox::Listener methods: |
271 virtual void ItemChanged(views::Combobox* combo_box, | 277 virtual void ItemChanged(views::Combobox* combo_box, |
272 int prev_index, | 278 int prev_index, |
273 int new_index); | 279 int new_index); |
274 private: | 280 private: |
275 enum TextFields { | 281 enum TextFields { |
276 TEXT_LABEL, | |
277 TEXT_FULL_NAME, | 282 TEXT_FULL_NAME, |
278 TEXT_COMPANY, | 283 TEXT_COMPANY, |
279 TEXT_EMAIL, | 284 TEXT_EMAIL, |
280 TEXT_ADDRESS_LINE_1, | 285 TEXT_ADDRESS_LINE_1, |
281 TEXT_ADDRESS_LINE_2, | 286 TEXT_ADDRESS_LINE_2, |
282 TEXT_ADDRESS_CITY, | 287 TEXT_ADDRESS_CITY, |
283 TEXT_ADDRESS_STATE, | 288 TEXT_ADDRESS_STATE, |
284 TEXT_ADDRESS_ZIP, | 289 TEXT_ADDRESS_ZIP, |
285 TEXT_ADDRESS_COUNTRY, | 290 TEXT_ADDRESS_COUNTRY, |
286 TEXT_PHONE_PHONE, | 291 TEXT_PHONE_PHONE, |
287 TEXT_FAX_PHONE, | 292 TEXT_FAX_PHONE, |
288 TEXT_CC_NAME, | 293 TEXT_CC_NAME, |
289 TEXT_CC_NUMBER, | 294 TEXT_CC_NUMBER, |
290 // must be last | 295 // must be last |
291 MAX_TEXT_FIELD | 296 MAX_TEXT_FIELD |
292 }; | 297 }; |
293 | 298 |
294 void InitTitle(views::GridLayout* layout); | |
295 void InitAddressFields(views::GridLayout* layout); | 299 void InitAddressFields(views::GridLayout* layout); |
296 void InitCreditCardFields(views::GridLayout* layout); | 300 void InitCreditCardFields(views::GridLayout* layout); |
297 void InitLayoutGrid(views::GridLayout* layout); | 301 void InitLayoutGrid(views::GridLayout* layout); |
298 views::Label* CreateLeftAlignedLabel(int label_id); | 302 views::Label* CreateLeftAlignedLabel(int label_id); |
299 | 303 |
300 bool LabelValid() const; | |
301 void UpdateButtons(); | 304 void UpdateButtons(); |
302 | 305 |
303 void UpdateContentsPhoneViews(TextFields field, | 306 void UpdateContentsPhoneViews(TextFields field, |
304 views::Textfield* sender, | 307 views::Textfield* sender, |
305 const string16& new_contents); | 308 const string16& new_contents); |
306 | 309 |
307 views::Textfield* text_fields_[MAX_TEXT_FIELD]; | 310 views::Textfield* text_fields_[MAX_TEXT_FIELD]; |
308 std::vector<EditableSetInfo>::iterator editable_fields_set_; | 311 std::vector<EditableSetInfo>::iterator editable_fields_set_; |
309 EditableSetInfo temporary_info_; | 312 EditableSetInfo temporary_info_; |
310 views::ImageButton* label_warning_button_; | |
311 AutoFillProfilesView* observer_; | 313 AutoFillProfilesView* observer_; |
312 AddressComboBoxModel* billing_model_; | 314 AddressComboBoxModel* billing_model_; |
313 views::Combobox* combo_box_billing_; | 315 views::Combobox* combo_box_billing_; |
314 scoped_ptr<StringVectorComboboxModel> combo_box_model_month_; | 316 scoped_ptr<StringVectorComboboxModel> combo_box_model_month_; |
315 views::Combobox* combo_box_month_; | 317 views::Combobox* combo_box_month_; |
316 scoped_ptr<StringVectorComboboxModel> combo_box_model_year_; | 318 scoped_ptr<StringVectorComboboxModel> combo_box_model_year_; |
317 views::Combobox* combo_box_year_; | 319 views::Combobox* combo_box_year_; |
318 bool new_item_; | 320 bool new_item_; |
319 std::vector<PhoneSubView*> phone_sub_views_; | 321 std::vector<PhoneSubView*> phone_sub_views_; |
320 | 322 |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
354 // times if several combo boxes relying on the model. | 356 // times if several combo boxes relying on the model. |
355 // Model does not own |combo_box|. | 357 // Model does not own |combo_box|. |
356 void UsedWithComboBox(views::Combobox *combo_box); | 358 void UsedWithComboBox(views::Combobox *combo_box); |
357 | 359 |
358 // Need to be called when comboboxes are destroyed. | 360 // Need to be called when comboboxes are destroyed. |
359 void ClearComboBoxes() { combo_boxes_.clear(); } | 361 void ClearComboBoxes() { combo_boxes_.clear(); } |
360 | 362 |
361 // Call this function if one of the labels has changed | 363 // Call this function if one of the labels has changed |
362 void LabelChanged(); | 364 void LabelChanged(); |
363 | 365 |
364 // Gets index of the string in the model or -1 if not found. | 366 // Gets index of the item in the model or -1 if not found. |
365 int GetIndex(const string16 &s); | 367 int GetIndex(int unique_id); |
366 | 368 |
367 // ComboboxModel methods, public as they used from EditableSetViewContents | 369 // ComboboxModel methods, public as they used from EditableSetViewContents |
368 virtual int GetItemCount(); | 370 virtual int GetItemCount(); |
369 virtual std::wstring GetItemAt(int index); | 371 virtual std::wstring GetItemAt(int index); |
370 | 372 |
371 private: | 373 private: |
372 std::list<views::Combobox *> combo_boxes_; | 374 std::list<views::Combobox *> combo_boxes_; |
373 const std::vector<EditableSetInfo>* address_labels_; | 375 const std::vector<EditableSetInfo>* address_labels_; |
374 bool is_billing_; | 376 bool is_billing_; |
375 | 377 |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
430 private: | 432 private: |
431 std::vector<EditableSetInfo>* profiles_; | 433 std::vector<EditableSetInfo>* profiles_; |
432 std::vector<EditableSetInfo>* credit_cards_; | 434 std::vector<EditableSetInfo>* credit_cards_; |
433 TableModelObserver* observer_; | 435 TableModelObserver* observer_; |
434 | 436 |
435 DISALLOW_COPY_AND_ASSIGN(ContentListTableModel); | 437 DISALLOW_COPY_AND_ASSIGN(ContentListTableModel); |
436 }; | 438 }; |
437 | 439 |
438 AutoFillDialogObserver* observer_; | 440 AutoFillDialogObserver* observer_; |
439 PersonalDataManager* personal_data_manager_; | 441 PersonalDataManager* personal_data_manager_; |
| 442 Profile* profile_; |
440 PrefService* preferences_; | 443 PrefService* preferences_; |
441 std::vector<EditableSetInfo> profiles_set_; | 444 std::vector<EditableSetInfo> profiles_set_; |
442 std::vector<EditableSetInfo> credit_card_set_; | 445 std::vector<EditableSetInfo> credit_card_set_; |
443 | 446 |
444 AddressComboBoxModel billing_model_; | 447 AddressComboBoxModel billing_model_; |
445 | 448 |
| 449 views::Checkbox* enable_auto_fill_button_; |
446 views::Button* add_address_button_; | 450 views::Button* add_address_button_; |
447 views::Button* add_credit_card_button_; | 451 views::Button* add_credit_card_button_; |
448 views::Button* edit_button_; | 452 views::Button* edit_button_; |
449 views::Button* remove_button_; | 453 views::Button* remove_button_; |
450 views::TableView* scroll_view_; | 454 views::TableView* scroll_view_; |
451 scoped_ptr<ContentListTableModel> table_model_; | 455 scoped_ptr<ContentListTableModel> table_model_; |
452 views::FocusManager* focus_manager_; | 456 views::FocusManager* focus_manager_; |
453 bool child_dialog_opened_; | 457 bool child_dialog_opened_; |
454 | 458 |
455 static AutoFillProfilesView* instance_; | 459 static AutoFillProfilesView* instance_; |
456 | 460 |
457 DISALLOW_COPY_AND_ASSIGN(AutoFillProfilesView); | 461 DISALLOW_COPY_AND_ASSIGN(AutoFillProfilesView); |
458 }; | 462 }; |
459 | 463 |
460 #endif // CHROME_BROWSER_VIEWS_AUTOFILL_PROFILES_VIEW_WIN_H_ | 464 #endif // CHROME_BROWSER_VIEWS_AUTOFILL_PROFILES_VIEW_WIN_H_ |
461 | 465 |
OLD | NEW |