Merge branch 'dejal'

* dejal:
  iOS: #1201 (show hidden stories)
This commit is contained in:
Samuel Clay 2019-06-23 10:18:59 -07:00
commit 9c6a26d508
18 changed files with 274 additions and 931 deletions

View file

@ -527,7 +527,7 @@ static const CGFloat kFolderTitleHeight = 36.0;
NSUInteger count = self.tableView.indexPathsForSelectedRows.count;
NSString *title = count == 1 ? @"Delete selected site?" : [NSString stringWithFormat:@"Delete %@ sites?", @(count)];
[viewController addTitle:title iconName:@"menu_icn_delete.png" selectionShouldDismiss:YES handler:^{
[viewController addTitle:title iconName:@"menu_icn_delete.png" destructive:YES selectionShouldDismiss:YES handler:^{
[self performDeleteFeeds];
}];

View file

@ -1,41 +0,0 @@
//
// FeedDetailMenuViewController.h
// NewsBlur
//
// Created by Samuel Clay on 10/10/12.
// Copyright (c) 2012 NewsBlur. All rights reserved.
//
#import <UIKit/UIKit.h>
@class NewsBlurAppDelegate;
@interface FeedDetailMenuViewController : UIViewController
<UITableViewDelegate,
UITableViewDataSource> {
NewsBlurAppDelegate *appDelegate;
}
@property (nonatomic, strong) NSArray *menuOptions;
@property (nonatomic) IBOutlet NewsBlurAppDelegate *appDelegate;
@property (nonatomic) IBOutlet UITableView *menuTableView;
@property (nonatomic) IBOutlet UISegmentedControl *orderSegmentedControl;
@property (nonatomic) IBOutlet UISegmentedControl *readFilterSegmentedControl;
@property (nonatomic) IBOutlet UISegmentedControl *previewSizeSegment;
@property (nonatomic) IBOutlet UISegmentedControl *imageSizeSegment;
@property (nonatomic) IBOutlet UISegmentedControl *fontSizeSegment;
@property (nonatomic) IBOutlet UISegmentedControl *infrequentSegmentedControl;
@property (nonatomic) IBOutlet UISegmentedControl *themeSegmentedControl;
- (void)buildMenuOptions;
- (UITableViewCell *)makeOrderCell;
- (UITableViewCell *)makeReadFilterCell;
- (IBAction)changeOrder:(id)sender;
- (IBAction)changeReadFilter:(id)sender;
- (IBAction)changePreviewSize:(id)sender;
- (IBAction)changeImageSize:(id)sender;
- (IBAction)changeFontSize:(id)sender;
- (IBAction)changeInfrequent:(id)sender;
- (IBAction)changeTheme:(id)sender;
@end

View file

@ -1,666 +0,0 @@
//
// FeedDetailMenuViewController.m
// NewsBlur
//
// Created by Samuel Clay on 10/10/12.
// Copyright (c) 2012 NewsBlur. All rights reserved.
//
#import "FeedDetailMenuViewController.h"
#import "NewsBlurAppDelegate.h"
#import "MBProgressHUD.h"
#import "NBContainerViewController.h"
#import "FeedDetailViewController.h"
#import "MenuTableViewCell.h"
#import "StoriesCollection.h"
@implementation FeedDetailMenuViewController
#define kMenuOptionHeight 38
@synthesize appDelegate;
@synthesize menuOptions;
@synthesize menuTableView;
@synthesize orderSegmentedControl;
@synthesize readFilterSegmentedControl;
@synthesize infrequentSegmentedControl;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
self.menuTableView.backgroundColor = UIColorFromRGB(0xECEEEA);
self.menuTableView.separatorColor = UIColorFromRGB(0x909090);
}
- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
self.menuOptions = nil;
self.menuTableView = nil;
}
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[self.menuTableView reloadData];
[orderSegmentedControl
setTitleTextAttributes:@{NSFontAttributeName:
[UIFont fontWithName:@"Helvetica-Bold" size:11.0f]}
forState:UIControlStateNormal];
[orderSegmentedControl setContentOffset:CGSizeMake(0, 1) forSegmentAtIndex:0];
[orderSegmentedControl setContentOffset:CGSizeMake(0, 1) forSegmentAtIndex:1];
[orderSegmentedControl setSelectedSegmentIndex:0];
if ([appDelegate.storiesCollection.activeOrder isEqualToString:@"oldest"]) {
[orderSegmentedControl setSelectedSegmentIndex:1];
}
[readFilterSegmentedControl
setTitleTextAttributes:@{NSFontAttributeName:
[UIFont fontWithName:@"Helvetica-Bold" size:11.0f]}
forState:UIControlStateNormal];
[readFilterSegmentedControl setContentOffset:CGSizeMake(0, 1) forSegmentAtIndex:0];
[readFilterSegmentedControl setContentOffset:CGSizeMake(0, 1) forSegmentAtIndex:1];
[readFilterSegmentedControl setSelectedSegmentIndex:0];
if ([appDelegate.storiesCollection.activeReadFilter isEqualToString:@"unread"]) {
[readFilterSegmentedControl setSelectedSegmentIndex:1];
}
NSUserDefaults *userPreferences = [NSUserDefaults standardUserDefaults];
[self.previewSizeSegment
setTitleTextAttributes:@{NSFontAttributeName:
[UIFont fontWithName:@"Helvetica-Bold" size:11.0f]}
forState:UIControlStateNormal];
if([userPreferences stringForKey:@"story_list_preview_text_size"]){
NSString *previewSize = [userPreferences stringForKey:@"story_list_preview_text_size"];
if ([previewSize isEqualToString:@"title"]) {
[self.previewSizeSegment setSelectedSegmentIndex:0];
} else if ([previewSize isEqualToString:@"short"]) {
[self.previewSizeSegment setSelectedSegmentIndex:1];
} else if ([previewSize isEqualToString:@"medium"]) {
[self.previewSizeSegment setSelectedSegmentIndex:2];
} else if ([previewSize isEqualToString:@"long"]) {
[self.previewSizeSegment setSelectedSegmentIndex:3];
}
}
[self.imageSizeSegment
setTitleTextAttributes:@{NSFontAttributeName:
[UIFont fontWithName:@"Helvetica-Bold" size:11.0f]}
forState:UIControlStateNormal];
if([userPreferences stringForKey:@"story_list_preview_images_size"]){
NSString *imagesSize = [userPreferences stringForKey:@"story_list_preview_images_size"];
if ([imagesSize isEqualToString:@"none"]) {
[self.imageSizeSegment setSelectedSegmentIndex:0];
} else if ([imagesSize isEqualToString:@"small"]) {
[self.imageSizeSegment setSelectedSegmentIndex:1];
} else if ([imagesSize isEqualToString:@"large"]) {
[self.imageSizeSegment setSelectedSegmentIndex:2];
}
}
[self.fontSizeSegment
setTitleTextAttributes:@{NSFontAttributeName:
[UIFont fontWithName:@"Helvetica-Bold" size:11.0f]}
forState:UIControlStateNormal];
if([userPreferences stringForKey:@"feed_list_font_size"]){
NSString *fontSize = [userPreferences stringForKey:@"feed_list_font_size"];
if ([fontSize isEqualToString:@"xs"]) {
[self.fontSizeSegment setSelectedSegmentIndex:0];
} else if ([fontSize isEqualToString:@"small"]) {
[self.fontSizeSegment setSelectedSegmentIndex:1];
} else if ([fontSize isEqualToString:@"medium"]) {
[self.fontSizeSegment setSelectedSegmentIndex:2];
} else if ([fontSize isEqualToString:@"large"]) {
[self.fontSizeSegment setSelectedSegmentIndex:3];
} else if ([fontSize isEqualToString:@"xl"]) {
[self.fontSizeSegment setSelectedSegmentIndex:4];
}
}
[self.infrequentSegmentedControl
setTitleTextAttributes:@{NSFontAttributeName:
[UIFont fontWithName:@"Helvetica-Bold" size:11.0f]}
forState:UIControlStateNormal];
if([userPreferences stringForKey:@"infrequent_stories_per_month"]){
NSInteger storiesPerMonth = [userPreferences integerForKey:@"infrequent_stories_per_month"];
if (storiesPerMonth == 5) {
[self.infrequentSegmentedControl setSelectedSegmentIndex:0];
} else if (storiesPerMonth == 15) {
[self.infrequentSegmentedControl setSelectedSegmentIndex:1];
} else if (storiesPerMonth == 30) {
[self.infrequentSegmentedControl setSelectedSegmentIndex:2];
} else if (storiesPerMonth == 60) {
[self.infrequentSegmentedControl setSelectedSegmentIndex:3];
} else if (storiesPerMonth == 90) {
[self.infrequentSegmentedControl setSelectedSegmentIndex:4];
}
}
NSString *theme = [ThemeManager themeManager].theme;
if ([theme isEqualToString:@"sepia"]) {
self.themeSegmentedControl.selectedSegmentIndex = 1;
} else if ([theme isEqualToString:@"medium"]) {
self.themeSegmentedControl.selectedSegmentIndex = 2;
} else if ([theme isEqualToString:@"dark"]) {
self.themeSegmentedControl.selectedSegmentIndex = 3;
} else {
self.themeSegmentedControl.selectedSegmentIndex = 0;
}
if ([self isInfrequent]) {
self.infrequentSegmentedControl.hidden = NO;
} else {
self.infrequentSegmentedControl.hidden = YES;
}
self.navigationController.preferredContentSize = CGSizeMake(260, 38 * [self menuCount]);
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
self.navigationController.preferredContentSize = CGSizeMake(260, 38 * [self menuCount]);
self.menuTableView.scrollEnabled = self.navigationController.preferredContentSize.height > self.view.frame.size.height;
}
// allow keyboard comands
- (BOOL)canBecomeFirstResponder {
return YES;
}
- (void)buildMenuOptions {
BOOL everything = appDelegate.storiesCollection.isRiverView &&
[appDelegate.storiesCollection.activeFolder isEqualToString:@"everything"];
BOOL infrequent = [self isInfrequent];
BOOL read = appDelegate.storiesCollection.isReadView;
BOOL saved = appDelegate.storiesCollection.isSavedView;
NSMutableArray *options = [NSMutableArray array];
// NSString *title = appDelegate.storiesCollection.isRiverView ?
// appDelegate.storiesCollection.activeFolder :
// [appDelegate.storiesCollection.activeFeed objectForKey:@"feed_title"];
if (!everything && !infrequent && !read && !saved) {
NSString *deleteText = [NSString stringWithFormat:@"Delete %@",
appDelegate.storiesCollection.isRiverView ?
@"this entire folder" :
@"this site"];
[options addObject:[deleteText uppercaseString]];
[options addObject:[@"Move to another folder" uppercaseString]];
if (appDelegate.storiesCollection.isRiverView) {
[options addObject:[@"Rename this folder" uppercaseString]];
}
}
if (!appDelegate.storiesCollection.isRiverView && !infrequent && !saved && !read) {
[options addObject:[@"Rename this site" uppercaseString]];
[options addObject:[@"Mute this site" uppercaseString]];
[options addObject:[@"Train this site" uppercaseString]];
[options addObject:[@"Notifications" uppercaseString]];
[options addObject:[@"Insta-fetch stories" uppercaseString]];
}
self.menuOptions = options;
}
- (BOOL)isRiver {
return appDelegate.storiesCollection.isSocialRiverView ||
appDelegate.storiesCollection.isSocialView ||
appDelegate.storiesCollection.isSavedView ||
appDelegate.storiesCollection.isReadView;
}
- (BOOL)isInfrequent {
return appDelegate.storiesCollection.isRiverView &&
[appDelegate.storiesCollection.activeFolder isEqualToString:@"infrequent"];
}
- (NSUInteger)menuCount {
return [self.menuOptions count] + ([self isRiver] ? 5 : 6) + ([self isInfrequent] ? 1 : 0);
}
#pragma mark -
#pragma mark - Table view data source
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
[self buildMenuOptions];
return [self menuCount];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIndentifier = @"Cell";
if (indexPath.row == [self.menuOptions count]) {
return [self makeOrderCell];
} else if ([self isInfrequent]) {
if (indexPath.row == [self.menuOptions count] + 1) {
return [self makeReadFilterCell];
} else if (indexPath.row == [self.menuOptions count] + 2) {
return [self makePreviewSizeTableCell];
} else if (indexPath.row == [self.menuOptions count] + 3) {
return [self makeImageSizeTableCell];
} else if (indexPath.row == [self.menuOptions count] + 4) {
return [self makeFontSizeTableCell];
} else if (indexPath.row == [self.menuOptions count] + 5) {
return [self makeInfrequentTableCell];
} else if (indexPath.row == [self.menuOptions count] + 5) {
return [self makeThemeTableCell];
}
} else if (![self isRiver]) {
if (indexPath.row == [self.menuOptions count] + 1) {
return [self makeReadFilterCell];
} else if (indexPath.row == [self.menuOptions count] + 2) {
return [self makePreviewSizeTableCell];
} else if (indexPath.row == [self.menuOptions count] + 3) {
return [self makeImageSizeTableCell];
} else if (indexPath.row == [self.menuOptions count] + 4) {
return [self makeFontSizeTableCell];
} else if (indexPath.row == [self.menuOptions count] + 5) {
return [self makeThemeTableCell];
}
} else if ([self isRiver]) {
if (indexPath.row == [self.menuOptions count] + 1) {
return [self makePreviewSizeTableCell];
} else if (indexPath.row == [self.menuOptions count] + 2) {
return [self makeImageSizeTableCell];
} else if (indexPath.row == [self.menuOptions count] + 3) {
return [self makeFontSizeTableCell];
} else if (indexPath.row == [self.menuOptions count] + 4) {
return [self makeThemeTableCell];
}
}
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIndentifier];
if (cell == nil) {
cell = [[MenuTableViewCell alloc]
initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:CellIndentifier];
}
cell.textLabel.text = [self.menuOptions objectAtIndex:[indexPath row]];
if (indexPath.row == 0) {
cell.imageView.image = [UIImage imageNamed:@"menu_icn_delete.png"];
} else if (indexPath.row == 1) {
cell.imageView.image = [UIImage imageNamed:@"menu_icn_move.png"];
} else if (indexPath.row == 2) {
cell.imageView.image = [UIImage imageNamed:@"menu_icn_rename.png"];
} else if (indexPath.row == 3) {
cell.imageView.image = [UIImage imageNamed:@"menu_icn_mute.png"];
} else if (indexPath.row == 4) {
cell.imageView.image = [UIImage imageNamed:@"menu_icn_train.png"];
} else if (indexPath.row == 5) {
cell.imageView.image = [UIImage imageNamed:@"menu_icn_notifications.png"];
} else if (indexPath.row == 6) {
cell.imageView.image = [UIImage imageNamed:@"menu_icn_fetch.png"];
}
return cell;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
return kMenuOptionHeight;
}
- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.row >= [menuOptions count]) {
return nil;
}
return indexPath;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
BOOL shouldHide = YES;
if (indexPath.row == 0) {
[appDelegate.feedDetailViewController confirmDeleteSite];
shouldHide = NO;
} else if (indexPath.row == 1) {
[appDelegate.feedDetailViewController openMoveView];
shouldHide = NO;
} else if (indexPath.row == 2) {
[appDelegate.feedDetailViewController openRenameSite];
} else if (indexPath.row == 3) {
[appDelegate.feedDetailViewController confirmMuteSite];
shouldHide = NO;
} else if (indexPath.row == 4) {
[appDelegate.feedDetailViewController openTrainSite];
} else if (indexPath.row == 5) {
[appDelegate.feedDetailViewController
openNotificationsWithFeed:[NSString stringWithFormat:@"%@", [appDelegate.storiesCollection.activeFeed objectForKey:@"id"]]];
} else if (indexPath.row == 6) {
[appDelegate.feedDetailViewController instafetchFeed];
}
if (shouldHide) {
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
[self.appDelegate hidePopover];
} else {
[self.appDelegate hidePopoverAnimated:YES];
}
}
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}
- (UITableViewCell *)makeOrderCell {
UITableViewCell *cell = [[UITableViewCell alloc] init];
cell.frame = CGRectMake(0, 0, 240, kMenuOptionHeight);
cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.separatorInset = UIEdgeInsetsZero;
cell.backgroundColor = UIColorFromRGB(0xffffff);
orderSegmentedControl.frame = CGRectMake(8, 7, cell.frame.size.width - 8*2,
kMenuOptionHeight - 7*2);
[orderSegmentedControl setTitle:[@"Newest first" uppercaseString] forSegmentAtIndex:0];
[orderSegmentedControl setTitle:[@"Oldest" uppercaseString] forSegmentAtIndex:1];
self.orderSegmentedControl.backgroundColor = UIColorFromRGB(0xeeeeee);
[self.orderSegmentedControl setTitleTextAttributes:@{NSFontAttributeName:[UIFont fontWithName:@"Helvetica-Bold" size:11.0f]} forState:UIControlStateNormal];
[self.orderSegmentedControl setContentOffset:CGSizeMake(0, 1) forSegmentAtIndex:0];
[self.orderSegmentedControl setContentOffset:CGSizeMake(0, 1) forSegmentAtIndex:1];
[cell addSubview:orderSegmentedControl];
return cell;
}
- (UITableViewCell *)makeReadFilterCell {
UITableViewCell *cell = [[UITableViewCell alloc] init];
cell.frame = CGRectMake(0, 0, 240, kMenuOptionHeight);
cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.separatorInset = UIEdgeInsetsZero;
cell.backgroundColor = UIColorFromRGB(0xffffff);
readFilterSegmentedControl.frame = CGRectMake(8, 7, cell.frame.size.width - 8*2,
kMenuOptionHeight - 7*2);
[readFilterSegmentedControl setTitle:[@"All stories" uppercaseString] forSegmentAtIndex:0];
[readFilterSegmentedControl setTitle:[@"Unread only" uppercaseString] forSegmentAtIndex:1];
self.readFilterSegmentedControl.backgroundColor = UIColorFromRGB(0xeeeeee);
[self.readFilterSegmentedControl setTitleTextAttributes:@{NSFontAttributeName:[UIFont fontWithName:@"Helvetica-Bold" size:11.0f]} forState:UIControlStateNormal];
[self.readFilterSegmentedControl setContentOffset:CGSizeMake(0, 1) forSegmentAtIndex:0];
[self.readFilterSegmentedControl setContentOffset:CGSizeMake(0, 1) forSegmentAtIndex:1];
[cell addSubview:readFilterSegmentedControl];
return cell;
}
- (UITableViewCell *)makePreviewSizeTableCell {
UITableViewCell *cell = [[UITableViewCell alloc] init];
cell.frame = CGRectMake(0, 0, 240, kMenuOptionHeight);
cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.separatorInset = UIEdgeInsetsZero;
cell.backgroundColor = UIColorFromRGB(0xffffff);
self.previewSizeSegment.frame = CGRectMake(8, 7, cell.frame.size.width - 8*2, kMenuOptionHeight - 7*2);
[self.previewSizeSegment setTitle:[@"Title" uppercaseString] forSegmentAtIndex:0];
[self.previewSizeSegment setTitle:@"1" forSegmentAtIndex:1];
[self.previewSizeSegment setTitle:@"2" forSegmentAtIndex:2];
[self.previewSizeSegment setTitle:@"3" forSegmentAtIndex:3];
self.previewSizeSegment.backgroundColor = UIColorFromRGB(0xeeeeee);
[self.previewSizeSegment setTitleTextAttributes:@{NSFontAttributeName:[UIFont fontWithName:@"Helvetica-Bold" size:11.0f]} forState:UIControlStateNormal];
[self.previewSizeSegment setContentOffset:CGSizeMake(0, 1) forSegmentAtIndex:0];
[self.previewSizeSegment setContentOffset:CGSizeMake(0, 1) forSegmentAtIndex:1];
[self.previewSizeSegment setContentOffset:CGSizeMake(0, 1) forSegmentAtIndex:2];
[self.previewSizeSegment setContentOffset:CGSizeMake(0, 1) forSegmentAtIndex:3];
[cell addSubview:self.previewSizeSegment];
return cell;
}
- (UITableViewCell *)makeImageSizeTableCell {
UITableViewCell *cell = [[UITableViewCell alloc] init];
cell.frame = CGRectMake(0, 0, 240, kMenuOptionHeight);
cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.separatorInset = UIEdgeInsetsZero;
cell.backgroundColor = UIColorFromRGB(0xffffff);
self.imageSizeSegment.frame = CGRectMake(8, 7, cell.frame.size.width - 8*2, kMenuOptionHeight - 7*2);
[self.imageSizeSegment setTitle:[@"No Image" uppercaseString] forSegmentAtIndex:0];
[self.imageSizeSegment setTitle:[@"Small" uppercaseString] forSegmentAtIndex:1];
[self.imageSizeSegment setTitle:[@"Large" uppercaseString] forSegmentAtIndex:2];
self.imageSizeSegment.backgroundColor = UIColorFromRGB(0xeeeeee);
[self.imageSizeSegment setTitleTextAttributes:@{NSFontAttributeName:[UIFont fontWithName:@"Helvetica-Bold" size:11.0f]} forState:UIControlStateNormal];
[self.imageSizeSegment setContentOffset:CGSizeMake(0, 1) forSegmentAtIndex:0];
[self.imageSizeSegment setContentOffset:CGSizeMake(0, 1) forSegmentAtIndex:1];
[self.imageSizeSegment setContentOffset:CGSizeMake(0, 1) forSegmentAtIndex:2];
[cell addSubview:self.imageSizeSegment];
return cell;
}
- (UITableViewCell *)makeFontSizeTableCell {
UITableViewCell *cell = [[UITableViewCell alloc] init];
cell.frame = CGRectMake(0, 0, 240, kMenuOptionHeight);
cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.separatorInset = UIEdgeInsetsZero;
cell.backgroundColor = UIColorFromRGB(0xffffff);
self.fontSizeSegment.frame = CGRectMake(8, 7, cell.frame.size.width - 8*2, kMenuOptionHeight - 7*2);
[self.fontSizeSegment setTitle:@"XS" forSegmentAtIndex:0];
[self.fontSizeSegment setTitle:@"S" forSegmentAtIndex:1];
[self.fontSizeSegment setTitle:@"M" forSegmentAtIndex:2];
[self.fontSizeSegment setTitle:@"L" forSegmentAtIndex:3];
[self.fontSizeSegment setTitle:@"XL" forSegmentAtIndex:4];
self.fontSizeSegment.backgroundColor = UIColorFromRGB(0xeeeeee);
[self.fontSizeSegment setTitleTextAttributes:@{NSFontAttributeName:[UIFont fontWithName:@"Helvetica-Bold" size:11.0f]} forState:UIControlStateNormal];
[self.fontSizeSegment setContentOffset:CGSizeMake(0, 1) forSegmentAtIndex:0];
[self.fontSizeSegment setContentOffset:CGSizeMake(0, 1) forSegmentAtIndex:1];
[self.fontSizeSegment setContentOffset:CGSizeMake(0, 1) forSegmentAtIndex:2];
[self.fontSizeSegment setContentOffset:CGSizeMake(0, 1) forSegmentAtIndex:3];
[self.fontSizeSegment setContentOffset:CGSizeMake(0, 1) forSegmentAtIndex:4];
[cell addSubview:self.fontSizeSegment];
return cell;
}
- (UITableViewCell *)makeInfrequentTableCell {
UITableViewCell *cell = [[UITableViewCell alloc] init];
cell.frame = CGRectMake(0, 0, 240, kMenuOptionHeight);
cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.separatorInset = UIEdgeInsetsZero;
cell.backgroundColor = UIColorFromRGB(0xffffff);
self.infrequentSegmentedControl.frame = CGRectMake(8, 7, cell.frame.size.width - 8*2, kMenuOptionHeight - 7*2);
[self.infrequentSegmentedControl setTitle:@"5" forSegmentAtIndex:0];
[self.infrequentSegmentedControl setTitle:@"15" forSegmentAtIndex:1];
[self.infrequentSegmentedControl setTitle:@"30" forSegmentAtIndex:2];
[self.infrequentSegmentedControl setTitle:@"60" forSegmentAtIndex:3];
[self.infrequentSegmentedControl setTitle:@"90" forSegmentAtIndex:4];
self.infrequentSegmentedControl.backgroundColor = UIColorFromRGB(0xeeeeee);
[self.infrequentSegmentedControl setTitleTextAttributes:@{NSFontAttributeName:[UIFont fontWithName:@"Helvetica-Bold" size:11.0f]} forState:UIControlStateNormal];
[self.infrequentSegmentedControl setContentOffset:CGSizeMake(0, 1) forSegmentAtIndex:0];
[self.infrequentSegmentedControl setContentOffset:CGSizeMake(0, 1) forSegmentAtIndex:1];
[self.infrequentSegmentedControl setContentOffset:CGSizeMake(0, 1) forSegmentAtIndex:2];
[self.infrequentSegmentedControl setContentOffset:CGSizeMake(0, 1) forSegmentAtIndex:3];
[self.infrequentSegmentedControl setContentOffset:CGSizeMake(0, 1) forSegmentAtIndex:4];
[cell addSubview:self.infrequentSegmentedControl];
return cell;
}
- (UITableViewCell *)makeThemeTableCell {
UITableViewCell *cell = [[UITableViewCell alloc] init];
cell.frame = CGRectMake(0, 0, 240, kMenuOptionHeight);
cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.separatorInset = UIEdgeInsetsZero;
cell.backgroundColor = UIColorFromRGB(0xffffff);
UIImage *lightImage = [self themeImageWithName:@"theme_color_light" selected:self.themeSegmentedControl.selectedSegmentIndex == 0];
UIImage *sepiaImage = [self themeImageWithName:@"theme_color_sepia" selected:self.themeSegmentedControl.selectedSegmentIndex == 1];
UIImage *mediumImage = [self themeImageWithName:@"theme_color_medium" selected:self.themeSegmentedControl.selectedSegmentIndex == 2];
UIImage *darkImage = [self themeImageWithName:@"theme_color_dark" selected:self.themeSegmentedControl.selectedSegmentIndex == 3];
self.themeSegmentedControl.frame = CGRectMake(8, 4, cell.frame.size.width - 8*2, kMenuOptionHeight - 4*2);
[self.themeSegmentedControl setImage:lightImage forSegmentAtIndex:0];
[self.themeSegmentedControl setImage:sepiaImage forSegmentAtIndex:1];
[self.themeSegmentedControl setImage:mediumImage forSegmentAtIndex:2];
[self.themeSegmentedControl setImage:darkImage forSegmentAtIndex:3];
UIGraphicsBeginImageContextWithOptions(CGSizeMake(1, self.themeSegmentedControl.frame.size.height), NO, 0.0);
UIImage *blankImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[self.themeSegmentedControl setDividerImage:blankImage forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
self.themeSegmentedControl.tintColor = [UIColor clearColor];
self.themeSegmentedControl.backgroundColor = [UIColor clearColor];
[cell addSubview:self.themeSegmentedControl];
return cell;
}
- (UIImage *)themeImageWithName:(NSString *)name selected:(BOOL)selected {
if (selected) {
name = [name stringByAppendingString:@"-sel"];
}
return [[UIImage imageNamed:name] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
}
- (IBAction)changeOrder:(id)sender {
NSUserDefaults *userPreferences = [NSUserDefaults standardUserDefaults];
if ([sender selectedSegmentIndex] == 0) {
[userPreferences setObject:@"newest" forKey:[appDelegate.storiesCollection orderKey]];
} else {
[userPreferences setObject:@"oldest" forKey:[appDelegate.storiesCollection orderKey]];
}
[userPreferences synchronize];
[appDelegate.feedDetailViewController reloadStories];
}
- (IBAction)changeReadFilter:(id)sender {
NSUserDefaults *userPreferences = [NSUserDefaults standardUserDefaults];
if ([sender selectedSegmentIndex] == 0) {
[userPreferences setObject:@"all" forKey:[appDelegate.storiesCollection readFilterKey]];
} else {
[userPreferences setObject:@"unread" forKey:[appDelegate.storiesCollection readFilterKey]];
}
[userPreferences synchronize];
[appDelegate.feedDetailViewController reloadStories];
}
- (IBAction)changePreviewSize:(id)sender {
NSUserDefaults *userPreferences = [NSUserDefaults standardUserDefaults];
if ([sender selectedSegmentIndex] == 0) {
[userPreferences setObject:@"title" forKey:@"story_list_preview_text_size"];
} else if ([sender selectedSegmentIndex] == 1) {
[userPreferences setObject:@"short" forKey:@"story_list_preview_text_size"];
} else if ([sender selectedSegmentIndex] == 2) {
[userPreferences setObject:@"medium" forKey:@"story_list_preview_text_size"];
} else if ([sender selectedSegmentIndex] == 3) {
[userPreferences setObject:@"long" forKey:@"story_list_preview_text_size"];
}
[userPreferences synchronize];
[appDelegate resizePreviewSize];
}
- (IBAction)changeImageSize:(id)sender {
NSUserDefaults *userPreferences = [NSUserDefaults standardUserDefaults];
if ([sender selectedSegmentIndex] == 0) {
[userPreferences setObject:@"none" forKey:@"story_list_preview_images_size"];
} else if ([sender selectedSegmentIndex] == 1) {
[userPreferences setObject:@"small" forKey:@"story_list_preview_images_size"];
} else if ([sender selectedSegmentIndex] == 2) {
[userPreferences setObject:@"large" forKey:@"story_list_preview_images_size"];
}
[userPreferences synchronize];
[appDelegate resizePreviewSize];
}
- (IBAction)changeFontSize:(id)sender {
NSUserDefaults *userPreferences = [NSUserDefaults standardUserDefaults];
if ([sender selectedSegmentIndex] == 0) {
[userPreferences setObject:@"xs" forKey:@"feed_list_font_size"];
} else if ([sender selectedSegmentIndex] == 1) {
[userPreferences setObject:@"small" forKey:@"feed_list_font_size"];
} else if ([sender selectedSegmentIndex] == 2) {
[userPreferences setObject:@"medium" forKey:@"feed_list_font_size"];
} else if ([sender selectedSegmentIndex] == 3) {
[userPreferences setObject:@"large" forKey:@"feed_list_font_size"];
} else if ([sender selectedSegmentIndex] == 4) {
[userPreferences setObject:@"xl" forKey:@"feed_list_font_size"];
}
[userPreferences synchronize];
[appDelegate resizeFontSize];
}
- (IBAction)changeInfrequent:(id)sender {
NSUserDefaults *userPreferences = [NSUserDefaults standardUserDefaults];
if ([sender selectedSegmentIndex] == 0) {
[userPreferences setObject:[NSNumber numberWithInteger:5] forKey:@"infrequent_stories_per_month"];
} else if ([sender selectedSegmentIndex] == 1) {
[userPreferences setObject:[NSNumber numberWithInteger:15] forKey:@"infrequent_stories_per_month"];
} else if ([sender selectedSegmentIndex] == 2) {
[userPreferences setObject:[NSNumber numberWithInteger:30] forKey:@"infrequent_stories_per_month"];
} else if ([sender selectedSegmentIndex] == 3) {
[userPreferences setObject:[NSNumber numberWithInteger:60] forKey:@"infrequent_stories_per_month"];
} else if ([sender selectedSegmentIndex] == 4) {
[userPreferences setObject:[NSNumber numberWithInteger:90] forKey:@"infrequent_stories_per_month"];
}
[userPreferences synchronize];
[appDelegate.feedDetailViewController reloadStories];
[appDelegate.feedDetailViewController flashInfrequentStories];
}
- (IBAction)changeTheme:(id)sender {
NSUserDefaults *userPreferences = [NSUserDefaults standardUserDefaults];
NSString *theme = ThemeStyleLight;
switch ([sender selectedSegmentIndex]) {
case 1:
theme = ThemeStyleSepia;
break;
case 2:
theme = ThemeStyleMedium;
break;
case 3:
theme = ThemeStyleDark;
break;
default:
break;
}
[ThemeManager themeManager].theme = theme;
self.menuTableView.backgroundColor = UIColorFromRGB(0xECEEEA);
self.menuTableView.separatorColor = UIColorFromRGB(0x909090);
[self.menuTableView reloadData];
[userPreferences synchronize];
}
@end

View file

@ -93,12 +93,9 @@
- (void)redrawUnreadStory;
- (IBAction)doOpenMarkReadMenu:(id)sender;
- (IBAction)doOpenSettingsMenu:(id)sender;
- (void)confirmDeleteSite;
- (void)confirmMuteSite;
- (void)deleteSite;
- (void)deleteFolder;
- (void)muteSite;
- (void)openMoveView;
- (void)openTrainSite;
- (void)openNotificationsWithFeed:(NSString *)feedId;
- (void)openRenameSite;

View file

@ -22,7 +22,6 @@
#import "StringHelper.h"
#import "Utilities.h"
#import "UIBarButtonItem+Image.h"
#import "FeedDetailMenuViewController.h"
#import "MarkReadMenuViewController.h"
#import "NBNotifier.h"
#import "NBLoadingCell.h"
@ -2115,26 +2114,153 @@ didEndSwipingSwipingWithState:(MCSwipeTableViewCellState)state
}];
}
- (BOOL)isRiver {
return appDelegate.storiesCollection.isSocialRiverView ||
appDelegate.storiesCollection.isSocialView ||
appDelegate.storiesCollection.isSavedView ||
appDelegate.storiesCollection.isReadView;
}
- (BOOL)isInfrequent {
return appDelegate.storiesCollection.isRiverView &&
[appDelegate.storiesCollection.activeFolder isEqualToString:@"infrequent"];
}
- (IBAction)doOpenSettingsMenu:(id)sender {
if (self.presentedViewController) {
[self.presentedViewController dismissViewControllerAnimated:YES completion:nil];
return;
}
[self.appDelegate.feedDetailMenuViewController buildMenuOptions];
[self.appDelegate.feedDetailMenuViewController view];
NSInteger menuCount = [self.appDelegate.feedDetailMenuViewController.menuOptions count] + 5;
NSUserDefaults *userPreferences = [NSUserDefaults standardUserDefaults];
MenuViewController *viewController = [MenuViewController new];
__weak MenuViewController *weakViewController = viewController;
[self.appDelegate.feedDetailMenuNavigationController popToRootViewControllerAnimated:NO];
[self.appDelegate showPopoverWithViewController:self.appDelegate.feedDetailMenuNavigationController contentSize:CGSizeMake(260, 38 * menuCount) barButtonItem:self.settingsBarButton];
BOOL everything = appDelegate.storiesCollection.isRiverView &&
[appDelegate.storiesCollection.activeFolder isEqualToString:@"everything"];
BOOL infrequent = [self isInfrequent];
BOOL river = [self isRiver];
BOOL read = appDelegate.storiesCollection.isReadView;
BOOL saved = appDelegate.storiesCollection.isSavedView;
if (!everything && !infrequent && !read && !saved) {
NSString *deleteText = [NSString stringWithFormat:@"Delete %@",
appDelegate.storiesCollection.isRiverView ?
@"this entire folder" :
@"this site"];
[viewController addTitle:deleteText iconName:@"menu_icn_delete.png" selectionShouldDismiss:NO handler:^{
[self confirmDeleteSite:weakViewController.navigationController];
}];
[viewController addTitle:@"Move to another folder" iconName:@"menu_icn_move.png" selectionShouldDismiss:NO handler:^{
[self openMoveView:weakViewController.navigationController];
}];
}
if (!infrequent && !saved && !read) {
NSString *renameText = [NSString stringWithFormat:@"Rename this %@", appDelegate.storiesCollection.isRiverView ? @"folder" : @"site"];
[viewController addTitle:renameText iconName:@"menu_icn_rename.png" selectionShouldDismiss:YES handler:^{
[self openRenameSite];
}];
}
if (!appDelegate.storiesCollection.isRiverView && !infrequent && !saved && !read) {
[viewController addTitle:@"Mute this site" iconName:@"menu_icn_mute.png" selectionShouldDismiss:NO handler:^{
[self confirmMuteSite:weakViewController.navigationController];
}];
[viewController addTitle:@"Train this site" iconName:@"menu_icn_train.png" selectionShouldDismiss:YES handler:^{
[self openTrainSite];
}];
if ([appDelegate.storiesCollection.activeFeed[@"ng"] integerValue] > 0) {
NSString *title = appDelegate.storiesCollection.showHiddenStories ? @"Hide hidden stories" : @"Show hidden stories";
[viewController addTitle:title iconName:@"menu_icn_all.png" selectionShouldDismiss:YES handler:^{
[self toggleHiddenStories];
}];
}
[viewController addTitle:@"Notifications" iconName:@"menu_icn_notifications.png" selectionShouldDismiss:YES handler:^{
[self
openNotificationsWithFeed:[NSString stringWithFormat:@"%@", [appDelegate.storiesCollection.activeFeed objectForKey:@"id"]]];
}];
[viewController addTitle:@"Insta-fetch stories" iconName:@"menu_icn_fetch.png" selectionShouldDismiss:YES handler:^{
[self instafetchFeed];
}];
}
[viewController addSegmentedControlWithTitles:@[@"Newest First", @"Oldest"] selectIndex:[appDelegate.storiesCollection.activeOrder isEqualToString:@"newest"] ? 0 : 1 selectionShouldDismiss:YES handler:^(NSUInteger selectedIndex) {
if (selectedIndex == 0) {
[userPreferences setObject:@"newest" forKey:[appDelegate.storiesCollection orderKey]];
} else {
[userPreferences setObject:@"oldest" forKey:[appDelegate.storiesCollection orderKey]];
}
[self reloadStories];
}];
if (infrequent || !river) {
[viewController addSegmentedControlWithTitles:@[@"All stories", @"Unread only"] selectIndex:[appDelegate.storiesCollection.activeReadFilter isEqualToString:@"all"] ? 0 : 1 selectionShouldDismiss:YES handler:^(NSUInteger selectedIndex) {
if (selectedIndex == 0) {
[userPreferences setObject:@"all" forKey:appDelegate.storiesCollection.readFilterKey];
} else {
[userPreferences setObject:@"unread" forKey:appDelegate.storiesCollection.readFilterKey];
}
[self reloadStories];
}];
}
NSString *preferenceKey = @"story_list_preview_text_size";
NSArray *titles = @[@"Title", @"1", @"2", @"3"];
NSArray *values = @[@"title", @"short", @"medium", @"long"];
[viewController addSegmentedControlWithTitles:titles values:values preferenceKey:preferenceKey selectionShouldDismiss:YES handler:^(NSUInteger selectedIndex) {
[appDelegate resizePreviewSize];
}];
preferenceKey = @"story_list_preview_images_size";
titles = @[@"No image", @"Small", @"Large"];
values = @[@"none", @"small", @"large"];
[viewController addSegmentedControlWithTitles:titles values:values preferenceKey:preferenceKey selectionShouldDismiss:YES handler:^(NSUInteger selectedIndex) {
[appDelegate resizePreviewSize];
}];
preferenceKey = @"feed_list_font_size";
titles = @[@"XS", @"S", @"M", @"L", @"XL"];
values = @[@"xs", @"small", @"medium", @"large", @"xl"];
[viewController addSegmentedControlWithTitles:titles values:values preferenceKey:preferenceKey selectionShouldDismiss:YES handler:^(NSUInteger selectedIndex) {
[appDelegate resizeFontSize];
}];
if (infrequent) {
preferenceKey = @"infrequent_stories_per_month";
titles = @[@"5", @"15", @"30", @"60", @"90"];
values = @[@5, @15, @30, @60, @90];
[viewController addSegmentedControlWithTitles:titles values:values preferenceKey:preferenceKey selectionShouldDismiss:YES handler:^(NSUInteger selectedIndex) {
[appDelegate.feedDetailViewController reloadStories];
[appDelegate.feedDetailViewController flashInfrequentStories];
}];
}
[viewController addThemeSegmentedControl];
[viewController showFromNavigationController:self.navigationController barButtonItem:self.settingsBarButton];
}
- (void)confirmDeleteSite {
- (void)confirmDeleteSite:(UINavigationController *)menuNavigationController {
MenuViewController *viewController = [MenuViewController new];
viewController.title = @"Positive?";
NSString *title = storiesCollection.isRiverView ? @"Delete Folder" : @"Delete Site";
[viewController addTitle:title iconName:@"menu_icn_delete.png" selectionShouldDismiss:YES handler:^{
[viewController addTitle:title iconName:@"menu_icn_delete.png" destructive:YES selectionShouldDismiss:YES handler:^{
if (storiesCollection.isRiverView) {
[self deleteFolder];
} else {
@ -2142,10 +2268,10 @@ didEndSwipingSwipingWithState:(MCSwipeTableViewCellState)state
}
}];
[self.appDelegate.feedDetailMenuNavigationController pushViewController:viewController animated:YES];
[menuNavigationController pushViewController:viewController animated:YES];
}
- (void)confirmMuteSite {
- (void)confirmMuteSite:(UINavigationController *)menuNavigationController {
MenuViewController *viewController = [MenuViewController new];
viewController.title = @"Positive?";
@ -2153,7 +2279,7 @@ didEndSwipingSwipingWithState:(MCSwipeTableViewCellState)state
[self muteSite];
}];
[self.appDelegate.feedDetailMenuNavigationController pushViewController:viewController animated:YES];
[menuNavigationController pushViewController:viewController animated:YES];
}
- (void)renameTo:(NSString *)newTitle {
@ -2309,7 +2435,7 @@ didEndSwipingSwipingWithState:(MCSwipeTableViewCellState)state
}];
}
- (void)openMoveView {
- (void)openMoveView:(UINavigationController *)menuNavigationController {
MenuViewController *viewController = [MenuViewController new];
viewController.title = @"Move To";
@ -2337,7 +2463,7 @@ didEndSwipingSwipingWithState:(MCSwipeTableViewCellState)state
}
}
[self.appDelegate.feedDetailMenuNavigationController pushViewController:viewController animated:YES];
[menuNavigationController pushViewController:viewController animated:YES];
}
//- (void)openMoveView {
@ -2348,6 +2474,12 @@ didEndSwipingSwipingWithState:(MCSwipeTableViewCellState)state
[appDelegate openTrainSite];
}
- (void)toggleHiddenStories {
appDelegate.storiesCollection.showHiddenStories = !appDelegate.storiesCollection.showHiddenStories;
[appDelegate.storiesCollection calculateStoryLocations];
[self.storyTitlesTable reloadData];
}
- (void)openNotificationsWithFeed:(NSString *)feedId {
[appDelegate openNotificationsWithFeed:feedId];
}
@ -2378,8 +2510,9 @@ didEndSwipingSwipingWithState:(MCSwipeTableViewCellState)state
[self.presentedViewController dismissViewControllerAnimated:NO completion:^{
[self presentViewController:alert animated:YES completion:nil];
}];
} else {
[self presentViewController:alert animated:YES completion:nil];
}
// [self.appDelegate showAlert:alert withViewController:self];
}
- (void)showUserProfile {

View file

@ -43,24 +43,19 @@
self.frame.size.height);
if (self.destructive) {
self.textLabel.backgroundColor = [UIColor clearColor];
self.textLabel.textColor = UIColorFromRGB(0xffffff);
self.textLabel.highlightedTextColor = UIColorFromRGB(0x303030);
self.textLabel.shadowColor = UIColorFromRGB(0xa0a0a0);
self.textLabel.shadowOffset = CGSizeMake(0, 1);
self.backgroundColor = UIColorFromRGB(0xff0000);
self.backgroundView.backgroundColor = UIColorFromRGB(0xff0000);
self.selectedBackgroundView.backgroundColor = UIColorFromRGB(0xffdada);
self.textLabel.textColor = UIColorFromFixedRGB(0xff0000);
self.textLabel.highlightedTextColor = UIColorFromFixedRGB(0xff0000);
} else {
self.textLabel.backgroundColor = [UIColor clearColor];
self.textLabel.textColor = UIColorFromRGB(0x303030);
self.textLabel.highlightedTextColor = UIColorFromRGB(0x303030);
self.textLabel.shadowColor = UIColorFromRGB(0xF0F0F0);
self.textLabel.shadowOffset = CGSizeMake(0, 1);
self.backgroundColor = UIColorFromRGB(0xFFFFFF);
self.backgroundView.backgroundColor = UIColorFromRGB(0xFFFFFF);
self.selectedBackgroundView.backgroundColor = UIColorFromRGB(0xECEEEA);
}
self.textLabel.backgroundColor = [UIColor clearColor];
self.textLabel.shadowColor = UIColorFromRGB(0xF0F0F0);
self.textLabel.shadowOffset = CGSizeMake(0, 1);
self.backgroundColor = UIColorFromRGB(0xFFFFFF);
self.backgroundView.backgroundColor = UIColorFromRGB(0xFFFFFF);
self.selectedBackgroundView.backgroundColor = UIColorFromRGB(0xECEEEA);
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {

View file

@ -18,8 +18,11 @@ typedef void (^MenuItemSegmentedHandler)(NSUInteger selectedIndex);
@property (nonatomic) NSInteger checkedRow;
- (void)addTitle:(NSString *)title iconName:(NSString *)iconName selectionShouldDismiss:(BOOL)selectionShouldDismiss handler:(MenuItemHandler)handler;
- (void)addTitle:(NSString *)title iconName:(NSString *)iconName destructive:(BOOL)isDestructive selectionShouldDismiss:(BOOL)selectionShouldDismiss handler:(MenuItemHandler)handler;
- (void)addTitle:(NSString *)title iconTemplateName:(NSString *)iconTemplateName selectionShouldDismiss:(BOOL)selectionShouldDismiss handler:(MenuItemHandler)handler;
- (void)addSegmentedControlWithTitles:(NSArray *)titles selectIndex:(NSUInteger)selectIndex selectionShouldDismiss:(BOOL)selectionShouldDismiss handler:(MenuItemSegmentedHandler)handler;
- (void)addSegmentedControlWithTitles:(NSArray *)titles values:(NSArray *)values preferenceKey:(NSString *)preferenceKey selectionShouldDismiss:(BOOL)selectionShouldDismiss handler:(MenuItemSegmentedHandler)handler;
- (void)addThemeSegmentedControl;
- (void)showFromNavigationController:(UINavigationController *)navigationController barButtonItem:(UIBarButtonItem *)barButtonItem;

View file

@ -12,6 +12,7 @@
NSString * const MenuTitle = @"title";
NSString * const MenuIcon = @"icon";
NSString * const MenuDestructive = @"destructive";
NSString * const MenuThemeSegment = @"theme";
NSString * const MenuSegmentTitles = @"segmentTitles";
NSString * const MenuSegmentIndex = @"segmentIndex";
NSString * const MenuSelectionShouldDismiss = @"selectionShouldDismiss";
@ -19,7 +20,7 @@ NSString * const MenuHandler = @"handler";
#define kMenuOptionHeight 38
@interface MenuViewController () <UIPopoverPresentationControllerDelegate>
@interface MenuViewController () <UIPopoverPresentationControllerDelegate, UINavigationControllerDelegate>
@property (nonatomic, strong) NSMutableArray *items;
@ -89,7 +90,11 @@ NSString * const MenuHandler = @"handler";
}
- (void)addTitle:(NSString *)title iconName:(NSString *)iconName selectionShouldDismiss:(BOOL)selectionShouldDismiss handler:(MenuItemHandler)handler {
[self addTitle:title iconImage:[UIImage imageNamed:iconName] destructive:[iconName isEqualToString:@"menu_icn_delete.png"] || [iconName isEqualToString:@"menu_icn_mute.png"]selectionShouldDismiss:selectionShouldDismiss handler:handler];
[self addTitle:title iconImage:[UIImage imageNamed:iconName] destructive:NO selectionShouldDismiss:selectionShouldDismiss handler:handler];
}
- (void)addTitle:(NSString *)title iconName:(NSString *)iconName destructive:(BOOL)isDestructive selectionShouldDismiss:(BOOL)selectionShouldDismiss handler:(MenuItemHandler)handler {
[self addTitle:title iconImage:[UIImage imageNamed:iconName] destructive:isDestructive selectionShouldDismiss:selectionShouldDismiss handler:handler];
}
- (void)addTitle:(NSString *)title iconTemplateName:(NSString *)iconTemplateName selectionShouldDismiss:(BOOL)selectionShouldDismiss handler:(MenuItemHandler)handler {
@ -100,6 +105,88 @@ NSString * const MenuHandler = @"handler";
[self.items addObject:@{MenuSegmentTitles : titles, MenuSegmentIndex : @(selectIndex), MenuSelectionShouldDismiss : @(selectionShouldDismiss), MenuHandler : handler}];
}
- (void)addSegmentedControlWithTitles:(NSArray *)titles values:(NSArray *)values preferenceKey:(NSString *)preferenceKey selectionShouldDismiss:(BOOL)selectionShouldDismiss handler:(MenuItemSegmentedHandler)handler {
NSUserDefaults *userPreferences = [NSUserDefaults standardUserDefaults];
id value = [userPreferences objectForKey:preferenceKey];
NSUInteger valueIndex = [values indexOfObject:value];
if (valueIndex < 0) {
valueIndex = 0;
}
[self addSegmentedControlWithTitles:titles selectIndex:valueIndex selectionShouldDismiss:selectionShouldDismiss handler:^(NSUInteger selectedIndex) {
[userPreferences setObject:values[selectedIndex] forKey:preferenceKey];
handler(selectedIndex);
}];
}
- (void)addThemeSegmentedControl {
[self.items addObject:@{MenuSegmentTitles : @[], MenuThemeSegment : @YES}];
}
- (UIImage *)themeImageWithName:(NSString *)name selected:(BOOL)selected {
if (selected) {
name = [name stringByAppendingString:@"-sel"];
}
return [[UIImage imageNamed:name] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
}
- (UITableViewCell *)makeThemeSegmentedTableCell {
UITableViewCell *cell = [UITableViewCell new];
cell.frame = CGRectMake(0, 0, 240, kMenuOptionHeight);
cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.separatorInset = UIEdgeInsetsZero;
cell.backgroundColor = UIColorFromRGB(0xffffff);
NSString *theme = [ThemeManager themeManager].theme;
NSArray *values = @[ThemeStyleLight, ThemeStyleSepia, ThemeStyleMedium, ThemeStyleDark];
NSUInteger valueIndex = [values indexOfObject:theme];
if (valueIndex < 0) {
valueIndex = 0;
}
UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithFrame:CGRectMake(8, 4, cell.frame.size.width - 8 * 2, kMenuOptionHeight - 4 * 2)];
[segmentedControl addTarget:self action:@selector(changeTheme:) forControlEvents:UIControlEventValueChanged];
UIImage *lightImage = [self themeImageWithName:@"theme_color_light" selected:valueIndex == 0];
UIImage *sepiaImage = [self themeImageWithName:@"theme_color_sepia" selected:valueIndex == 1];
UIImage *mediumImage = [self themeImageWithName:@"theme_color_medium" selected:valueIndex == 2];
UIImage *darkImage = [self themeImageWithName:@"theme_color_dark" selected:valueIndex == 3];
[segmentedControl insertSegmentWithImage:lightImage atIndex:0 animated: NO];
[segmentedControl insertSegmentWithImage:sepiaImage atIndex:1 animated: NO];
[segmentedControl insertSegmentWithImage:mediumImage atIndex:2 animated: NO];
[segmentedControl insertSegmentWithImage:darkImage atIndex:3 animated: NO];
UIGraphicsBeginImageContextWithOptions(CGSizeMake(1, segmentedControl.frame.size.height), NO, 0.0);
UIImage *blankImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[segmentedControl setDividerImage:blankImage forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
segmentedControl.tintColor = [UIColor clearColor];
segmentedControl.backgroundColor = [UIColor clearColor];
segmentedControl.selectedSegmentIndex = valueIndex;
[cell addSubview:segmentedControl];
return cell;
}
- (IBAction)changeTheme:(UISegmentedControl *)sender {
NSArray *values = @[ThemeStyleLight, ThemeStyleSepia, ThemeStyleMedium, ThemeStyleDark];
[ThemeManager themeManager].theme = [values objectAtIndex:sender.selectedSegmentIndex];
self.menuTableView.backgroundColor = UIColorFromRGB(0xECEEEA);
self.menuTableView.separatorColor = UIColorFromRGB(0x909090);
[self.menuTableView reloadData];
}
- (UITableViewCell *)makeSegmentedTableCellForItem:(NSDictionary *)item forRow:(NSUInteger)row {
UITableViewCell *cell = [UITableViewCell new];
cell.frame = CGRectMake(0.0, 0.0, 240.0, kMenuOptionHeight);
@ -150,15 +237,19 @@ NSString * const MenuHandler = @"handler";
[presentedViewController dismissViewControllerAnimated:YES completion:nil];
}
self.modalPresentationStyle = UIModalPresentationPopover;
UINavigationController *embeddedNavController = [[UINavigationController alloc] initWithRootViewController:self];
UIPopoverPresentationController *popoverPresentationController = self.popoverPresentationController;
embeddedNavController.navigationBarHidden = YES;
embeddedNavController.modalPresentationStyle = UIModalPresentationPopover;
embeddedNavController.delegate = self;
UIPopoverPresentationController *popoverPresentationController = embeddedNavController.popoverPresentationController;
popoverPresentationController.delegate = self;
popoverPresentationController.backgroundColor = UIColorFromRGB(NEWSBLUR_WHITE_COLOR);
popoverPresentationController.permittedArrowDirections = UIPopoverArrowDirectionUp;
popoverPresentationController.barButtonItem = barButtonItem;
[navigationController presentViewController:self animated:YES completion:nil];
[navigationController presentViewController:embeddedNavController animated:YES completion:nil];
}
#pragma mark - Table view data source
@ -170,7 +261,9 @@ NSString * const MenuHandler = @"handler";
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSDictionary *item = self.items[indexPath.row];
if (item[MenuSegmentTitles]) {
if (item[MenuThemeSegment]) {
return [self makeThemeSegmentedTableCell];
} else if (item[MenuSegmentTitles]) {
return [self makeSegmentedTableCellForItem:item forRow:indexPath.row];
} else {
static NSString *CellIndentifier = @"MenuTableCell";
@ -251,4 +344,10 @@ NSString * const MenuHandler = @"handler";
return UIModalPresentationNone;
}
#pragma mark - UINavigationControllerDelegate
- (void)navigationController:(UINavigationController *)navController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
[navController setNavigationBarHidden:viewController == self animated:YES];
}
@end

View file

@ -20,7 +20,6 @@
#import "FeedTableCell.h"
#import "FeedDetailTableCell.h"
#import "FeedsMenuViewController.h"
#import "FeedDetailMenuViewController.h"
#import "FontSettingsViewController.h"
#import "AddSiteViewController.h"
#import "TrainerViewController.h"

View file

@ -25,7 +25,6 @@
@class DashboardViewController;
@class FeedsMenuViewController;
@class FeedDetailViewController;
@class FeedDetailMenuViewController;
@class MarkReadMenuViewController;
@class FirstTimeUserViewController;
@class FirstTimeUserAddSitesViewController;
@ -77,7 +76,6 @@ SFSafariViewControllerDelegate> {
NewsBlurViewController *feedsViewController;
FeedsMenuViewController *feedsMenuViewController;
FeedDetailViewController *feedDetailViewController;
FeedDetailMenuViewController *feedDetailMenuViewController;
FriendsListViewController *friendsListViewController;
FontSettingsViewController *fontSettingsViewController;
@ -175,7 +173,6 @@ SFSafariViewControllerDelegate> {
@property (nonatomic) IBOutlet NewsBlurViewController *feedsViewController;
@property (nonatomic) IBOutlet FeedsMenuViewController *feedsMenuViewController;
@property (nonatomic) IBOutlet FeedDetailViewController *feedDetailViewController;
@property (nonatomic) IBOutlet FeedDetailMenuViewController *feedDetailMenuViewController;
@property (nonatomic, strong) UINavigationController *feedDetailMenuNavigationController;
@property (nonatomic) IBOutlet FriendsListViewController *friendsListViewController;
@property (nonatomic) IBOutlet StoryDetailViewController *storyDetailViewController;

View file

@ -12,7 +12,6 @@
#import "DashboardViewController.h"
#import "MarkReadMenuViewController.h"
#import "FeedsMenuViewController.h"
#import "FeedDetailMenuViewController.h"
#import "StoryDetailViewController.h"
#import "StoryPageControl.h"
#import "FirstTimeUserViewController.h"
@ -99,7 +98,6 @@
@synthesize feedsViewController;
@synthesize feedsMenuViewController;
@synthesize feedDetailViewController;
@synthesize feedDetailMenuViewController;
@synthesize friendsListViewController;
@synthesize fontSettingsViewController;
@synthesize storyDetailViewController;
@ -1936,7 +1934,7 @@
}
- (void)navigationController:(UINavigationController *)_navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
if ([viewController isKindOfClass:[SFSafariViewController class]] || [viewController isKindOfClass:[FontSettingsViewController class]] || [viewController isKindOfClass:[feedDetailMenuViewController class]]) {
if ([viewController isKindOfClass:[SFSafariViewController class]] || [viewController isKindOfClass:[FontSettingsViewController class]]) {
[_navigationController setNavigationBarHidden:YES animated:YES];
} else {
[_navigationController setNavigationBarHidden:NO animated:YES];
@ -1961,15 +1959,6 @@
return _fontSettingsNavigationController;
}
- (UINavigationController *)feedDetailMenuNavigationController {
if (!_feedDetailMenuNavigationController) {
self.feedDetailMenuNavigationController = [[UINavigationController alloc] initWithRootViewController:self.feedDetailMenuViewController];
self.feedDetailMenuNavigationController.delegate = self;
}
return _feedDetailMenuNavigationController;
}
- (void)closeOriginalStory {
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
[self.masterContainerViewController transitionFromOriginalView];

View file

@ -15,7 +15,6 @@
#import "FeedTableCell.h"
#import "DashboardViewController.h"
#import "FeedsMenuViewController.h"
#import "FeedDetailMenuViewController.h"
#import "FeedDetailViewController.h"
#import "UserProfileViewController.h"
#import "StoryDetailViewController.h"

View file

@ -56,6 +56,7 @@
@property (nonatomic, readwrite) BOOL isSavedView;
@property (nonatomic, readwrite) BOOL isReadView;
@property (nonatomic, readwrite) BOOL transferredFromDashboard;
@property (nonatomic, readwrite) BOOL showHiddenStories;
@property (nonatomic, readwrite) BOOL inSearch;
@property (nonatomic) NSString *searchQuery;

View file

@ -114,7 +114,9 @@
NSDictionary *story = [self.activeFeedStories objectAtIndex:i];
NSInteger score = [NewsBlurAppDelegate computeStoryScore:[story objectForKey:@"intelligence"]];
BOOL want = NO;
if (self.appDelegate.isSavedStoriesIntelligenceMode) {
if (self.showHiddenStories) {
want = YES;
} else if (self.appDelegate.isSavedStoriesIntelligenceMode) {
want = [story[@"starred"] boolValue];
} else {
want = score >= appDelegate.selectedIntelligence || [[story objectForKey:@"sticky"] boolValue];

View file

@ -581,8 +581,6 @@
FFDE35CC161B8F870034BFDE /* FolderTitleView.m in Sources */ = {isa = PBXBuildFile; fileRef = FFDE35CB161B8F870034BFDE /* FolderTitleView.m */; };
FFDE35D2161B9E600034BFDE /* disclosure_border.png in Resources */ = {isa = PBXBuildFile; fileRef = FFDE35D1161B9E600034BFDE /* disclosure_border.png */; };
FFDE35DA161D12250034BFDE /* UnreadCountView.m in Sources */ = {isa = PBXBuildFile; fileRef = FFDE35D9161D12250034BFDE /* UnreadCountView.m */; };
FFDE35EA162799B90034BFDE /* FeedDetailMenuViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = FFDE35E9162799B90034BFDE /* FeedDetailMenuViewController.m */; };
FFDE35ED1627A1C40034BFDE /* FeedDetailMenuViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = FFDE35EC1627A1C40034BFDE /* FeedDetailMenuViewController.xib */; };
FFE5322F144C8AC300ACFDE0 /* Utilities.m in Sources */ = {isa = PBXBuildFile; fileRef = FFE5322E144C8AC300ACFDE0 /* Utilities.m */; };
FFE816AB17E280BD008AF4B0 /* ftux_tree.png in Resources */ = {isa = PBXBuildFile; fileRef = FFE816AA17E280BD008AF4B0 /* ftux_tree.png */; };
FFE816AD17E29D71008AF4B0 /* big_world_white.png in Resources */ = {isa = PBXBuildFile; fileRef = FFE816AC17E29D71008AF4B0 /* big_world_white.png */; };
@ -1412,9 +1410,6 @@
FFDE35D1161B9E600034BFDE /* disclosure_border.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = disclosure_border.png; sourceTree = "<group>"; };
FFDE35D8161D12250034BFDE /* UnreadCountView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UnreadCountView.h; sourceTree = "<group>"; };
FFDE35D9161D12250034BFDE /* UnreadCountView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UnreadCountView.m; sourceTree = "<group>"; };
FFDE35E8162799B90034BFDE /* FeedDetailMenuViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FeedDetailMenuViewController.h; sourceTree = "<group>"; };
FFDE35E9162799B90034BFDE /* FeedDetailMenuViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FeedDetailMenuViewController.m; sourceTree = "<group>"; };
FFDE35EC1627A1C40034BFDE /* FeedDetailMenuViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = FeedDetailMenuViewController.xib; 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>"; };
FFE816AA17E280BD008AF4B0 /* ftux_tree.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ftux_tree.png; sourceTree = "<group>"; };
@ -1779,8 +1774,6 @@
787A0CD911CE65330056422D /* FeedDetailViewController.m */,
7843F50311EEB1A000675F64 /* FeedDetailTableCell.h */,
7843F50411EEB1A000675F64 /* FeedDetailTableCell.m */,
FFDE35E8162799B90034BFDE /* FeedDetailMenuViewController.h */,
FFDE35E9162799B90034BFDE /* FeedDetailMenuViewController.m */,
FF2D8CE214893BBF00057B80 /* MoveSiteViewController.h */,
FF2D8CE314893BBF00057B80 /* MoveSiteViewController.m */,
FF5ACC221DE5F0C000FBD044 /* NotificationsViewController.h */,
@ -2207,7 +2200,6 @@
17432C7B1C533E89003F8FD6 /* MenuViewController.xib */,
17432C791C533DCC003F8FD6 /* FeedChooserViewController.xib */,
17CBD3BB1BF66B07003FCCAE /* MarkReadMenuViewController.xib */,
FFDE35EC1627A1C40034BFDE /* FeedDetailMenuViewController.xib */,
43763AD0158F90B100B3DBE2 /* FontSettingsViewController.xib */,
17EB50611BE46BB00021358B /* FontListViewController.xib */,
43B8F01C156603170008733D /* LoginViewController.xib */,
@ -2991,7 +2983,6 @@
FF21B1171C8221E20053938A /* disclosure_border_sepia@2x.png in Resources */,
FF546DF9160298E500948020 /* fleuron@2x.png in Resources */,
FFDE35D2161B9E600034BFDE /* disclosure_border.png in Resources */,
FFDE35ED1627A1C40034BFDE /* FeedDetailMenuViewController.xib in Resources */,
FF83FF181FB54693008DAC0F /* g_icn_search_black.png in Resources */,
FF03B00219F881380063002A /* ARChromeActivity@3x~ipad.png in Resources */,
17C5BA6E1CA39EA400F5961C /* unread_yellow_icn.png in Resources */,
@ -3367,7 +3358,6 @@
FFDE35CC161B8F870034BFDE /* FolderTitleView.m in Sources */,
E1C44B0B200147ED002128AD /* StoryTitleAttributedString.m in Sources */,
FFDE35DA161D12250034BFDE /* UnreadCountView.m in Sources */,
FFDE35EA162799B90034BFDE /* FeedDetailMenuViewController.m in Sources */,
FF34FD621E9D93CB0062F8ED /* IASKMultipleValueSelection.m in Sources */,
FF4130A3162E10CF00DDB6A7 /* MenuTableViewCell.m in Sources */,
17432C7F1C533FBC003F8FD6 /* MenuViewController.m in Sources */,

View file

@ -1,11 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="3.0" toolsVersion="14460.31" targetRuntime="iOS.CocoaTouch.iPad" propertyAccessControl="none" colorMatched="YES">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="iOS.CocoaTouch.iPad" propertyAccessControl="none" colorMatched="YES">
<device id="ipad9_7" orientation="portrait">
<adaptation id="fullscreen"/>
</device>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14460.20"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14490.49"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
@ -19,7 +19,6 @@
<connections>
<outlet property="addSiteViewController" destination="121" id="127"/>
<outlet property="dashboardViewController" destination="238" id="239"/>
<outlet property="feedDetailMenuViewController" destination="278" id="280"/>
<outlet property="feedDetailViewController" destination="51" id="91"/>
<outlet property="feedsMenuViewController" destination="162" id="163"/>
<outlet property="feedsViewController" destination="10" id="15"/>
@ -107,13 +106,6 @@
<outlet property="appDelegate" destination="3" id="281"/>
</connections>
</viewController>
<viewController id="278" customClass="FeedDetailMenuViewController">
<extendedEdge key="edgesForExtendedLayout"/>
<simulatedStatusBarMetrics key="simulatedStatusBarMetrics" statusBarStyle="blackOpaque"/>
<connections>
<outlet property="appDelegate" destination="3" id="279"/>
</connections>
</viewController>
<viewController restorationIdentifier="FeedDetailView" nibName="FeedDetailViewController" id="51" customClass="FeedDetailViewController">
<extendedEdge key="edgesForExtendedLayout"/>
<simulatedStatusBarMetrics key="simulatedStatusBarMetrics" statusBarStyle="blackOpaque"/>

View file

@ -1,139 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="14460.31" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" colorMatched="YES">
<device id="retina4_7" orientation="portrait">
<adaptation id="fullscreen"/>
</device>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14460.20"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="FeedDetailMenuViewController">
<connections>
<outlet property="fontSizeSegment" destination="bWr-qv-pDn" id="fcF-wf-yty"/>
<outlet property="imageSizeSegment" destination="XGc-Fp-10c" id="cvr-6z-2bb"/>
<outlet property="infrequentSegmentedControl" destination="wTg-kB-yYa" id="9s1-Eu-iT5"/>
<outlet property="menuTableView" destination="3" id="15"/>
<outlet property="orderSegmentedControl" destination="18" id="20"/>
<outlet property="previewSizeSegment" destination="YDG-1N-Pky" id="tti-11-cI6"/>
<outlet property="readFilterSegmentedControl" destination="19" id="21"/>
<outlet property="themeSegmentedControl" destination="KEQ-LR-Qwh" id="VCu-7n-52C"/>
<outlet property="view" destination="1" id="16"/>
</connections>
</placeholder>
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
<view contentMode="scaleToFill" id="1">
<rect key="frame" x="0.0" y="0.0" width="320" height="460"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<tableView clipsSubviews="YES" contentMode="scaleToFill" bounces="NO" scrollEnabled="NO" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" id="3">
<rect key="frame" x="0.0" y="0.0" width="320" height="460"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<connections>
<outlet property="dataSource" destination="-1" id="12"/>
<outlet property="delegate" destination="-1" id="13"/>
</connections>
</tableView>
<segmentedControl opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="bar" selectedSegmentIndex="0" id="19">
<rect key="frame" x="43" y="252" width="159" height="30"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
<segments>
<segment title="ALL STORIES"/>
<segment title="UNREAD ONLY"/>
</segments>
<connections>
<action selector="changeReadFilter:" destination="-1" eventType="valueChanged" id="22"/>
</connections>
</segmentedControl>
<segmentedControl opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="bar" selectedSegmentIndex="0" id="18">
<rect key="frame" x="43" y="215" width="159" height="30"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
<segments>
<segment title="NEWEST FIRST"/>
<segment title="OLDEST"/>
</segments>
<connections>
<action selector="changeOrder:" destination="-1" eventType="valueChanged" id="23"/>
</connections>
</segmentedControl>
<segmentedControl opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="bar" selectedSegmentIndex="2" id="KEQ-LR-Qwh">
<rect key="frame" x="43" y="289" width="234" height="29"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
<segments>
<segment title="" image="theme_color_light.png"/>
<segment title="" image="theme_color_sepia.png"/>
<segment title="" image="theme_color_medium.png"/>
<segment title="" image="theme_color_dark.png"/>
</segments>
<connections>
<action selector="changeTheme:" destination="-1" eventType="valueChanged" id="XZv-tp-Ovk"/>
</connections>
</segmentedControl>
<segmentedControl opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="bar" selectedSegmentIndex="2" id="bWr-qv-pDn">
<rect key="frame" x="61" y="325" width="159" height="28"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
<segments>
<segment title="11pt"/>
<segment title="12pt"/>
<segment title="14pt"/>
<segment title="16pt"/>
<segment title="18pt"/>
</segments>
<connections>
<action selector="changeFontSize:" destination="-1" eventType="valueChanged" id="Aix-Az-zOq"/>
</connections>
</segmentedControl>
<segmentedControl opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="bar" selectedSegmentIndex="2" id="XGc-Fp-10c">
<rect key="frame" x="80" y="215" width="159" height="29"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
<segments>
<segment title="NO IMAGE"/>
<segment title="SMALL"/>
<segment title="LARGE"/>
</segments>
<connections>
<action selector="changeImageSize:" destination="-1" eventType="valueChanged" id="hB6-bC-oPu"/>
</connections>
</segmentedControl>
<segmentedControl opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="bar" selectedSegmentIndex="2" id="YDG-1N-Pky">
<rect key="frame" x="80" y="215" width="159" height="29"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
<segments>
<segment title="TITLE ONLY"/>
<segment title="1"/>
<segment title="2"/>
<segment title="3"/>
</segments>
<connections>
<action selector="changePreviewSize:" destination="-1" eventType="valueChanged" id="qgZ-FG-KU6"/>
</connections>
</segmentedControl>
<segmentedControl opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="bar" selectedSegmentIndex="2" id="wTg-kB-yYa">
<rect key="frame" x="86" y="360" width="159" height="29"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
<segments>
<segment title="5"/>
<segment title="15"/>
<segment title="30"/>
<segment title="60"/>
<segment title="90"/>
</segments>
<connections>
<action selector="changeInfrequent:" destination="-1" eventType="valueChanged" id="zX1-WK-yLB"/>
</connections>
</segmentedControl>
</subviews>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="simulatedStatusBarMetrics"/>
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
</view>
</objects>
<resources>
<image name="theme_color_dark.png" width="32" height="32"/>
<image name="theme_color_light.png" width="32" height="32"/>
<image name="theme_color_medium.png" width="32" height="32"/>
<image name="theme_color_sepia.png" width="32" height="32"/>
</resources>
</document>

View file

@ -1,11 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="14460.31" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" colorMatched="YES">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" colorMatched="YES">
<device id="retina4_7" orientation="portrait">
<adaptation id="fullscreen"/>
</device>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14460.20"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14490.49"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
@ -19,7 +19,6 @@
<connections>
<outlet property="addSiteViewController" destination="121" id="127"/>
<outlet property="dashboardViewController" destination="177" id="179"/>
<outlet property="feedDetailMenuViewController" destination="165" id="167"/>
<outlet property="feedDetailViewController" destination="51" id="91"/>
<outlet property="feedsMenuViewController" destination="128" id="129"/>
<outlet property="feedsViewController" destination="10" id="15"/>
@ -55,12 +54,6 @@
<outlet property="appDelegate" destination="3" id="168"/>
</connections>
</viewController>
<viewController id="165" customClass="FeedDetailMenuViewController">
<extendedEdge key="edgesForExtendedLayout"/>
<connections>
<outlet property="appDelegate" destination="3" id="166"/>
</connections>
</viewController>
<viewController restorationIdentifier="FeedDetailView" nibName="FeedDetailViewController" id="51" customClass="FeedDetailViewController">
<extendedEdge key="edgesForExtendedLayout"/>
<connections>