From: Jay Freeman (saurik) Date: Sun, 12 Jul 2015 05:20:17 +0000 (-0700) Subject: Provide a way to get the icons for installed apps. X-Git-Tag: v1.1.23~7 X-Git-Url: https://git.saurik.com/cydia.git/commitdiff_plain/d0a5ea5685a2c5e2f98b76fd771095ecf048a66f?ds=inline Provide a way to get the icons for installed apps. --- diff --git a/MobileCydia.mm b/MobileCydia.mm index fc3598ba..b039213a 100644 --- a/MobileCydia.mm +++ b/MobileCydia.mm @@ -7177,7 +7177,19 @@ static void HomeControllerReachabilityCallback(SCNetworkReachabilityRef reachabi Database *database([Database sharedInstance]); - if ([command isEqualToString:@"package-icon"]) { + if (false); + else if ([command isEqualToString:@"application-icon"]) { + if (path == nil) + goto fail; + path = [path stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; + NSData *data([SBSCopyIconImagePNGDataForDisplayIdentifier(path) autorelease]); + UIImage *icon; + if (data == nil) + icon = [UIImage imageNamed:@"unknown.png"]; + else + icon = [UIImage imageWithData:data]; + [self _returnPNGWithImage:icon forRequest:request]; + } else if ([command isEqualToString:@"package-icon"]) { if (path == nil) goto fail; path = [path stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; diff --git a/iPhonePrivate.h b/iPhonePrivate.h index 2c9239c1..70eef381 100644 --- a/iPhonePrivate.h +++ b/iPhonePrivate.h @@ -440,6 +440,7 @@ extern "C" mach_port_t SBSSpringBoardServerPort(); extern "C" int SBBundlePathForDisplayIdentifier(mach_port_t port, const char *identifier, char *path); extern "C" NSSet *SBSCopyDisplayIdentifiers(); extern "C" NSString *SBSCopyLocalizedApplicationNameForDisplayIdentifier(NSString *); +extern "C" NSData *SBSCopyIconImagePNGDataForDisplayIdentifier(NSString *); extern "C" UIImage *_UIImageWithName(NSString *name); extern "C" void UISetColor(CGColorRef color); // }}}