Merge pull request #41 from alexcloutier/fix/displayTaskNumber

Display the number of active tasks in calendar view
pull/44/head^2
extrafu 2014-06-27 09:07:07 -04:00
commit 8191576361
5 changed files with 85 additions and 52 deletions

View File

@ -80,6 +80,8 @@ typedef enum {
- (NSArray *) calendarUIDs;
- (NSNumber *) activeTasks;
/* vevent UID handling */
- (NSString *) resourceNameForEventUID: (NSString *) _uid;

View File

@ -590,7 +590,6 @@ static iCalEvent *iCalEventK = nil;
{
/* this is used for group calendars (this folder just returns itself) */
NSString *s;
s = [[self container] nameInContainer];
// [self logWithFormat:@"CAL UID: %@", s];
return [s isNotNull] ? [NSArray arrayWithObjects:&s count:1] : nil;
@ -3338,4 +3337,25 @@ firstInstanceCalendarDateRange: (NGCalendarDateRange *) fir
return users;
}
- (NSNumber *) activeTasks
{
NSArray *tasksList;
NSMutableArray *fields;
NSNumber *activeTasks;
fields = [NSMutableArray arrayWithObjects: @"c_component", @"c_status", nil];
tasksList = [self bareFetchFields: fields
from: nil
to: nil
title: nil
component: @"vtodo"
additionalFilters: @"c_status != 1 AND c_status != 3"];
activeTasks = [NSNumber numberWithInt:[tasksList count]];
return activeTasks;
}
@end /* SOGoAppointmentFolder */

View File

@ -93,37 +93,39 @@ _intValueFromHex (NSString *hexString)
NSMutableDictionary *calendar;
unsigned int count, max;
NSString *folderName, *fDisplayName;
NSNumber *isActive;
NSNumber *isActive, *fActiveTasks;
if (!calendars)
{
co = [self clientObject];
folders = [co subFolders];
max = [folders count];
calendars = [[NSMutableArray alloc] initWithCapacity: max];
for (count = 0; count < max; count++)
{
co = [self clientObject];
folders = [co subFolders];
max = [folders count];
calendars = [[NSMutableArray alloc] initWithCapacity: max];
for (count = 0; count < max; count++)
{
folder = [folders objectAtIndex: count];
calendar = [NSMutableDictionary dictionary];
folderName = [folder nameInContainer];
fDisplayName = [folder displayName];
if (fDisplayName == nil)
fDisplayName = @"";
if ([fDisplayName isEqualToString: [co defaultFolderName]])
fDisplayName = [self labelForKey: fDisplayName];
[calendar setObject: [NSString stringWithFormat: @"/%@", folderName]
forKey: @"id"];
[calendar setObject: fDisplayName forKey: @"displayName"];
[calendar setObject: folderName forKey: @"folder"];
[calendar setObject: [folder calendarColor] forKey: @"color"];
isActive = [NSNumber numberWithBool: [folder isActive]];
[calendar setObject: isActive forKey: @"active"];
[calendar setObject: [folder ownerInContext: context]
forKey: @"owner"];
[calendars addObject: calendar];
}
folder = [folders objectAtIndex: count];
calendar = [NSMutableDictionary dictionary];
folderName = [folder nameInContainer];
fDisplayName = [folder displayName];
if (fDisplayName == nil)
fDisplayName = @"";
if ([fDisplayName isEqualToString: [co defaultFolderName]])
fDisplayName = [self labelForKey: fDisplayName];
[calendar setObject: [NSString stringWithFormat: @"/%@", folderName]
forKey: @"id"];
[calendar setObject: fDisplayName forKey: @"displayName"];
[calendar setObject: folderName forKey: @"folder"];
[calendar setObject: [folder calendarColor] forKey: @"color"];
isActive = [NSNumber numberWithBool: [folder isActive]];
[calendar setObject: isActive forKey: @"active"];
[calendar setObject: [folder ownerInContext: context]
forKey: @"owner"];
fActiveTasks = [folder activeTasks];
[calendar setObject:fActiveTasks forKey:@"activeTasks" ];
[calendars addObject: calendar];
}
}
return calendars;
}

View File

@ -38,9 +38,10 @@ div.colorBox.calendarFolder<var:string value="currentCalendar.folder" />
<var:foreach list="calendars" item="currentCalendar"
><li class="denied" var:id="currentCalendar.id" var:owner="currentCalendar.owner" >
<input type="checkbox" class="checkBox" const:disabled="disabled" var:checked="currentCalendar.active" />
<div var:class="currentCalendarClass"><entity name="nbsp"/></div
><var:string value="currentCalendar.displayName"
/></li>
<div var:class="currentCalendarClass"><entity name="nbsp"/></div>
<var:string value="currentCalendar.displayName" />
<span id="activeTasks"><var:string value="currentCalendar.activeTasks"/></span>
</li>
</var:foreach>
</ul>
</div>

View File

@ -2900,27 +2900,35 @@ function configureDragHandles() {
}
function initCalendarSelector() {
var selector = $("calendarSelector");
updateCalendarStatus(); // triggers the initial events refresh
selector.changeNotification = updateCalendarsList;
var list = $("calendarList");
list.on("mousedown", onCalendarSelectionChange);
list.on("dblclick", onCalendarModify);
list.on("selectstart", listRowMouseDownHandler);
list.attachMenu("calendarsMenu");
var items = list.childNodesWithTag("li");
for (var i = 0; i < items.length; i++) {
var input = items[i].childNodesWithTag("input")[0];
$(input).observe("click", clickEventWrapper(updateCalendarStatus));
var selector = $("calendarSelector");
updateCalendarStatus(); // triggers the initial events refresh
selector.changeNotification = updateCalendarsList;
var list = $("calendarList");
list.on("mousedown", onCalendarSelectionChange);
list.on("dblclick", onCalendarModify);
list.on("selectstart", listRowMouseDownHandler);
list.attachMenu("calendarsMenu");
var items = list.childNodesWithTag("li");
for (var i = 0; i < items.length; i++) {
var input = items[i].childNodesWithTag("input")[0];
var activeTasks = items[i].childNodesWithTag("span")[0];
$(input).observe("click", clickEventWrapper(updateCalendarStatus));
if (activeTasks.textContent == "0") {
activeTasks.innerHTML = "";
}
var links = $("calendarSelectorButtons").childNodesWithTag("a");
$(links[0]).observe("click", clickEventWrapper(onCalendarNew));
$(links[1]).observe("click", clickEventWrapper(onCalendarWebAdd));
$(links[2]).observe("click", clickEventWrapper(onCalendarAdd));
$(links[3]).observe("click", clickEventWrapper(onCalendarRemove));
else {
activeTasks.innerHTML = "(" + activeTasks.innerText + ")";
}
}
var links = $("calendarSelectorButtons").childNodesWithTag("a");
$(links[0]).observe("click", clickEventWrapper(onCalendarNew));
$(links[1]).observe("click", clickEventWrapper(onCalendarWebAdd));
$(links[2]).observe("click", clickEventWrapper(onCalendarAdd));
$(links[3]).observe("click", clickEventWrapper(onCalendarRemove));
}
function onCalendarSelectionChange(event) {