<script type="text/javascript" src="menes/menes.js"></script>
<script type="text/javascript" src="package.js"></script>
<base target="_blank"/>
+
+ <script type="text/javascript">
+ var count = -1;
+ var loaded = function() {
+ if (count++ != 0)
+ return;
+ $("#depiction-load").remove();
+ $.each($("#depiction-src"), function (node) {
+ node.style.display = "block";
+ });
+ }
+
+ var remove = function() {
+ $(".description").display("block");
+ $(".depiction").remove();
+ }
+ </script>
+
+ <style>
+ body {
+ background: #c8c8c8 url(menes/pinstripes.png);
+ }
+
+ #remove {
+ margin-top: 7px;
+ text-align: center;
+ }
+
+ #indicator {
+ left: 20px;
+ position: relative;
+ top: -5px;
+ }
+
+ #notice {
+ margin-bottom: -14px;
+ overflow: hidden;
+ width: 320px;
+ }
+
+ #remove > a {
+ color: #335588;
+ text-decoration: none;
+ }
+
+ #upper-bar {
+ margin-bottom: 0;
+ margin-top: 10px;
+ }
+
+ #lower-bar {
+ margin-bottom: 10px;
+ margin-top: 0;
+ }
+ </style>
</head><body><div class="page">
<div class="dialog">
<div class="panel">
</a>
</fieldset>
+<div id="notice" class="notice"><iframe
+ id="notice-src"
+ frameborder="0"
+ width="320"
+ height="0"
+ target="_top"
+></iframe></div>
+
+<div id="remove" class="depiction">
+ <a href="javascript:remove()">Remove Custom Depiction</a>
+</div>
+
+<hr id="upper-bar" class="depiction"/>
+
<div style="width: 320px; overflow: hidden" class="depiction"><iframe
id="depiction-src"
frameborder="0"
- width="300"
+ width="320"
+ height="0"
target="_top"
+ onLoad="loaded()"
></iframe></div>
+<hr id="lower-bar" class="depiction"/>
+
<fieldset class="description">
<div id="description"></div>
- <a id="homepage-href">
+ <a class="homepage" id="homepage-href">
<label>More Information</label>
</a>
</fieldset>
<label class="source">Source Infomation</label>
<fieldset class="source">
<div><label id="source-name"></label></div>
- <div id="source-description"></div>
+ <div class="source-description" id="source-description"></div>
</fieldset>
</div>
"name": "Allen Porter",
"address": "allen.porter@gmail.com"
},
- "depiction": "http://planet-iphones.com/repository/info/chromium1.3.php",
+ //"depiction": "http://planet-iphones.com/repository/info/chromium1.3.php",
+ "depiction": "http://cydia.saurik.com/terminal.html",
"description": "this is a sample description",
- //"homepage": "http://cydia.saurik.com/terminal.html",
- "homepage": "http://planet-iphones.com/repository/info/chromium1.3.php",
+ "homepage": "http://cydia.saurik.com/terminal.html",
"installed": "286u-4",
"id": "mobileterminal",
"section": "Terminal Support",
$("#author-href").href("mailto:" + author.address + "?subject=" + regarding);
}
+ $("#notice-src").src("http://cydia.saurik.com/notice/" + encodeURIComponent(id) + ".html");
+
var depiction = package.depiction;
- if (depiction != null) {
- $(".description").remove();
- $("#depiction-src").src(depiction);
- } else {
+ if (depiction == null)
$(".depiction").remove();
-
- var description = package.description;
- if (description == null)
- description = package.tagline;
- else
- description = description.replace(/\n/g, "<br/>");
- $("#description").html(description);
+ else {
+ $(".description").display("none");
+ $("#depiction-src").src(depiction);
}
+ var description = package.description;
+ if (description == null)
+ description = package.tagline;
+ else
+ description = description.replace(/\n/g, "<br/>");
+ $("#description").html(description);
+
var homepage = package.homepage;
if (homepage == null)
$(".homepage").remove();
#include <CoreGraphics/CoreGraphics.h>
#include <GraphicsServices/GraphicsServices.h>
#include <Foundation/Foundation.h>
+
#include <WebCore/DOMHTML.h>
+#import <QuartzCore/CALayer.h>
#import <UIKit/UIActionSheet.h>
#import <UIKit/UIAnimator.h>
#import <UIKit/UIWindow.h>
#import <UIKit/UIView-Geometry.h>
+#import <UIKit/UIView-Gestures.h>
#import <UIKit/UIView-Hierarchy.h>
#import <UIKit/UIView-Rendering.h>
+#import <UIKit/UIWebDocumentView-Forms.h>
+
#import <UIKit/NSString-UIStringDrawing.h>
// XXX: remove
#import "UICaboodle.h"
/* }}} */
+@interface WebView (Cydia)
+- (void) _setLayoutInterval:(float)interval;
+@end
+
/* iPhoneOS 2.0 Compatibility {{{ */
#ifdef __OBJC2__
@interface UICGColor : NSObject {
static CGColor White_;
static CGColor Gray_;
+static NSString *App_;
static NSString *Home_;
static BOOL Sounds_Keyboard_;
- (BOOL) upgradableAndEssential:(BOOL)essential;
- (BOOL) essential;
- (BOOL) broken;
+- (BOOL) unfiltered;
- (BOOL) visible;
- (BOOL) half;
- (void) install;
- (void) remove;
-- (NSNumber *) isVisiblySearchedForBy:(NSString *)search;
-- (NSNumber *) isInstalledAndVisible:(NSNumber *)number;
+- (NSNumber *) isUnfilteredAndSearchedForBy:(NSString *)search;
+- (NSNumber *) isInstalledAndUnfiltered:(NSNumber *)number;
- (NSNumber *) isVisiblyUninstalledInSection:(NSString *)section;
- (NSNumber *) isVisibleInSource:(Source *)source;
return [database_ cache][iterator_].InstBroken();
}
-- (BOOL) visible {
+- (BOOL) unfiltered {
NSString *section = [self section];
- return [self hasSupportingRole] && (section == nil || isSectionVisible(section));
+ return section == nil || isSectionVisible(section);
+}
+
+- (BOOL) visible {
+ return [self hasSupportingRole] && [self unfiltered];
}
- (BOOL) half {
[database_ cache]->MarkDelete(iterator_, true);
}
-- (NSNumber *) isVisiblySearchedForBy:(NSString *)search {
+- (NSNumber *) isUnfilteredAndSearchedForBy:(NSString *)search {
return [NSNumber numberWithBool:(
- [self valid] && [self visible] && [self matches:search]
+ [self unfiltered] && [self matches:search]
)];
}
-- (NSNumber *) isInstalledAndVisible:(NSNumber *)number {
+- (NSNumber *) isInstalledAndUnfiltered:(NSNumber *)number {
return [NSNumber numberWithBool:(
- (![number boolValue] || [self visible]) && [self installed] != nil
+ (![number boolValue] || [self unfiltered]) && [self installed] != nil
)];
}
NSString *section = [self section];
return [NSNumber numberWithBool:(
- [self valid] && [self visible] &&
+ [self visible] &&
[self installed] == nil && (
name == nil ||
section == nil && [name length] == 0 ||
if (NSString *icon = [package icon])
icon_ = [UIImage imageAtPath:[icon substringFromIndex:6]];
if (icon_ == nil) if (NSString *section = [package section])
- icon_ = [UIImage applicationImageNamed:[NSString stringWithFormat:@"Sections/%@.png", Simplify(section)]];
+ icon_ = [UIImage imageAtPath:[NSString stringWithFormat:@"%@/Sections/%@.png", App_, Simplify(section)]];
/*if (icon_ == nil) if (NSString *icon = [source defaultIcon])
icon_ = [UIImage imageAtPath:[icon substringFromIndex:6]];*/
if (icon_ == nil)
[sheet dismiss];
}
+#include "internals.h"
+
+- (void) webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame {
+ [[frame windowObject] evaluateWebScript:@"document.base.target = '_top'"];
+ return [super webView:sender didFinishLoadForFrame:frame];
+}
+
- (void) webView:(WebView *)sender didClearWindowObject:(WebScriptObject *)window forFrame:(WebFrame *)frame {
[window setValue:package_ forKey:@"package"];
}
for (size_t i(0); i != [packages count]; ++i) {
Package *package([packages objectAtIndex:i]);
- if ([[package performSelector:filter_ withObject:object_] boolValue])
+ if ([package valid] && [[package performSelector:filter_ withObject:object_] boolValue])
[packages_ addObject:package];
}
initWithBook:book
database:database
title:nil
- filter:@selector(isInstalledAndVisible:)
+ filter:@selector(isInstalledAndUnfiltered:)
with:[NSNumber numberWithBool:YES]
];
NSString *href = [webview mainFrameURL];
[urls_ addObject:[NSURL URLWithString:href]];
- CGRect webrect = [scroller_ frame];
+ CGRect webrect = [scroller_ bounds];
webrect.size.height = 0;
[webview_ setFrame:webrect];
}
}
}
+- (BOOL) webView:(WebView *)sender shouldScrollToPoint:(struct CGPoint)point forFrame:(WebFrame *)frame {
+ _trace();
+ return [webview_ webView:sender shouldScrollToPoint:point forFrame:frame];
+}
+
+- (void) webView:(WebView *)sender didReceiveViewportArguments:(id)arguments forFrame:(WebFrame *)frame {
+ return [webview_ webView:sender didReceiveViewportArguments:arguments forFrame:frame];
+}
+
+- (void) webView:(WebView *)sender needsScrollNotifications:(id)notifications forFrame:(WebFrame *)frame {
+ return [webview_ webView:sender needsScrollNotifications:notifications forFrame:frame];
+}
+
+- (void) webView:(WebView *)sender didCommitLoadForFrame:(WebFrame *)frame {
+ return [webview_ webView:sender didCommitLoadForFrame:frame];
+}
+
+- (void) webView:(WebView *)sender didReceiveDocTypeForFrame:(WebFrame *)frame {
+ return [webview_ webView:sender didReceiveDocTypeForFrame:frame];
+}
+
- (void) webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame {
- if ([frame parentFrame] != nil)
- return;
- [self _finishLoading];
+ if ([frame parentFrame] == nil)
+ [self _finishLoading];
+ return [webview_ webView:sender didFinishLoadForFrame:frame];
}
- (void) webView:(WebView *)sender didFailProvisionalLoadWithError:(NSError *)error forFrame:(WebFrame *)frame {
webview_ = [[UIWebView alloc] initWithFrame:webrect];
[scroller_ addSubview:webview_];
- [webview_ setTilingEnabled:YES];
[webview_ setTileSize:CGSizeMake(webrect.size.width, 500)];
+
+ [webview_ setTilingEnabled:YES];
+ [webview_ setTileMinificationFilter:kCAFilterNearest];
[webview_ setAutoresizes:YES];
+
+ [webview_ setViewportSize:CGSizeMake(980, -1) forDocumentTypes:0x10];
+ [webview_ setViewportSize:CGSizeMake(320, -1) forDocumentTypes:0x2];
+ [webview_ setViewportSize:CGSizeMake(320, -1) forDocumentTypes:0x8];
+
+ [webview_ _setDocumentType:0x4];
+
+ [webview_ setZoomsFocusedFormControl:YES];
+ [webview_ setContentsPosition:7];
+ [webview_ setEnabledGestures:0xa];
+ [webview_ setValue:[NSNumber numberWithBool:YES] forGestureAttribute:0x4];
+ [webview_ setValue:[NSNumber numberWithBool:YES] forGestureAttribute:0x7];
[webview_ setDelegate:self];
- //[webview_ setEnabledGestures:2];
+ [webview_ setGestureDelegate:self];
+ [webview_ setSmoothsFonts:YES];
CGSize indsize = [UIProgressIndicator defaultSizeForStyle:kUIProgressIndicatorStyleMediumWhite];
indicator_ = [[UIProgressIndicator alloc] initWithFrame:CGRectMake(281, 42, indsize.width, indsize.height)];
[webview setResourceLoadDelegate:self];
[webview setUIDelegate:self];
+ //[webview _setLayoutInterval:0.5];
+
urls_ = [[NSMutableArray alloc] initWithCapacity:16];
} return self;
}
+- (void) didFinishGesturesInView:(UIView *)view forEvent:(id)event {
+ [webview_ redrawScaledDocument];
+}
+
- (void) _rightButtonClicked {
reloading_ = true;
[self reloadURL];
initWithBook:book
database:database
title:nil
- filter:@selector(isVisiblySearchedForBy:)
+ filter:@selector(isUnfilteredAndSearchedForBy:)
with:nil
];
bootstrap_ = argc > 1 && strcmp(argv[1], "--bootstrap") == 0;
+ App_ = [[NSBundle mainBundle] bundlePath];
Home_ = NSHomeDirectory();
{