Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(11)

Side by Side Diff: chrome/browser/autofill/autofill_dialog_controller_mac.mm

Issue 3056005: AutoFill Profiles dialog handles multi-select and delete on Mac (Follow up) (Closed)
Patch Set: Addressing nits. Created 10 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/mac_util.h" 8 #include "base/mac_util.h"
9 #include "base/sys_string_conversions.h" 9 #include "base/sys_string_conversions.h"
10 #include "chrome/browser/browser.h" 10 #include "chrome/browser/browser.h"
(...skipping 342 matching lines...) Expand 10 before | Expand all | Expand 10 after
353 [tableView_ selectRowIndexes:[NSIndexSet indexSetWithIndex:row] 353 [tableView_ selectRowIndexes:[NSIndexSet indexSetWithIndex:row]
354 byExtendingSelection:NO]; 354 byExtendingSelection:NO];
355 } 355 }
356 [sheet orderOut:self]; 356 [sheet orderOut:self];
357 creditCardSheetController.reset(nil); 357 creditCardSheetController.reset(nil);
358 } 358 }
359 359
360 // Deletes selected items; either addresses, credit cards, or a mixture of the 360 // Deletes selected items; either addresses, credit cards, or a mixture of the
361 // two depending on the items selected. 361 // two depending on the items selected.
362 - (IBAction)deleteSelection:(id)sender { 362 - (IBAction)deleteSelection:(id)sender {
363 NSIndexSet* selectedRows = [tableView_ selectedRowIndexes]; 363 NSIndexSet* selection = [tableView_ selectedRowIndexes];
364 NSInteger selectedRow = [tableView_ selectedRow]; 364 NSInteger selectedRow = [tableView_ selectedRow];
365 NSInteger rowCount = [tableView_ numberOfRows];
366 365
367 // Loop through from last to first deleting selected items as we go. 366 // Loop through from last to first deleting selected items as we go.
368 for (NSInteger i = rowCount-1; i>=0; --i) { 367 for (NSUInteger i = [selection lastIndex];
369 if (![selectedRows containsIndex:i]) 368 i != NSNotFound;
370 continue; 369 i = [selection indexLessThanIndex:i]) {
371
372 // We keep track of the "top most" selection in the list so we know where 370 // We keep track of the "top most" selection in the list so we know where
373 // to to set new selection below. 371 // to set new selection below.
374 if (i < selectedRow) 372 selectedRow = i;
375 selectedRow = i;
376 373
377 if ([self isProfileRow:i]) { 374 if ([self isProfileRow:i]) {
378 profiles_.erase( 375 profiles_.erase(
379 profiles_.begin() + [self profileIndexFromRow:i]); 376 profiles_.begin() + [self profileIndexFromRow:i]);
380 } else if ([self isCreditCardRow:i]) { 377 } else if ([self isCreditCardRow:i]) {
381 creditCards_.erase( 378 creditCards_.erase(
382 creditCards_.begin() + [self creditCardIndexFromRow:i]); 379 creditCards_.begin() + [self creditCardIndexFromRow:i]);
383 } 380 }
384 } 381 }
385 382
386 // Select the previous row if possible, else current row, else deselect all. 383 // Select the previous row if possible, else current row, else deselect all.
387 if ([self tableView:tableView_ shouldSelectRow:selectedRow-1]) { 384 if ([self tableView:tableView_ shouldSelectRow:selectedRow-1]) {
388 [tableView_ selectRowIndexes:[NSIndexSet indexSetWithIndex:selectedRow-1] 385 [tableView_ selectRowIndexes:[NSIndexSet indexSetWithIndex:selectedRow-1]
389 byExtendingSelection:NO]; 386 byExtendingSelection:NO];
390 } else if ([self tableView:tableView_ shouldSelectRow:selectedRow]) { 387 } else if ([self tableView:tableView_ shouldSelectRow:selectedRow]) {
391 [tableView_ selectRowIndexes:[NSIndexSet indexSetWithIndex:selectedRow] 388 [tableView_ selectRowIndexes:[NSIndexSet indexSetWithIndex:selectedRow]
392 byExtendingSelection:NO]; 389 byExtendingSelection:NO];
393 } else { 390 } else {
394 [tableView_ selectRowIndexes:[NSIndexSet indexSet] byExtendingSelection:NO]; 391 [tableView_ deselectAll:self];
395 } 392 }
396 393
397 UpdateProfileLabels(&profiles_); 394 UpdateProfileLabels(&profiles_);
398 [tableView_ reloadData]; 395 [tableView_ reloadData];
399 } 396 }
400 397
401 // Edits the selected item, either address or credit card depending on the item 398 // Edits the selected item, either address or credit card depending on the item
402 // selected. 399 // selected.
403 - (IBAction)editSelection:(id)sender { 400 - (IBAction)editSelection:(id)sender {
404 NSInteger selectedRow = [tableView_ selectedRow]; 401 NSInteger selectedRow = [tableView_ selectedRow];
(...skipping 406 matching lines...) Expand 10 before | Expand all | Expand 10 after
811 if (!image) { 808 if (!image) {
812 image = rb.GetNSImageNamed(IDR_INPUT_GOOD); 809 image = rb.GetNSImageNamed(IDR_INPUT_GOOD);
813 DCHECK(image); 810 DCHECK(image);
814 return image; 811 return image;
815 } 812 }
816 813
817 return nil; 814 return nil;
818 } 815 }
819 816
820 @end 817 @end
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698