adding highlights to login and other fixes

This commit is contained in:
Roy Yang 2012-08-07 17:24:55 -07:00
parent b01a8c08bf
commit 0ea600bbcf
22 changed files with 4543 additions and 5632 deletions

View file

@ -91,11 +91,11 @@
return 1;
}
UIImage *placeholder = [UIImage imageNamed:@"user"];
UIImage *placeholder = [UIImage imageNamed:@"user_dark"];
[self.faviconView setImageWithURL:[NSURL URLWithString:[[activity objectForKey:@"with_user"] objectForKey:@"photo_url"]]
placeholderImage:placeholder];
} else if ([category isEqualToString:@"sharedstory"]) {
UIImage *placeholder = [UIImage imageNamed:@"user"];
UIImage *placeholder = [UIImage imageNamed:@"user_dark"];
[self.faviconView setImageWithURL:[NSURL URLWithString:[userProfile objectForKey:@"photo_url"]]
placeholderImage:placeholder];
} else {

View file

@ -0,0 +1,32 @@
//
// AddSiteTableCell.h
// NewsBlur
//
// Created by Roy Yang on 8/7/12.
// Copyright (c) 2012 NewsBlur. All rights reserved.
//
#import "ABTableViewCell.h"
@interface AddSiteTableCell : ABTableViewCell {
NewsBlurAppDelegate *appDelegate;
NSString *siteTitle;
NSString *siteUrl;
NSString *siteSubscribers;
UIImage *siteFavicon;
UIColor *feedColorBar;
UIColor *feedColorBarTopBorder;
}
@property (nonatomic) NSString *siteTitle;
@property (nonatomic) NSString *siteUrl;
@property (nonatomic) NSString *siteSubscribers;
@property (nonatomic) UIImage *siteFavicon;
@property (nonatomic) UIColor *feedColorBar;
@property (nonatomic) UIColor *feedColorBarTopBorder;
@end

View file

@ -0,0 +1,154 @@
//
// AddSiteTableCell.m
// NewsBlur
//
// Created by Samuel Clay on 7/14/10.
// Copyright 2010 NewsBlur. All rights reserved.
//
#import "NewsBlurAppDelegate.h"
#import "AddSiteTableCell.h"
#import "ABTableViewCell.h"
#import "UIView+TKCategory.h"
#import "Utilities.h"
static UIFont *textFont = nil;
static UIFont *indicatorFont = nil;
@implementation AddSiteTableCell
@synthesize siteTitle;
@synthesize siteUrl;
@synthesize siteFavicon;
@synthesize feedColorBar;
@synthesize feedColorBarTopBorder;
@synthesize siteSubscribers;
#define leftMargin 39
#define rightMargin 18
+ (void)initialize {
if (self == [AddSiteTableCell class]) {
textFont = [UIFont boldSystemFontOfSize:18];
indicatorFont = [UIFont boldSystemFontOfSize:12];
}
}
- (void)drawContentView:(CGRect)r highlighted:(BOOL)highlighted {
int adjustForSocial = 3;
CGContextRef context = UIGraphicsGetCurrentContext();
CGRect rect = CGRectInset(r, 12, 12);
rect.size.width -= 18; // Scrollbar padding
// set the background color
UIColor *backgroundColor;
if (self.selected || self.highlighted) {
backgroundColor = UIColorFromRGB(0xd2e6fd);
} else {
backgroundColor = [UIColor whiteColor];
}
[backgroundColor set];
CGContextFillRect(context, r);
// set site title
UIColor *textColor;
UIFont *font;
font = [UIFont fontWithName:@"Helvetica-Bold" size:14];
textColor = UIColorFromRGB(0x606060);
if (self.selected || self.highlighted) {
textColor = UIColorFromRGB(0x686868); //0x686868
}
[textColor set];
[self.siteTitle
drawInRect:CGRectMake(leftMargin, 6, rect.size.width - rightMargin, 21)
withFont:font
lineBreakMode:UILineBreakModeTailTruncation
alignment:UITextAlignmentLeft];
textColor = UIColorFromRGB(0x333333);
font = [UIFont fontWithName:@"Helvetica-Bold" size:12];
if (self.selected || self.highlighted) {
textColor = UIColorFromRGB(0x686868);
}
[textColor set];
// url
// site subscribers
textColor = UIColorFromRGB(0x262c6c);
font = [UIFont fontWithName:@"Helvetica-Bold" size:10];
if (self.selected || self.highlighted) {
textColor = UIColorFromRGB(0x686868);
}
[textColor set];
[self.siteSubscribers
drawInRect:CGRectMake(leftMargin + (rect.size.width - rightMargin) / 2 - 10, 42 + adjustForSocial, (rect.size.width - rightMargin) / 2 + 10, 15.0)
withFont:font
lineBreakMode:UILineBreakModeTailTruncation
alignment:UITextAlignmentRight];
// feed bar
CGContextSetStrokeColor(context, CGColorGetComponents([self.feedColorBar CGColor]));
CGContextSetLineWidth(context, 10.0f);
CGContextBeginPath(context);
CGContextMoveToPoint(context, 5.0f, 1.0f);
CGContextAddLineToPoint(context, 5.0f, 81.0f);
CGContextStrokePath(context);
CGContextSetLineWidth(context, 1.0f);
if (self.highlighted || self.selected) {
// top border
UIColor *blue = UIColorFromRGB(0x6eadf5);
CGContextSetStrokeColor(context, CGColorGetComponents([blue CGColor]));
CGContextBeginPath(context);
CGContextMoveToPoint(context, 0, 0.5f);
CGContextAddLineToPoint(context, self.bounds.size.width, 0.5f);
CGContextStrokePath(context);
// bottom border
CGContextBeginPath(context);
CGContextMoveToPoint(context, 0, self.bounds.size.height - 0.5f);
CGContextAddLineToPoint(context, self.bounds.size.width, self.bounds.size.height - 0.5f);
CGContextStrokePath(context);
} else {
// top border
UIColor *gray = UIColorFromRGB(0xcccccc);
CGContextSetStrokeColor(context, CGColorGetComponents([gray CGColor]));
CGContextBeginPath(context);
CGContextMoveToPoint(context, 10.0f, 0.5f);
CGContextAddLineToPoint(context, self.bounds.size.width, 0.5f);
CGContextStrokePath(context);
// feed bar border
CGContextSetStrokeColor(context, CGColorGetComponents([feedColorBarTopBorder CGColor]));
CGContextBeginPath(context);
CGContextMoveToPoint(context, 0.0f, 0.5f);
CGContextAddLineToPoint(context, 10.0, 0.5f);
CGContextStrokePath(context);
}
// site favicon
[self.siteFavicon drawInRect:CGRectMake(18.0, 6.0, 16.0, 16.0)];
}
@end

View file

@ -9,7 +9,9 @@
#import "NewsBlurAppDelegate.h"
#import "ASIHTTPRequest.h"
#import "FindSitesViewController.h"
#import "AddSiteViewController.h"
#import "MBProgressHUD.h"
#import "AddSiteTableCell.h"
#define FIND_SITES_ROW_HEIGHT 74;
@ -160,17 +162,17 @@
NSString *responseString = [request responseString];
NSData *responseData= [responseString dataUsingEncoding:NSUTF8StringEncoding];
NSError *error;
NSArray *results = [NSJSONSerialization
NSDictionary *results = [NSJSONSerialization
JSONObjectWithData:responseData
options:kNilOptions
error:&error];
// int statusCode = [request responseStatusCode];
self.sites = results;
self.sites = [results objectForKey:@"feeds"];
[self.sitesTable reloadData];
NSString *originalSearchTerm = @"";
NSString *originalSearchTerm = [NSString stringWithFormat:@"%@", [results objectForKey:@"term"]];
if ([self.searchTerm_ isEqualToString:originalSearchTerm]) {
[self.loadingIndicator_ stopAnimating];
}
@ -201,16 +203,77 @@
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
if (self.inSearch_){
int siteCount = [self.sites count];
if (siteCount == 0) {
return 3;
}
return siteCount;
} else {
return 0;
return 3;
}
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
CGRect vb = self.view.bounds;
static NSString *CellIdentifier = @"ProfileBadgeCellIdentifier";
static NSString *CellIdentifier = @"AddSiteEmptyCellIdentifier";
int sitesCount = [self.sites count];
if (self.inSearch_ && sitesCount){
if (sitesCount > indexPath.row) {
AddSiteTableCell *cell = (AddSiteTableCell *)[tableView
dequeueReusableCellWithIdentifier:@"AddSiteCellIdentifier"];
if (cell == nil) {
cell = [[AddSiteTableCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:nil];
}
NSDictionary *site = [self.sites objectAtIndex:indexPath.row];
NSString *siteTitle = [site objectForKey:@"label"];
cell.siteTitle = siteTitle;
// adding comma to the number of subscribers
NSNumberFormatter *formatter = [NSNumberFormatter new];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle]; // this line is important!
NSString *formatted = [formatter stringFromNumber:[NSNumber numberWithInteger:[[site objectForKey:@"num_subscribers"] intValue]]];
NSString *subscribers = [NSString stringWithFormat:@"%@ subscribers", formatted];
cell.siteSubscribers = subscribers;
// feed color bar border
unsigned int colorBorder = 0;
NSString *faviconColor = [site valueForKey:@"favicon_color"];
if ([faviconColor class] == [NSNull class]) {
faviconColor = @"505050";
}
NSScanner *scannerBorder = [NSScanner scannerWithString:faviconColor];
[scannerBorder scanHexInt:&colorBorder];
cell.feedColorBar = UIColorFromRGB(colorBorder);
// feed color bar border
NSString *faviconFade = [site valueForKey:@"favicon_fade"];
if ([faviconFade class] == [NSNull class]) {
faviconFade = @"505050";
}
scannerBorder = [NSScanner scannerWithString:faviconFade];
[scannerBorder scanHexInt:&colorBorder];
cell.feedColorBarTopBorder = UIColorFromRGB(colorBorder);
// favicon
// cell.siteFavicon = [Utilities getImage:feedIdStr];
// undread indicator
return cell;
}
}
UITableViewCell *cell = [tableView
dequeueReusableCellWithIdentifier:CellIdentifier];
@ -222,59 +285,33 @@
[[[cell contentView] subviews] makeObjectsPerformSelector: @selector(removeFromSuperview)];
}
if (self.inSearch_){
int sitesCount = [self.sites count];
if (sitesCount) {
if (sitesCount > indexPath.row) {
cell.detailTextLabel.text = [NSString stringWithFormat:@"%@", [[self.sites objectAtIndex:indexPath.row] objectForKey:@"value"]];
cell.textLabel.text = [NSString stringWithFormat:@"%@", [[self.sites objectAtIndex:indexPath.row] objectForKey:@"label"]];
// cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;
}
} else {
// add a NO FRIENDS TO SUGGEST message on either the first or second row depending on iphone/ipad
int row = 0;
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
row = 1;
}
if (indexPath.row == row) {
UILabel *msg = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, vb.size.width, 140)];
[cell.contentView addSubview:msg];
msg.text = @"No results.";
msg.textColor = UIColorFromRGB(0x7a7a7a);
if (vb.size.width > 320) {
msg.font = [UIFont fontWithName:@"Helvetica-Bold" size: 20.0];
} else {
msg.font = [UIFont fontWithName:@"Helvetica-Bold" size: 14.0];
}
msg.textAlignment = UITextAlignmentCenter;
}
}
int row = 0;
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
row = 1;
}
UILabel *msg = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, vb.size.width, 74)];
msg.textColor = UIColorFromRGB(0x7a7a7a);
if (vb.size.width > 320) {
msg.font = [UIFont fontWithName:@"Helvetica-Bold" size: 20.0];
} else {
int row = 0;
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
row = 1;
}
msg.font = [UIFont fontWithName:@"Helvetica-Bold" size: 14.0];
}
msg.textAlignment = UITextAlignmentCenter;
if (self.inSearch_ && sitesCount){
if (indexPath.row == row) {
UILabel *msg = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, vb.size.width, 140)];
[cell.contentView addSubview:msg];
msg.text = @"No results.";
}
} else {
if (indexPath.row == row) {
msg.text = @"Search for sites above";
msg.textColor = UIColorFromRGB(0x7a7a7a);
if (vb.size.width > 320) {
msg.font = [UIFont fontWithName:@"Helvetica-Bold" size: 20.0];
} else {
msg.font = [UIFont fontWithName:@"Helvetica-Bold" size: 14.0];
}
msg.textAlignment = UITextAlignmentCenter;
}
}
cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.selectionStyle = UITableViewCellSelectionStyleNone;
return cell;
}
@ -284,6 +321,7 @@
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[self.sitesSearchBar resignFirstResponder];
[appDelegate.modalNavigationController pushViewController:appDelegate.addSiteViewController animated:YES];
}
- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath {

View file

@ -67,7 +67,7 @@
self.interactionLabel.frame = interactionLabelRect;
self.avatarView.frame = CGRectMake(leftMargin, topMargin, avatarSize, avatarSize);
UIImage *placeholder = [UIImage imageNamed:@"user"];
UIImage *placeholder = [UIImage imageNamed:@"user_dark"];
// this is for the rare instance when the with_user doesn't return anything
if ([[interaction objectForKey:@"with_user"] class] == [NSNull class]) {

View file

@ -63,11 +63,10 @@
[subview removeFromSuperview];
}
UIView *label = [appDelegate makeFeedTitle:appDelegate.activeFeed];
label.frame = CGRectMake(label.frame.origin.x,
label.frame.origin.y,
self.titleLabel.frame.size.width -
(self.titleLabel.frame.origin.x-label.frame.origin.x),
label.frame.size.height);
label.frame = CGRectMake(0,
0,
200,
20);
[self.titleLabel addSubview:label];
[self reload];
[super viewWillAppear:animated];

View file

@ -485,6 +485,7 @@
// change UIWebView
int contentWidth = storyDetailViewController.view.frame.size.width;
NSLog(@"contentWidth is %i", contentWidth);
[storyDetailViewController changeWebViewWidth:contentWidth];
}

View file

@ -770,7 +770,7 @@
// customView.backgroundColor = [UIColorFromRGB(0xD7DDE6)
// colorWithAlphaComponent:0.8];
} else if (section == 1) {
headerLabel.text = @"ALL SITES";
headerLabel.text = @"ALL STORIES";
// customView.backgroundColor = [UIColorFromRGB(0xE6DDD7)
// colorWithAlphaComponent:0.8];
} else {

View file

@ -75,7 +75,7 @@
photo_url = [photo_url stringByReplacingOccurrencesOfString:@"_normal" withString:@""];
}
UIImage *placeholder = [UIImage imageNamed:@"user"];
UIImage *placeholder = [UIImage imageNamed:@"user_dark"];
UIImageView *avatar = [[UIImageView alloc] init];
avatar.frame = CGRectMake(10, 10, 80, 80);

View file

@ -1378,14 +1378,14 @@ shouldStartLoadWithRequest:(NSURLRequest *)request
if (contentWidth > 740) {
contentWidthClass = @"NB-ipad-wide";
} else if (contentWidth > 500) {
} else if (contentWidth > 480) {
contentWidthClass = @"NB-ipad-narrow";
} else {
contentWidthClass = @"NB-iphone";
}
NSString *jsString = [[NSString alloc] initWithFormat:
@"document.getElementsByTagName('body')[0].setAttribute('class', '%@');"
@"$('body').attr('class', '%@');"
"document.getElementById(\"viewport\").setAttribute(\"content\", \"width=%i;initial-scale=1; maximum-scale=1.0; user-scalable=0;\");",
contentWidthClass,
contentWidth];

View file

@ -70,7 +70,7 @@ static NSMutableDictionary *imageCache;
return image;
} else {
if (isSocial) {
return [UIImage imageNamed:@"user.png"];
return [UIImage imageNamed:@"user_dark.png"];
} else {
return [UIImage imageNamed:@"world.png"];
}

View file

@ -24,6 +24,9 @@
432EBD0F15D1A2B00000729D /* fountain_pen_on@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 432EBD0D15D1A2B00000729D /* fountain_pen_on@2x.png */; };
432EBD1615D1A7800000729D /* user_on.png in Resources */ = {isa = PBXBuildFile; fileRef = 432EBD1415D1A7800000729D /* user_on.png */; };
432EBD1715D1A7800000729D /* user_on@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 432EBD1515D1A7800000729D /* user_on@2x.png */; };
432EBD1915D1AB580000729D /* user_dark@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 432EBD1815D1AB580000729D /* user_dark@2x.png */; };
432EBD1B15D1AB6B0000729D /* user_dark.png in Resources */ = {isa = PBXBuildFile; fileRef = 432EBD1A15D1AB6B0000729D /* user_dark.png */; };
432EBD2315D1D4070000729D /* AddSiteTableCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 432EBD2215D1D4070000729D /* AddSiteTableCell.m */; };
433323B8158901A40025064D /* fountain_pen.png in Resources */ = {isa = PBXBuildFile; fileRef = 433323B6158901A40025064D /* fountain_pen.png */; };
433323B9158901A40025064D /* fountain_pen@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 433323B7158901A40025064D /* fountain_pen@2x.png */; };
433323BB158901C10025064D /* login_background.png in Resources */ = {isa = PBXBuildFile; fileRef = 433323BA158901C10025064D /* login_background.png */; };
@ -34,7 +37,6 @@
433323CD158968ED0025064D /* FirstTimeUserViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 433323CB158968ED0025064D /* FirstTimeUserViewController.m */; };
433323CE158968ED0025064D /* FirstTimeUserViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 433323CC158968ED0025064D /* FirstTimeUserViewController.xib */; };
433D247E1582EEB400AE9E72 /* AddSiteAutocompleteCell~ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 43D045271565BC150085F811 /* AddSiteAutocompleteCell~ipad.xib */; };
433D247F1582EEB900AE9E72 /* AddSiteViewController~ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 43D045261565BC150085F811 /* AddSiteViewController~ipad.xib */; };
433D24821582EEC000AE9E72 /* LoginViewController~ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 43D045241565BC150085F811 /* LoginViewController~ipad.xib */; };
433D24831582EEC300AE9E72 /* MainWindow~ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 43D0451F1565BC150085F811 /* MainWindow~ipad.xib */; };
433D24841582EEC500AE9E72 /* MoveSiteViewController~ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 43D045281565BC150085F811 /* MoveSiteViewController~ipad.xib */; };
@ -353,6 +355,10 @@
432EBD0D15D1A2B00000729D /* fountain_pen_on@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "fountain_pen_on@2x.png"; sourceTree = "<group>"; };
432EBD1415D1A7800000729D /* user_on.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = user_on.png; sourceTree = "<group>"; };
432EBD1515D1A7800000729D /* user_on@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "user_on@2x.png"; sourceTree = "<group>"; };
432EBD1815D1AB580000729D /* user_dark@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "user_dark@2x.png"; sourceTree = "<group>"; };
432EBD1A15D1AB6B0000729D /* user_dark.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = user_dark.png; sourceTree = "<group>"; };
432EBD2115D1D4070000729D /* AddSiteTableCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AddSiteTableCell.h; sourceTree = "<group>"; };
432EBD2215D1D4070000729D /* AddSiteTableCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AddSiteTableCell.m; sourceTree = "<group>"; };
433323B6158901A40025064D /* fountain_pen.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = fountain_pen.png; sourceTree = "<group>"; };
433323B7158901A40025064D /* fountain_pen@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "fountain_pen@2x.png"; sourceTree = "<group>"; };
433323BA158901C10025064D /* login_background.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = login_background.png; sourceTree = "<group>"; };
@ -585,7 +591,6 @@
43D045221565BC150085F811 /* StoryDetailViewController~ipad.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = "StoryDetailViewController~ipad.xib"; path = "Resources-iPad/Classes/StoryDetailViewController~ipad.xib"; sourceTree = "<group>"; };
43D045241565BC150085F811 /* LoginViewController~ipad.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = "LoginViewController~ipad.xib"; path = "Resources-iPad/Classes/LoginViewController~ipad.xib"; sourceTree = "<group>"; };
43D045251565BC150085F811 /* OriginalStoryViewController~ipad.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = "OriginalStoryViewController~ipad.xib"; path = "Resources-iPad/Classes/OriginalStoryViewController~ipad.xib"; sourceTree = "<group>"; };
43D045261565BC150085F811 /* AddSiteViewController~ipad.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = "AddSiteViewController~ipad.xib"; path = "Resources-iPad/Classes/AddSiteViewController~ipad.xib"; sourceTree = "<group>"; };
43D045271565BC150085F811 /* AddSiteAutocompleteCell~ipad.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = "AddSiteAutocompleteCell~ipad.xib"; path = "Resources-iPad/Classes/AddSiteAutocompleteCell~ipad.xib"; sourceTree = SOURCE_ROOT; };
43D045281565BC150085F811 /* MoveSiteViewController~ipad.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = "MoveSiteViewController~ipad.xib"; path = "Resources-iPad/Classes/MoveSiteViewController~ipad.xib"; sourceTree = "<group>"; };
43D818A115B940C200733444 /* DataUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DataUtilities.h; sourceTree = "<group>"; };
@ -963,6 +968,8 @@
43A4BAF015C89BF600F3B8D4 /* FindSitesViewController.h */,
43A4BAF115C89BF600F3B8D4 /* FindSitesViewController.m */,
43A4BAF215C89BF600F3B8D4 /* FindSitesViewController.xib */,
432EBD2115D1D4070000729D /* AddSiteTableCell.h */,
432EBD2215D1D4070000729D /* AddSiteTableCell.m */,
);
name = Social;
sourceTree = "<group>";
@ -1036,6 +1043,8 @@
431B857615A132B600DCE497 /* Images */ = {
isa = PBXGroup;
children = (
432EBD1A15D1AB6B0000729D /* user_dark.png */,
432EBD1815D1AB580000729D /* user_dark@2x.png */,
43A4BACC15C866FA00F3B8D4 /* popoverArrowDown.png */,
43A4BACD15C866FA00F3B8D4 /* popoverArrowDown@2x.png */,
43A4BACE15C866FA00F3B8D4 /* popoverArrowDownSimple.png */,
@ -1286,7 +1295,6 @@
isa = PBXGroup;
children = (
433323B5158901A40025064D /* Images */,
43D045261565BC150085F811 /* AddSiteViewController~ipad.xib */,
437F974B15ACA0ED0007136B /* DashboardViewController.xib */,
43C95C47158BEC440086C69B /* GoogleReaderViewController.xib */,
43D045241565BC150085F811 /* LoginViewController~ipad.xib */,
@ -1773,7 +1781,6 @@
43B8F02A156603180008733D /* OriginalStoryViewController.xib in Resources */,
43B8F02B156603180008733D /* StoryDetailViewController.xib in Resources */,
433D247E1582EEB400AE9E72 /* AddSiteAutocompleteCell~ipad.xib in Resources */,
433D247F1582EEB900AE9E72 /* AddSiteViewController~ipad.xib in Resources */,
433D24821582EEC000AE9E72 /* LoginViewController~ipad.xib in Resources */,
433D24831582EEC300AE9E72 /* MainWindow~ipad.xib in Resources */,
433D24841582EEC500AE9E72 /* MoveSiteViewController~ipad.xib in Resources */,
@ -1933,6 +1940,8 @@
432EBD0F15D1A2B00000729D /* fountain_pen_on@2x.png in Resources */,
432EBD1615D1A7800000729D /* user_on.png in Resources */,
432EBD1715D1A7800000729D /* user_on@2x.png in Resources */,
432EBD1915D1AB580000729D /* user_dark@2x.png in Resources */,
432EBD1B15D1AB6B0000729D /* user_dark.png in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -2075,6 +2084,7 @@
43A4BACA15C8663600F3B8D4 /* WEPopoverController.m in Sources */,
43A4BACB15C8663600F3B8D4 /* WETouchableView.m in Sources */,
43A4BAF315C89BF600F3B8D4 /* FindSitesViewController.m in Sources */,
432EBD2315D1D4070000729D /* AddSiteTableCell.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};

File diff suppressed because it is too large Load diff

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

View file

@ -1,4 +1,8 @@
<html><head><link rel="stylesheet" type="text/css" href="reader.css" ><link rel="stylesheet" type="text/css" href="storyDetailView.css" ><meta name="viewport" id="viewport" content="width=497, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/></head><body id="story_pane" class="NB-ipad-narrow"> <div class="NB-header"><div class="NB-header-inner"><div class="NB-story-date">1:23pm</div><div class="NB-story-title">Ocean gliders are becoming one of the Navys main tools...</div><div class="NB-story-author"></div></div></div> <div class="NB-feed-story-comments"><div class="NB-story-comments-shares-teaser-wrapper"><div class="NB-story-comments-shares-teaser"><div class="NB-right">Shared by 2 people</div><div class="NB-story-share-profiles NB-story-share-profiles-public"></div><div class="NB-story-share-label">Shared by: </div><div class="NB-story-share-profiles NB-story-share-profiles-friends"><div class="NB-story-share-profile"><div class="NB-user-avatar"><a id="NB-user-share-bar-10" class="NB-show-profile" href="http://ios.newsblur.com/show-profile/10"><img src="http://www.gravatar.com/avatar/d41d8cd98f00b204e9800998ecf8427e" /></a></div></div><div class="NB-story-share-profile"><div class="NB-user-avatar"><a id="NB-user-share-bar-3" class="NB-show-profile" href="http://ios.newsblur.com/show-profile/3"><img src="http://www.gravatar.com/avatar/8cef1a0df909c0290fdc1d87c6c30a55" /></a></div></div></div></div></div></div> <div class="NB-san-serif" id="NB-font-style"> <div class="NB-small" id="NB-font-size"> <div class="NB-story"><img src="http://25.media.tumblr.com/tumblr_m7s4e2SeX31qz4vmto1_400.jpg" /><br /><br /><blockquote><em>Ocean gliders are becoming one of the Navys main tools for collecting data on the internal structure of the ocean for assimilation into ocean models. A glider is a long-endurance autonomous underwater vehicle (AUV) used to collect ocean data; it surfaces periodically to transmit data via satellite. Gliders are capable of collecting numerous types of data, including currents, temperature, salinity, pressure, and optics.</em></blockquote>
<p>I wonder how long these would run for if the world were to suddenly end. I imagine them surfacing every few weeks and transmitting vainly to satellites thatve fallen out of the sky; sitting on the surface and basking in the sun for a while, perhaps, to recharge their solar cells. Like brittle yellow turtles.</p>
<p>They wouldnt know that everything had died - taken by some disease or disaster. Theyd wander around the now-quiet oceans, taking their measure of the world, until, one by one, theyd succumb to salinity or erosion and suddenly stop, mid-journey, before sinking quiet and still to the ocean floor.</p>
<p>(via <a href="http://www.nrl.navy.mil/media/news-releases/2012/navy-researchers-sail-down-under-to-study-internal-tides-with-auvs" target="_blank">U.S. Naval Research Laboratory</a>)</p></div> </div> </div> <div class='NB-share-header'></div><div class='NB-share-wrapper'><div class='NB-share-inner-wrapper'><div id="NB-share-button-id" class='NB-share-button NB-button'><div><a href="http://ios.newsblur.com/share">Post to Blurblog</a></div></div></div></div> <div id="NB-comments-wrapper"> <div class="NB-feed-story-comments"><div class="NB-story-comment" id="NB-user-comment-10"><div class="NB-user-avatar"><a class="NB-show-profile" href="http://ios.newsblur.com/show-profile/10"><img src="http://www.gravatar.com/avatar/d41d8cd98f00b204e9800998ecf8427e" /></a></div><div class="NB-story-comment-author-container"> <div class="NB-story-comment-username">firefox_stranger</div> <div class="NB-story-comment-date">7 days ago</div> <div class="NB-story-comment-reply-button NB-button"> <div class="NB-story-comment-reply-button-wrapper"> <a href="http://ios.newsblur.com/reply/10/firefox_stranger">Reply</a> </div> </div> <div class="NB-story-comment-like-button NB-button"><div class="NB-story-comment-like-button-wrapper"><a href="http://ios.newsblur.com/like-comment/10">Favorite</a></div></div></div><div class="NB-story-comment-content">This is really cool.</div><div class="NB-story-comment-replies"><div class="NB-story-comment-reply" id="NB-user-comment-50172164c6cd1a057000001c"> <a class="NB-show-profile" href="http://ios.newsblur.com/show-profile/10"> <img class="NB-user-avatar NB-story-comment-reply-photo" src="http://www.gravatar.com/avatar/d41d8cd98f00b204e9800998ecf8427e" /> </a> <div class="NB-story-comment-username NB-story-comment-reply-username">firefox_stranger</div> <div class="NB-story-comment-date NB-story-comment-reply-date">7 days ago</div> <div class="NB-story-comment-reply-content">This is my reply</div></div><div class="NB-story-comment-reply" id="NB-user-comment-50172177c6cd1a057000001e"> <a class="NB-show-profile" href="http://ios.newsblur.com/show-profile/10"> <img class="NB-user-avatar NB-story-comment-reply-photo" src="http://www.gravatar.com/avatar/d41d8cd98f00b204e9800998ecf8427e" /> </a> <div class="NB-story-comment-username NB-story-comment-reply-username">firefox_stranger</div> <div class="NB-story-comment-date NB-story-comment-reply-date">7 days ago</div> <div class="NB-story-comment-reply-content">Reply 2</div></div></div></div><div class="NB-story-comment" id="NB-user-comment-3"><div class="NB-user-avatar NB-story-comment-reshare"><a class="NB-show-profile" href="http://ios.newsblur.com/show-profile/3"><img src="http://www.gravatar.com/avatar/8cef1a0df909c0290fdc1d87c6c30a55" /></a></div><div class="NB-story-comment-author-container"> <div class="NB-story-comment-reshares"> <div class="NB-story-share-profile"> <div class="NB-user-avatar"><img src="http://www.gravatar.com/avatar/d41d8cd98f00b204e9800998ecf8427e"></div> </div></div> <div class="NB-story-comment-username">roy</div> <div class="NB-story-comment-date">1 hour ago</div> <div class="NB-story-comment-reply-button NB-button"> <div class="NB-story-comment-reply-button-wrapper"> <a href="http://ios.newsblur.com/reply/3/roy">Reply</a> </div> </div> <div class="NB-story-comment-edit-button NB-story-comment-share-edit-button NB-button"><div class="NB-story-comment-edit-button-wrapper"><a href="http://ios.newsblur.com/edit-share/3">Edit</a></div></div> </div><div class="NB-story-comment-content">Should be firefox still</div></div></div> </div> <script src="zepto.js"></script><script src="storyDetailView.js"></script></body></html>
<html><head><link rel="stylesheet" type="text/css" href="reader.css" ><link rel="stylesheet" type="text/css" href="storyDetailView.css" ><meta name="viewport" id="viewport" content="width=768, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/></head><body id="story_pane" class="NB-ipad-wide"> <div class="NB-header"><div class="NB-header-inner"><div class="NB-story-date">Today, August 7th 11:54am</div><div class="NB-story-title">Developer ports Android app to BlackBerry PlayBook, sees 25 times more downloads</div><div class="NB-story-author">Zach Epstein</div><div class="NB-story-tags"><div class="NB-story-tag">mobile</div><div class="NB-story-tag">software</div><div class="NB-story-tag">blackberry</div><div class="NB-story-tag">playbook</div><div class="NB-story-tag">rim</div></div></div></div> <div class="NB-feed-story-comments"><div class="NB-story-comments-shares-teaser-wrapper"><div class="NB-story-comments-shares-teaser"><div class="NB-right">Shared by 2 people</div><div class="NB-story-share-profiles NB-story-share-profiles-public"></div><div class="NB-story-share-label">Shared by: </div><div class="NB-story-share-profiles NB-story-share-profiles-friends"><div class="NB-story-share-profile"><div class="NB-user-avatar"><a id="NB-user-share-bar-27551" class="NB-show-profile" href="http://ios.newsblur.com/show-profile/27551"><img src="http://graph.facebook.com/1702670/picture" /></a></div></div><div class="NB-story-share-profile"><div class="NB-user-avatar"><a id="NB-user-share-bar-26082" class="NB-show-profile" href="http://ios.newsblur.com/show-profile/26082"><img src="http://www.newsblur.com/media/img/reader/default_profile_photo.png" /></a></div></div></div></div></div></div> <div class="NB-san-serif" id="NB-font-style"> <div class="NB-medium" id="NB-font-size"> <div class="NB-story"><center><a href="http://www.bgr.com/2012/08/07/blackberry-playbook-developer-success-story"><img alt="BlackBerry PlayBook Developer Success" class="size-full wp-image-127375 aligncenter" height="422" src="http://www-bgr-com.vimg.net/wp-content/uploads/2012/02/blackberry-bold-9900-playbook.jpeg" title="BlackBerry PlayBook" width="652" /></a></center>
<p>Getting exposure in <a href="http://www.bgr.com/tag/apple">Apple&#8217;s</a> (<a href="https://www.google.com/finance?q=AAPL">AAPL</a>) iOS App Store and <a href="http://www.bgr.com/tag/google">Google&#8217;s</a> (<a href="https://www.google.com/finance?q=GOOG">GOOG</a>) Google Play market can be daunting at best. Developers must compete for exposure with hundreds of thousands of other apps, and viral success or a big marketing budget is almost a requirement at this point if an app is to see any real success. <a href="http://www.bgr.com/tag/rim">Research In Motion</a> (<a href="https://www.google.com/finance?q=RIMM">RIMM</a>) on Tuesday presented another option, however: Develop for <a href="http://www.bgr.com/tag/blackberry">BlackBerry</a>.<span id="more-153111"></span></p>
<p>In <a href="http://devblog.blackberry.com/2012/08/dev-success-cubifice/">a post on RIM&#8217;s official blog</a>, Milena Hewitt details the success found by mobile developer Pinelake Communications, which recently decided to see how hard it would be to port its Android game &#8220;Cubifice&#8221; over to the <a href="http://www.bgr.com/tag/playbook">BlackBerry PlayBook</a> tablet and <a href="http://www.bgr.com/2012/05/03/blackberry-10-dev-alpha-hands-on/">RIM&#8217;s BlackBerry 10 Dev Alpha</a> device. According to Pinelake Creative Director Bill Larocque and developer Dave Wagler, the process took just one hour.</p>
<p>That&#8217;s good news for RIM of course, because encouraging developers to bring apps over from other platforms is <a href="http://www.bgr.com/2012/05/02/blackberry-10-webos/">crucial to the company&#8217;s success with its next-generation BlackBerry 10 platform</a>. Ensuring that this process is quick and relatively simple certainly won&#8217;t hurt RIM&#8217;s odds.</p>
<p>Beyond the process of porting apps, however, Pinelake notes that it has seen much more interest from users with its PlayBook app than it ever saw on Android.</p>
<p>&#8220;The BlackBerry user community is very engaged, and there is far greater visibility of your application on the BlackBerry App World storefront than on other platforms,&#8221; <a href="http://devblog.blackberry.com/2012/08/dev-success-cubifice/">Larocque told RIM in an interview</a>. &#8221;BlackBerry App World has a clear layout and does not suffer from the over-saturation that you find somewhere like Google Play, where your app quickly feels lost in a huge sea of similar applications.&#8221;</p>
<p>He continued, &#8220;With this application, not only do we have 25 times more downloads on BlackBerry App World than on Google Play, but weve also been able to maintain that high number and visibility. This visibility translates into a far better return on investment once the app becomes monetized because we will have to spend far less on marketing the application to users.&#8221;</p>
<img height="1" src="http://feeds.feedburner.com/~r/TheBoyGeniusReport/~4/oA9a7VoPPOw" width="1" /></div> </div> </div> <div class='NB-share-header'></div><div class='NB-share-wrapper'><div class='NB-share-inner-wrapper'><div id="NB-share-button-id" class='NB-share-button NB-button'><div><a href="http://ios.newsblur.com/share">Post to Blurblog</a></div></div></div></div> <div id="NB-comments-wrapper"> <div class="NB-feed-story-comments"><div class="NB-story-comment" id="NB-user-comment-26082"><div class="NB-user-avatar"><a class="NB-show-profile" href="http://ios.newsblur.com/show-profile/26082"><img src="http://www.newsblur.com/media/img/reader/default_profile_photo.png" /></a></div><div class="NB-story-comment-author-container"> <div class="NB-story-comment-username">ksteimle</div> <div class="NB-story-comment-date">1 hour ago</div> <div class="NB-story-comment-reply-button NB-button"> <div class="NB-story-comment-reply-button-wrapper"> <a href="http://ios.newsblur.com/reply/26082/ksteimle">Reply</a> </div> </div> <div class="NB-story-comment-like-button NB-button"><div class="NB-story-comment-like-button-wrapper"><a href="http://ios.newsblur.com/like-comment/26082">Favorite</a></div></div></div><div class="NB-story-comment-content">This is true fax. We get more sales for Blackberry each WEEK than we have ever gotten on the Amazon app store. Sadly, not so easy for us to do a full native port :-/</div></div><div class="NB-story-comment" id="NB-user-comment-27551"><div class="NB-user-avatar NB-story-comment-reshare"><a class="NB-show-profile" href="http://ios.newsblur.com/show-profile/27551"><img src="http://graph.facebook.com/1702670/picture" /></a></div><div class="NB-story-comment-author-container"> <div class="NB-story-comment-reshares"> <div class="NB-story-share-profile"> <div class="NB-user-avatar"><img src="http://www.newsblur.com/media/img/reader/default_profile_photo.png"></div> </div></div> <div class="NB-story-comment-username">roy</div> <div class="NB-story-comment-date">5 minutes ago</div> <div class="NB-story-comment-reply-button NB-button"> <div class="NB-story-comment-reply-button-wrapper"> <a href="http://ios.newsblur.com/reply/27551/roy">Reply</a> </div> </div> <div class="NB-story-comment-edit-button NB-story-comment-share-edit-button NB-button"><div class="NB-story-comment-edit-button-wrapper"><a href="http://ios.newsblur.com/edit-share/27551">Edit</a></div></div> </div><div class="NB-story-comment-content">I&#039;m officially intrigued.</div></div></div> </div> <script src="zepto.js"></script><script src="storyDetailView.js"></script></body></html>

View file

@ -67,6 +67,10 @@
.NB-ipad-wide#story_pane .nb-story-comment .nb-user-avatar {
left: 88px;
}
.NB-ipad-wide#story_pane .nb-story-comment .nb-story-comment-reshares .nb-user-avatar {
left: 98px;
}
/**
* iPad Narrow Style
@ -97,6 +101,10 @@
left: 28px;
}
.NB-ipad-narrow#story_pane .nb-story-comment .nb-story-comment-reshares .nb-user-avatar {
left: 38px;
}
/**
* iPhone Style
*/