Fixed sorting and selection of database icons (issue #118)

This commit is contained in:
Dennis Bolio
2014-04-15 00:01:26 +02:00
parent acb5d6de04
commit ea6db31d03
3 changed files with 37 additions and 2 deletions

View File

@@ -78,4 +78,10 @@ typedef NS_ENUM(NSUInteger, MPIconType) {
*/
+ (NSArray *)databaseIcons;
/**
* List of all available DatabaseIcons as MPIconType. Sorted by IconIndex
* @return Array of Names as NSNumber objects
*/
+ (NSArray *)databaseIconType;
@end

View File

@@ -29,7 +29,12 @@
dispatch_once(&onceToken, ^{
NSDictionary *imageNames = [MPIconHelper availableIconNames];
NSMutableArray *mutableIcons = [[NSMutableArray alloc] initWithCapacity:[imageNames count]];
for(NSNumber *iconNumber in [imageNames allKeys]) {
NSArray *sortedImageNames = [[imageNames allKeys] sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
return [[imageNames objectForKey:obj1] compare:[imageNames objectForKey:obj2]];
}];
for(NSNumber *iconNumber in sortedImageNames) {
if([iconNumber integerValue] > MPCustomIconTypeBegin) {
continue; // Skip all non-db Keys
}
@@ -41,6 +46,30 @@
return icons;
}
+ (NSArray *)databaseIconType {
static NSArray *iconTypes;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
NSDictionary *imageNames = [MPIconHelper availableIconNames];
NSMutableArray *mutableIcons = [[NSMutableArray alloc] initWithCapacity:[imageNames count]];
NSArray *sortedImageNames = [[imageNames allKeys] sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
return [[imageNames objectForKey:obj1] compare:[imageNames objectForKey:obj2]];
}];
for(NSNumber *iconNumber in sortedImageNames) {
if([iconNumber integerValue] > MPCustomIconTypeBegin) {
continue; // Skip all non-db Keys
}
[mutableIcons addObject:iconNumber];
}
iconTypes = mutableIcons;
});
return iconTypes;
}
+ (NSDictionary *)availableIconNames {
static NSDictionary *imageNames;
static dispatch_once_t onceToken;

View File

@@ -58,7 +58,7 @@ NSInteger const kMPDefaultIcon = -1;
NSButton *button = sender;
NSImage *image = [button image];
NSUInteger buttonIndex = [[self.iconCollectionView content] indexOfObject:image];
self.selectedIcon = [[[MPIconHelper availableIconNames] allKeys][buttonIndex] integerValue];
self.selectedIcon = [[MPIconHelper databaseIconType] [buttonIndex] integerValue];
[self.popover performClose:self];
}