@@ -32,11 +32,12 @@ @implementation CSHomeViewController
3232
3333- (void )viewDidLoad
3434{
35- [super viewDidLoad ];
36- [self setUpCollectionView ];
37- [self setUpWebView ];
38- [self setupFeedItemObserver ];
39- // Do any additional setup after loading the view.
35+ _feedItems = [[NSMutableSet alloc ] init ];
36+ [super viewDidLoad ];
37+ [self setUpCollectionView ];
38+ [self setUpWebView ];
39+ [self setupFeedItemObserver ];
40+ // Do any additional setup after loading the view.
4041}
4142
4243- (void )viewDidLayoutSubviews
@@ -62,6 +63,9 @@ - (void) setupFeedItemObserver
6263 for ( Feed *feed in addedFeeds ){
6364 [feed observeRelationship: @" feedItems"
6465 changeBlock: ^(__weak Feed *feed, NSSet *old, NSSet *new) {
66+
67+ _feedItems = [(CSFeedItemCollectionViewDataSource *)_collectionView_feedItems.dataSource feedItems ];
68+
6569 if (!new) {
6670 NSLog (@" startup?" );
6771 } else {
@@ -72,46 +76,51 @@ - (void) setupFeedItemObserver
7276 [removedFeedItems removeObjectsInArray: [new allObjects ]];
7377
7478 for ( FeedItem *item in removedFeedItems ){
75- [[(CSFeedItemCollectionViewDataSource *)_collectionView_feedItems.dataSource feedItems ] removeObject: item];
79+ [_feedItems removeObject: item];
7680 }
7781
7882 for ( FeedItem *item in addedFeedItems ){
79- [[(CSFeedItemCollectionViewDataSource *)_collectionView_feedItems.dataSource feedItems ] addObject: item];
83+ [_feedItems addObject: item];
8084 }
8185 }
8286
8387 // redraw the collection with the changes to the feed items
8488 [feedCollectionViewDataSource sortFeedItems ];
8589 [_collectionView_feedItems reloadData ];
90+ _pageControl_itemIndicator.numberOfPages = [_feedItems count ] < 6 ? [_feedItems count ] : 5 ;
91+
8692 if (currentFeedItem){
8793 [self scrollToCurrentFeedItem ];
94+ [self setPageControllerPageAtIndex: [feedCollectionViewDataSource.sortedFeedItems indexOfObject: currentFeedItem]];
8895 }
8996 }
9097 insertionBlock: nil
9198 removalBlock: nil
9299 replacementBlock: nil ];
93100 }
94-
95- // properties:@[@"title", @"summary", @"updatedAt", @"publishedAt", @"createdAt", @"image", @"url"]
96101 }
97102 insertionBlock: nil
98103 removalBlock: nil
99104 replacementBlock: nil
100105 ];
101106}
102107
108+ // Sets up collection view on controller start up
103109- (void )setUpCollectionView
104110{
105- User *current = [User current ];
106- NSSet *feedItems = current.feedItems ;
107-
108- feedCollectionViewDataSource =
109- [[CSFeedItemCollectionViewDataSource alloc ] initWithFeedItems: feedItems
110- reusableCellIdentifier: @" feedItemCell"
111- configureBlock: [self configureFeedItem ]];
112-
113- self.collectionView_feedItems .dataSource = feedCollectionViewDataSource;
114- self.collectionView_feedItems .delegate = self;
111+ User *current = [User current ];
112+ NSSet *feedItems = current.feedItems ;
113+
114+ feedCollectionViewDataSource =
115+ [[CSFeedItemCollectionViewDataSource alloc ] initWithFeedItems: feedItems
116+ reusableCellIdentifier: @" feedItemCell"
117+ configureBlock: [self configureFeedItem ]];
118+
119+ self.collectionView_feedItems .dataSource = feedCollectionViewDataSource;
120+ self.collectionView_feedItems .delegate = self;
121+
122+ self.collectionView_feedItems .pagingEnabled = YES ;
123+ self.pageControl_itemIndicator .currentPage = 0 ;
115124}
116125
117126
@@ -181,7 +190,29 @@ - (void)scrollToCurrentFeedItem
181190 [_collectionView_feedItems scrollToItemAtIndexPath: indexPath atScrollPosition: UICollectionViewScrollPositionCenteredHorizontally animated: NO ];
182191}
183192
184- -(void )loadFeedItemWebView
193+
194+ - (void )collectionView : (UICollectionView *)collectionView didEndDisplayingCell : (UICollectionViewCell *)cell forItemAtIndexPath : (NSIndexPath *)indexPath
195+ {
196+ int newIndex = indexPath.row +((indexPath.row -self.collectionCellGoingTo )*-1 );
197+ [self setPageControllerPageAtIndex: newIndex];
198+ }
199+
200+ - (void )setPageControllerPageAtIndex : (int )index
201+ {
202+ if ([_feedItems count ] < 6 ){
203+ _pageControl_itemIndicator.currentPage = index;
204+ } else {
205+ if ( index < 3 ){
206+ _pageControl_itemIndicator.currentPage = index;
207+ } else if (index > ([_feedItems count ]-3 ) ){
208+ _pageControl_itemIndicator.currentPage = 5 -([_feedItems count ]-index);
209+ } else {
210+ _pageControl_itemIndicator.currentPage = 2 ;
211+ }
212+ }
213+ }
214+
215+ - (void )loadFeedItemWebView
185216{
186217 // Check if this is a new url
187218 if (currentURL != self.collectionView_feedItems .currentFeedItem .url ){
0 commit comments