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

Unified Diff: ios/clean/chrome/browser/ui/tab_collection/tab_collection_view_controller.mm

Issue 2885983003: [ios] TabCollectionItem (Closed)
Patch Set: Address comments Created 3 years, 7 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 side-by-side diff with in-line comments
Download patch
Index: ios/clean/chrome/browser/ui/tab_collection/tab_collection_view_controller.mm
diff --git a/ios/clean/chrome/browser/ui/tab_collection/tab_collection_view_controller.mm b/ios/clean/chrome/browser/ui/tab_collection/tab_collection_view_controller.mm
index 45df7475a8e1ff1052812a111bf90d6ea5bc1857..5f64f9d9b6d245fb73e3ca8ef41d491c70632b49 100644
--- a/ios/clean/chrome/browser/ui/tab_collection/tab_collection_view_controller.mm
+++ b/ios/clean/chrome/browser/ui/tab_collection/tab_collection_view_controller.mm
@@ -7,7 +7,7 @@
#include "base/logging.h"
#include "base/mac/foundation_util.h"
#include "base/strings/sys_string_conversions.h"
-#import "ios/clean/chrome/browser/ui/tab_collection/tab_collection_data_source.h"
+#import "ios/clean/chrome/browser/ui/tab_collection/tab_collection_item.h"
#import "ios/clean/chrome/browser/ui/tab_collection/tab_collection_tab_cell.h"
#if !defined(__has_feature) || !__has_feature(objc_arc)
@@ -17,11 +17,14 @@
@interface TabCollectionViewController ()<UICollectionViewDelegate,
SessionCellDelegate>
@property(nonatomic, readwrite) UICollectionView* tabs;
+@property(nonatomic, readwrite) NSMutableArray<TabCollectionItem*>* items;
+@property(nonatomic, assign) int selectedIndex;
@end
@implementation TabCollectionViewController
@synthesize tabs = _tabs;
-@synthesize dataSource = _dataSource;
+@synthesize items = _items;
+@synthesize selectedIndex = _selectedIndex;
#pragma mark - UIViewController
@@ -46,6 +49,8 @@
[self.tabs.leadingAnchor constraintEqualToAnchor:self.view.leadingAnchor],
[self.tabs.trailingAnchor constraintEqualToAnchor:self.view.trailingAnchor],
]];
+
+ [self selectItemAtIndex:self.selectedIndex];
}
- (UIStatusBarStyle)preferredStatusBarStyle {
@@ -82,7 +87,7 @@
- (NSInteger)collectionView:(UICollectionView*)collectionView
numberOfItemsInSection:(NSInteger)section {
- return [self.dataSource numberOfTabs];
+ return static_cast<NSInteger>(self.items.count);
}
- (UICollectionViewCell*)collectionView:(UICollectionView*)collectionView
@@ -95,11 +100,10 @@
cell.delegate = self;
[cell setSessionType:TabSwitcherSessionType::REGULAR_SESSION];
DCHECK_LE(indexPath.item, INT_MAX);
- int item = static_cast<int>(indexPath.item);
- [cell setAppearanceForTabTitle:[self.dataSource titleAtIndex:item]
+ int index = static_cast<int>(indexPath.item);
+ [cell setAppearanceForTabTitle:self.items[index].title
favicon:nil
cellSize:CGSizeZero];
- [cell setSelected:(indexPath.item == [self.dataSource indexOfActiveTab])];
return cell;
}
@@ -134,22 +138,47 @@
#pragma mark - TabCollectionConsumer methods
-- (void)insertItemAtIndex:(int)index {
- [self.tabs insertItemsAtIndexPaths:@[ [NSIndexPath indexPathForItem:index
- inSection:0] ]];
+- (void)insertItem:(TabCollectionItem*)item atIndex:(int)index {
+ DCHECK_LE(static_cast<NSUInteger>(index), self.items.count);
+ [self.items insertObject:item atIndex:index];
+ [self.tabs insertItemsAtIndexPaths:@[ [self indexPathForIndex:index] ]];
}
- (void)deleteItemAtIndex:(int)index {
- [self.tabs deleteItemsAtIndexPaths:@[ [NSIndexPath indexPathForItem:index
- inSection:0] ]];
+ DCHECK_LT(static_cast<NSUInteger>(index), self.items.count);
+ [self.items removeObjectAtIndex:index];
+ [self.tabs deleteItemsAtIndexPaths:@[ [self indexPathForIndex:index] ]];
+}
+
+- (void)moveItemFromIndex:(int)fromIndex toIndex:(int)toIndex {
+ TabCollectionItem* item = self.items[fromIndex];
+ [self.items removeObjectAtIndex:fromIndex];
+ [self.items insertObject:item atIndex:toIndex];
+ [self.tabs moveItemAtIndexPath:[self indexPathForIndex:fromIndex]
+ toIndexPath:[self indexPathForIndex:toIndex]];
+}
+
+- (void)replaceItemAtIndex:(int)index withItem:(TabCollectionItem*)item {
+ [self.items removeObjectAtIndex:index];
+ [self.items insertObject:item atIndex:index];
}
-- (void)reloadItemsAtIndexes:(NSIndexSet*)indexes {
- NSMutableArray<NSIndexPath*>* indexPaths = [[NSMutableArray alloc] init];
- [indexes enumerateIndexesUsingBlock:^(NSUInteger index, BOOL* _Nonnull stop) {
- [indexPaths addObject:[NSIndexPath indexPathForItem:index inSection:0]];
- }];
- [self.tabs reloadItemsAtIndexPaths:indexPaths];
+- (void)selectItemAtIndex:(int)index {
+ self.selectedIndex = index;
+ [self.tabs selectItemAtIndexPath:[self indexPathForIndex:index]
+ animated:YES
+ scrollPosition:UITableViewScrollPositionNone];
+}
+
+- (void)populateItems:(NSArray<TabCollectionItem*>*)items {
+ self.items = [items mutableCopy];
+ [self.tabs reloadData];
+}
+
+#pragma mark - Private
+
+- (NSIndexPath*)indexPathForIndex:(int)index {
+ return [NSIndexPath indexPathForItem:index inSection:0];
}
@end

Powered by Google App Engine
This is Rietveld 408576698