| 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 #import "chrome/browser/autofill/autofill_dialog_controller_mac.h" | 5 #import "chrome/browser/autofill/autofill_dialog_controller_mac.h" |
| 6 #include "app/l10n_util.h" | 6 #include "app/l10n_util.h" |
| 7 #include "app/resource_bundle.h" | 7 #include "app/resource_bundle.h" |
| 8 #include "base/lazy_instance.h" | 8 #include "base/lazy_instance.h" |
| 9 #include "base/mac_util.h" | 9 #include "base/mac_util.h" |
| 10 #include "base/sys_string_conversions.h" | 10 #include "base/sys_string_conversions.h" |
| 11 #import "chrome/browser/autofill/autofill_address_model_mac.h" | 11 #import "chrome/browser/autofill/autofill_address_model_mac.h" |
| 12 #import "chrome/browser/autofill/autofill_address_sheet_controller_mac.h" | 12 #import "chrome/browser/autofill/autofill_address_sheet_controller_mac.h" |
| 13 #import "chrome/browser/autofill/autofill_credit_card_model_mac.h" | 13 #import "chrome/browser/autofill/autofill_credit_card_model_mac.h" |
| 14 #import "chrome/browser/autofill/autofill_credit_card_sheet_controller_mac.h" | 14 #import "chrome/browser/autofill/autofill_credit_card_sheet_controller_mac.h" |
| 15 #import "chrome/browser/autofill/autofill-inl.h" |
| 15 #import "chrome/browser/autofill/personal_data_manager.h" | 16 #import "chrome/browser/autofill/personal_data_manager.h" |
| 16 #include "chrome/browser/browser_process.h" | 17 #include "chrome/browser/browser_process.h" |
| 17 #import "chrome/browser/ui/cocoa/window_size_autosaver.h" | 18 #import "chrome/browser/ui/cocoa/window_size_autosaver.h" |
| 18 #include "chrome/browser/prefs/pref_service.h" | 19 #include "chrome/browser/prefs/pref_service.h" |
| 19 #include "chrome/browser/profiles/profile.h" | 20 #include "chrome/browser/profiles/profile.h" |
| 20 #include "chrome/browser/ui/browser.h" | 21 #include "chrome/browser/ui/browser.h" |
| 21 #include "chrome/browser/ui/browser_list.h" | 22 #include "chrome/browser/ui/browser_list.h" |
| 22 #include "chrome/common/notification_details.h" | 23 #include "chrome/common/notification_details.h" |
| 23 #include "chrome/common/notification_observer.h" | 24 #include "chrome/common/notification_observer.h" |
| 24 #include "chrome/common/pref_names.h" | 25 #include "chrome/common/pref_names.h" |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 87 // Asyncronous handler for when PersonalDataManager data changes. The | 88 // Asyncronous handler for when PersonalDataManager data changes. The |
| 88 // personal data manager notifies the dialog with this method when the | 89 // personal data manager notifies the dialog with this method when the |
| 89 // data has changed. | 90 // data has changed. |
| 90 - (void)onPersonalDataChanged:(const std::vector<AutoFillProfile*>&)profiles | 91 - (void)onPersonalDataChanged:(const std::vector<AutoFillProfile*>&)profiles |
| 91 creditCards:(const std::vector<CreditCard*>&)creditCards; | 92 creditCards:(const std::vector<CreditCard*>&)creditCards; |
| 92 | 93 |
| 93 // Called upon changes to AutoFill preferences that should be reflected in the | 94 // Called upon changes to AutoFill preferences that should be reflected in the |
| 94 // UI. | 95 // UI. |
| 95 - (void)preferenceDidChange:(const std::string&)preferenceName; | 96 - (void)preferenceDidChange:(const std::string&)preferenceName; |
| 96 | 97 |
| 98 // Adjust the selected index when underlying data changes. |
| 99 // Selects the previous row if possible, else current row, else deselect all. |
| 100 - (void) adjustSelectionOnDelete:(NSInteger)selectedRow; |
| 101 |
| 102 // Adjust the selected index when underlying data changes. |
| 103 // Selects the current row if possible, else previous row, else deselect all. |
| 104 - (void) adjustSelectionOnReload:(NSInteger)selectedRow; |
| 105 |
| 97 // Returns true if |row| is an index to a valid profile in |tableView_|, and | 106 // Returns true if |row| is an index to a valid profile in |tableView_|, and |
| 98 // false otherwise. | 107 // false otherwise. |
| 99 - (BOOL)isProfileRow:(NSInteger)row; | 108 - (BOOL)isProfileRow:(NSInteger)row; |
| 100 | 109 |
| 101 // Returns true if |row| is an index to the profile group row in |tableView_|, | 110 // Returns true if |row| is an index to the profile group row in |tableView_|, |
| 102 // and false otherwise. | 111 // and false otherwise. |
| 103 - (BOOL)isProfileGroupRow:(NSInteger)row; | 112 - (BOOL)isProfileGroupRow:(NSInteger)row; |
| 104 | 113 |
| 105 // Returns true if |row| is an index to a valid credit card in |tableView_|, and | 114 // Returns true if |row| is an index to a valid credit card in |tableView_|, and |
| 106 // false otherwise. | 115 // false otherwise. |
| (...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 325 // Add address sheet was dismissed. Non-zero |returnCode| indicates a save. | 334 // Add address sheet was dismissed. Non-zero |returnCode| indicates a save. |
| 326 - (void)addressAddDidEnd:(NSWindow*)sheet | 335 - (void)addressAddDidEnd:(NSWindow*)sheet |
| 327 returnCode:(int)returnCode | 336 returnCode:(int)returnCode |
| 328 contextInfo:(void*)contextInfo { | 337 contextInfo:(void*)contextInfo { |
| 329 DCHECK(contextInfo == NULL); | 338 DCHECK(contextInfo == NULL); |
| 330 | 339 |
| 331 if (returnCode) { | 340 if (returnCode) { |
| 332 // Create a new address and save it to the |profiles_| list. | 341 // Create a new address and save it to the |profiles_| list. |
| 333 AutoFillProfile newAddress; | 342 AutoFillProfile newAddress; |
| 334 [addressSheetController copyModelToProfile:&newAddress]; | 343 [addressSheetController copyModelToProfile:&newAddress]; |
| 335 if (!newAddress.IsEmpty()) { | 344 if (!newAddress.IsEmpty() && !FindByContents(profiles_, newAddress)) { |
| 336 profiles_.push_back(newAddress); | 345 profiles_.push_back(newAddress); |
| 337 | 346 |
| 338 // Saving will save to the PDM and the table will refresh when PDM sends | 347 // Saving will save to the PDM and the table will refresh when PDM sends |
| 339 // notification that the underlying model has changed. | 348 // notification that the underlying model has changed. |
| 340 [self save]; | 349 [self save]; |
| 341 | 350 |
| 342 // Update the selection to the newly added item. | 351 // Update the selection to the newly added item. |
| 343 NSInteger row = [self rowFromProfileIndex:profiles_.size() - 1]; | 352 NSInteger row = [self rowFromProfileIndex:profiles_.size() - 1]; |
| 344 [tableView_ selectRowIndexes:[NSIndexSet indexSetWithIndex:row] | 353 [tableView_ selectRowIndexes:[NSIndexSet indexSetWithIndex:row] |
| 345 byExtendingSelection:NO]; | 354 byExtendingSelection:NO]; |
| 346 } | 355 } |
| 347 } | 356 } |
| 348 [sheet orderOut:self]; | 357 [sheet orderOut:self]; |
| 349 addressSheetController.reset(nil); | 358 addressSheetController.reset(nil); |
| 350 } | 359 } |
| 351 | 360 |
| 352 // Add credit card sheet was dismissed. Non-zero |returnCode| indicates a save. | 361 // Add credit card sheet was dismissed. Non-zero |returnCode| indicates a save. |
| 353 - (void)creditCardAddDidEnd:(NSWindow *)sheet | 362 - (void)creditCardAddDidEnd:(NSWindow *)sheet |
| 354 returnCode:(int)returnCode | 363 returnCode:(int)returnCode |
| 355 contextInfo:(void *)contextInfo { | 364 contextInfo:(void *)contextInfo { |
| 356 DCHECK(contextInfo == NULL); | 365 DCHECK(contextInfo == NULL); |
| 357 | 366 |
| 358 if (returnCode) { | 367 if (returnCode) { |
| 359 // Create a new credit card and save it to the |creditCards_| list. | 368 // Create a new credit card and save it to the |creditCards_| list. |
| 360 CreditCard newCreditCard; | 369 CreditCard newCreditCard; |
| 361 [creditCardSheetController copyModelToCreditCard:&newCreditCard]; | 370 [creditCardSheetController copyModelToCreditCard:&newCreditCard]; |
| 362 if (!newCreditCard.IsEmpty()) { | 371 if (!newCreditCard.IsEmpty() && |
| 372 !FindByContents(creditCards_, newCreditCard)) { |
| 363 creditCards_.push_back(newCreditCard); | 373 creditCards_.push_back(newCreditCard); |
| 364 | 374 |
| 365 // Saving will save to the PDM and the table will refresh when PDM sends | 375 // Saving will save to the PDM and the table will refresh when PDM sends |
| 366 // notification that the underlying model has changed. | 376 // notification that the underlying model has changed. |
| 367 [self save]; | 377 [self save]; |
| 368 | 378 |
| 369 // Update the selection to the newly added item. | 379 // Update the selection to the newly added item. |
| 370 NSInteger row = [self rowFromCreditCardIndex:creditCards_.size() - 1]; | 380 NSInteger row = [self rowFromCreditCardIndex:creditCards_.size() - 1]; |
| 371 [tableView_ selectRowIndexes:[NSIndexSet indexSetWithIndex:row] | 381 [tableView_ selectRowIndexes:[NSIndexSet indexSetWithIndex:row] |
| 372 byExtendingSelection:NO]; | 382 byExtendingSelection:NO]; |
| (...skipping 20 matching lines...) Expand all Loading... |
| 393 if ([self isProfileRow:i]) { | 403 if ([self isProfileRow:i]) { |
| 394 profiles_.erase( | 404 profiles_.erase( |
| 395 profiles_.begin() + [self profileIndexFromRow:i]); | 405 profiles_.begin() + [self profileIndexFromRow:i]); |
| 396 } else if ([self isCreditCardRow:i]) { | 406 } else if ([self isCreditCardRow:i]) { |
| 397 creditCards_.erase( | 407 creditCards_.erase( |
| 398 creditCards_.begin() + [self creditCardIndexFromRow:i]); | 408 creditCards_.begin() + [self creditCardIndexFromRow:i]); |
| 399 } | 409 } |
| 400 } | 410 } |
| 401 | 411 |
| 402 // Select the previous row if possible, else current row, else deselect all. | 412 // Select the previous row if possible, else current row, else deselect all. |
| 403 if ([self tableView:tableView_ shouldSelectRow:selectedRow-1]) { | 413 [self adjustSelectionOnDelete:selectedRow]; |
| 404 [tableView_ selectRowIndexes:[NSIndexSet indexSetWithIndex:selectedRow-1] | |
| 405 byExtendingSelection:NO]; | |
| 406 } else if ([self tableView:tableView_ shouldSelectRow:selectedRow]) { | |
| 407 [tableView_ selectRowIndexes:[NSIndexSet indexSetWithIndex:selectedRow] | |
| 408 byExtendingSelection:NO]; | |
| 409 } else { | |
| 410 [tableView_ deselectAll:self]; | |
| 411 } | |
| 412 | 414 |
| 413 // Saving will save to the PDM and the table will refresh when PDM sends | 415 // Saving will save to the PDM and the table will refresh when PDM sends |
| 414 // notification that the underlying model has changed. | 416 // notification that the underlying model has changed. |
| 415 [self save]; | 417 [self save]; |
| 416 } | 418 } |
| 417 | 419 |
| 418 // Edits the selected item, either address or credit card depending on the item | 420 // Edits the selected item, either address or credit card depending on the item |
| 419 // selected. | 421 // selected. |
| 420 - (IBAction)editSelection:(id)sender { | 422 - (IBAction)editSelection:(id)sender { |
| 421 NSInteger selectedRow = [tableView_ selectedRow]; | 423 NSInteger selectedRow = [tableView_ selectedRow]; |
| (...skipping 370 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 792 for (std::vector<AutoFillProfile*>::const_iterator iter = profiles.begin(); | 794 for (std::vector<AutoFillProfile*>::const_iterator iter = profiles.begin(); |
| 793 iter != profiles.end(); ++iter) | 795 iter != profiles.end(); ++iter) |
| 794 profiles_.push_back(**iter); | 796 profiles_.push_back(**iter); |
| 795 | 797 |
| 796 // Make local copy of |creditCards|. | 798 // Make local copy of |creditCards|. |
| 797 creditCards_.clear(); | 799 creditCards_.clear(); |
| 798 for (std::vector<CreditCard*>::const_iterator iter = creditCards.begin(); | 800 for (std::vector<CreditCard*>::const_iterator iter = creditCards.begin(); |
| 799 iter != creditCards.end(); ++iter) | 801 iter != creditCards.end(); ++iter) |
| 800 creditCards_.push_back(**iter); | 802 creditCards_.push_back(**iter); |
| 801 | 803 |
| 804 [self adjustSelectionOnReload:[tableView_ selectedRow]]; |
| 802 [tableView_ reloadData]; | 805 [tableView_ reloadData]; |
| 803 } | 806 } |
| 804 | 807 |
| 805 - (void)preferenceDidChange:(const std::string&)preferenceName { | 808 - (void)preferenceDidChange:(const std::string&)preferenceName { |
| 806 if (preferenceName == prefs::kAutoFillEnabled) { | 809 if (preferenceName == prefs::kAutoFillEnabled) { |
| 807 [self setAutoFillEnabled:autoFillEnabled_.GetValue()]; | 810 [self setAutoFillEnabled:autoFillEnabled_.GetValue()]; |
| 808 [self setAutoFillManaged:autoFillEnabled_.IsManaged()]; | 811 [self setAutoFillManaged:autoFillEnabled_.IsManaged()]; |
| 809 [self setAutoFillManagedAndDisabled: | 812 [self setAutoFillManagedAndDisabled: |
| 810 autoFillEnabled_.IsManaged() && !autoFillEnabled_.GetValue()]; | 813 autoFillEnabled_.IsManaged() && !autoFillEnabled_.GetValue()]; |
| 811 } else if (preferenceName == prefs::kAutoFillAuxiliaryProfilesEnabled) { | 814 } else if (preferenceName == prefs::kAutoFillAuxiliaryProfilesEnabled) { |
| 812 [self setAuxiliaryEnabled:auxiliaryEnabled_.GetValue()]; | 815 [self setAuxiliaryEnabled:auxiliaryEnabled_.GetValue()]; |
| 813 } else { | 816 } else { |
| 814 NOTREACHED(); | 817 NOTREACHED(); |
| 815 } | 818 } |
| 816 } | 819 } |
| 817 | 820 |
| 821 - (void) adjustSelectionOnDelete:(NSInteger)selectedRow { |
| 822 if ([self tableView:tableView_ shouldSelectRow:selectedRow-1]) { |
| 823 [tableView_ selectRowIndexes:[NSIndexSet indexSetWithIndex:selectedRow-1] |
| 824 byExtendingSelection:NO]; |
| 825 } else if ([self tableView:tableView_ shouldSelectRow:selectedRow]) { |
| 826 [tableView_ selectRowIndexes:[NSIndexSet indexSetWithIndex:selectedRow] |
| 827 byExtendingSelection:NO]; |
| 828 } else { |
| 829 [tableView_ deselectAll:self]; |
| 830 } |
| 831 } |
| 832 |
| 833 - (void) adjustSelectionOnReload:(NSInteger)selectedRow { |
| 834 if ([self tableView:tableView_ shouldSelectRow:selectedRow]) { |
| 835 [tableView_ selectRowIndexes:[NSIndexSet indexSetWithIndex:selectedRow] |
| 836 byExtendingSelection:NO]; |
| 837 } else if ([self tableView:tableView_ shouldSelectRow:selectedRow-1]) { |
| 838 [tableView_ selectRowIndexes:[NSIndexSet indexSetWithIndex:selectedRow-1] |
| 839 byExtendingSelection:NO]; |
| 840 } else { |
| 841 [tableView_ deselectAll:self]; |
| 842 } |
| 843 } |
| 844 |
| 818 - (BOOL)isProfileRow:(NSInteger)row { | 845 - (BOOL)isProfileRow:(NSInteger)row { |
| 819 if (row > 0 && static_cast<size_t>(row) <= profiles_.size()) | 846 if (row > 0 && static_cast<size_t>(row) <= profiles_.size()) |
| 820 return YES; | 847 return YES; |
| 821 return NO; | 848 return NO; |
| 822 } | 849 } |
| 823 | 850 |
| 824 - (BOOL)isProfileGroupRow:(NSInteger)row { | 851 - (BOOL)isProfileGroupRow:(NSInteger)row { |
| 825 if (row == 0) | 852 if (row == 0) |
| 826 return YES; | 853 return YES; |
| 827 return NO; | 854 return NO; |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 905 if (!image) { | 932 if (!image) { |
| 906 image = rb.GetNativeImageNamed(IDR_INPUT_GOOD); | 933 image = rb.GetNativeImageNamed(IDR_INPUT_GOOD); |
| 907 DCHECK(image); | 934 DCHECK(image); |
| 908 return image; | 935 return image; |
| 909 } | 936 } |
| 910 | 937 |
| 911 return nil; | 938 return nil; |
| 912 } | 939 } |
| 913 | 940 |
| 914 @end | 941 @end |
| OLD | NEW |