blob: dc9fc8ac70fd546395905d549fa8003ff2d2b0f9 [file] [log] [blame]
Alexandre Lision5855b6a2015-02-03 11:31:05 -05001//
2// HistoryViewController.m
3// Ring
4//
5// Created by Alexandre Lision on 2015-01-28.
6//
7//
8
9#import "HistoryViewController.h"
10#import "MinimalHistoryBackend.h"
11
12#import <historymodel.h>
13
14#define COLUMNID_HISTORY @"HistoryColumn" // the single column name in our outline view
15
16
17
18@implementation HistoryViewController
19
20@synthesize treeController;
21
22
23
24- (id)initWithCoder:(NSCoder *)aDecoder
25{
26
27
28 if (self = [super initWithCoder:aDecoder]) {
29 NSLog(@"INIT HVC");
30
31 }
32 return self;
33}
34
35
36
37- (void)awakeFromNib
38{
39 NSLog(@"awakeFromNib");
40
41 treeController = [[QNSTreeController alloc] initWithQModel:HistoryModel::instance()];
42
43 [treeController setAvoidsEmptySelection:NO];
44 [treeController setChildrenKeyPath:@"children"];
45
46 [self.historyView bind:@"content" toObject:treeController withKeyPath:@"arrangedObjects" options:nil];
47 [self.historyView bind:@"sortDescriptors" toObject:treeController withKeyPath:@"sortDescriptors" options:nil];
48 [self.historyView bind:@"selectionIndexPaths" toObject:treeController withKeyPath:@"selectionIndexPaths" options:nil];
49
50 NSInteger idx = [historyView columnWithIdentifier:COLUMNID_HISTORY];
51 [[[[self.historyView tableColumns] objectAtIndex:idx] headerCell] setStringValue:@"Name"];
52
53 HistoryModel::instance()->addBackend(new MinimalHistoryBackend(nil),
54 LoadOptions::FORCE_ENABLED);
55
56}
57
58#pragma mark - NSOutlineViewDelegate methods
59
60// -------------------------------------------------------------------------------
61// shouldSelectItem:item
62// -------------------------------------------------------------------------------
63- (BOOL)outlineView:(NSOutlineView *)outlineView shouldSelectItem:(id)item;
64{
65 return YES;
66}
67
68// -------------------------------------------------------------------------------
69// dataCellForTableColumn:tableColumn:item
70// -------------------------------------------------------------------------------
71- (NSCell *)outlineView:(NSOutlineView *)outlineView dataCellForTableColumn:(NSTableColumn *)tableColumn item:(id)item
72{
73 NSCell *returnCell = [tableColumn dataCell];
74
75
76 if(item == nil)
77 return returnCell;
78 if ([[tableColumn identifier] isEqualToString:COLUMNID_HISTORY])
79 {
80
81 NSIndexPath* idx = ((NSTreeNode*)item).indexPath;
82 NSUInteger myArray[[idx length]];
83 [idx getIndexes:myArray];
84
85 //NSLog(@"dataCellForTableColumn, indexPath: %d", myArray[0]);
86
87 QModelIndex qIdx = HistoryModel::instance()->index(myArray[0], 0);
88
89 QVariant test = HistoryModel::instance()->data(qIdx, Qt::DisplayRole);
90 }
91
92 return returnCell;
93}
94
95// -------------------------------------------------------------------------------
96// textShouldEndEditing:fieldEditor
97// -------------------------------------------------------------------------------
98- (BOOL)control:(NSControl *)control textShouldEndEditing:(NSText *)fieldEditor
99{
100 if ([[fieldEditor string] length] == 0)
101 {
102 // don't allow empty node names
103 return NO;
104 }
105 else
106 {
107 return YES;
108 }
109}
110
111// -------------------------------------------------------------------------------
112// shouldEditTableColumn:tableColumn:item
113//
114// Decide to allow the edit of the given outline view "item".
115// -------------------------------------------------------------------------------
116- (BOOL)outlineView:(NSOutlineView *)outlineView shouldEditTableColumn:(NSTableColumn *)tableColumn item:(id)item
117{
118 return NO;
119}
120
121// -------------------------------------------------------------------------------
122// outlineView:willDisplayCell:forTableColumn:item
123// -------------------------------------------------------------------------------
124- (void)outlineView:(NSOutlineView *)olv willDisplayCell:(NSCell*)cell forTableColumn:(NSTableColumn *)tableColumn item:(id)item
125{
126 if ([[tableColumn identifier] isEqualToString:COLUMNID_HISTORY])
127 {
128 NSIndexPath* idx = ((NSTreeNode*)item).indexPath;
129 NSUInteger myArray[[idx length]];
130 [idx getIndexes:myArray];
131 //NSLog(@"array:%@", idx);
132
133 QModelIndex qIdx;
134 if(idx.length == 2)
135 qIdx = HistoryModel::instance()->index(myArray[1], 0, HistoryModel::instance()->index(myArray[0], 0));
136 else
137 qIdx = HistoryModel::instance()->index(myArray[0], 0);
138
139
140 if(qIdx.isValid())
141 cell.title = HistoryModel::instance()->data(qIdx, Qt::DisplayRole).toString().toNSString();
142 }
143}
144
145// -------------------------------------------------------------------------------
146// outlineViewSelectionDidChange:notification
147// -------------------------------------------------------------------------------
148- (void)outlineViewSelectionDidChange:(NSNotification *)notification
149{
150 // ask the tree controller for the current selection
151 //NSLog(@"outlineViewSelectionDidChange!!");
152}
153
154@end