From d7efae3ff6e5cf9407af16dbba09a55be092ce45 Mon Sep 17 00:00:00 2001 From: Bibiko Date: Fri, 1 Oct 2010 09:18:27 +0000 Subject: =?UTF-8?q?=E2=80=A2=20some=20further=20work=20on=20Filter=20Table?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Source/SPTableContent.h | 1 + Source/SPTableContent.m | 35 +++++++++++++++++++++++++++++++---- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/Source/SPTableContent.h b/Source/SPTableContent.h index 47a29a17..5a085ad7 100644 --- a/Source/SPTableContent.h +++ b/Source/SPTableContent.h @@ -105,6 +105,7 @@ NSMutableDictionary *filterTableData; BOOL filterTableNegate; BOOL filterTableDistinct; + BOOL filterTableIsSwapped; NSString *filterTableDefaultOperator; NSString *lastEditedFilterTableValue; NSInteger activeFilter; // 0 = default filter; 1 = filter table diff --git a/Source/SPTableContent.m b/Source/SPTableContent.m index 55d48b90..71173f96 100644 --- a/Source/SPTableContent.m +++ b/Source/SPTableContent.m @@ -75,6 +75,7 @@ filterTableNegate = NO; filterTableDistinct = NO; + filterTableIsSwapped = NO; lastEditedFilterTableValue = nil; activeFilter = 0; @@ -3348,7 +3349,10 @@ - (NSInteger)numberOfRowsInTableView:(SPCopyTable *)aTableView { if(aTableView == filterTableView) { - return [[[filterTableData objectForKey:[NSNumber numberWithInteger:0]] objectForKey:@"filter"] count]; + if(filterTableIsSwapped) + return [filterTableData count]; + else + return [[[filterTableData objectForKey:[NSNumber numberWithInteger:0]] objectForKey:@"filter"] count]; } else if(aTableView == tableContentView) { return tableRowsCount; @@ -3359,7 +3363,15 @@ { if(aTableView == filterTableView) { - return NSArrayObjectAtIndex([[filterTableData objectForKey:[aTableColumn identifier]] objectForKey:@"filter"], rowIndex); + if(filterTableIsSwapped) + // First column shows the field names + if([[aTableColumn identifier] integerValue] == 0) { + NSTableHeaderCell *c = [[[NSTableHeaderCell alloc] initTextCell:[[filterTableData objectForKey:[NSNumber numberWithInteger:rowIndex]] objectForKey:@"name"]] autorelease]; + return c; + } else + return NSArrayObjectAtIndex([[filterTableData objectForKey:[NSNumber numberWithInteger:rowIndex]] objectForKey:@"filter"], [[aTableColumn identifier] integerValue]-1); + else + return NSArrayObjectAtIndex([[filterTableData objectForKey:[aTableColumn identifier]] objectForKey:@"filter"], rowIndex); } else if(aTableView == tableContentView) { @@ -3402,6 +3414,12 @@ { if(aTableView == filterTableView) { + if(filterTableIsSwapped && [[aTableColumn identifier] integerValue] == 0) { + [cell setDrawsBackground:YES]; + [cell setBackgroundColor:lightGrayColor]; + } else { + [cell setDrawsBackground:NO]; + } return; } else if(aTableView == tableContentView) { @@ -3452,7 +3470,10 @@ - (void)tableView:(NSTableView *)aTableView setObjectValue:(id)anObject forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex { if(aTableView == filterTableView) { - [[[filterTableData objectForKey:[aTableColumn identifier]] objectForKey:@"filter"] replaceObjectAtIndex:rowIndex withObject:(NSString*)anObject]; + if(filterTableIsSwapped) + [[[filterTableData objectForKey:[NSNumber numberWithInteger:rowIndex]] objectForKey:@"filter"] replaceObjectAtIndex:([[aTableColumn identifier] integerValue]-1) withObject:(NSString*)anObject]; + else + [[[filterTableData objectForKey:[aTableColumn identifier]] objectForKey:@"filter"] replaceObjectAtIndex:rowIndex withObject:(NSString*)anObject]; [self updateFilterTableClause:nil]; return; } @@ -3779,7 +3800,13 @@ { if ([tableDocumentInstance isWorking]) return NO; - if ( aTableView == tableContentView ) { + if(aTableView == filterTableView) { + if(filterTableIsSwapped && [[aTableColumn identifier] integerValue] == 0) + return NO; + else + return YES; + } + else if ( aTableView == tableContentView ) { // Ensure that row is editable since it could contain "(not loaded)" columns together with // issue that the table has no primary key -- cgit v1.2.3