#import "WebViewController.h"
#import "TUSafariActivity.h"
#import "SVProgressHUD.h"
#import "UIViewController+ScrollingNavbar.h"
#import <QuartzCore/QuartzCore.h>
@implementation WebViewController
{
UIActivityIndicatorView *loadingIndicator;
}
@synthesize webView=webView, hackyURL=hackyURL, activityIndicator, popover, systemAction;
- (void)loadView
{
// Create an instance of UIWebView as large as the screen
CGRect screenFrame = [[UIScreen mainScreen]applicationFrame];
UIWebView *wv = [[UIWebView alloc]initWithFrame:screenFrame];
webView = wv;
NSLog(@"%@",webView.request.URL);
// Tell web view to scale web content to fit within bounds of webview
[wv setScalesPageToFit:YES];
[self setView:wv];
}
- (UIWebView *)webView
{
return (UIWebView *)[self view];
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
webView.delegate = self;
[webView.scrollView setDelegate:self];
self.webView.opaque = NO;
self.webView.backgroundColor = [UIColor darkGrayColor];
CGFloat width = [[UIScreen mainScreen]bounds].size.width;
CGFloat height = [[UIScreen mainScreen]bounds].size.height;
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)
{
loadingIndicator = [[UIActivityIndicatorView alloc]initWithFrame:CGRectMake(width / 2, height / 2, 37, 37)];
loadingIndicator.center = CGPointMake(width / 2, height / 2 - 37);
}
else
{
loadingIndicator = [[UIActivityIndicatorView alloc]initWithFrame:CGRectMake(334, 333, 37, 37)];
}
loadingIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhiteLarge;
loadingIndicator.hidesWhenStopped = YES;
[self.view addSubview:loadingIndicator];
[loadingIndicator startAnimating];
systemAction = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(showMenu)];
self.navigationItem.rightBarButtonItem = systemAction;
}
// Do not allow user to navigate away from selected page
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSURL *url = request.URL;
NSString *urlString = url.absoluteString;
NSString *hackyURLString = hackyURL.absoluteString;
//Check for your own url. You can use more advanced checking techniques of course :)
NSRange range = [urlString rangeOfString:hackyURLString];
if (range.location != NSNotFound)
return YES;
else
return NO;
}
- (void)webViewDidStartLoad:(UIWebView *)wv
{
NSLog(@"Did start load");
[loadingIndicator startAnimating];
}
- (void)webViewDidFinishLoad:(UIWebView *)wv
{
NSLog(@"Did finish load");
[loadingIndicator stopAnimating];
}
-(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
[loadingIndicator stopAnimating];
}
- (void)viewDidDisappear:(BOOL)animated
{
[loadingIndicator stopAnimating];
}
- (void) showMenu
{
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)
{
NSURL *urlToShare = hackyURL;
NSArray *activityItems = @[urlToShare];
TUSafariActivity *activity = [[TUSafariActivity alloc] init];
__block UIActivityViewController *activityVC = [[UIActivityViewController alloc]initWithActivityItems:activityItems applicationActivities:@[activity]];
activityVC.excludedActivityTypes = @[UIActivityTypeAssignToContact, UIActivityTypePostToWeibo, UIActivityTypeSaveToCameraRoll];
[self presentViewController:activityVC animated:YES completion:^{activityVC.excludedActivityTypes = nil; activityVC = nil;}];
}
else
{
NSURL *urlToShare = hackyURL;
NSArray *activityItems = @[urlToShare];
TUSafariActivity *activity = [[TUSafariActivity alloc] init];
if (self.popover)
{
if ([self.popover isPopoverVisible])
{
[self.popover dismissPopoverAnimated:YES];
}
return;
}
UIActivityViewController *activityVC = [[UIActivityViewController alloc]initWithActivityItems:activityItems applicationActivities:@[activity]];
activityVC.excludedActivityTypes = @[UIActivityTypeAssignToContact, UIActivityTypePostToWeibo, UIActivityTypeSaveToCameraRoll];
UIActivityViewController *__weak weakActivityVC = activityVC;
activityVC.completionHandler = ^(NSString *service, BOOL completed)
{
weakActivityVC.excludedActivityTypes = nil;
self.popover = nil;
};
self.popover = [[UIPopoverController alloc]initWithContentViewController:activityVC];
[self.popover presentPopoverFromBarButtonItem:systemAction permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}
}
@end