X-Git-Url: https://git.saurik.com/winterboard.git/blobdiff_plain/c8fbf228103b7fdee930ce048a73dbff64aef99c..77d89d52a33c4a38c3b5b5a59737d3dbfbf92668:/Library.mm diff --git a/Library.mm b/Library.mm index a24b70c..95541ee 100644 --- a/Library.mm +++ b/Library.mm @@ -60,6 +60,7 @@ bool _itv; #import #import #import +#import #import #import @@ -127,6 +128,7 @@ Class $SBAwayView; Class $SBBookmarkIcon; Class $SBButtonBar; Class $SBCalendarIconContentsView; +Class $SBDockIconListView; Class $SBIcon; Class $SBIconBadge; Class $SBIconController; @@ -144,6 +146,7 @@ Class $SBUIController; Class $SBWidgetApplicationIcon; static bool IsWild_; +static bool Four_; @interface NSDictionary (WinterBoard) - (UIColor *) wb$colorForKey:(NSString *)key; @@ -172,17 +175,18 @@ static BOOL (*_GSFontGetUseLegacyFontMetrics)(); #define $GSFontGetUseLegacyFontMetrics() \ (_GSFontGetUseLegacyFontMetrics == NULL ? YES : _GSFontGetUseLegacyFontMetrics()) -bool Debug_ = false; -bool Engineer_ = false; -bool SummerBoard_ = true; +static bool Debug_ = false; +static bool Engineer_ = false; +static bool SummerBoard_ = true; +static bool SpringBoard_; static UIImage *(*_UIApplicationImageWithName)(NSString *name); static UIImage *(*_UIImageAtPath)(NSString *name, NSBundle *path); -static CGImageRef (*_UIImageRefAtPath)(NSString *name, bool cache, UIImageOrientation *orientation); +static CGImageRef (*_UIImageRefAtPath)(NSString *name, bool cache, UIImageOrientation *orientation, float *scale); static UIImage *(*_UIImageWithNameInDomain)(NSString *name, NSString *domain); static NSBundle *(*_UIKitBundle)(); +static bool (*_UIPackedImageTableGetIdentifierForName)(NSString *, int *); static int (*_UISharedImageNameGetIdentifier)(NSString *); -static UIImage *(*_UISharedImageWithIdentifier)(int); static NSMutableDictionary *UIImages_; static NSMutableDictionary *PathImages_; @@ -234,25 +238,28 @@ static NSString *$pathForFile$inBundle$(NSString *file, NSBundle *bundle, bool u [names addObject:[NSString stringWithFormat:@"UIImages/%@", file]]; #define remapResourceName(oldname, newname) \ - else if ([file isEqualToString:oldname]) \ + else if ([file isEqualToString:(oldname)]) \ [names addObject:[NSString stringWithFormat:@"%@.png", newname]]; \ + bool summer(SpringBoard_ && SummerBoard_); + if (identifier == nil); else if ([identifier isEqualToString:@"com.apple.chatkit"]) [names addObject:[NSString stringWithFormat:@"Bundles/com.apple.MobileSMS/%@", file]]; else if ([identifier isEqualToString:@"com.apple.calculator"]) [names addObject:[NSString stringWithFormat:@"Files/Applications/Calculator.app/%@", file]]; - else if (![identifier isEqualToString:@"com.apple.springboard"] || !SummerBoard_); + else if (!summer); remapResourceName(@"FSO_BG.png", @"StatusBar") - remapResourceName(@"SBDockBG.png", @"Dock") + remapResourceName(Four_ ? @"SBDockBG-old.png" : @"SBDockBG.png", @"Dock") remapResourceName(@"SBWeatherCelsius.png", @"Icons/Weather") if (NSString *path = $getTheme$(names)) return path; + return nil; } -static NSString *$pathForIcon$(SBApplication *self) { +static NSString *$pathForIcon$(SBApplication *self, NSString *suffix = @"") { NSString *identifier = [self bundleIdentifier]; NSString *path = [self path]; NSString *folder = [path lastPathComponent]; @@ -272,7 +279,7 @@ static NSString *$pathForIcon$(SBApplication *self) { #define testForIcon(Name) \ if (NSString *name = Name) \ - [names addObject:[NSString stringWithFormat:@"Icons/%@.png", name]]; + [names addObject:[NSString stringWithFormat:@"Icons%@/%@.png", suffix, name]]; if (![didentifier isEqualToString:identifier]) testForIcon(didentifier); @@ -468,10 +475,20 @@ MSHook(UIImage *, SBApplicationIcon$icon, SBApplicationIcon *self, SEL sel) { MSHook(UIImage *, SBApplicationIcon$generateIconImage$, SBApplicationIcon *self, SEL sel, int type) { if (type == 2) - if (![Info_ wb$boolForKey:@"ComposeStoreIcons"]) + if (![Info_ wb$boolForKey:@"ComposeStoreIcons"]) { + if (IsWild_) + if (NSString *path72 = $pathForIcon$([self application], @"-72")) + return [UIImage imageWithContentsOfFile:path72]; if (NSString *path = $pathForIcon$([self application])) - if (UIImage *image = [UIImage imageWithContentsOfFile:path]) - return [image _imageScaledToProportion:1.2 interpolationQuality:5]; + if (UIImage *image = [UIImage imageWithContentsOfFile:path]) { + float width; + if ([$SBIcon respondsToSelector:@selector(defaultIconImageSize)]) + width = [$SBIcon defaultIconImageSize].width; + else + width = 59; + return width == 59 ? image : [image _imageScaledToProportion:(width / 59.0) interpolationQuality:5]; + } + } return _SBApplicationIcon$generateIconImage$(self, sel, type); } @@ -509,10 +526,36 @@ static UIImage *CachedImageAtPath(NSString *path) { return image; } -MSHook(CGImageRef, _UIImageRefAtPath, NSString *name, bool cache, UIImageOrientation *orientation) { +MSHook(CGImageSourceRef, CGImageSourceCreateWithURL, CFURLRef url, CFDictionaryRef options) { + if (Debug_) + NSLog(@"WB:Debug: CGImageSourceCreateWithURL(\"%@\", %s)", url, options); + NSAutoreleasePool *pool([[NSAutoreleasePool alloc] init]); + if (NSString *path = (NSString *) CFURLCopyFileSystemPath(url, kCFURLPOSIXPathStyle)) + if (NSString *themed = [path wb$themedPath]) + if (themed != path) + url = (CFURLRef) [NSURL fileURLWithPath:themed]; + CGImageSourceRef source(_CGImageSourceCreateWithURL(url, options)); + [pool release]; + return source; +} + +MSHook(CGImageRef, _UIImageRefAtPath, NSString *name, bool cache, UIImageOrientation *orientation, float *scale) { if (Debug_) - NSLog(@"WB:Debug: _UIImageRefAtPath(\"%@\", %s)", name, cache ? "true" : "false"); - return __UIImageRefAtPath([name wb$themedPath], cache, orientation); + NSLog(@"WB:Debug: _UIImageRefAtPath(\"%@\")", name); + + NSString *themed([name wb$themedPath]); + + if (false && SpringBoard_ && SummerBoard_ && themed == name) { + if ([name isEqualToString:@"/System/Library/CoreServices/SpringBoard.app/SBDockBGT-Portrait.png"]) + if (NSString *path = $getTheme$([NSArray arrayWithObject:@"Dock.png"])) { + UIImage *image([UIImage imageWithContentsOfFile:path]); + CGImageRef ref([[image _imageScaledToProportion:2.4 interpolationQuality:5] imageRef]); + CGImageRetain(ref); + return ref; + } + } + + return __UIImageRefAtPath(themed, cache, orientation, scale); } /*MSHook(UIImage *, _UIImageAtPath, NSString *name, NSBundle *bundle) { @@ -594,7 +637,7 @@ MSHook(void, SBCalendarIconContentsView$drawRect$, SBCalendarIconContentsView *s CFDateRef now(CFDateCreate(NULL, CFAbsoluteTimeGetCurrent())); - CFDateFormatterSetFormat(formatter, (CFStringRef) [bundle localizedStringForKey:@"CALENDAR_ICON_DAY_NUMBER_FORMAT" value:@"" table:@"SpringBoard"]); + CFDateFormatterSetFormat(formatter, (CFStringRef) [bundle localizedStringForKey:@"CALENDAR_ICON_DAY_NUMBER_FORMAT" value:@"d" table:@"SpringBoard"]); CFStringRef date(CFDateFormatterCreateStringWithDate(NULL, formatter, now)); CFDateFormatterSetFormat(formatter, (CFStringRef) [bundle localizedStringForKey:@"CALENDAR_ICON_DAY_NAME_FORMAT" value:@"cccc" table:@"SpringBoard"]); CFStringRef day(CFDateFormatterCreateStringWithDate(NULL, formatter, now)); @@ -633,16 +676,22 @@ MSHook(void, SBCalendarIconContentsView$drawRect$, SBCalendarIconContentsView *s CGSize datesize = [(NSString *)date sizeWithStyle:datestyle forWidth:(width + leeway)]; CGSize daysize = [(NSString *)day sizeWithStyle:daystyle forWidth:(width + leeway)]; - unsigned base(IsWild_ ? 89 : 70); + unsigned base0(IsWild_ ? 89 : 70); if ($GSFontGetUseLegacyFontMetrics()) - base = base + 1; + base0 = base0 + 1; + unsigned base1(IsWild_ ? 18 : 16); + + if (Four_) { + ++base0; + ++base1; + } [(NSString *)date drawAtPoint:CGPointMake( - (width + 1 - datesize.width) / 2, (base - datesize.height) / 2 + (width + 1 - datesize.width) / 2, (base0 - datesize.height) / 2 ) withStyle:datestyle]; [(NSString *)day drawAtPoint:CGPointMake( - (width + 1 - daysize.width) / 2, ((IsWild_ ? 18 : 16) - daysize.height) / 2 + (width + 1 - daysize.width) / 2, (base1 - daysize.height) / 2 ) withStyle:daystyle]; CFRelease(date); @@ -707,6 +756,7 @@ MSHook(UIImage *, UIImage$defaultDesktopImage, UIImage *self, SEL sel) { static NSArray *Wallpapers_; static bool Papered_; +static bool Docked_; static NSString *WallpaperFile_; static UIImageView *WallpaperImage_; static UIWebDocumentView *WallpaperPage_; @@ -723,6 +773,9 @@ MSHook(id, SBUIController$init, SBUIController *self, SEL sel) { if (self == nil) return nil; + UIDevice *device([UIDevice currentDevice]); + IsWild_ = [device respondsToSelector:@selector(isWildcat)] && [device isWildcat]; + if (Papered_) { UIWindow *&_wallpaperView(MSHookIvar(self, "_wallpaperView")); if (&_wallpaperView != NULL) { @@ -736,16 +789,21 @@ MSHook(id, SBUIController$init, SBUIController *self, SEL sel) { UIView *&_contentLayer(MSHookIvar(self, "_contentLayer")); UIView *&_contentView(MSHookIvar(self, "_contentView")); - UIView *layer; + UIView **player; if (&_contentLayer != NULL) - layer = _contentLayer; + player = &_contentLayer; else if (&_contentView != NULL) - layer = _contentView; + player = &_contentView; else - layer = nil; + player = NULL; + + UIView *layer(player == NULL ? nil : *player); UIView *content([[[UIView alloc] initWithFrame:[layer frame]] autorelease]); + /*if (player != NULL) + *player = content;*/ + [content setBackgroundColor:[layer backgroundColor]]; [layer setBackgroundColor:[UIColor clearColor]]; [layer setFrame:[content bounds]]; @@ -1176,6 +1234,14 @@ MSHook(void, SBIconLabel$setInDock$, SBIconLabel *self, SEL sel, BOOL docked) { return _SBIconLabel$setInDock$(self, sel, docked); } +MSHook(BOOL, SBDockIconListView$shouldShowNewDock, id self, SEL sel) { + return SummerBoard_ && Docked_ ? NO : _SBDockIconListView$shouldShowNewDock(self, sel); +} + +MSHook(void, SBDockIconListView$setFrame$, id self, SEL sel, CGRect frame) { + _SBDockIconListView$setFrame$(self, sel, frame); +} + MSHook(NSString *, NSBundle$localizedStringForKey$value$table$, NSBundle *self, SEL sel, NSString *key, NSString *value, NSString *table) { NSString *identifier = [self bundleIdentifier]; NSLocale *locale = [NSLocale currentLocale]; @@ -1216,7 +1282,7 @@ MSHook(void, SBIconLabel$drawRect$, SBIconLabel *self, SEL sel, CGRect rect) { static Ivar drawMoreLegibly = object_getInstanceVariable(self, "_drawMoreLegibly", NULL); - BOOL docked; + int docked; Ivar ivar = object_getInstanceVariable(self, "_inDock", reinterpret_cast(&docked)); docked = (docked & (ivar_getOffset(ivar) == ivar_getOffset(drawMoreLegibly) ? 0x2 : 0x1)) != 0; @@ -1323,24 +1389,39 @@ MSHook(void, TranscriptController$loadView, mSMSMessageTranscriptController *sel } MSHook(UIImage *, _UIImageWithName, NSString *name) { - int id(_UISharedImageNameGetIdentifier(name)); if (Debug_) - NSLog(@"WB:Debug: _UIImageWithName(\"%@\": %d)", name, id); + NSLog(@"WB:Debug: _UIImageWithName(\"%@\")", name); + + int identifier; + bool packed; + + if (_UIPackedImageTableGetIdentifierForName != NULL) + packed = _UIPackedImageTableGetIdentifierForName(name, &identifier); + else if (_UISharedImageNameGetIdentifier != NULL) { + identifier = _UISharedImageNameGetIdentifier(name); + packed = identifier != -1; + } else { + identifier = -1; + packed = false; + } + + if (Debug_) + NSLog(@"WB:Debug: _UISharedImageNameGetIdentifier(\"%@\") = %d", name, identifier); - if (id == -1) - return _UIImageAtPath(name, _UIKitBundle()); + if (!packed) + return __UIImageWithName(name); else { - NSNumber *key([NSNumber numberWithInt:id]); - UIImage *image = [UIImages_ objectForKey:key]; + NSNumber *key([NSNumber numberWithInt:identifier]); + UIImage *image([UIImages_ objectForKey:key]); if (image != nil) - return reinterpret_cast(image) == [NSNull null] ? _UISharedImageWithIdentifier(id) : image; + return reinterpret_cast(image) == [NSNull null] ? __UIImageWithName(name) : image; if (NSString *path = $pathForFile$inBundle$(name, _UIKitBundle(), true)) { image = [[UIImage alloc] initWithContentsOfFile:path cache:true]; if (image != nil) [image autorelease]; } [UIImages_ setObject:(image == nil ? [NSNull null] : reinterpret_cast(image)) forKey:key]; - return image == nil ? _UISharedImageWithIdentifier(id) : image; + return image == nil ? __UIImageWithName(name) : image; } } @@ -1365,6 +1446,8 @@ MSHook(GSFontRef, GSFontCreateWithName, const char *name, GSFontSymbolicTraits t NSLog(@"WB:Debug: GSFontCreateWithName(\"%s\", %f)", name, size); if (NSString *font = [Info_ objectForKey:[NSString stringWithFormat:@"FontName-%s", name]]) name = [font UTF8String]; + //if (NSString *scale = [Info_ objectForKey:[NSString stringWithFormat:@"FontScale-%s", name]]) + // size *= [scale floatValue]; return _GSFontCreateWithName(name, traits, size); } @@ -1437,6 +1520,16 @@ static void dlset(Type_ &function, const char *name) { function = reinterpret_cast(dlsym(RTLD_DEFAULT, name)); } +/*static void WBImage(const struct mach_header* mh, intptr_t vmaddr_slide) { + uint32_t count(_dyld_image_count()); + for (uint32_t index(0); index != count; ++index) + if (_dyld_get_image_header(index) == mh) { + CGImageSourceRef (*CGImageSourceCreateWithURL)(CFURLRef url, CFDictionaryRef options); + dlset(CGImageSourceCreateWithURL, "CGImageSourceCreateWithURL"); + MSHookFunction(&CGImageSourceCreateWithURL, &$CGImageSourceCreateWithURL, &_CGImageSourceCreateWithURL); + } +}*/ + extern "C" void WBInitialize() { NSAutoreleasePool *pool([[NSAutoreleasePool alloc] init]); @@ -1446,40 +1539,51 @@ extern "C" void WBInitialize() { dlset(_GSFontGetUseLegacyFontMetrics, "GSFontGetUseLegacyFontMetrics"); + //if ([NSBundle bundleWithIdentifier:@"com.apple.ImageIO.framework"] != nil) + MSHookFunction(&CGImageSourceCreateWithURL, &$CGImageSourceCreateWithURL, &_CGImageSourceCreateWithURL); + //else + // _dyld_register_func_for_add_image(&WBImage); + struct nlist nl[8]; - memset(nl, 0, sizeof(nl)); - nl[0].n_un.n_name = (char *) "__UIApplicationImageWithName"; - nl[1].n_un.n_name = (char *) "__UIImageAtPath"; - nl[2].n_un.n_name = (char *) "__UIImageRefAtPath"; - nl[3].n_un.n_name = (char *) "__UIImageWithNameInDomain"; - nl[4].n_un.n_name = (char *) "__UIKitBundle"; - nl[5].n_un.n_name = (char *) "__UISharedImageNameGetIdentifier"; - nl[6].n_un.n_name = (char *) "__UISharedImageWithIdentifier"; - nlist(UIKit, nl); - - nlset(_UIApplicationImageWithName, nl, 0); - nlset(_UIImageAtPath, nl, 1); - nlset(_UIImageRefAtPath, nl, 2); - nlset(_UIImageWithNameInDomain, nl, 3); - nlset(_UIKitBundle, nl, 4); - nlset(_UISharedImageNameGetIdentifier, nl, 5); - nlset(_UISharedImageWithIdentifier, nl, 6); - - MSHookFunction(_UIApplicationImageWithName, &$_UIApplicationImageWithName, &__UIApplicationImageWithName); - MSHookFunction(_UIImageRefAtPath, &$_UIImageRefAtPath, &__UIImageRefAtPath); - MSHookFunction(_UIImageWithName, &$_UIImageWithName, &__UIImageWithName); - MSHookFunction(_UIImageWithNameInDomain, &$_UIImageWithNameInDomain, &__UIImageWithNameInDomain); + if ([NSBundle bundleWithIdentifier:@"com.apple.UIKit"] != nil) { +// UIKit {{{ + memset(nl, 0, sizeof(nl)); + nl[0].n_un.n_name = (char *) "__UIApplicationImageWithName"; + nl[1].n_un.n_name = (char *) "__UIImageAtPath"; + nl[2].n_un.n_name = (char *) "__UIImageRefAtPath"; + nl[3].n_un.n_name = (char *) "__UIImageWithNameInDomain"; + nl[4].n_un.n_name = (char *) "__UIKitBundle"; + nl[5].n_un.n_name = (char *) "__UIPackedImageTableGetIdentifierForName"; + nl[6].n_un.n_name = (char *) "__UISharedImageNameGetIdentifier"; + nlist(UIKit, nl); + + nlset(_UIApplicationImageWithName, nl, 0); + nlset(_UIImageAtPath, nl, 1); + nlset(_UIImageRefAtPath, nl, 2); + nlset(_UIImageWithNameInDomain, nl, 3); + nlset(_UIKitBundle, nl, 4); + nlset(_UIPackedImageTableGetIdentifierForName, nl, 5); + nlset(_UISharedImageNameGetIdentifier, nl, 6); + + MSHookFunction(_UIApplicationImageWithName, &$_UIApplicationImageWithName, &__UIApplicationImageWithName); + MSHookFunction(_UIImageRefAtPath, &$_UIImageRefAtPath, &__UIImageRefAtPath); + MSHookFunction(_UIImageWithName, &$_UIImageWithName, &__UIImageWithName); + MSHookFunction(_UIImageWithNameInDomain, &$_UIImageWithNameInDomain, &__UIImageWithNameInDomain); +// }}} + } MSHookFunction(&GSFontCreateWithName, &$GSFontCreateWithName, &_GSFontCreateWithName); if (dlopen(AudioToolbox, RTLD_LAZY | RTLD_NOLOAD) != NULL) { +// AudioToolbox {{{ struct nlist nl[2]; memset(nl, 0, sizeof(nl)); nl[0].n_un.n_name = (char *) "__Z24GetFileNameForThisActionmPcRb"; nlist(AudioToolbox, nl); nlset(_Z24GetFileNameForThisActionmPcRb, nl, 0); MSHookFunction(_Z24GetFileNameForThisActionmPcRb, &$_Z24GetFileNameForThisActionmPcRb, &__Z24GetFileNameForThisActionmPcRb); +// }}} } $NSBundle = objc_getClass("NSBundle"); @@ -1509,6 +1613,7 @@ extern "C" void WBInitialize() { themes_ = [[NSMutableArray alloc] initWithCapacity:8]; if (NSDictionary *settings = [NSDictionary dictionaryWithContentsOfFile:[NSString stringWithFormat:@"/User/Library/Preferences/com.saurik.WinterBoard.plist"]]) { +// Load Settings {{{ if (NSNumber *value = [settings objectForKey:@"SummerBoard"]) SummerBoard_ = [value boolValue]; if (NSNumber *value = [settings objectForKey:@"Debug"]) @@ -1548,6 +1653,7 @@ extern "C" void WBInitialize() { testForTheme(@"%@/Library/SummerBoard/Themes/%@", NSHomeDirectory(), name) } +// }}} } Info_ = [[NSMutableDictionary dictionaryWithCapacity:16] retain]; @@ -1560,7 +1666,10 @@ extern "C" void WBInitialize() { bool sms($getTheme$([NSArray arrayWithObjects:@"SMSBackground.png", @"SMSBackground.jpg", nil]) != nil); - if ([NSBundle bundleWithIdentifier:@"com.apple.chatkit"]) + SpringBoard_ = [identifier isEqualToString:@"com.apple.springboard"]; + + if ([NSBundle bundleWithIdentifier:@"com.apple.chatkit"] != nil) +// ChatKit {{{ if (sms) { $CKMessageCell = objc_getClass("CKMessageCell"); _CKMessageCell$addBalloonView$ = MSHookMessage($CKMessageCell, @selector(addBalloonView:), &$CKMessageCell$addBalloonView$); @@ -1576,15 +1685,19 @@ extern "C" void WBInitialize() { $CKTranscriptController = objc_getClass("CKTranscriptController"); _TranscriptController$loadView = MSHookMessage($CKTranscriptController, @selector(loadView), &$TranscriptController$loadView); } +// }}} if ([identifier isEqualToString:@"com.apple.MobileSMS"]) { +// MobileSMS {{{ if (sms) { if (_TranscriptController$loadView == NULL) { Class mSMSMessageTranscriptController = objc_getClass("mSMSMessageTranscriptController"); _TranscriptController$loadView = MSHookMessage(mSMSMessageTranscriptController, @selector(loadView), &$TranscriptController$loadView); } } - } else if ([identifier isEqualToString:@"com.apple.springboard"]) { +// }}} + } else if (SpringBoard_) { +// SpringBoard {{{ CFNotificationCenterAddObserver( CFNotificationCenterGetDarwinNotifyCenter(), NULL, &ChangeWallpaper, (CFStringRef) @"com.saurik.winterboard.lockbackground", NULL, 0 @@ -1607,6 +1720,7 @@ extern "C" void WBInitialize() { $SBBookmarkIcon = objc_getClass("SBBookmarkIcon"); $SBButtonBar = objc_getClass("SBButtonBar"); $SBCalendarIconContentsView = objc_getClass("SBCalendarIconContentsView"); + $SBDockIconListView = objc_getClass("SBDockIconListView"); $SBIcon = objc_getClass("SBIcon"); $SBIconBadge = objc_getClass("SBIconBadge"); $SBIconController = objc_getClass("SBIconController"); @@ -1623,6 +1737,8 @@ extern "C" void WBInitialize() { $SBUIController = objc_getClass("SBUIController"); $SBWidgetApplicationIcon = objc_getClass("SBWidgetApplicationIcon"); + Four_ = $SBDockIconListView != nil; + WBRename(WebCoreFrameBridge, renderedSizeOfNode:constrainedToWidth:, renderedSizeOfNode$constrainedToWidth$); if (SummerBoard_) { @@ -1640,6 +1756,9 @@ extern "C" void WBInitialize() { WBRename(SBUIController, init, init); WBRename(SBWidgetApplicationIcon, icon, icon); + WBRename(SBDockIconListView, setFrame:, setFrame$); + MSHookMessage(object_getClass($SBDockIconListView), @selector(shouldShowNewDock), &$SBDockIconListView$shouldShowNewDock, &_SBDockIconListView$shouldShowNewDock); + WBRename(SBIconLabel, drawRect:, drawRect$); WBRename(SBIconLabel, initWithSize:label:, initWithSize$label$); WBRename(SBIconLabel, setInDock:, setInDock$); @@ -1671,17 +1790,17 @@ extern "C" void WBInitialize() { English_ = [[NSDictionary alloc] initWithContentsOfFile:@"/System/Library/CoreServices/SpringBoard.app/English.lproj/LocalizedApplicationNames.strings"]; Cache_ = [[NSMutableDictionary alloc] initWithCapacity:64]; +// }}} } Wallpapers_ = [[NSArray arrayWithObjects:@"Wallpaper.mp4", @"Wallpaper.png", @"Wallpaper.jpg", @"Wallpaper.html", nil] retain]; Papered_ = $getTheme$(Wallpapers_) != nil; - UIDevice *device([UIDevice currentDevice]); - IsWild_ = [device respondsToSelector:@selector(isWildcat)] && [device isWildcat]; + Docked_ = $getTheme$([NSArray arrayWithObjects:@"Dock.png", nil]); if ([Info_ objectForKey:@"UndockedIconLabels"] == nil) [Info_ setObject:[NSNumber numberWithBool:( - Papered_ || + !Papered_ || [Info_ objectForKey:@"DockedIconLabelStyle"] != nil || [Info_ objectForKey:@"UndockedIconLabelStyle"] != nil )] forKey:@"UndockedIconLabels"];