mirror of
https://github.com/viq/NewsBlur.git
synced 2025-09-18 21:43:31 +00:00
Eureka, got a third 'previous' page in the mix for story page controls on iOS. This could be it. No bounce, no redraw, and flawless movement.
This commit is contained in:
parent
e06310f070
commit
68d4d2786f
7 changed files with 125 additions and 94 deletions
|
@ -583,6 +583,7 @@
|
|||
// change UIWebView
|
||||
[storyPageControl.currentPage changeWebViewWidth];
|
||||
[storyPageControl.nextPage changeWebViewWidth];
|
||||
[storyPageControl.previousPage changeWebViewWidth];
|
||||
}
|
||||
|
||||
- (void)calibrateStoryTitles {
|
||||
|
|
|
@ -68,7 +68,7 @@
|
|||
|
||||
self.webView.scalesPageToFit = YES;
|
||||
self.webView.multipleTouchEnabled = NO;
|
||||
self.pageIndex = -1;
|
||||
self.pageIndex = -2;
|
||||
}
|
||||
|
||||
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
|
||||
|
@ -113,6 +113,11 @@
|
|||
}
|
||||
|
||||
- (void)drawStory {
|
||||
if (self.activeStoryId == [self.activeStory objectForKey:@"id"]) {
|
||||
NSLog(@"Already drawn story. Ignoring.");
|
||||
// return;
|
||||
}
|
||||
|
||||
NSString *shareBarString = [self getShareBar];
|
||||
NSString *commentString = [self getComments];
|
||||
NSString *headerString;
|
||||
|
@ -282,6 +287,8 @@
|
|||
[self.webView.scrollView addObserver:self forKeyPath:@"contentOffset"
|
||||
options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld
|
||||
context:nil];
|
||||
|
||||
self.activeStoryId = [self.activeStory objectForKey:@"id"];
|
||||
}
|
||||
|
||||
- (void)showStory {
|
||||
|
@ -290,10 +297,12 @@
|
|||
}
|
||||
|
||||
- (void)clearStory {
|
||||
self.activeStoryId = nil;
|
||||
[self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"about:blank"]]];
|
||||
}
|
||||
|
||||
- (void)hideStory {
|
||||
self.activeStoryId = nil;
|
||||
self.webView.hidden = YES;
|
||||
self.noStorySelectedLabel.hidden = NO;
|
||||
}
|
||||
|
@ -745,7 +754,6 @@
|
|||
} else {
|
||||
self.activeStory = appDelegate.activeStory;
|
||||
}
|
||||
self.activeStoryId = [self.activeStory objectForKey:@"id"];
|
||||
}
|
||||
|
||||
- (BOOL)webView:(UIWebView *)webView
|
||||
|
|
|
@ -37,6 +37,7 @@
|
|||
@property (nonatomic) IBOutlet NewsBlurAppDelegate *appDelegate;
|
||||
@property (nonatomic) StoryDetailViewController *currentPage;
|
||||
@property (nonatomic) StoryDetailViewController *nextPage;
|
||||
@property (nonatomic) StoryDetailViewController *previousPage;
|
||||
@property (nonatomic, strong) IBOutlet UIScrollView *scrollView;
|
||||
@property (nonatomic, strong) IBOutlet UIPageControl *pageControl;
|
||||
|
||||
|
@ -57,6 +58,7 @@
|
|||
@property (readwrite) CGFloat inTouchMove;
|
||||
@property (assign) BOOL isDraggingScrollview;
|
||||
@property (nonatomic) MBProgressHUD *storyHUD;
|
||||
@property (nonatomic) int scrollingToPage;
|
||||
|
||||
@property (nonatomic, strong) WEPopoverController *popoverController;
|
||||
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
@implementation StoryPageControl
|
||||
|
||||
@synthesize appDelegate;
|
||||
@synthesize currentPage, nextPage;
|
||||
@synthesize currentPage, nextPage, previousPage;
|
||||
@synthesize progressView;
|
||||
@synthesize progressViewContainer;
|
||||
@synthesize toolbar;
|
||||
|
@ -46,7 +46,7 @@
|
|||
@synthesize inTouchMove;
|
||||
@synthesize isDraggingScrollview;
|
||||
@synthesize storyHUD;
|
||||
|
||||
@synthesize scrollingToPage;
|
||||
|
||||
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
|
||||
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
|
||||
|
@ -59,12 +59,18 @@
|
|||
- (void)viewDidLoad {
|
||||
currentPage = [[StoryDetailViewController alloc] initWithNibName:@"StoryDetailViewController" bundle:nil];
|
||||
nextPage = [[StoryDetailViewController alloc] initWithNibName:@"StoryDetailViewController" bundle:nil];
|
||||
previousPage = [[StoryDetailViewController alloc] initWithNibName:@"StoryDetailViewController" bundle:nil];
|
||||
|
||||
currentPage.appDelegate = appDelegate;
|
||||
nextPage.appDelegate = appDelegate;
|
||||
previousPage.appDelegate = appDelegate;
|
||||
currentPage.view.frame = self.scrollView.frame;
|
||||
nextPage.view.frame = self.scrollView.frame;
|
||||
previousPage.view.frame = self.scrollView.frame;
|
||||
|
||||
[self.scrollView addSubview:currentPage.view];
|
||||
[self.scrollView addSubview:nextPage.view];
|
||||
[self.scrollView addSubview:previousPage.view];
|
||||
[self.scrollView setPagingEnabled:YES];
|
||||
[self.scrollView setScrollEnabled:YES];
|
||||
[self.scrollView setShowsHorizontalScrollIndicator:NO];
|
||||
|
@ -137,6 +143,8 @@
|
|||
[self setNextPreviousButtons];
|
||||
[appDelegate adjustStoryDetailWebView];
|
||||
|
||||
previousPage.view.hidden = YES;
|
||||
|
||||
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
|
||||
if (!appDelegate.isSocialView) {
|
||||
UIImage *titleImage;
|
||||
|
@ -188,6 +196,7 @@
|
|||
// self.subscribeButton.tintColor = UIColorFromRGB(0x0a6720);
|
||||
}
|
||||
appDelegate.isTryFeedView = NO;
|
||||
previousPage.view.hidden = NO;
|
||||
}
|
||||
|
||||
- (void)transitionFromFeedDetail {
|
||||
|
@ -200,24 +209,30 @@
|
|||
}
|
||||
|
||||
- (void)resetPages {
|
||||
NSLog(@"resetPages");
|
||||
[currentPage clearStory];
|
||||
[nextPage clearStory];
|
||||
// [previousPage clearStory];
|
||||
|
||||
[currentPage hideStory];
|
||||
[nextPage hideStory];
|
||||
// [previousPage hideStory];
|
||||
|
||||
currentPage.pageIndex = -1;
|
||||
nextPage.pageIndex = -1;
|
||||
currentPage.pageIndex = -2;
|
||||
nextPage.pageIndex = -2;
|
||||
previousPage.pageIndex = -2;
|
||||
|
||||
self.scrollView.contentOffset = CGPointMake(0, 0);
|
||||
}
|
||||
|
||||
- (void)refreshPages {
|
||||
NSLog(@"refreshPages");
|
||||
[self resizeScrollView];
|
||||
[appDelegate adjustStoryDetailWebView];
|
||||
int pageIndex = currentPage.pageIndex;
|
||||
currentPage.pageIndex = -1;
|
||||
nextPage.pageIndex = -1;
|
||||
currentPage.pageIndex = -2;
|
||||
nextPage.pageIndex = -2;
|
||||
previousPage.pageIndex = -2;
|
||||
[self changePage:pageIndex animated:NO];
|
||||
[MBProgressHUD hideHUDForView:self.view animated:YES];
|
||||
// self.scrollView.contentOffset = CGPointMake(self.scrollView.frame.size.width * currentPage.pageIndex, 0);
|
||||
|
@ -263,23 +278,29 @@
|
|||
#pragma mark -
|
||||
#pragma mark Side scroll view
|
||||
|
||||
- (void)applyNewIndex:(NSInteger)newIndex pageController:(StoryDetailViewController *)pageController
|
||||
{
|
||||
- (void)applyNewIndex:(NSInteger)newIndex pageController:(StoryDetailViewController *)pageController {
|
||||
NSInteger pageCount = [[appDelegate activeFeedStoryLocations] count];
|
||||
BOOL outOfBounds = newIndex >= pageCount || newIndex < 0;
|
||||
|
||||
if (!outOfBounds) {
|
||||
// NSLog(@"Apply index was: %d, now %d", pageController.pageIndex, newIndex);
|
||||
CGRect pageFrame = pageController.view.frame;
|
||||
pageFrame.origin.y = 0;
|
||||
pageFrame.origin.x = self.scrollView.frame.size.width * newIndex;
|
||||
pageFrame.size.height = self.scrollView.frame.size.height;
|
||||
pageController.view.frame = pageFrame;
|
||||
} else {
|
||||
// NSLog(@"Out of bounds: was %d, now %d", pageController.pageIndex, newIndex);
|
||||
CGRect pageFrame = pageController.view.frame;
|
||||
pageFrame.origin.y = self.scrollView.frame.size.height / 2;
|
||||
pageFrame.origin.x = self.scrollView.frame.size.width * newIndex;
|
||||
pageFrame.origin.y = self.scrollView.frame.size.height;
|
||||
pageFrame.size.height = 0;
|
||||
pageController.view.frame = pageFrame;
|
||||
}
|
||||
|
||||
int wasIndex = pageController.pageIndex;
|
||||
pageController.pageIndex = newIndex;
|
||||
NSLog(@"Applied Index: Was %d, now %d (%d/%d/%d)", wasIndex, newIndex, previousPage.pageIndex, currentPage.pageIndex, nextPage.pageIndex);
|
||||
|
||||
if (newIndex >= [appDelegate.activeFeedStoryLocations count]) {
|
||||
if (self.appDelegate.feedDetailViewController.feedPage < 50 &&
|
||||
|
@ -296,55 +317,71 @@
|
|||
// animated:YES];
|
||||
// [appDelegate hideStoryDetailView];
|
||||
}
|
||||
} else {
|
||||
} else if (!outOfBounds) {
|
||||
int location = [appDelegate indexFromLocation:pageController.pageIndex];
|
||||
[pageController setActiveStoryAtIndex:location];
|
||||
[pageController initStory];
|
||||
[pageController drawStory];
|
||||
[pageController clearStory];
|
||||
if (self.isDraggingScrollview || abs(newIndex - self.scrollingToPage) <= 1) {
|
||||
[pageController initStory];
|
||||
[pageController drawStory];
|
||||
} else {
|
||||
NSLog(@"Skipping drawing %d (waiting for %d)", newIndex, self.scrollingToPage);
|
||||
}
|
||||
} else if (outOfBounds) {
|
||||
[pageController clearStory];
|
||||
}
|
||||
|
||||
[self resizeScrollView];
|
||||
[self.loadingIndicator stopAnimating];
|
||||
|
||||
|
||||
}
|
||||
|
||||
- (void)scrollViewDidScroll:(UIScrollView *)sender
|
||||
{
|
||||
- (void)scrollViewDidScroll:(UIScrollView *)sender {
|
||||
[sender setContentOffset:CGPointMake(sender.contentOffset.x, 0)];
|
||||
CGFloat pageWidth = self.scrollView.frame.size.width;
|
||||
float fractionalPage = self.scrollView.contentOffset.x / pageWidth;
|
||||
|
||||
NSInteger lowerNumber = floor(fractionalPage);
|
||||
NSInteger upperNumber = lowerNumber + 1;
|
||||
NSInteger previousNumber = lowerNumber - 1;
|
||||
|
||||
if (lowerNumber == currentPage.pageIndex)
|
||||
{
|
||||
if (upperNumber != nextPage.pageIndex)
|
||||
{
|
||||
// NSLog(@"Did Scroll: %f = %d (%d/%d/%d)", fractionalPage, lowerNumber, previousPage.pageIndex, currentPage.pageIndex, nextPage.pageIndex);
|
||||
if (lowerNumber == currentPage.pageIndex) {
|
||||
if (upperNumber != nextPage.pageIndex) {
|
||||
NSLog(@"Next was %d, now %d (A)", nextPage.pageIndex, upperNumber);
|
||||
[self applyNewIndex:upperNumber pageController:nextPage];
|
||||
}
|
||||
}
|
||||
else if (upperNumber == currentPage.pageIndex)
|
||||
{
|
||||
if (lowerNumber != nextPage.pageIndex)
|
||||
{
|
||||
[self applyNewIndex:lowerNumber pageController:nextPage];
|
||||
if (previousNumber != previousPage.pageIndex) {
|
||||
NSLog(@"Prev was %d, now %d (A)", previousPage.pageIndex, previousNumber);
|
||||
[self applyNewIndex:previousNumber pageController:previousPage];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (lowerNumber == nextPage.pageIndex)
|
||||
{
|
||||
[self applyNewIndex:upperNumber pageController:currentPage];
|
||||
} else if (upperNumber == currentPage.pageIndex) {
|
||||
// Going backwards
|
||||
if (lowerNumber != previousPage.pageIndex) {
|
||||
NSLog(@"Prev was %d, now %d (B)", previousPage.pageIndex, previousNumber);
|
||||
[self applyNewIndex:lowerNumber pageController:previousPage];
|
||||
}
|
||||
else if (upperNumber == nextPage.pageIndex)
|
||||
{
|
||||
[self setStoryFromScroll];
|
||||
} else {
|
||||
// Going forwards
|
||||
if (lowerNumber == nextPage.pageIndex) {
|
||||
NSLog(@"Prev was %d, now %d (C1)", previousPage.pageIndex, previousNumber);
|
||||
// [self applyNewIndex:upperNumber pageController:nextPage];
|
||||
// [self applyNewIndex:lowerNumber pageController:currentPage];
|
||||
[self applyNewIndex:previousNumber pageController:previousPage];
|
||||
} else if (upperNumber == nextPage.pageIndex) {
|
||||
NSLog(@"Prev was %d, now %d (C2)", previousPage.pageIndex, previousNumber);
|
||||
[self applyNewIndex:lowerNumber pageController:currentPage];
|
||||
}
|
||||
else
|
||||
{
|
||||
[self applyNewIndex:previousNumber pageController:previousPage];
|
||||
} else {
|
||||
NSLog(@"Next was %d, now %d (C3)", nextPage.pageIndex, upperNumber);
|
||||
NSLog(@"Prev was %d, now %d (C3)", previousPage.pageIndex, previousNumber);
|
||||
[self applyNewIndex:lowerNumber pageController:currentPage];
|
||||
[self applyNewIndex:upperNumber pageController:nextPage];
|
||||
// [self applyNewIndex:previousNumber pageController:previousPage];
|
||||
}
|
||||
[self setStoryFromScroll];
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -352,9 +389,18 @@
|
|||
self.isDraggingScrollview = YES;
|
||||
}
|
||||
|
||||
- (void)scrollViewDidEndDecelerating:(UIScrollView *)newScrollView
|
||||
{
|
||||
[self scrollViewDidEndScrollingAnimation:newScrollView];
|
||||
}
|
||||
|
||||
- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)newScrollView
|
||||
{
|
||||
self.isDraggingScrollview = NO;
|
||||
CGFloat pageWidth = self.scrollView.frame.size.width;
|
||||
float fractionalPage = self.scrollView.contentOffset.x / pageWidth;
|
||||
NSInteger nearestNumber = lround(fractionalPage);
|
||||
self.scrollingToPage = nearestNumber;
|
||||
[self setStoryFromScroll];
|
||||
}
|
||||
|
||||
|
@ -370,12 +416,6 @@
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
- (void)scrollViewDidEndDecelerating:(UIScrollView *)newScrollView
|
||||
{
|
||||
[self scrollViewDidEndScrollingAnimation:newScrollView];
|
||||
}
|
||||
|
||||
- (void)changePage:(NSInteger)pageIndex {
|
||||
[self changePage:pageIndex animated:YES];
|
||||
}
|
||||
|
@ -388,6 +428,8 @@
|
|||
frame.origin.x = frame.size.width * pageIndex;
|
||||
frame.origin.y = 0;
|
||||
|
||||
self.scrollingToPage = pageIndex;
|
||||
|
||||
if (self.scrollView.contentOffset.x == frame.origin.x) {
|
||||
[self applyNewIndex:pageIndex pageController:currentPage];
|
||||
[self setStoryFromScroll];
|
||||
|
@ -404,16 +446,27 @@
|
|||
float fractionalPage = self.scrollView.contentOffset.x / pageWidth;
|
||||
NSInteger nearestNumber = lround(fractionalPage);
|
||||
|
||||
if (currentPage.pageIndex != nearestNumber)
|
||||
{
|
||||
StoryDetailViewController *swapController = currentPage;
|
||||
if (currentPage.pageIndex < nearestNumber) {
|
||||
NSLog(@"Swap next into current, current into previous: %d / %d", currentPage.pageIndex, nearestNumber);
|
||||
StoryDetailViewController *swapCurrentController = currentPage;
|
||||
StoryDetailViewController *swapPreviousController = previousPage;
|
||||
currentPage = nextPage;
|
||||
nextPage = swapController;
|
||||
}
|
||||
previousPage = swapCurrentController;
|
||||
nextPage = swapPreviousController;
|
||||
} else if (currentPage.pageIndex > nearestNumber) {
|
||||
NSLog(@"Swap previous into current: %d / %d", currentPage.pageIndex, nearestNumber);
|
||||
StoryDetailViewController *swapCurrentController = currentPage;
|
||||
StoryDetailViewController *swapNextController = nextPage;
|
||||
currentPage = previousPage;
|
||||
nextPage = swapCurrentController;
|
||||
previousPage = swapNextController;
|
||||
}
|
||||
|
||||
NSLog(@"Set Story from scroll: %f = %d (%d/%d/%d)", fractionalPage, nearestNumber, previousPage.pageIndex, currentPage.pageIndex, nextPage.pageIndex);
|
||||
if (currentPage.pageIndex == -1) return;
|
||||
|
||||
nextPage.webView.scrollView.scrollsToTop = NO;
|
||||
previousPage.webView.scrollView.scrollsToTop = NO;
|
||||
currentPage.webView.scrollView.scrollsToTop = YES;
|
||||
self.scrollView.scrollsToTop = NO;
|
||||
|
||||
|
@ -436,13 +489,18 @@
|
|||
[self setNextPreviousButtons];
|
||||
[appDelegate changeActiveFeedDetailRow];
|
||||
|
||||
|
||||
if (self.currentPage.pageIndex != location) {
|
||||
NSLog(@"Updating Current: %d", location);
|
||||
[self applyNewIndex:location pageController:self.currentPage];
|
||||
}
|
||||
if (self.nextPage.pageIndex != location+1) {
|
||||
NSLog(@"Updating Next: %d", location+1);
|
||||
[self applyNewIndex:location+1 pageController:self.nextPage];
|
||||
}
|
||||
if (self.previousPage.pageIndex != location-1) {
|
||||
NSLog(@"Updating Previous: %d", location-1);
|
||||
[self applyNewIndex:location-1 pageController:self.previousPage];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)requestFailed:(ASIHTTPRequest *)request {
|
||||
|
@ -765,11 +823,13 @@
|
|||
- (void)setFontStyle:(NSString *)fontStyle {
|
||||
[self.currentPage setFontStyle:fontStyle];
|
||||
[self.nextPage setFontStyle:fontStyle];
|
||||
[self.previousPage setFontStyle:fontStyle];
|
||||
}
|
||||
|
||||
- (void)changeFontSize:(NSString *)fontSize {
|
||||
[self.currentPage changeFontSize:fontSize];
|
||||
[self.nextPage changeFontSize:fontSize];
|
||||
[self.previousPage changeFontSize:fontSize];
|
||||
}
|
||||
|
||||
- (void)showShareHUD:(NSString *)msg {
|
||||
|
@ -779,6 +839,7 @@
|
|||
self.storyHUD.margin = 20.0f;
|
||||
self.currentPage.noStorySelectedLabel.hidden = YES;
|
||||
self.nextPage.noStorySelectedLabel.hidden = YES;
|
||||
self.previousPage.noStorySelectedLabel.hidden = YES;
|
||||
}
|
||||
|
||||
#pragma mark -
|
||||
|
|
|
@ -1173,14 +1173,14 @@
|
|||
431B857415A1324200DCE497 /* Story */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
FF6A233016448E0700E15989 /* StoryPageControl.h */,
|
||||
FF6A233116448E0700E15989 /* StoryPageControl.m */,
|
||||
7842ECF511D44A530066CF9D /* StoryDetailViewController.h */,
|
||||
7842ECF611D44A530066CF9D /* StoryDetailViewController.m */,
|
||||
43763ACE158F90B100B3DBE2 /* FontSettingsViewController.h */,
|
||||
43763ACF158F90B100B3DBE2 /* FontSettingsViewController.m */,
|
||||
78095EC6128F30B500230C8E /* OriginalStoryViewController.h */,
|
||||
78095EC7128F30B500230C8E /* OriginalStoryViewController.m */,
|
||||
FF6A233016448E0700E15989 /* StoryPageControl.h */,
|
||||
FF6A233116448E0700E15989 /* StoryPageControl.m */,
|
||||
);
|
||||
name = Story;
|
||||
sourceTree = "<group>";
|
||||
|
|
|
@ -2,47 +2,6 @@
|
|||
<Bucket
|
||||
type = "1"
|
||||
version = "1.0">
|
||||
<FileBreakpoints>
|
||||
<FileBreakpoint
|
||||
shouldBeEnabled = "Yes"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "Classes/StoryPageControl.m"
|
||||
timestampString = "374533637.198323"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "835"
|
||||
endingLineNumber = "835"
|
||||
landmarkName = "-doNextStory"
|
||||
landmarkType = "5">
|
||||
</FileBreakpoint>
|
||||
<FileBreakpoint
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "Other Sources/MBProgressHUD.m"
|
||||
timestampString = "374190717.134082"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "105"
|
||||
endingLineNumber = "105"
|
||||
landmarkName = "+hideHUDForView:animated:"
|
||||
landmarkType = "5">
|
||||
</FileBreakpoint>
|
||||
<FileBreakpoint
|
||||
shouldBeEnabled = "Yes"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "Other Sources/MBProgressHUD.m"
|
||||
timestampString = "374190721.59204"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "115"
|
||||
endingLineNumber = "115"
|
||||
landmarkName = "+hideAllHUDsForView:animated:"
|
||||
landmarkType = "5">
|
||||
</FileBreakpoint>
|
||||
</FileBreakpoints>
|
||||
<SymbolicBreakpoints>
|
||||
<SymbolicBreakpoint
|
||||
shouldBeEnabled = "Yes"
|
||||
|
|
|
@ -15,8 +15,8 @@
|
|||
// #define BACKGROUND_REFRESH_SECONDS -5
|
||||
#define BACKGROUND_REFRESH_SECONDS -10*60
|
||||
|
||||
// #define NEWSBLUR_URL [NSString stringWithFormat:@"nb.local.com"]
|
||||
#define NEWSBLUR_URL [NSString stringWithFormat:@"www.newsblur.com"]
|
||||
#define NEWSBLUR_URL [NSString stringWithFormat:@"nb.local.com"]
|
||||
// #define NEWSBLUR_URL [NSString stringWithFormat:@"www.newsblur.com"]
|
||||
|
||||
#define NEWSBLUR_LINK_COLOR 0x405BA8
|
||||
#define NEWSBLUR_HIGHLIGHT_COLOR 0xd2e6fd
|
||||
|
|
Loading…
Add table
Reference in a new issue