| // |
| // ConversationsViewController.m |
| // Ring |
| // |
| // Created by Alexandre Lision on 2015-02-02. |
| // |
| // |
| |
| #import "ConversationsViewController.h" |
| #import <callmodel.h> |
| |
| #define COLUMNID_CONVERSATIONS @"ConversationsColumn" // the single column name in our outline view |
| |
| @interface ConversationsViewController () |
| |
| @end |
| |
| @implementation ConversationsViewController |
| @synthesize conversationsView; |
| @synthesize treeController; |
| |
| - (id)initWithCoder:(NSCoder *)aDecoder |
| { |
| if (self = [super initWithCoder:aDecoder]) { |
| NSLog(@"INIT Conversations VC"); |
| } |
| return self; |
| } |
| |
| |
| |
| - (void)awakeFromNib |
| { |
| NSLog(@"awakeFromNib"); |
| |
| treeController = [[QNSTreeController alloc] initWithQModel:CallModel::instance()]; |
| |
| [treeController setAvoidsEmptySelection:NO]; |
| [treeController setChildrenKeyPath:@"children"]; |
| |
| [self.conversationsView bind:@"content" toObject:treeController withKeyPath:@"arrangedObjects" options:nil]; |
| [self.conversationsView bind:@"sortDescriptors" toObject:treeController withKeyPath:@"sortDescriptors" options:nil]; |
| [self.conversationsView bind:@"selectionIndexPaths" toObject:treeController withKeyPath:@"selectionIndexPaths" options:nil]; |
| |
| NSInteger idx = [conversationsView columnWithIdentifier:COLUMNID_CONVERSATIONS]; |
| [[[[self.conversationsView tableColumns] objectAtIndex:idx] headerCell] setStringValue:@"Conversations"]; |
| } |
| |
| #pragma mark - NSOutlineViewDelegate methods |
| |
| // ------------------------------------------------------------------------------- |
| // shouldSelectItem:item |
| // ------------------------------------------------------------------------------- |
| - (BOOL)outlineView:(NSOutlineView *)outlineView shouldSelectItem:(id)item; |
| { |
| return YES; |
| } |
| |
| // ------------------------------------------------------------------------------- |
| // dataCellForTableColumn:tableColumn:item |
| // ------------------------------------------------------------------------------- |
| - (NSCell *)outlineView:(NSOutlineView *)outlineView dataCellForTableColumn:(NSTableColumn *)tableColumn item:(id)item |
| { |
| NSCell *returnCell = [tableColumn dataCell]; |
| |
| |
| if(item == nil) |
| return returnCell; |
| if ([[tableColumn identifier] isEqualToString:COLUMNID_CONVERSATIONS]) |
| { |
| |
| NSIndexPath* idx = ((NSTreeNode*)item).indexPath; |
| NSUInteger myArray[[idx length]]; |
| [idx getIndexes:myArray]; |
| |
| NSLog(@"dataCellForTableColumn, indexPath: %lu", (unsigned long)myArray[0]); |
| |
| QModelIndex qIdx = CallModel::instance()->index(myArray[0], 0); |
| |
| QVariant test = CallModel::instance()->data(qIdx, Qt::DisplayRole); |
| } |
| |
| return returnCell; |
| } |
| |
| // ------------------------------------------------------------------------------- |
| // textShouldEndEditing:fieldEditor |
| // ------------------------------------------------------------------------------- |
| - (BOOL)control:(NSControl *)control textShouldEndEditing:(NSText *)fieldEditor |
| { |
| if ([[fieldEditor string] length] == 0) |
| { |
| // don't allow empty node names |
| return NO; |
| } |
| else |
| { |
| return YES; |
| } |
| } |
| |
| // ------------------------------------------------------------------------------- |
| // shouldEditTableColumn:tableColumn:item |
| // |
| // Decide to allow the edit of the given outline view "item". |
| // ------------------------------------------------------------------------------- |
| - (BOOL)outlineView:(NSOutlineView *)outlineView shouldEditTableColumn:(NSTableColumn *)tableColumn item:(id)item |
| { |
| return NO; |
| } |
| |
| // ------------------------------------------------------------------------------- |
| // outlineView:willDisplayCell:forTableColumn:item |
| // ------------------------------------------------------------------------------- |
| - (void)outlineView:(NSOutlineView *)olv willDisplayCell:(NSCell*)cell forTableColumn:(NSTableColumn *)tableColumn item:(id)item |
| { |
| if ([[tableColumn identifier] isEqualToString:COLUMNID_CONVERSATIONS]) |
| { |
| NSIndexPath* idx = ((NSTreeNode*)item).indexPath; |
| NSUInteger myArray[[idx length]]; |
| [idx getIndexes:myArray]; |
| NSLog(@"array:%@", idx); |
| |
| QModelIndex qIdx; |
| if(idx.length == 2) |
| qIdx = CallModel::instance()->index(myArray[1], 0, CallModel::instance()->index(myArray[0], 0)); |
| else |
| qIdx = CallModel::instance()->index(myArray[0], 0); |
| |
| |
| if(qIdx.isValid()) |
| cell.title = CallModel::instance()->data(qIdx, Qt::DisplayRole).toString().toNSString(); |
| } |
| } |
| |
| // ------------------------------------------------------------------------------- |
| // outlineViewSelectionDidChange:notification |
| // ------------------------------------------------------------------------------- |
| - (void)outlineViewSelectionDidChange:(NSNotification *)notification |
| { |
| // ask the tree controller for the current selection |
| NSLog(@"outlineViewSelectionDidChange!!"); |
| } |
| |
| |
| @end |