#include <ext/hash_map>
+#include <notify.h>
+
#import "UICaboodle/BrowserView.h"
#import "UICaboodle/ResetView.h"
return [[NSString stringWithUTF8String:page] stringByAppendingString:path];
}
+static _finline void UpdateExternalStatus(uint64_t newStatus) {
+ int notify_token;
+ if (notify_register_check("com.saurik.Cydia.status", ¬ify_token) == NOTIFY_STATUS_OK) {
+ notify_set_state(notify_token, newStatus);
+ notify_cancel(notify_token);
+ }
+ notify_post("com.saurik.Cydia.status");
+}
+
/* [NSObject yieldToSelector:(withObject:)] {{{*/
@interface NSObject (Cydia)
- (id) yieldToSelector:(SEL)selector withObject:(id)object;
[super dealloc];
}
-- (void) actionSheet:(UIActionSheet *)sheet clickedButtonAtIndex:(NSInteger)button {
- NSString *context([sheet context]);
-
- if ([context isEqualToString:@"cancel"]) {
- bool clear;
-
- if (button == [sheet cancelButtonIndex]) return;
- else if (button == [sheet destructiveButtonIndex]) clear = true;
- else clear = false;
-
- [sheet dismissWithClickedButtonIndex:0xDEADBEEF animated:YES];
- [self dismissModalViewControllerAnimated:YES];
- [delegate_ cancelAndClear:clear];
- }
-}
-
- (void) alertView:(UIAlertView *)alert clickedButtonAtIndex:(NSInteger)button {
NSString *context([alert context]);
}
}
+- (id) invokeDefaultMethodWithArguments:(NSArray *)args {
+ [self dismissModalViewControllerAnimated:YES];
+ [delegate_ cancelAndClear:NO];
+
+ return nil;
+}
+
- (void) webView:(WebView *)sender didClearWindowObject:(WebScriptObject *)window forFrame:(WebFrame *)frame {
[super webView:sender didClearWindowObject:window forFrame:frame];
[window setValue:changes_ forKey:@"changes"];
[window setValue:issues_ forKey:@"issues"];
[window setValue:sizes_ forKey:@"sizes"];
+ [window setValue:self forKey:@"queue"];
}
- (id) initWithDatabase:(Database *)database {
[self loadURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"confirm" ofType:@"html"]]];
UIBarButtonItem *leftItem = [[UIBarButtonItem alloc]
- initWithTitle:[NSString stringWithFormat:UCLocalize("SLASH_DELIMITED"), UCLocalize("CANCEL"), UCLocalize("QUEUE")]
+ initWithTitle:UCLocalize("CANCEL")//[NSString stringWithFormat:UCLocalize("SLASH_DELIMITED"), UCLocalize("CANCEL"), UCLocalize("QUEUE")]
style:UIBarButtonItemStylePlain
target:self
action:@selector(cancelButtonClicked)
}
- (void) cancelButtonClicked {
- UIActionSheet *sheet = [[UIActionSheet alloc]
- initWithTitle:nil
- delegate:self
- cancelButtonTitle:nil
- destructiveButtonTitle:nil
- otherButtonTitles:nil
- ];
-
- [sheet addButtonWithTitle:UCLocalize("CANCEL_CLEAR")];
- [sheet setDestructiveButtonIndex:[sheet numberOfButtons] - 1];
- [sheet addButtonWithTitle:UCLocalize("CONTINUE_QUEUING")];
- [sheet setContext:@"cancel"];
-
- [delegate_ showActionSheet:[sheet autorelease] fromItem:[[self navigationItem] leftBarButtonItem]];
+ [self dismissModalViewControllerAnimated:YES];
+ [delegate_ cancelAndClear:YES];
}
#if !AlwaysReload
- (void) closeButtonPushed {
running_ = NO;
+ UpdateExternalStatus(0);
+
switch (Finish_) {
case 0:
[self dismissModalViewControllerAnimated:YES];
system("su -c /usr/bin/uicache mobile");
+ UpdateExternalStatus(Finish_ == 0 ? 2 : 0);
+
[delegate_ setStatusBarShowsProgress:NO];
}
}
- (void) detachNewThreadSelector:(SEL)selector toTarget:(id)target withObject:(id)object title:(NSString *)title {
+ UpdateExternalStatus(1);
+
if (title_ != nil)
[title_ release];
if (title == nil)
return files_ == nil ? 0 : [files_ count];
}
-- (float) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
- return 24;
-}
+/*- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
+ return 24.0f;
+}*/
- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *reuseIdentifier = @"Cell";
files_ = [[NSMutableArray arrayWithCapacity:32] retain];
list_ = [[UITableView alloc] initWithFrame:[[self view] bounds]];
+ [list_ setAutoresizingMask:UIViewAutoresizingFlexibleBoth];
+ [list_ setRowHeight:24.0f];
[[self view] addSubview:list_];
[list_ setDataSource:self];
}
- (void) reloadButtonClicked {
- // You don't reload a package view by clicking the button.
+ // Don't reload a package view by clicking the button.
+}
+
+- (void) applyLoadingTitle {
+ // Don't show "Loading" as the title. Ever.
}
#endif
[list_ deselectRowAtIndexPath:[list_ indexPathForSelectedRow] animated:animated];
}
-- (CGFloat) tableView:(UITableView *)table heightForRowAtIndexPath:(NSIndexPath *)path {
- return 73;
+/*- (CGFloat) tableView:(UITableView *)table heightForRowAtIndexPath:(NSIndexPath *)path {
return [PackageCell heightForPackage:[self packageAtIndexPath:path]];
-}
+}*/
- (NSIndexPath *) tableView:(UITableView *)table willSelectRowAtIndexPath:(NSIndexPath *)path {
Package *package([self packageAtIndexPath:path]);
list_ = [[UITableView alloc] initWithFrame:[self bounds] style:UITableViewStylePlain];
[list_ setAutoresizingMask:UIViewAutoresizingFlexibleBoth];
+ [list_ setRowHeight:73.0f];
[self addSubview:list_];
[list_ setDataSource:self];
- (void) queueButtonClicked {
[delegate_ queue];
}
-#endif
-- (void) didFinishLoading {
- [self queueStatusDidChange];
+- (void) applyLoadingTitle {
+ // No "Loading" title.
+}
+
+- (void) applyRightButton {
+ // No right button.
}
+#endif
- (void) queueStatusDidChange {
#if !AlwaysReload
return editing_ ? [sections_ count] : [filtered_ count] + 1;
}
-- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
- return 45;
-}
+/*- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
+ return 45.0f;
+}*/
- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *reuseIdentifier = @"SectionCell";
list_ = [[UITableView alloc] initWithFrame:[[self view] bounds]];
[list_ setAutoresizingMask:UIViewAutoresizingFlexibleBoth];
+ [list_ setRowHeight:45.0f];
[[self view] addSubview:list_];
[list_ setDataSource:self];
return cell;
}
-- (CGFloat) tableView:(UITableView *)table heightForRowAtIndexPath:(NSIndexPath *)path {
- return 73;
+/*- (CGFloat) tableView:(UITableView *)table heightForRowAtIndexPath:(NSIndexPath *)path {
return [PackageCell heightForPackage:[self packageAtIndexPath:path]];
-}
+}*/
- (NSIndexPath *) tableView:(UITableView *)table willSelectRowAtIndexPath:(NSIndexPath *)path {
Package *package([self packageAtIndexPath:path]);
list_ = [[UITableView alloc] initWithFrame:[[self view] bounds] style:UITableViewStylePlain];
[list_ setAutoresizingMask:UIViewAutoresizingFlexibleBoth];
+ [list_ setRowHeight:73.0f];
[[self view] addSubview:list_];
[list_ setDataSource:self];