Optimized IconHelper to only create internal structures once, not all the time.

This commit is contained in:
michael starke
2013-12-03 20:58:27 +01:00
parent 385a56c489
commit c59ce56f4d
2 changed files with 63 additions and 48 deletions

View File

@@ -27,13 +27,16 @@ typedef NS_ENUM(NSUInteger, MPIconType) {
MPIconCamera,
MPIconRemote,
MPIconKeys,
MPIconScanner = 15,
MPIconBattery,
MPIconScanner,
MPIconBrowser,
MPIconCDRom,
MPIconDisplay,
MPIconEmail,
MPIconMisc,
MPIconFileSave = 26,
MPIconTerminal = 30,
MPIconPrint = 31,
MPIconTrash = 43,
MPIconFolder = 48,
MPIconPhone = 68,

View File

@@ -24,20 +24,28 @@ static NSDictionary *icons;
}
+ (NSArray *)databaseIcons {
static NSArray *icons;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
NSDictionary *imageNames = [MPIconHelper availableIconNames];
NSMutableArray *icons = [[NSMutableArray alloc] initWithCapacity:[imageNames count]];
NSMutableArray *mutableIcons = [[NSMutableArray alloc] initWithCapacity:[imageNames count]];
for(NSNumber *iconNumber in [imageNames allKeys]) {
if([iconNumber integerValue] > MPCustomIconTypeBegin) {
continue; // Skip all non-db Keys
}
MPIconType iconType = (MPIconType)[iconNumber integerValue];
[icons addObject:[MPIconHelper icon:iconType]];
[mutableIcons addObject:[MPIconHelper icon:iconType]];
}
icons = mutableIcons;
});
return icons;
}
+ (NSDictionary *)availableIconNames {
NSDictionary *imageNames = @{
static NSDictionary *imageNames;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
imageNames = @{
@(MPIconPassword): @"00_PasswordTemplate",
@(MPIconPackageNetwork): @"01_PackageNetworkTemplate",
@(MPIconWarning): @"02_MessageBoxWarningTemplate",
@@ -52,7 +60,7 @@ static NSDictionary *icons;
@(MPIconCamera): @"11_CameraTemplate",
@(MPIconRemote): @"12_RemoteTemplate",
@(MPIconKeys): @"13_KeysTemplate",
@(MPIconBattery): @"14_BatteryTemplate",
@(MPIconScanner): @"15_ScannerTemplate",
@(MPIconBrowser): @"16_BrowserTemplate",
@(MPIconCDRom): @"17_CDRomTemplate",
@@ -62,6 +70,9 @@ static NSDictionary *icons;
@(MPIconFileSave): @"26_FileSaveTemplate",
@(MPIconTerminal) : @"30_TerminalTemplate",
@(MPIconPrint) : @"31_PrintTemplate",
@(MPIconTrash): @"43_TrashTemplate",
@(MPIconFolder): @"48_FolderTemplate",
@@ -75,6 +86,7 @@ static NSDictionary *icons;
@(MPIconAddEntry): @"addEntryTemplate",
@(MPIconContextTriangle): @"contextTriangleTemplate"
};
});
return imageNames;
}
@end