From 48c0461e36f4bbf6e4a5d7be6e58af0125bb1f9c Mon Sep 17 00:00:00 2001 From: "Jay Freeman (saurik)" Date: Sat, 19 Jul 2008 23:28:55 +0000 Subject: [PATCH] Fixed browser links and modify delegates. --- Cydia.mm | 75 +++++++++++++++++++++++++++++----------- UICaboodle/BrowserView.h | 2 ++ 2 files changed, 56 insertions(+), 21 deletions(-) diff --git a/Cydia.mm b/Cydia.mm index 27113ffc..26a92759 100644 --- a/Cydia.mm +++ b/Cydia.mm @@ -3517,6 +3517,7 @@ Pcre conffile_r("^'(.*)' '(.*)' ([01]) ([01])$"); } - (void) loadRequest:(NSURLRequest *)request { + pushed_ = true; [webview_ loadRequest:request]; } @@ -3538,27 +3539,7 @@ Pcre conffile_r("^'(.*)' '(.*)' ([01]) ([01])$"); [self view:sender didSetFrame:frame]; } -- (NSURLRequest *) webView:(WebView *)sender resource:(id)identifier willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse fromDataSource:(WebDataSource *)dataSource { - return [self _addHeadersToRequest:request]; -} - -- (WebView *) webView:(WebView *)sender createWebViewWithRequest:(NSURLRequest *)request { - if ([[[request URL] scheme] isEqualToString:@"apptapp"]) - return nil; - [self setBackButtonTitle:title_]; - BrowserView *browser = [[[BrowserView alloc] initWithBook:book_ database:database_] autorelease]; - [browser setDelegate:delegate_]; - [book_ pushPage:browser]; - [browser loadRequest:[self _addHeadersToRequest:request]]; - return [browser webView]; -} - -- (void) webView:(WebView *)sender willClickElement:(id)element { - if (![element respondsToSelector:@selector(href)]) - return; - NSString *href = [element href]; - if (href == nil) - return; +- (void) getAppTapp:(NSString *)href { if ([href hasPrefix:@"apptapp://package/"]) { NSString *name = [href substringFromIndex:18]; Package *package = [database_ packageWithName:name]; @@ -3586,6 +3567,48 @@ Pcre conffile_r("^'(.*)' '(.*)' ([01]) ([01])$"); } } +- (void) webView:(WebView *)sender willClickElement:(id)element { + if (![element respondsToSelector:@selector(href)]) + return; + NSString *href = [element href]; + if (href == nil) + return; + if ([href hasPrefix:@"apptapp://package/"]) + [self getAppTapp:href]; +} + +- (NSURLRequest *) webView:(WebView *)sender resource:(id)identifier willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse fromDataSource:(WebDataSource *)dataSource { + if ([[[request URL] scheme] isEqualToString:@"apptapp"]) { + [self getAppTapp:[[request URL] absoluteString]]; + return nil; + } + + if (!pushed_) { + pushed_ = true; + [book_ pushPage:self]; + } + + return [self _addHeadersToRequest:request]; +} + +- (WebView *) webView:(WebView *)sender createWebViewWithRequest:(NSURLRequest *)request { + if (request != nil && [[[request URL] scheme] isEqualToString:@"apptapp"]) + return nil; + else { + [self setBackButtonTitle:title_]; + + BrowserView *browser = [[[BrowserView alloc] initWithBook:book_ database:database_] autorelease]; + [browser setDelegate:delegate_]; + + if (request != nil) { + [browser loadRequest:[self _addHeadersToRequest:request]]; + [book_ pushPage:browser]; + } + + return [browser webView]; + } +} + - (void) webView:(WebView *)sender didReceiveTitle:(NSString *)title forFrame:(WebFrame *)frame { title_ = [title retain]; [self setTitle:title]; @@ -3752,6 +3775,10 @@ Pcre conffile_r("^'(.*)' '(.*)' ([01]) ([01])$"); - (void) resetViewAnimated:(BOOL)animated { } +- (void) setPushed:(bool)pushed { + pushed_ = pushed; +} + @end /* }}} */ @@ -4408,6 +4435,12 @@ Pcre conffile_r("^'(.*)' '(.*)' ([01]) ([01])$"); return @"Packages"; } +- (void) setDelegate:(id)delegate { + [super setDelegate:delegate]; + [packages_ setDelegate:delegate]; + [sources_ setDelegate:delegate]; +} + @end /* }}} */ /* Search View {{{ */ diff --git a/UICaboodle/BrowserView.h b/UICaboodle/BrowserView.h index a58a5b7b..c9a1f7d7 100644 --- a/UICaboodle/BrowserView.h +++ b/UICaboodle/BrowserView.h @@ -21,6 +21,8 @@ NSString *title_; bool loading_; bool reloading_; + + bool pushed_; } - (void) loadURL:(NSURL *)url cachePolicy:(NSURLRequestCachePolicy)policy; -- 2.45.2