mirror of
https://github.com/viq/NewsBlur.git
synced 2025-11-01 09:09:16 +00:00
Finished collapsing/expanding folders in iOS app. Saved as a preference (although not synced with the server). Collapsed folders still need unread count.
This commit is contained in:
parent
82f8261dc0
commit
c4c8db94b2
9 changed files with 197 additions and 113 deletions
|
|
@ -66,7 +66,6 @@ static UIFont *indicatorFont = nil;
|
|||
[backgroundColor set];
|
||||
|
||||
CGContextFillRect(context, r);
|
||||
NSLog(@"WIDTH is %f", rect.size.width);
|
||||
// set site title
|
||||
UIColor *textColor;
|
||||
UIFont *font;
|
||||
|
|
|
|||
|
|
@ -129,7 +129,7 @@
|
|||
}
|
||||
|
||||
if (appDelegate.isSocialRiverView ||
|
||||
[appDelegate.activeFolder isEqualToString:@"All Stories"]) {
|
||||
[appDelegate.activeFolder isEqualToString:@"everything"]) {
|
||||
feedMarkReadButton.enabled = NO;
|
||||
} else {
|
||||
feedMarkReadButton.enabled = YES;
|
||||
|
|
@ -152,11 +152,6 @@
|
|||
[appDelegate.storyDetailViewController clearStory];
|
||||
[self checkScroll];
|
||||
}
|
||||
|
||||
NSString *title = appDelegate.isRiverView ?
|
||||
appDelegate.activeFolder :
|
||||
[appDelegate.activeFeed objectForKey:@"feed_title"];
|
||||
NSLog(@"title %@", title);
|
||||
}
|
||||
|
||||
- (void)viewWillDisappear:(BOOL)animated {
|
||||
|
|
@ -266,14 +261,6 @@
|
|||
[self.storyTitlesTable reloadData];
|
||||
[storyTitlesTable scrollRectToVisible:CGRectMake(0, 0, 1, 1) animated:YES];
|
||||
}
|
||||
int readStoriesCount = 0;
|
||||
if (self.feedPage > 1) {
|
||||
for (id story in appDelegate.activeFeedStories) {
|
||||
if ([[story objectForKey:@"read_status"] intValue] == 1) {
|
||||
readStoriesCount += 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
NSString *theFeedDetailURL;
|
||||
|
||||
|
|
@ -284,11 +271,10 @@
|
|||
self.feedPage];
|
||||
} else {
|
||||
theFeedDetailURL = [NSString stringWithFormat:
|
||||
@"http://%@/reader/river_stories/?feeds=%@&page=%d&read_stories_count=%d",
|
||||
@"http://%@/reader/river_stories/?feeds=%@&page=%d",
|
||||
NEWSBLUR_URL,
|
||||
[appDelegate.activeFolderFeeds componentsJoinedByString:@"&feeds="],
|
||||
self.feedPage,
|
||||
readStoriesCount];
|
||||
self.feedPage];
|
||||
}
|
||||
|
||||
[self cancelRequests];
|
||||
|
|
|
|||
|
|
@ -230,14 +230,14 @@ static CGFloat *psColors = nil;
|
|||
|
||||
} else {
|
||||
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
|
||||
[self.feedFavicon drawInRect:CGRectMake(12.0, 9.0, 16.0, 16.0)];
|
||||
[self.feedFavicon drawInRect:CGRectMake(12.0, 7.0, 16.0, 16.0)];
|
||||
[feedTitle
|
||||
drawInRect:CGRectMake(36.0, 9.0, rect.size.width - psWidth - psPadding - ntWidth - ntPadding - ngWidth - 10, 20.0)
|
||||
withFont:font
|
||||
lineBreakMode:UILineBreakModeTailTruncation
|
||||
alignment:UITextAlignmentLeft];
|
||||
} else {
|
||||
[self.feedFavicon drawInRect:CGRectMake(9.0, 9.0, 16.0, 16.0)];
|
||||
[self.feedFavicon drawInRect:CGRectMake(9.0, 7.0, 16.0, 16.0)];
|
||||
[feedTitle
|
||||
drawInRect:CGRectMake(34.0, 9.0, rect.size.width - psWidth - psPadding - ntWidth - ntPadding - ngWidth - 10, 20.0)
|
||||
withFont:font
|
||||
|
|
|
|||
|
|
@ -25,10 +25,16 @@
|
|||
- (UIControl *)drawWithRect:(CGRect)rect inSection:(NSInteger)section {
|
||||
|
||||
self.appDelegate = (NewsBlurAppDelegate *)[[UIApplication sharedApplication] delegate];
|
||||
|
||||
int folderImageViewY;
|
||||
|
||||
folderImageViewY = 3;
|
||||
NSUserDefaults *userPreferences = [NSUserDefaults standardUserDefaults];
|
||||
|
||||
NSString *folderName;
|
||||
if (section == 0) {
|
||||
folderName = @"river_blurblogs";
|
||||
} else {
|
||||
folderName = [appDelegate.dictFoldersArray objectAtIndex:section];
|
||||
}
|
||||
NSString *collapseKey = [NSString stringWithFormat:@"folderCollapsed:%@", folderName];
|
||||
bool isFolderCollapsed = [userPreferences boolForKey:collapseKey];
|
||||
|
||||
// create the parent view that will hold header Label
|
||||
UIControl* customView = [[UIControl alloc]
|
||||
|
|
@ -76,6 +82,40 @@
|
|||
colorWithAlphaComponent:0.8];
|
||||
[customView addSubview:headerLabel];
|
||||
|
||||
UIButton *invisibleHeaderButton = [UIButton buttonWithType:UIButtonTypeCustom];
|
||||
invisibleHeaderButton.frame = CGRectMake(0, 0, customView.frame.size.width, customView.frame.size.height);
|
||||
invisibleHeaderButton.alpha = .1;
|
||||
invisibleHeaderButton.tag = section;
|
||||
[invisibleHeaderButton addTarget:appDelegate.feedsViewController action:@selector(didSelectSectionHeader:) forControlEvents:UIControlEventTouchUpInside];
|
||||
[customView addSubview:invisibleHeaderButton];
|
||||
|
||||
[invisibleHeaderButton addTarget:appDelegate.feedsViewController action:@selector(sectionTapped:) forControlEvents:UIControlEventTouchDown];
|
||||
[invisibleHeaderButton addTarget:appDelegate.feedsViewController action:@selector(sectionUntapped:) forControlEvents:UIControlEventTouchUpInside];
|
||||
[invisibleHeaderButton addTarget:appDelegate.feedsViewController action:@selector(sectionUntappedOutside:) forControlEvents:UIControlEventTouchUpOutside];
|
||||
|
||||
if (!appDelegate.hasNoSites) {
|
||||
if (section != 1) {
|
||||
UIImage *disclosureBorder = [UIImage imageNamed:@"disclosure_border.png"];
|
||||
UIImageView *disclosureBorderView = [[UIImageView alloc] initWithImage:disclosureBorder];
|
||||
disclosureBorderView.frame = CGRectMake(customView.frame.size.width - 30, -1, 29, 29);
|
||||
[customView addSubview:disclosureBorderView];
|
||||
}
|
||||
|
||||
UIButton *disclosureButton = [UIButton buttonWithType:UIButtonTypeCustom];
|
||||
UIImage *disclosureImage = [UIImage imageNamed:@"disclosure.png"];
|
||||
[disclosureButton setImage:disclosureImage forState:UIControlStateNormal];
|
||||
disclosureButton.frame = CGRectMake(customView.frame.size.width - 30, -1, 29, 29);
|
||||
if (section != 1) {
|
||||
if (!isFolderCollapsed) {
|
||||
disclosureButton.transform = CGAffineTransformMakeRotation(M_PI_2);
|
||||
}
|
||||
|
||||
disclosureButton.tag = section;
|
||||
[disclosureButton addTarget:appDelegate.feedsViewController action:@selector(didCollapseFolder:) forControlEvents:UIControlEventTouchUpInside];
|
||||
}
|
||||
[customView addSubview:disclosureButton];
|
||||
}
|
||||
|
||||
UIImage *folderImage;
|
||||
int folderImageViewX = 10;
|
||||
|
||||
|
|
@ -94,49 +134,20 @@
|
|||
folderImageViewX = 7;
|
||||
}
|
||||
} else {
|
||||
folderImage = [UIImage imageNamed:@"folder_2.png"];
|
||||
if (isFolderCollapsed) {
|
||||
folderImage = [UIImage imageNamed:@"folder_collapsed.png"];
|
||||
} else {
|
||||
folderImage = [UIImage imageNamed:@"folder_2.png"];
|
||||
}
|
||||
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
|
||||
} else {
|
||||
folderImageViewX = 7;
|
||||
}
|
||||
}
|
||||
UIImageView *folderImageView = [[UIImageView alloc] initWithImage:folderImage];
|
||||
folderImageView.frame = CGRectMake(folderImageViewX, folderImageViewY, 20, 20);
|
||||
folderImageView.frame = CGRectMake(folderImageViewX, 3, 20, 20);
|
||||
[customView addSubview:folderImageView];
|
||||
|
||||
|
||||
UIButton *invisibleHeaderButton = [UIButton buttonWithType:UIButtonTypeCustom];
|
||||
invisibleHeaderButton.frame = CGRectMake(0, 0, customView.frame.size.width, customView.frame.size.height);
|
||||
invisibleHeaderButton.alpha = .1;
|
||||
invisibleHeaderButton.tag = section;
|
||||
[invisibleHeaderButton addTarget:appDelegate.feedsViewController action:@selector(didSelectSectionHeader:) forControlEvents:UIControlEventTouchUpInside];
|
||||
[customView addSubview:invisibleHeaderButton];
|
||||
|
||||
[invisibleHeaderButton addTarget:appDelegate.feedsViewController action:@selector(sectionTapped:) forControlEvents:UIControlEventTouchDown];
|
||||
[invisibleHeaderButton addTarget:appDelegate.feedsViewController action:@selector(sectionUntapped:) forControlEvents:UIControlEventTouchUpInside];
|
||||
[invisibleHeaderButton addTarget:appDelegate.feedsViewController action:@selector(sectionUntappedOutside:) forControlEvents:UIControlEventTouchUpOutside];
|
||||
|
||||
if (!appDelegate.hasNoSites) {
|
||||
if (section != 1) {
|
||||
UIImage *disclosureBorder = [UIImage imageNamed:@"disclosure_border.png"];
|
||||
UIImageView *disclosureBorderView = [[UIImageView alloc] initWithImage:disclosureBorder];
|
||||
disclosureBorderView.frame = CGRectMake(customView.frame.size.width - 30, 0, 29, 29);
|
||||
[customView addSubview:disclosureBorderView];
|
||||
}
|
||||
|
||||
UIButton *disclosureButton = [UIButton buttonWithType:UIButtonTypeCustom];
|
||||
UIImage *disclosureImage = [UIImage imageNamed:@"disclosure.png"];
|
||||
UIImageView *disclosureImageView = [[UIImageView alloc] initWithImage:disclosureImage];
|
||||
[disclosureButton setImage:disclosureImage forState:UIControlStateNormal];
|
||||
disclosureButton.frame = CGRectMake(customView.frame.size.width - 30, 0, 29, 29);
|
||||
if (section != 1) {
|
||||
disclosureImageView.transform = CGAffineTransformMakeRotation(M_PI_2);
|
||||
}
|
||||
[customView addSubview:disclosureButton];
|
||||
|
||||
// [disclosureImageView addTarget]
|
||||
}
|
||||
|
||||
[customView setAutoresizingMask:UIViewAutoresizingNone];
|
||||
|
||||
return customView;
|
||||
|
|
|
|||
|
|
@ -546,7 +546,13 @@
|
|||
- (void)loadStoryDetailView {
|
||||
NSString *feedTitle;
|
||||
if (self.isRiverView) {
|
||||
feedTitle = self.activeFolder;
|
||||
if ([self.activeFolder isEqualToString:@"river_blurblogs"]) {
|
||||
feedTitle = @"All Shared Stories";
|
||||
} else if ([self.activeFolder isEqualToString:@"everything"]) {
|
||||
feedTitle = @"All Stories";
|
||||
} else {
|
||||
feedTitle = self.activeFolder;
|
||||
}
|
||||
} else {
|
||||
feedTitle = [activeFeed objectForKey:@"feed_title"];
|
||||
}
|
||||
|
|
@ -759,11 +765,11 @@
|
|||
int total = 0;
|
||||
NSArray *folder;
|
||||
|
||||
if (!folderName && self.activeFolder == @"ALL BLURBLOG STORIES") {
|
||||
if (!folderName && self.activeFolder == @"river_blurblogs") {
|
||||
for (id feedId in self.dictSocialFeeds) {
|
||||
total += [self unreadCountForFeed:feedId];
|
||||
}
|
||||
} else if (!folderName && self.activeFolder == @"ALL STORIES STORIES") {
|
||||
} else if (!folderName && self.activeFolder == @"everything") {
|
||||
for (id feedId in self.dictFeeds) {
|
||||
total += [self unreadCountForFeed:feedId];
|
||||
}
|
||||
|
|
@ -961,7 +967,7 @@
|
|||
}
|
||||
|
||||
- (void)markActiveFolderAllRead {
|
||||
if (self.activeFolder == @"Everything") {
|
||||
if (self.activeFolder == @"everything") {
|
||||
for (NSString *folderName in self.dictFoldersArray) {
|
||||
for (id feedId in [self.dictFolders objectForKey:folderName]) {
|
||||
[self markFeedAllRead:feedId];
|
||||
|
|
@ -1154,9 +1160,11 @@
|
|||
- (UIView *)makeFeedTitle:(NSDictionary *)feed {
|
||||
UILabel *titleLabel = [[UILabel alloc] init];
|
||||
if (self.isSocialRiverView) {
|
||||
titleLabel.text = [NSString stringWithFormat:@" All Blurblog Stories"];
|
||||
titleLabel.text = [NSString stringWithFormat:@" All Shared Stories"];
|
||||
} else if (self.isRiverView && [self.activeFolder isEqualToString:@"everything"]) {
|
||||
titleLabel.text = [NSString stringWithFormat:@" All Stories"];
|
||||
} else if (self.isRiverView) {
|
||||
titleLabel.text = [NSString stringWithFormat:@" %@", self.activeFolder];
|
||||
titleLabel.text = [NSString stringWithFormat:@" %@", self.activeFolder];
|
||||
} else if (self.isSocialView) {
|
||||
titleLabel.text = [NSString stringWithFormat:@" %@", [feed objectForKey:@"feed_title"]];
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -69,6 +69,7 @@
|
|||
- (void)setUserAvatarLayout:(UIInterfaceOrientation)orientation;
|
||||
- (void)didSelectSectionHeader:(UIButton *)button;
|
||||
- (IBAction)selectIntelligence;
|
||||
- (void)didCollapseFolder:(UIButton *)button;
|
||||
- (void)changeToAllMode;
|
||||
- (void)updateFeedsWithIntelligence:(int)previousLevel newLevel:(int)newLevel;
|
||||
- (void)calculateFeedLocations:(BOOL)markVisible;
|
||||
|
|
|
|||
|
|
@ -22,8 +22,8 @@
|
|||
#import "UIBarButtonItem+WEPopover.h"
|
||||
|
||||
|
||||
#define kPhoneTableViewRowHeight 36;
|
||||
#define kTableViewRowHeight 36;
|
||||
#define kPhoneTableViewRowHeight 32;
|
||||
#define kTableViewRowHeight 32;
|
||||
#define kBlurblogTableViewRowHeight 47;
|
||||
#define kPhoneBlurblogTableViewRowHeight 39;
|
||||
static const CGFloat kFolderTitleHeight = 28;
|
||||
|
|
@ -393,10 +393,10 @@ static const CGFloat kFolderTitleHeight = 28;
|
|||
allFolders = [[results objectForKey:@"flat_folders"] mutableCopy];
|
||||
}
|
||||
|
||||
[allFolders setValue:socialFolder forKey:@""];
|
||||
[allFolders setValue:socialFolder forKey:@"river_blurblogs"];
|
||||
|
||||
if (![[allFolders allKeys] containsObject:@" "]) {
|
||||
[allFolders setValue:[[NSArray alloc] init] forKey:@" "];
|
||||
if (![[allFolders allKeys] containsObject:@"everything"]) {
|
||||
[allFolders setValue:[[NSArray alloc] init] forKey:@"everything"];
|
||||
}
|
||||
|
||||
appDelegate.dictFolders = allFolders;
|
||||
|
|
@ -434,6 +434,16 @@ static const CGFloat kFolderTitleHeight = 28;
|
|||
}
|
||||
appDelegate.dictFolders = sortedFolders;
|
||||
[appDelegate.dictFoldersArray sortUsingSelector:@selector(caseInsensitiveCompare:)];
|
||||
|
||||
// Move River Blurblog and Everything to the top
|
||||
if ([appDelegate.dictFoldersArray containsObject:@"river_blurblogs"]) {
|
||||
[appDelegate.dictFoldersArray removeObject:@"river_blurblogs"];
|
||||
[appDelegate.dictFoldersArray insertObject:@"river_blurblogs" atIndex:0];
|
||||
}
|
||||
if ([appDelegate.dictFoldersArray containsObject:@"everything"]) {
|
||||
[appDelegate.dictFoldersArray removeObject:@"everything"];
|
||||
[appDelegate.dictFoldersArray insertObject:@"everything" atIndex:1];
|
||||
}
|
||||
|
||||
if (self.viewShowingAllFeeds) {
|
||||
[self calculateFeedLocations:NO];
|
||||
|
|
@ -567,7 +577,7 @@ static const CGFloat kFolderTitleHeight = 28;
|
|||
|
||||
- (void)switchSitesUnread {
|
||||
NSDictionary *feed;
|
||||
|
||||
|
||||
NSInteger intelligenceLevel = [appDelegate selectedIntelligence];
|
||||
NSMutableArray *indexPaths = [NSMutableArray array];
|
||||
|
||||
|
|
@ -617,18 +627,25 @@ static const CGFloat kFolderTitleHeight = 28;
|
|||
[self calculateFeedLocations:YES];
|
||||
}
|
||||
|
||||
[self.feedTitlesTable beginUpdates];
|
||||
if ([indexPaths count] > 0) {
|
||||
if (self.viewShowingAllFeeds) {
|
||||
[self.feedTitlesTable insertRowsAtIndexPaths:indexPaths
|
||||
withRowAnimation:UITableViewRowAnimationNone];
|
||||
} else {
|
||||
|
||||
[self.feedTitlesTable deleteRowsAtIndexPaths:indexPaths
|
||||
withRowAnimation:UITableViewRowAnimationNone];
|
||||
// @try {
|
||||
[self.feedTitlesTable beginUpdates];
|
||||
if ([indexPaths count] > 0) {
|
||||
if (self.viewShowingAllFeeds) {
|
||||
[self.feedTitlesTable insertRowsAtIndexPaths:indexPaths
|
||||
withRowAnimation:UITableViewRowAnimationNone];
|
||||
} else {
|
||||
[self.feedTitlesTable deleteRowsAtIndexPaths:indexPaths
|
||||
withRowAnimation:UITableViewRowAnimationNone];
|
||||
}
|
||||
}
|
||||
}
|
||||
[self.feedTitlesTable endUpdates];
|
||||
[self.feedTitlesTable endUpdates];
|
||||
// }
|
||||
// @catch (NSException *exception) {
|
||||
// NSLog(@"EXCEPTION: %@", exception);
|
||||
// [self.feedTitlesTable beginUpdates];
|
||||
// [self.feedTitlesTable endUpdates];
|
||||
// [self.feedTitlesTable reloadData];
|
||||
// }
|
||||
|
||||
CGPoint offset = CGPointMake(0, 0);
|
||||
[self.feedTitlesTable setContentOffset:offset animated:YES];
|
||||
|
|
@ -660,6 +677,7 @@ static const CGFloat kFolderTitleHeight = 28;
|
|||
}
|
||||
|
||||
NSString *folderName = [appDelegate.dictFoldersArray objectAtIndex:section];
|
||||
|
||||
return [[self.activeFeedLocations objectForKey:folderName] count];
|
||||
}
|
||||
|
||||
|
|
@ -740,7 +758,14 @@ static const CGFloat kFolderTitleHeight = 28;
|
|||
self.currentRowAtIndexPath = indexPath;
|
||||
|
||||
NSDictionary *feed;
|
||||
NSString *folderName = [appDelegate.dictFoldersArray objectAtIndex:indexPath.section];
|
||||
NSString *folderName;
|
||||
if (indexPath.section == 0) {
|
||||
folderName = @"river_blurblogs";
|
||||
} else if (indexPath.section == 1) {
|
||||
folderName = @"everything";
|
||||
} else {
|
||||
folderName = [appDelegate.dictFoldersArray objectAtIndex:indexPath.section];
|
||||
}
|
||||
NSArray *feeds = [appDelegate.dictFolders objectForKey:folderName];
|
||||
NSArray *activeFolderFeeds = [self.activeFeedLocations objectForKey:folderName];
|
||||
int location = [[activeFolderFeeds objectAtIndex:indexPath.row] intValue];
|
||||
|
|
@ -780,9 +805,21 @@ static const CGFloat kFolderTitleHeight = 28;
|
|||
}
|
||||
}
|
||||
|
||||
NSString *folderName = [appDelegate.dictFoldersArray objectAtIndex:indexPath.section];
|
||||
NSString *folderName;
|
||||
if (indexPath.section == 0) {
|
||||
folderName = @"river_blurblogs";
|
||||
} else {
|
||||
folderName = [appDelegate.dictFoldersArray objectAtIndex:indexPath.section];
|
||||
}
|
||||
NSUserDefaults *userPreferences = [NSUserDefaults standardUserDefaults];
|
||||
NSString *collapseKey = [NSString stringWithFormat:@"folderCollapsed:%@", folderName];
|
||||
bool isFolderCollapsed = [userPreferences boolForKey:collapseKey];
|
||||
|
||||
if ([folderName isEqualToString:@""]) { // blurblogs
|
||||
if (isFolderCollapsed) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if ([folderName isEqualToString:@"river_blurblogs"]) { // blurblogs
|
||||
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
|
||||
return kBlurblogTableViewRowHeight;
|
||||
} else {
|
||||
|
|
@ -848,9 +885,9 @@ static const CGFloat kFolderTitleHeight = 28;
|
|||
appDelegate.isSocialRiverView = YES;
|
||||
appDelegate.isRiverView = YES;
|
||||
// add all the feeds from every NON blurblog folder
|
||||
[appDelegate setActiveFolder:@"All Blurblog Stories"];
|
||||
[appDelegate setActiveFolder:@"river_blurblogs"];
|
||||
for (NSString *folderName in self.activeFeedLocations) {
|
||||
if ([folderName isEqualToString:@""]) { // remove all blurblugs which is a blank folder name
|
||||
if ([folderName isEqualToString:@"river_blurblogs"]) { // remove all blurblugs which is a blank folder name
|
||||
NSArray *originalFolder = [appDelegate.dictFolders objectForKey:folderName];
|
||||
NSArray *folderFeeds = [self.activeFeedLocations objectForKey:folderName];
|
||||
for (int l=0; l < [folderFeeds count]; l++) {
|
||||
|
|
@ -862,9 +899,9 @@ static const CGFloat kFolderTitleHeight = 28;
|
|||
appDelegate.isSocialRiverView = NO;
|
||||
appDelegate.isRiverView = YES;
|
||||
// add all the feeds from every NON blurblog folder
|
||||
[appDelegate setActiveFolder:@"All Stories"];
|
||||
[appDelegate setActiveFolder:@"everything"];
|
||||
for (NSString *folderName in self.activeFeedLocations) {
|
||||
if (![folderName isEqualToString:@""]) { // remove all blurblugs which is a blank folder name
|
||||
if (![folderName isEqualToString:@"river_blurblogs"]) {
|
||||
NSArray *originalFolder = [appDelegate.dictFolders objectForKey:folderName];
|
||||
NSArray *folderFeeds = [self.activeFeedLocations objectForKey:folderName];
|
||||
for (int l=0; l < [folderFeeds count]; l++) {
|
||||
|
|
@ -890,6 +927,35 @@ static const CGFloat kFolderTitleHeight = 28;
|
|||
[appDelegate loadRiverFeedDetailView];
|
||||
}
|
||||
|
||||
- (void)didCollapseFolder:(UIButton *)button {
|
||||
NSString *folderName;
|
||||
NSUserDefaults *userPreferences = [NSUserDefaults standardUserDefaults];
|
||||
|
||||
if (button.tag == 0) {
|
||||
folderName = @"river_blurblogs";
|
||||
} else {
|
||||
folderName = [appDelegate.dictFoldersArray objectAtIndex:button.tag];
|
||||
}
|
||||
|
||||
NSString *collapseKey = [NSString stringWithFormat:@"folderCollapsed:%@", folderName];
|
||||
bool isFolderCollapsed = [userPreferences boolForKey:collapseKey];
|
||||
|
||||
if (isFolderCollapsed) {
|
||||
// Expand folder
|
||||
[userPreferences setBool:NO forKey:collapseKey];
|
||||
} else {
|
||||
// Collapse folder
|
||||
[userPreferences setBool:YES forKey:collapseKey];
|
||||
}
|
||||
[userPreferences synchronize];
|
||||
|
||||
[self.feedTitlesTable reloadSections:[NSIndexSet indexSetWithIndex:button.tag]
|
||||
withRowAnimation:UITableViewRowAnimationFade];
|
||||
[self.feedTitlesTable beginUpdates];
|
||||
[self.feedTitlesTable endUpdates];
|
||||
|
||||
}
|
||||
|
||||
- (void)changeToAllMode {
|
||||
[self.intelligenceControl setSelectedSegmentIndex:0];
|
||||
NSUserDefaults *userPreferences = [NSUserDefaults standardUserDefaults];
|
||||
|
|
@ -905,7 +971,7 @@ static const CGFloat kFolderTitleHeight = 28;
|
|||
|
||||
int selectedSegmentIndex = [self.intelligenceControl selectedSegmentIndex];
|
||||
|
||||
NSUserDefaults *userPreferences = [NSUserDefaults standardUserDefaults];
|
||||
NSUserDefaults *userPreferences = [NSUserDefaults standardUserDefaults];
|
||||
if (selectedSegmentIndex == 0) {
|
||||
hud.labelText = @"All Stories";
|
||||
[userPreferences setInteger:-1 forKey:@"selectedIntelligence"];
|
||||
|
|
@ -915,7 +981,7 @@ static const CGFloat kFolderTitleHeight = 28;
|
|||
int previousLevel = appDelegate.selectedIntelligence;
|
||||
[appDelegate setSelectedIntelligence:0];
|
||||
[self updateFeedsWithIntelligence:previousLevel newLevel:0];
|
||||
[self redrawUnreadCounts];
|
||||
[self redrawUnreadCounts];
|
||||
}
|
||||
self.viewShowingAllFeeds = YES;
|
||||
[self switchSitesUnread];
|
||||
|
|
@ -947,7 +1013,7 @@ static const CGFloat kFolderTitleHeight = 28;
|
|||
[self redrawUnreadCounts];
|
||||
}
|
||||
|
||||
[hud hide:YES afterDelay:0.75];
|
||||
[hud hide:YES afterDelay:0.5];
|
||||
|
||||
// [self.feedTitlesTable reloadData];
|
||||
}
|
||||
|
|
@ -1045,16 +1111,22 @@ static const CGFloat kFolderTitleHeight = 28;
|
|||
[self calculateFeedLocations:NO];
|
||||
}
|
||||
|
||||
[self.feedTitlesTable beginUpdates];
|
||||
if ([deleteIndexPaths count] > 0) {
|
||||
[self.feedTitlesTable deleteRowsAtIndexPaths:deleteIndexPaths
|
||||
withRowAnimation:UITableViewRowAnimationNone];
|
||||
@try {
|
||||
[self.feedTitlesTable beginUpdates];
|
||||
if ([deleteIndexPaths count] > 0) {
|
||||
[self.feedTitlesTable deleteRowsAtIndexPaths:deleteIndexPaths
|
||||
withRowAnimation:UITableViewRowAnimationNone];
|
||||
}
|
||||
if ([insertIndexPaths count] > 0) {
|
||||
[self.feedTitlesTable insertRowsAtIndexPaths:insertIndexPaths
|
||||
withRowAnimation:UITableViewRowAnimationNone];
|
||||
}
|
||||
[self.feedTitlesTable endUpdates];
|
||||
}
|
||||
if ([insertIndexPaths count] > 0) {
|
||||
[self.feedTitlesTable insertRowsAtIndexPaths:insertIndexPaths
|
||||
withRowAnimation:UITableViewRowAnimationNone];
|
||||
@catch (NSException *exception) {
|
||||
NSLog(@"Exception: %@", exception);
|
||||
[self.feedTitlesTable reloadData];
|
||||
}
|
||||
[self.feedTitlesTable endUpdates];
|
||||
|
||||
// scrolls to the top and fixes header rendering bug
|
||||
CGPoint offsetOne = CGPointMake(0, 1);
|
||||
|
|
@ -1084,7 +1156,7 @@ static const CGFloat kFolderTitleHeight = 28;
|
|||
id feedId = [folder objectAtIndex:f];
|
||||
NSString *feedIdStr = [NSString stringWithFormat:@"%@",feedId];
|
||||
|
||||
if ([folderName isEqualToString:@""]){
|
||||
if ([folderName isEqualToString:@"river_blurblogs"]){
|
||||
feed = [appDelegate.dictSocialFeeds objectForKey:feedIdStr];
|
||||
} else {
|
||||
feed = [appDelegate.dictFeeds objectForKey:feedIdStr];
|
||||
|
|
@ -1099,7 +1171,7 @@ static const CGFloat kFolderTitleHeight = 28;
|
|||
[feedLocations addObject:location];
|
||||
} else {
|
||||
int maxScore = [NewsBlurViewController computeMaxScoreForFeed:feed];
|
||||
// if ([folderName isEqualToString:@""]){
|
||||
// if ([folderName isEqualToString:@"river_blurblogs"]){
|
||||
// NSLog(@"Computing score for %@: %d in %d (markVisible: %d)",
|
||||
// [feed objectForKey:@"feed_title"], maxScore, appDelegate.selectedIntelligence, markVisible);
|
||||
// }
|
||||
|
|
@ -1114,10 +1186,6 @@ static const CGFloat kFolderTitleHeight = 28;
|
|||
}
|
||||
|
||||
}
|
||||
if ([folderName isEqualToString:@""]){
|
||||
// NSLog(@"feedLocations count is %i: ", [feedLocations count]);
|
||||
}
|
||||
// NSLog(@"feedLocations %@", feedLocations);
|
||||
[self.activeFeedLocations setObject:feedLocations forKey:folderName];
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -368,6 +368,8 @@
|
|||
FFD887F01445F1E800385399 /* AddSiteAutocompleteCell.m in Sources */ = {isa = PBXBuildFile; fileRef = FFD887EE1445F1E800385399 /* AddSiteAutocompleteCell.m */; };
|
||||
FFDE35CC161B8F870034BFDE /* FolderTitleView.m in Sources */ = {isa = PBXBuildFile; fileRef = FFDE35CB161B8F870034BFDE /* FolderTitleView.m */; };
|
||||
FFDE35D2161B9E600034BFDE /* disclosure_border.png in Resources */ = {isa = PBXBuildFile; fileRef = FFDE35D1161B9E600034BFDE /* disclosure_border.png */; };
|
||||
FFDE35D6161CCABC0034BFDE /* folder_collapsed.png in Resources */ = {isa = PBXBuildFile; fileRef = FFDE35D4161CCABC0034BFDE /* folder_collapsed.png */; };
|
||||
FFDE35D7161CCABC0034BFDE /* folder_collapsed@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = FFDE35D5161CCABC0034BFDE /* folder_collapsed@2x.png */; };
|
||||
FFE5322F144C8AC300ACFDE0 /* Utilities.m in Sources */ = {isa = PBXBuildFile; fileRef = FFE5322E144C8AC300ACFDE0 /* Utilities.m */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
|
|
@ -885,6 +887,8 @@
|
|||
FFDE35CA161B8F870034BFDE /* FolderTitleView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FolderTitleView.h; sourceTree = "<group>"; };
|
||||
FFDE35CB161B8F870034BFDE /* FolderTitleView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FolderTitleView.m; sourceTree = "<group>"; };
|
||||
FFDE35D1161B9E600034BFDE /* disclosure_border.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = disclosure_border.png; sourceTree = "<group>"; };
|
||||
FFDE35D4161CCABC0034BFDE /* folder_collapsed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = folder_collapsed.png; sourceTree = "<group>"; };
|
||||
FFDE35D5161CCABC0034BFDE /* folder_collapsed@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "folder_collapsed@2x.png"; sourceTree = "<group>"; };
|
||||
FFE5322D144C8AC300ACFDE0 /* Utilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Utilities.h; sourceTree = "<group>"; };
|
||||
FFE5322E144C8AC300ACFDE0 /* Utilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Utilities.m; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
|
@ -1142,6 +1146,8 @@
|
|||
431B857615A132B600DCE497 /* Images */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
FFDE35D4161CCABC0034BFDE /* folder_collapsed.png */,
|
||||
FFDE35D5161CCABC0034BFDE /* folder_collapsed@2x.png */,
|
||||
FFDE35D1161B9E600034BFDE /* disclosure_border.png */,
|
||||
43BC458E15D9F75F00205B69 /* facebook_button_on.png */,
|
||||
43BC458F15D9F75F00205B69 /* facebook_button_on@2x.png */,
|
||||
|
|
@ -2113,6 +2119,8 @@
|
|||
FF546DF71602930100948020 /* Default-568h@2x.png in Resources */,
|
||||
FF546DF9160298E500948020 /* fleuron@2x.png in Resources */,
|
||||
FFDE35D2161B9E600034BFDE /* disclosure_border.png in Resources */,
|
||||
FFDE35D6161CCABC0034BFDE /* folder_collapsed.png in Resources */,
|
||||
FFDE35D7161CCABC0034BFDE /* folder_collapsed@2x.png in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
|
@ -2292,9 +2300,11 @@
|
|||
"\"$(SRCROOT)\"",
|
||||
"\"$(SRCROOT)/Other Sources\"",
|
||||
);
|
||||
OTHER_CPLUSPLUSFLAGS = "$(OTHER_CFLAGS)";
|
||||
OTHER_LDFLAGS = (
|
||||
"-all_load",
|
||||
"-ObjC",
|
||||
"-fobjc-exceptions",
|
||||
);
|
||||
PRODUCT_NAME = NewsBlur;
|
||||
PROVISIONING_PROFILE = "";
|
||||
|
|
@ -2332,6 +2342,7 @@
|
|||
OTHER_LDFLAGS = (
|
||||
"-ObjC",
|
||||
"-all_load",
|
||||
"-fobjc-exceptions",
|
||||
);
|
||||
PRODUCT_NAME = NewsBlur;
|
||||
PROVISIONING_PROFILE = "";
|
||||
|
|
|
|||
|
|
@ -7,19 +7,19 @@
|
|||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "Classes/ActivityCell.m"
|
||||
timestampString = "370898006.367348"
|
||||
filePath = "Classes/NewsBlurViewController.m"
|
||||
timestampString = "370996140.882983"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "122"
|
||||
endingLineNumber = "122"
|
||||
landmarkName = "-setActivity:withUserProfile:withWidth:"
|
||||
startingLineNumber = "594"
|
||||
endingLineNumber = "594"
|
||||
landmarkName = "-switchSitesUnread"
|
||||
landmarkType = "5">
|
||||
</FileBreakpoint>
|
||||
</FileBreakpoints>
|
||||
<SymbolicBreakpoints>
|
||||
<SymbolicBreakpoint
|
||||
shouldBeEnabled = "Yes"
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
symbolName = "objc_exception_throw"
|
||||
|
|
@ -28,7 +28,7 @@
|
|||
</SymbolicBreakpoints>
|
||||
<ExceptionBreakpoints>
|
||||
<ExceptionBreakpoint
|
||||
shouldBeEnabled = "Yes"
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
scope = "0"
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue