Expand functionality (AppIconOptionsController.m)

This commit is contained in:
arichornlover 2024-04-27 00:42:58 -05:00 committed by GitHub
parent 47da969286
commit af5559bd6a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -108,11 +108,24 @@
} }
- (void)saveIcon { - (void)saveIcon {
NSString *selectedIconPath = self.selectedIconIndex >= 0 ? self.appIcons[self.selectedIconIndex] : nil; NSString *selectedIcon = self.selectedIconIndex >= 0 ? self.appIcons[self.selectedIconIndex] : nil;
if (selectedIconPath) { if (selectedIcon) {
NSURL *iconURL = [NSURL fileURLWithPath:selectedIconPath]; NSString *iconName = [selectedIcon.lastPathComponent stringByDeletingPathExtension];
if ([[UIApplication sharedApplication] respondsToSelector:@selector(setAlternateIconName:completionHandler:)]) { NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"Info" ofType:@"plist"];
[[UIApplication sharedApplication] setAlternateIconName:selectedIconPath completionHandler:^(NSError * _Nullable error) { NSMutableDictionary *infoDict = [NSMutableDictionary dictionaryWithContentsOfFile:plistPath];
NSMutableDictionary *iconsDict = [infoDict objectForKey:@"CFBundleIcons"];
if (iconsDict) {
NSMutableDictionary *primaryIconDict = [iconsDict objectForKey:@"CFBundlePrimaryIcon"];
if (primaryIconDict) {
NSMutableArray *iconFiles = [primaryIconDict objectForKey:@"CFBundleIconFiles"];
[iconFiles addObject:iconName];
primaryIconDict[@"CFBundleIconFiles"] = iconFiles;
}
[infoDict setObject:iconsDict forKey:@"CFBundleIcons"];
[infoDict writeToFile:plistPath atomically:YES];
[[UIApplication sharedApplication] setAlternateIconName:iconName completionHandler:^(NSError * _Nullable error) {
if (error) { if (error) {
NSLog(@"Error setting alternate icon: %@", error.localizedDescription); NSLog(@"Error setting alternate icon: %@", error.localizedDescription);
[self showAlertWithTitle:@"Error" message:@"Failed to set alternate icon"]; [self showAlertWithTitle:@"Error" message:@"Failed to set alternate icon"];
@ -122,13 +135,10 @@
} }
}]; }];
} else { } else {
NSMutableDictionary *dict = [NSMutableDictionary dictionary]; NSLog(@"CFBundleIcons key not found in Info.plist");
[dict setObject:iconURL forKey:@"iconURL"];
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Info" ofType:@"plist"];
[dict writeToFile:filePath atomically:YES];
[self showAlertWithTitle:@"Alternate Icon" message:@"Please restart the app to apply the alternate icon"];
} }
} else {
NSLog(@"Selected icon path is nil");
} }
} }