Monotone-Parent: 35156d431d203984a125b3638bbea9d7877ed199

Monotone-Revision: c67e433732722d75d043f48a847d38b5f7acad9d

Monotone-Author: wsourdeau@inverse.ca
Monotone-Date: 2009-09-22T15:58:43
Monotone-Branch: ca.inverse.sogo
maint-2.0.2
Wolfgang Sourdeau 2009-09-22 15:58:43 +00:00
parent 819c3bcab4
commit b491d2b0eb
3 changed files with 80 additions and 22 deletions

View File

@ -1,3 +1,13 @@
2009-09-22 Wolfgang Sourdeau <wsourdeau@inverse.ca>
* UI/MailerUI/UIxMailListView.m (+initialize): new method
initialized the two new global NSArray: defaultColumnOrder
(hardcoded values), udColumnOrder (system default values).
(-columnsDisplayOrder): we now cache the resulting set of keys.
We also test for the presence of invalid keys by comparing the
configured array with the hardcoded one above.
(-setCurrentColumn:, currentColumn): new accessors.
2009-09-21 Ludovic Marcotte <lmarcotte@inverse.ca>
* SOPE/NGCards/versitCardsSaxDriver/VSSaxDriver.m

View File

@ -32,6 +32,7 @@
{
NSArray *sortedUIDs; /* we always need to retrieve all anyway! */
NSArray *messages;
NSMutableArray *userDefinedOrder;
unsigned firstMessageNumber;
id message;
EOQualifier *qualifier;

View File

@ -41,6 +41,7 @@
#import <NGObjWeb/NSException+HTTP.h>
#import <NGExtensions/NSNull+misc.h>
#import <NGExtensions/NSString+misc.h>
#import <NGExtensions/NSObject+Logs.h>
#import <EOControl/EOQualifier.h>
@ -55,10 +56,32 @@
#import "UIxMailListView.h"
static NSArray *defaultColumnOrder = nil;
static NSArray *udColumnOrder = nil;
#define messagesPerPage 50
@implementation UIxMailListView
+ (void) initialize
{
if (!defaultColumnOrder)
{
defaultColumnOrder = [NSArray arrayWithObjects: @"Flagged",
@"Attachment", @"Subject", @"From",
@"Unread", @"Date", @"Priority", @"Size",
nil];
[defaultColumnOrder retain];
}
if (!udColumnOrder)
{
udColumnOrder = [[NSUserDefaults standardUserDefaults]
arrayForKey: @"SOGoMailListViewColumnsOrder"];
[udColumnOrder retain];
}
}
- (id) init
{
SOGoUser *user;
@ -69,6 +92,7 @@
user = [context activeUser];
ASSIGN (dateFormatter, [user dateFormatterInContext: context]);
ASSIGN (userTimeZone, [user timeZone]);
userDefinedOrder = nil;
folderType = 0;
currentColumn = nil;
}
@ -85,6 +109,7 @@
[dateFormatter release];
[userTimeZone release];
[currentColumn release];
[userDefinedOrder release];
[super dealloc];
}
@ -811,35 +836,47 @@
- (NSArray *) columnsDisplayOrder
{
NSMutableArray *userDefinedOrder;
NSMutableArray *testColumns;
NSArray *defaultsOrder;
NSUserDefaults *ud;
unsigned int i;
ud = [[context activeUser] userSettings];
defaultsOrder = [ud arrayForKey: @"SOGoMailListViewColumnsOrder"];
if (![defaultsOrder count])
if (!userDefinedOrder)
{
defaultsOrder = [[NSUserDefaults standardUserDefaults]
arrayForKey: @"SOGoMailListViewColumnsOrder"];
ud = [[context activeUser] userSettings];
defaultsOrder = [ud arrayForKey: @"SOGoMailListViewColumnsOrder"];
if (![defaultsOrder count])
defaultsOrder = [NSArray arrayWithObjects: @"Flagged",
@"Attachment", @"Subject", @"From",
@"Unread", @"Date", @"Priority", @"Size", nil];
}
userDefinedOrder = [NSMutableArray arrayWithArray: defaultsOrder];
{
defaultsOrder = udColumnOrder;
if (![defaultsOrder count])
defaultsOrder = defaultColumnOrder;
}
userDefinedOrder = [defaultsOrder mutableCopy];
if ([self showToAddress])
{
i = [userDefinedOrder indexOfObject: @"From"];
if (i != NSNotFound)
[userDefinedOrder replaceObjectAtIndex: i withObject: @"To"];
}
else
{
i = [userDefinedOrder indexOfObject: @"To"];
if (i != NSNotFound)
[userDefinedOrder replaceObjectAtIndex: i withObject: @"From"];
testColumns = [userDefinedOrder mutableCopy];
[testColumns removeObjectsInArray: defaultColumnOrder];
if ([testColumns count] > 0)
{
[self errorWithFormat: @"one or more column names specified in"
@" SOGoMailListViewColumnsOrder are invalid: '%@'",
[testColumns componentsJoinedByString: @"', '"]];
[self errorWithFormat: @" falling back on hardcoded column order"];
userDefinedOrder = [defaultColumnOrder mutableCopy];
}
[testColumns release];
if ([self showToAddress])
{
i = [userDefinedOrder indexOfObject: @"From"];
if (i != NSNotFound)
[userDefinedOrder replaceObjectAtIndex: i withObject: @"To"];
}
else
{
i = [userDefinedOrder indexOfObject: @"To"];
if (i != NSNotFound)
[userDefinedOrder replaceObjectAtIndex: i withObject: @"From"];
}
}
return [[self columnsMetaData] objectsForKeys: userDefinedOrder
@ -851,6 +888,16 @@
return [NSString stringWithFormat: @"%d", [[self columnsDisplayOrder] count]];
}
- (void) setCurrentColumn: (NSDictionary *) newCurrentColumn
{
ASSIGN (currentColumn, newCurrentColumn);
}
- (NSDictionary *) currentColumn
{
return currentColumn;
}
- (NSString *) columnTitle
{
return [self labelForKey: [currentColumn objectForKey: @"value"]];