X-Git-Url: https://git.saurik.com/cydia.git/blobdiff_plain/7b0ce2dae1de402fa371933b3254bf19b81a89eb..092934d18a7bb1b3e1d768657293e99f432b5d0a:/UICaboodle/RVBook.mm diff --git a/UICaboodle/RVBook.mm b/UICaboodle/RVBook.mm index d83d7608..a6f53181 100644 --- a/UICaboodle/RVBook.mm +++ b/UICaboodle/RVBook.mm @@ -8,8 +8,57 @@ #import #import +#import +#import + +#include +#include + +#include + #import "RVPage.h" +@interface NSObject (UICaboodleRVBook) +- (float) widthForButtonContents:(float)width; +@end + +@implementation NSObject (UICaboodleRVBook) + +- (float) widthForButtonContents:(float)width { + return width; +} + +@end + +@interface UIImage (UICaboodleRVBook) +- (float) widthForButtonContents:(float)width; +@end + +@implementation UIImage (UICaboodleRVBook) + +- (float) widthForButtonContents:(float)width { + return [self size].width + 8; +} + +@end + +@interface RVNavigationBar : UINavigationBar { +} + +- (id) createButtonWithContents:(id)contents width:(float)width barStyle:(int)barStyle buttonStyle:(int)style isRight:(BOOL)right; +@end + +@implementation RVNavigationBar + +- (id) createButtonWithContents:(id)contents width:(float)width barStyle:(int)barStyle buttonStyle:(int)style isRight:(BOOL)right { + float adjust = [contents widthForButtonContents:width]; + NSLog(@"cc:%@:%g:%g", contents, width, adjust); + width = adjust; + return [super createButtonWithContents:contents width:width barStyle:barStyle buttonStyle:style isRight:right]; +} + +@end + @implementation RVBook - (void) dealloc { @@ -21,6 +70,10 @@ [super dealloc]; } +- (UINavigationBar *) navigationBar { + return navbar_; +} + - (void) navigationBar:(UINavigationBar *)navbar buttonClicked:(int)button { _assert([pages_ count] != 0); RVPage *page = [pages_ lastObject]; @@ -44,17 +97,15 @@ pages_ = [[NSMutableArray arrayWithCapacity:4] retain]; struct CGRect bounds = [self bounds]; - CGSize navsize = [UINavigationBar defaultSizeWithPrompt]; + CGSize navsize = [UINavigationBar defaultSize]; CGRect navrect = {{0, 0}, navsize}; - navbar_ = [[UINavigationBar alloc] initWithFrame:navrect]; + navbar_ = [[RVNavigationBar alloc] initWithFrame:navrect]; [self addSubview:navbar_]; [navbar_ setBarStyle:0]; [navbar_ setDelegate:self]; - [navbar_ setPrompt:@""]; - transition_ = [[UITransitionView alloc] initWithFrame:CGRectMake( bounds.origin.x, bounds.origin.y + navsize.height, bounds.size.width, bounds.size.height - navsize.height )]; @@ -96,16 +147,14 @@ [navbar_ pushNavigationItem:navitem]; BOOL animated = [pages_ count] == 0 ? NO : YES; + [page setFrame:[transition_ bounds]]; [transition_ transition:(animated ? 1 : 0) toView:page]; [page setPageActive:YES]; [pages_ addObject:page]; [self reloadButtonsForPage:page]; - if ([navbar_ respondsToSelector:@selector(setAccessoryView:animate:goingBack:)]) - [navbar_ setAccessoryView:[page accessoryView] animate:animated goingBack:NO]; - else - [navbar_ setAccessoryView:[page accessoryView] animate:animated removeOnPop:NO]; + [navbar_ setAccessoryView:[page accessoryView] animate:animated removeOnPop:NO]; } - (void) popPages:(unsigned)pages { @@ -122,10 +171,6 @@ [self resetViewAnimated:YES toPage:[pages_ lastObject]]; } -- (void) setPrompt:(NSString *)prompt { - [navbar_ setPrompt:prompt]; -} - - (void) resetViewAnimated:(BOOL)animated { resetting_ = true; @@ -145,36 +190,35 @@ - (void) resetViewAnimated:(BOOL)animated toPage:(RVPage *)page { [page resetViewAnimated:animated]; + [page setFrame:[transition_ bounds]]; [transition_ transition:(animated ? 2 : 0) toView:page]; [page setPageActive:YES]; [self reloadButtonsForPage:page]; - if ([navbar_ respondsToSelector:@selector(setAccessoryView:animate:goingBack:)]) - [navbar_ setAccessoryView:[page accessoryView] animate:animated goingBack:YES]; - else - [navbar_ setAccessoryView:[page accessoryView] animate:animated removeOnPop:NO]; + [navbar_ setAccessoryView:[page accessoryView] animate:animated removeOnPop:NO]; } -- (void) setTitle:(NSString *)title forPage:(RVPage *)page { +- (void) setBackButtonTitle:(NSString *)title forPage:(RVPage *)page { if ([pages_ count] == 0 || page != [pages_ lastObject]) return; UINavigationItem *navitem = [navbar_ topItem]; - [navitem setTitle:title]; + [navitem setBackButtonTitle:title]; } -- (void) setBackButtonTitle:(NSString *)title forPage:(RVPage *)page { +- (void) reloadTitleForPage:(RVPage *)page { if ([pages_ count] == 0 || page != [pages_ lastObject]) return; UINavigationItem *navitem = [navbar_ topItem]; - [navitem setBackButtonTitle:title]; + NSString *title = [self getTitleForPage:page]; + [navitem setTitle:title]; } - (void) reloadButtonsForPage:(RVPage *)page { if ([pages_ count] == 0 || page != [pages_ lastObject]) return; NSString *leftButtonTitle([page leftButtonTitle]); - RVUINavBarButtonStyle leftButtonStyle = [page leftButtonStyle]; - RVUINavBarButtonStyle rightButtonStyle = [page rightButtonStyle]; + UINavigationButtonStyle leftButtonStyle = [page leftButtonStyle]; + UINavigationButtonStyle rightButtonStyle = [page rightButtonStyle]; //[navbar_ showButtonsWithLeftTitle:leftButtonTitle rightTitle:[page rightButtonTitle] leftBack:(leftButtonTitle == nil)]; [navbar_