/* ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net This code is covered by the GNU GPL licence */ #import "activegsAppDelegate.h" #import "detailViewController.h" #import "activegsList.h" #include "../Common/svnversion.h" #import "asyncimageview.h" #import "activegsViewController.h" @implementation detailViewController @synthesize diskName=_diskName; @synthesize diskCompany = _diskCompany; @synthesize diskYear=_diskYear; @synthesize diskDescription = _diskDescription; @synthesize diskApple2 = _diskApple2; @synthesize diskApple2GS = _diskApple2GS; @synthesize diskWebView = _diskWebView; @synthesize screenShot1 = _screenShot1; @synthesize screenShot2 = _screenShot2; @synthesize screenShot3 = _screenShot3; @synthesize navView = _navView; @synthesize navItem = _navItem; /* @synthesize diskSelected = _diskSelected; @synthesize list = _list; */ - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { requestURL = [[ request URL ] retain]; // Check to see what protocol/scheme the requested URL is. if ( ( [ [ requestURL scheme ] isEqualToString: @"http" ] || [ [ requestURL scheme ] isEqualToString: @"https" ] ) && ( navigationType == UIWebViewNavigationTypeLinkClicked ) ) { UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:@"iPhone" message:@"Link will open in Safari, continue?" delegate:self cancelButtonTitle:@"Yes" otherButtonTitles:@"No",nil] autorelease]; [alert show]; return NO; } return YES; } - (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex { if (buttonIndex==0) [[ UIApplication sharedApplication ] openURL: requestURL ]; } - (void)viewWillAppear:(BOOL)animated { printf("settitle2:%s\n",self->diskSelected->name.c_str()); [self.navItem setTitle:[NSString stringWithUTF8String: self->diskSelected->name.c_str()]]; self.diskName.text = [NSString stringWithUTF8String: self->diskSelected->name.c_str()]; self.diskCompany.text = [NSString stringWithUTF8String: self->diskSelected->publisher.c_str()]; NSString* desc = [NSString stringWithUTF8String: self->diskSelected->desc.c_str()]; float rr = [pManager resolutionRatio]; float fs1 = .9 * rr; float fs2 = 1.5 ;//* rr; NSString* html = [NSString stringWithFormat:@"

%@

",fs1,fs2,desc]; [self.diskWebView loadHTMLString:html baseURL:nil]; self.diskYear.text = [NSString stringWithUTF8String: self->diskSelected->year.c_str()]; #ifdef ACTIVEGS_NOAPPLEBRANDING self.diskApple2.hidden = TRUE; self.diskApple2GS.hidden = TRUE; #else self.diskApple2.hidden = (self->diskSelected->is2GS); self.diskApple2GS.hidden = !(self->diskSelected->is2GS); #endif self.screenShot1.image = nil; self.screenShot2.image = nil; self.screenShot3.image = nil; AsyncImageView* asyncImage1 = [[AsyncImageView alloc] autorelease] ; [asyncImage1 initImage:self->diskSelected->screenShots[0].c_str() target:self.screenShot1 width:128 height:80]; [asyncImage1 loadImage:nil]; AsyncImageView* asyncImage2 = [[AsyncImageView alloc] autorelease]; [asyncImage2 initImage:self->diskSelected->screenShots[1].c_str() target:self.screenShot2 width:128 height:80]; [asyncImage2 loadImage:nil]; AsyncImageView* asyncImage3 = [[AsyncImageView alloc] autorelease] ; [asyncImage3 initImage:self->diskSelected->screenShots[2].c_str() target:self.screenShot3 width:128 height:80]; [asyncImage3 loadImage:nil]; self.diskWebView.backgroundColor = [UIColor whiteColor]; } - (void)backButton:(id)sender { [pManager doStateChange:[pManager getBrowserView] type:kCATransitionPush sens:kCATransitionFromLeft]; } - (void)launchButton { [pManager launchDiskImage:self->diskSelected pathname:self->list->pathName trackername:self->list->trackerName]; } // IOS 5 Compatibility - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return YES; } // IOS6 - (BOOL)shouldAutorotate { return YES; } - (void)dealloc { [requestURL release]; [super dealloc]; } -(void)viewDidLoad { CGRect r = [UIScreen mainScreen].applicationFrame; self.navItem = [[[UINavigationItem alloc] initWithTitle:@"Detail"] autorelease]; [self.navView pushNavigationItem:self.navItem animated:FALSE]; [self.view setFrame:r]; // Rectangle #if 0 UIBarButtonItem *browseItem = [[UIBarButtonItem alloc] initWithTitle:@"DETAIL" style:UIBarButtonItemStyleBordered target:self action:@selector(backButton:)]; #else // left Arrow UIButton* backButton = [UIButton buttonWithType:(UIButtonType)101]; // left-pointing shape! [backButton addTarget:self action:@selector(backButton:) forControlEvents:UIControlEventTouchUpInside]; [backButton setTitle:@"List" forState:UIControlStateNormal]; // create button item -- possible because UIButton subclasses UIView! UIBarButtonItem* browseItem = [[[UIBarButtonItem alloc] initWithCustomView:backButton] autorelease]; #endif self.navItem.leftBarButtonItem = browseItem; // Swipe left to go back to browsing UISwipeGestureRecognizer* grswipeleft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeLeft:)] ; grswipeleft.direction = UISwipeGestureRecognizerDirectionLeft; grswipeleft.cancelsTouchesInView = NO; [self.view addGestureRecognizer:grswipeleft]; [grswipeleft release]; // Swipe Right to launch UISwipeGestureRecognizer* grswiperight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeRight:)] ; grswiperight.direction = UISwipeGestureRecognizerDirectionRight; grswiperight.cancelsTouchesInView = NO; [self.view addGestureRecognizer:grswiperight]; [grswiperight release]; } -(void)swipeRight :(UISwipeGestureRecognizer*)_rec { if (_rec.state == UIGestureRecognizerStateEnded) { [pManager doStateChange:[pManager getBrowserView] type:kCATransitionPush sens:kCATransitionFromLeft]; } } -(void)swipeLeft :(UISwipeGestureRecognizer*)_rec { if (_rec.state == UIGestureRecognizerStateEnded) { [pManager doStateChange:[pManager getEmulatorView] type:kCATransitionPush sens:kCATransitionFromRight]; } } - (IBAction) launchButton:(id)_sender { [pManager launchDiskImage:self->diskSelected pathname:self->list->pathName.c_str() trackername:self->list->trackerName.c_str()]; } @end