@@ -47,62 +47,65 @@ - (void)viewDidLayoutSubviews
4747
4848- (void ) setupFeedItemObserver
4949{
50- _currentUser = [User current ];
51- [self observeRelationship: @keypath (self .currentUser.feeds)
52- changeBlock: ^(__weak CSHomeViewController *self , NSSet *old, NSSet *new) {
53- NSMutableArray *addedFeeds = [[new allObjects ] mutableCopy ];
54- NSMutableArray *removedFeeds = [[old allObjects ] mutableCopy ];
55-
56- [addedFeeds removeObjectsInArray: [old allObjects ]];
57- [removedFeeds removeObjectsInArray: [new allObjects ]];
58-
59- for ( Feed *feed in removedFeeds ){
60- [feed removeAllObservations ];
61- }
62-
63- for ( Feed *feed in addedFeeds ){
64- [feed observeRelationship: @" feedItems"
65- changeBlock: ^(__weak Feed *feed, NSSet *old, NSSet *new) {
50+ _currentUser = [User current ];
51+
52+ [self observeRelationship: @keypath (self .currentUser.feeds)
53+ changeBlock: ^(__weak CSHomeViewController *self , NSSet *old, NSSet *new) {
54+ NSMutableArray *addedFeeds = [[new allObjects ] mutableCopy ];
55+ NSMutableArray *removedFeeds = [[old allObjects ] mutableCopy ];
56+
57+ [addedFeeds removeObjectsInArray: [old allObjects ]];
58+ [removedFeeds removeObjectsInArray: [new allObjects ]];
59+
60+ for ( Feed *feed in removedFeeds ){
61+ [feed removeAllObservations ];
62+ }
63+
64+ for ( Feed *feed in addedFeeds ){
65+ [feed observeRelationship: @" feedItems"
66+ changeBlock: ^(__weak Feed *feed, NSSet *old, NSSet *new) {
67+
68+ _feedItems = [(CSFeedItemCollectionViewDataSource *)_collectionView_feedItems.dataSource feedItems ];
69+
70+ if (!new) {
71+ NSLog (@" startup?" );
72+ } else {
73+ NSMutableArray *addedFeedItems = [[new allObjects ] mutableCopy ];
74+ NSMutableArray *removedFeedItems = [[old allObjects ] mutableCopy ];
6675
67- _feedItems = [(CSFeedItemCollectionViewDataSource *)_collectionView_feedItems.dataSource feedItems ];
76+ [addedFeedItems removeObjectsInArray: [old allObjects ]];
77+ [removedFeedItems removeObjectsInArray: [new allObjects ]];
6878
69- if (!new) {
70- NSLog (@" startup?" );
71- } else {
72- NSMutableArray *addedFeedItems = [[new allObjects ] mutableCopy ];
73- NSMutableArray *removedFeedItems = [[old allObjects ] mutableCopy ];
74-
75- [addedFeedItems removeObjectsInArray: [old allObjects ]];
76- [removedFeedItems removeObjectsInArray: [new allObjects ]];
77-
78- for ( FeedItem *item in removedFeedItems ){
79- [_feedItems removeObject: item];
80- }
81-
82- for ( FeedItem *item in addedFeedItems ){
83- [_feedItems addObject: item];
84- }
79+ for ( FeedItem *item in removedFeedItems ){
80+ [_feedItems removeObject: item];
8581 }
8682
87- // redraw the collection with the changes to the feed items
88- [feedCollectionViewDataSource sortFeedItems ];
89- [_collectionView_feedItems reloadData ];
90- _pageControl_itemIndicator.numberOfPages = [_feedItems count ] < 6 ? [_feedItems count ] : 5 ;
91-
92- if (currentFeedItem){
93- [self scrollToCurrentFeedItem ];
94- [self setPageControllerPageAtIndex: [feedCollectionViewDataSource.sortedFeedItems indexOfObject: currentFeedItem]];
83+ for ( FeedItem *item in addedFeedItems ){
84+ [_feedItems addObject: item];
9585 }
86+
87+ // Add call to button on custom page controller
88+ }
89+
90+ // redraw the collection with the changes to the feed items
91+ [feedCollectionViewDataSource sortFeedItems ];
92+ [_collectionView_feedItems reloadData ];
93+ _pageControl_itemIndicator.numberOfPages = [_feedItems count ] < 6 ? [_feedItems count ] : 5 ;
94+
95+ if (currentFeedItem){
96+ [self scrollToCurrentFeedItem ];
97+ [self setPageControllerPageAtIndex: [feedCollectionViewDataSource.sortedFeedItems indexOfObject: currentFeedItem]];
9698 }
97- insertionBlock: nil
98- removalBlock: nil
99- replacementBlock: nil ];
100- }
101- }
102- insertionBlock: nil
103- removalBlock: nil
104- replacementBlock: nil
105- ];
99+ }
100+ insertionBlock: nil
101+ removalBlock: nil
102+ replacementBlock: nil ];
103+ }
104+ }
105+ insertionBlock: nil
106+ removalBlock: nil
107+ replacementBlock: nil
108+ ];
106109}
107110
108111// Sets up collection view on controller start up
@@ -121,8 +124,50 @@ - (void)setUpCollectionView
121124
122125 self.collectionView_feedItems .pagingEnabled = YES ;
123126 self.pageControl_itemIndicator .currentPage = 0 ;
127+
128+ UIButton *dot = [UIButton buttonWithType: UIButtonTypeInfoLight];
129+ dot.frame = CGRectMake (10 ,(self.pageControl_itemIndicator .frame .size .height /2 )-5 , 12 , 12 );
130+
131+ UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc ] initWithTarget: self action: @selector (newItemButton: )];
132+ [dot addGestureRecognizer: singleTap];
133+
134+ UIView *leftFade = [[UIView alloc ] init ];
135+ leftFade.frame = CGRectMake (90 , 10 , 70 , 20 );
136+ leftFade.backgroundColor = [UIColor blackColor ];
137+
138+ CAGradientLayer *leftLayer = [CAGradientLayer layer ];
139+ leftLayer.frame = leftFade.bounds ;
140+ leftLayer.colors = [NSArray arrayWithObjects: (id )[UIColor whiteColor ].CGColor, (id )[UIColor clearColor ].CGColor, nil ];
141+ leftLayer.startPoint = CGPointMake (0 .0f , 1 .0f );
142+ leftLayer.endPoint = CGPointMake (1 .0f , 1 .0f );
143+ leftFade.layer .mask = leftLayer;
144+
145+ UIView *rightFade = [[UIView alloc ] init ];
146+ rightFade.frame = CGRectMake (160 , 10 , 70 , 20 );
147+ rightFade.backgroundColor = [UIColor blackColor ];
148+
149+ CAGradientLayer *rightLayer = [CAGradientLayer layer ];
150+ rightLayer.frame = rightFade.bounds ;
151+ rightLayer.colors = [NSArray arrayWithObjects: (id )[UIColor whiteColor ].CGColor, (id )[UIColor clearColor ].CGColor, nil ];
152+ rightLayer.startPoint = CGPointMake (1 .0f , 1 .0f );
153+ rightLayer.endPoint = CGPointMake (0 .0f , 1 .0f );
154+ rightFade.layer .mask = rightLayer;
155+
156+
157+ [self .pageControl_itemIndicator addSubview: dot];
158+ UIView *pageControllerMask = [self .pageControl_itemIndicator superview ];
159+ [pageControllerMask addSubview: leftFade];
160+ [pageControllerMask addSubview: rightFade];
124161}
125162
163+ -(void )newItemButton : (id )sender
164+ {
165+ currentFeedItem = [feedCollectionViewDataSource.sortedFeedItems firstObject ];
166+ [self scrollToCurrentFeedItem ];
167+ self.collectionCellGoingTo = 0 ;
168+ [self setPageControllerPageAtIndex: [feedCollectionViewDataSource.sortedFeedItems indexOfObject: currentFeedItem]];
169+ [sender setHidden: YES ];
170+ }
126171
127172#pragma mark - IBActions
128173
0 commit comments