Using a popover for training on the iPad. Also adding the train button to the bottom of every story.

This commit is contained in:
Samuel Clay 2012-12-27 23:04:25 -08:00
parent 1e0d637173
commit e5ddce5ae0
14 changed files with 89 additions and 69 deletions

View file

@ -209,7 +209,7 @@
} else if (indexPath.row == 2) {
[appDelegate.storyPageControl openSendToDialog];
} else if (indexPath.row == 3) {
[appDelegate openTrainStory];
[appDelegate openTrainStory:appDelegate.storyPageControl.fontSettingsButton];
} else if (indexPath.row == 4) {
[appDelegate.storyPageControl.currentPage openShareDialog];
}

View file

@ -318,14 +318,20 @@
dispatch_get_current_queue(), ^{
popoverController = [[UIPopoverController alloc]
initWithContentViewController:appDelegate.trainerViewController];
popoverController.delegate = self;
[popoverController setPopoverContentSize:CGSizeMake(420, 512)];
[popoverController presentPopoverFromBarButtonItem:sender
permittedArrowDirections:UIPopoverArrowDirectionAny
animated:NO];
[popoverController setPopoverContentSize:CGSizeMake(420, 382)];
if ([sender class] == [UIBarButtonItem class]) {
[popoverController presentPopoverFromBarButtonItem:sender
permittedArrowDirections:UIPopoverArrowDirectionAny
animated:NO];
} else {
CGRect frame = [sender CGRectValue];
[popoverController presentPopoverFromRect:frame
inView:self.storyPageControl.view
permittedArrowDirections:UIPopoverArrowDirectionAny
animated:YES];
}
});
}

View file

@ -228,7 +228,7 @@
- (void)showAddSiteModal:(id)sender;
- (void)showMoveSite;
- (void)openTrainSite;
- (void)openTrainStory;
- (void)openTrainStory:(id)sender;
- (void)loadFeedDetailView;
- (void)loadTryFeedDetailView:(NSString *)feedId withStory:(NSString *)contentId isSocial:(BOOL)social withUser:(NSDictionary *)user showFindingStory:(BOOL)showHUD;
- (void)loadRiverFeedDetailView;

View file

@ -182,11 +182,11 @@
}
[splashView setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight];
splashView.alpha = 1.0;
[window addSubview:splashView];
[window bringSubviewToFront:splashView];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:.5];
[UIView setAnimationDuration:.6];
[UIView setAnimationTransition:UIViewAnimationTransitionNone forView:window cache:YES];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(startupAnimationDone:finished:context:)];
@ -415,23 +415,19 @@
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
// trainerViewController.modalPresentationStyle=UIModalPresentationFormSheet;
// [navController presentModalViewController:trainerViewController animated:YES];
// [navController presentModalViewController:trainerViewController animated:YES];
[self.masterContainerViewController showTrainingPopover:self.feedDetailViewController.settingsButton];
} else {
[navController presentModalViewController:trainerViewController animated:YES];
}
}
- (void)openTrainStory {
- (void)openTrainStory:(id)sender {
UINavigationController *navController = self.navigationController;
trainerViewController.feedTrainer = NO;
trainerViewController.storyTrainer = YES;
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
// trainerViewController.modalPresentationStyle=UIModalPresentationFormSheet;
// [navController presentModalViewController:trainerViewController animated:YES];
[self.masterContainerViewController showTrainingPopover:self.storyPageControl.fontSettingsButton];
[self.masterContainerViewController showTrainingPopover:sender];
} else {
[navController presentModalViewController:trainerViewController animated:YES];
}

View file

@ -53,6 +53,7 @@
- (void)refreshComments:(NSString *)replyId;
- (void)openShareDialog;
- (void)openTrainingDialog:(int)x yCoordinate:(int)y width:(int)width height:(int)height;
- (void)finishLikeComment:(ASIHTTPRequest *)request;
- (void)subscribeToBlurblog;
- (void)finishSubscribeToBlurblog:(ASIHTTPRequest *)request;

View file

@ -170,11 +170,16 @@
sharingHtmlString = [NSString stringWithFormat:@
"<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'>"
"<a href=\"http://ios.newsblur.com/share\"><div>"
"Share this story <span class=\"NB-share-icon\"></span>"
"</div></a>"
"</div>"
" <div id=\"NB-share-button-id\" class='NB-share-button NB-button'>"
" <a href=\"http://ios.newsblur.com/share\"><div>"
" <span class=\"NB-icon\"></span> Share this story"
" </div></a>"
" </div>"
" <div id=\"NB-share-button-id\" class='NB-share-button NB-train-button NB-button'>"
" <a href=\"http://ios.newsblur.com/train\"><div>"
" <span class=\"NB-icon\"></span> Train this story"
" </div></a>"
" </div>"
"</div></div>"];
NSString *storyHeader = [self getHeader];
@ -908,6 +913,12 @@ shouldStartLoadWithRequest:(NSURLRequest *)request
} else if ([action isEqualToString:@"share"]) {
[self openShareDialog];
return NO;
} else if ([action isEqualToString:@"train"]) {
[self openTrainingDialog:[[urlComponents objectAtIndex:2] intValue]
yCoordinate:[[urlComponents objectAtIndex:3] intValue]
width:[[urlComponents objectAtIndex:4] intValue]
height:[[urlComponents objectAtIndex:5] intValue]];
return NO;
} else if ([action isEqualToString:@"classify-author"]) {
NSString *author = [NSString stringWithFormat:@"%@", [urlComponents objectAtIndex:2]];
[self.appDelegate toggleAuthorClassifier:author feedId:feedId];
@ -1148,6 +1159,26 @@ shouldStartLoadWithRequest:(NSURLRequest *)request
}
}
- (void)openTrainingDialog:(int)x yCoordinate:(int)y width:(int)width height:(int)height {
CGRect frame = CGRectZero;
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
// only adjust for the bar if user is scrolling
if (appDelegate.isRiverView || appDelegate.isSocialView) {
if (self.webView.scrollView.contentOffset.y == -20) {
y = y + 20;
}
} else {
if (self.webView.scrollView.contentOffset.y == -9) {
y = y + 9;
}
}
frame = CGRectMake(x, y, width, height);
}
NSLog(@"Open trainer: %@ (%d/%d/%d/%d)", NSStringFromCGRect(frame), x, y, width, height);
[appDelegate openTrainStory:[NSValue valueWithCGRect:frame]];
}
# pragma mark
# pragma mark Subscribing to blurblog

View file

@ -86,6 +86,7 @@
- (void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
[self.webView loadHTMLString:@"about:blank" baseURL:nil];
[[UIMenuController sharedMenuController] setMenuItems:nil];
}

View file

@ -5,7 +5,7 @@
<key>application-identifier</key>
<string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string>
<key>get-task-allow</key>
<false/>
<true/>
<key>keychain-access-groups</key>
<array>
<string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string>

View file

@ -21,18 +21,18 @@
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Classes/NewsBlurAppDelegate.m"
timestampString = "378357556.091978"
timestampString = "378362070.544376"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "685"
endingLineNumber = "685"
startingLineNumber = "681"
endingLineNumber = "681"
landmarkName = "-recalculateIntelligenceScores:"
landmarkType = "5">
</FileBreakpoint>
</FileBreakpoints>
<SymbolicBreakpoints>
<SymbolicBreakpoint
shouldBeEnabled = "No"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "objc_exception_throw"
@ -41,7 +41,7 @@
</SymbolicBreakpoints>
<ExceptionBreakpoints>
<ExceptionBreakpoint
shouldBeEnabled = "No"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
scope = "0"

View file

@ -10,8 +10,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

View file

@ -12,7 +12,6 @@
</object>
<array key="IBDocument.IntegratedClassDependencies">
<string>IBProxyObject</string>
<string>IBUIBarButtonItem</string>
<string>IBUINavigationBar</string>
<string>IBUINavigationItem</string>
<string>IBUIView</string>
@ -55,12 +54,6 @@
<object class="IBUINavigationItem" id="288841751">
<reference key="IBUINavigationBar" ref="537458422"/>
<string key="IBUITitle"/>
<object class="IBUIBarButtonItem" key="IBUIRightBarButtonItem" id="216767292">
<string key="IBUITitle">Done Training</string>
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
<int key="IBUIStyle">2</int>
<reference key="IBUINavigationItem" ref="288841751"/>
</object>
<string key="targetRuntimeIdentifier">IBIPadFramework</string>
</object>
</array>
@ -4501,14 +4494,6 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE</bytes>
</array>
<object class="IBObjectContainer" key="IBDocument.Objects">
<array class="NSMutableArray" key="connectionRecords">
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">closeButton</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="216767292"/>
</object>
<int key="connectionID">13</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">view</string>
@ -4541,14 +4526,6 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE</bytes>
</object>
<int key="connectionID">27</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchEventConnection" key="connection">
<string key="label">doCloseDialog:</string>
<reference key="source" ref="216767292"/>
<reference key="destination" ref="372490531"/>
</object>
<int key="connectionID">26</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">delegate</string>
@ -4597,16 +4574,9 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE</bytes>
<object class="IBObjectRecord">
<int key="objectID">4</int>
<reference key="object" ref="288841751"/>
<array class="NSMutableArray" key="children">
<reference ref="216767292"/>
</array>
<array class="NSMutableArray" key="children"/>
<reference key="parent" ref="537458422"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">6</int>
<reference key="object" ref="216767292"/>
<reference key="parent" ref="288841751"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">15</int>
<reference key="object" ref="774121839"/>
@ -4625,7 +4595,6 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE</bytes>
<string key="15.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="3.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="4.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="6.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
<nil key="activeLocalization"/>

View file

@ -496,10 +496,14 @@ a.NB-show-profile {
}
.NB-button.NB-share-button {
float: none;
float: left;
padding: 0px 0px 20px 0px;
margin-bottom: 0;
margin: 0 0 0 0;
display: block;
width: 48%;
}
.NB-button.NB-train-button {
float: right;
}
.NB-button div {
@ -536,13 +540,16 @@ a.NB-show-profile {
text-shadow: 0 1px 0 #003366;
}
.NB-button.NB-share-button div span {
.NB-button.NB-share-button .NB-icon {
background: url("data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACGUlEQVR42o2TTUsbYRSFZ+MvcNn/0EU1rSCCgkSxVRCLFgyiqFSE1tDSpNKoEaQJiAvBryDZGCVQKWIpWIeAFMHWL1qKjUJ3KRQSNUgSJzPR5PieMRMqjuLibAaec+577xkJwJ30p0jqEloXiglpQlmh3F3AaaEogWhnMw6dPTgafIljtx3i262gTSgSKbuPQ8dzxEfsSEw6kHBV4NRThrOVAaSd0o2wX0iJdj9D3PMaJ/1WKF4LtMlHyExf6jw0CO2dZAovCmWOBl4gMeFAyv0AmTyoLVRCXa1H+nsLtMgUktslpsmZ46E+JGedUMcsl2CwCumvTVD22qAcdOjS/vmQ3LVce7PCZMLa+EMdVj/XQflp06G/ezZ8/NYAV6gKUz+GcM8vXTGI8M0c20hW5QYo4XacCnhxox5dK+Wo+1SKmuUSeHdcKJ6VrpwqF3//Cqnh0kIy4djvNoyuVeNJHmwNONDrCyIg/8LjN0sFgyhPlfK/5cL4Zo7NZB2uFWDjh6fonQliXg5jQd7H3JcwDQoNy/LOPBXT9YXlx2YyYXcgpIPe+S10emTCqtAmDdbZMJaEd+apuG0ujG/m2EwmbB9fM0CrsTsaxFhPNozpvDPTuW0ujG/m2EwmbID/G2jsNutJA5aEBjyVnu7T042xrWYGWf4Y7DbryYaxJLwzT8Vtc2FGuplBTog/BrvNerJhLAnvTNDQppnBBZHZrv4ITeFuAAAAAElFTkSuQmCC") no-repeat top right;
width: 23px;
display: inline-block;
height: 16px;
margin-bottom: -2px;
margin-right: -23px;
margin: 0 2px -2px -12px;
}
.NB-button.NB-train-button .NB-icon {
background: url("data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACxElEQVR42qWT30+SURzG6a553d/QdffOq7Y2t4xEhgSYvCIM5ddUfi0QdcsMp6Ij8EcFgkoiGqFUCGYyp2Kp02XOzDUVGypcsKJYNzy9nM0517jq4tnOzvt9Pt/ne95zGAD+S/9sfHjcWhQ1qovfqRX8uIjCUWU5UbymGnNq+f2oQV2crykI2NA3xVIqJZJSCU5pU1qvR1qtJuukrA6pBhXWdI2xgoCvPHbuh9GIrLUfp9JaxLksInpN9vLfvnDKchGN4joBtDpNRRpbU7HKIufrxpU4YN1Gxu1GSl6PMxFFTOewM4kYCUpAj8QEDbhBAA8cmlh70AiTXwu9T4VD9h38CQTxy25Dsl5CIqcalfgu4OXNZJQjbvkFQDZcm7OEH8G9PAjjlDpPJ4CMvR8ZqxXp7i6cCAXEfEJVEcClBGJnFeZ3ZmEJd0A/2YD9exWkc8Y+gJ99fUh3mpGo5ueNBHBMd99ll+a0JvtNXZeniCEdFmL12xJmt4OYWB3FkK8NiwoKB9y75E/QKchZHPO52GeVYl4kRIvZg4ahKGTtYzFGnasGS3sLmNmcQmDDB0/MAe2EAiaDDTGKhzgNOuAwEavm4qG+F5LeCCwzWzC4l8HUe3MMmVOU8697MbnmgXfVDefSINReGZjGl3gV20eb8z3E3SFiokUA0r45CDvfgmUKgNFoUZbI7dKEfESCwQUrRlcc5CzKTX7MbcbhW9yDI/QJzSMrUA1EITC/IeaanjDYrQGQy5PNZq+oehUisY3K1LtFqHNRhB5aP8TYwi5e0Hoe3oawK0TMVHeIAEgC4LKUPfJrSov8KqdlKueMfIYjsoNndIIndPwqM+lMAJy2aZRpxnMFX5nE2F/CNwwnuHSh2fcRtuAWRD0R8Dpeo0znA0fzNElprbcKAC5GkzYP1VbqXRlO6zQd2Y8Kjeu3UGdrOq/5C7Lktmdg8uWWAAAAAElFTkSuQmCC") no-repeat top right;
}
.NB-iphone .NB-button .NB-story-comment-like-button-wrapper,

View file

@ -14,6 +14,14 @@ $('a.NB-show-profile').live('click', function () {
return false;
});
$('.NB-train-button a').live('click', function () {
var offset = $(this).offset();
console.log(offset);
var url = $(this).attr('href') + "/" + offset.left + "/" + (offset.top - window.pageYOffset) + "/" + offset.width + "/" + offset.height;
window.location = url;
return false;
});
$('.NB-button').live('touchstart', function () {
$(this).addClass('selected');
});

View file

@ -61,8 +61,8 @@
font-weight: bold;
line-height: 24px;
width: 100%;
min-height: 32px;
-webkit-user-select: auto;
min-height: 36px;
-webkit-user-select: text;
-webkit-touch-callout: default;
-webkit-highlight: auto;
-webkit-tap-highlight-color: auto;
@ -74,6 +74,7 @@
font-weight: bold;
font-size: 12px;
padding: 2px 0 4px;
-webkit-user-select: none;
}
.NB-story-title-positive {