custom icons can now be selected.

This commit is contained in:
michael starke
2017-09-07 21:26:12 +02:00
parent 6410cc905b
commit 348da78e23
4 changed files with 115 additions and 26 deletions

View File

@@ -24,11 +24,18 @@
#import "MPIconHelper.h"
#import "MPDocument.h"
typedef NS_ENUM(NSUInteger, MPIconeSelectionType) {
MPIconSelectionDefault,
MPIconSelectionCustom
};
@interface MPIconSelectViewController ()
/* UI properties */
@property (weak) IBOutlet NSCollectionView *iconCollectionView;
@property (weak) IBOutlet NSButton *imageButton;
@property (weak) IBOutlet NSSegmentedControl *typeSelectionButton;
@property MPIconeSelectionType selectionType;
@end
@@ -39,10 +46,35 @@
}
- (void)viewDidLoad {
KPKNode *node = self.representedObject;
if(!node.iconUUID) {
self.selectionType = MPIconSelectionDefault;
}
else {
self.selectionType = MPIconSelectionCustom;
}
self.typeSelectionButton.selectedSegment = self.selectionType;
self.iconCollectionView.backgroundColors = @[NSColor.clearColor];
self.iconCollectionView.selectable = YES;
self.iconCollectionView.allowsMultipleSelection = NO;
self.iconCollectionView.content = [MPIconHelper databaseIcons];
[self _updateContent];
}
- (void)_updateContent {
MPDocument *document = [NSDocumentController sharedDocumentController].currentDocument;
switch(self.selectionType) {
case MPIconSelectionCustom:
self.iconCollectionView.content = document.tree.metaData.customIcons;
break;
case MPIconSelectionDefault:
default:
self.iconCollectionView.content = [MPIconHelper databaseIcons];
}
}
- (IBAction)toggleIcons:(id)sender {
self.selectionType = self.typeSelectionButton.selectedSegment;
[self _updateContent];
}
- (IBAction)useDefault:(id)sender {
@@ -53,21 +85,36 @@
[self.view.window performClose:sender];
}
- (IBAction)cancel:(id)sender {
[self.view.window performClose:sender];
}
- (IBAction)_selectImage:(id)sender {
NSButton *button = sender;
NSImage *image = button.image;
NSUInteger buttonIndex = [self.iconCollectionView.content indexOfObject:image];
NSInteger newIconId = ((NSNumber *)[MPIconHelper databaseIconTypes][buttonIndex]).integerValue;
- (IBAction)downloadIcon:(id)sender {
KPKNode *node = self.representedObject;
[self.observer willChangeModelProperty];
node.iconId = newIconId;
[self.observer didChangeModelProperty];
[self.view.window performClose:sender];
}
- (IBAction)cancel:(id)sender {
[self.view.window performClose:sender];
}
- (void)_selectIcon:(KPKIcon *)icon {
KPKNode *node = self.representedObject;
[self.observer willChangeModelProperty];
switch(self.selectionType) {
case MPIconSelectionCustom:
node.iconUUID = icon.uuid;
break;
default:
case MPIconSelectionDefault: {
NSUInteger iconIndex = [self.iconCollectionView.content indexOfObject:icon];
NSInteger newIconId = ((NSNumber *)[MPIconHelper databaseIconTypes][iconIndex]).integerValue;
node.iconId = newIconId;
node.iconUUID = nil;
break;
}
}
[self.observer didChangeModelProperty];
[self.view.window performClose:nil];
}
@end