This commit is contained in:
Alexandre Cloutier
2014-06-27 10:30:10 -04:00
5 changed files with 85 additions and 52 deletions
@@ -80,6 +80,8 @@ typedef enum {
- (NSArray *) calendarUIDs; - (NSArray *) calendarUIDs;
- (NSNumber *) activeTasks;
/* vevent UID handling */ /* vevent UID handling */
- (NSString *) resourceNameForEventUID: (NSString *) _uid; - (NSString *) resourceNameForEventUID: (NSString *) _uid;
+21 -1
View File
@@ -590,7 +590,6 @@ static iCalEvent *iCalEventK = nil;
{ {
/* this is used for group calendars (this folder just returns itself) */ /* this is used for group calendars (this folder just returns itself) */
NSString *s; NSString *s;
s = [[self container] nameInContainer]; s = [[self container] nameInContainer];
// [self logWithFormat:@"CAL UID: %@", s]; // [self logWithFormat:@"CAL UID: %@", s];
return [s isNotNull] ? [NSArray arrayWithObjects:&s count:1] : nil; return [s isNotNull] ? [NSArray arrayWithObjects:&s count:1] : nil;
@@ -3338,4 +3337,25 @@ firstInstanceCalendarDateRange: (NGCalendarDateRange *) fir
return users; 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 */ @end /* SOGoAppointmentFolder */
+30 -28
View File
@@ -93,37 +93,39 @@ _intValueFromHex (NSString *hexString)
NSMutableDictionary *calendar; NSMutableDictionary *calendar;
unsigned int count, max; unsigned int count, max;
NSString *folderName, *fDisplayName; NSString *folderName, *fDisplayName;
NSNumber *isActive; NSNumber *isActive, *fActiveTasks;
if (!calendars) 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]; folder = [folders objectAtIndex: count];
folders = [co subFolders]; calendar = [NSMutableDictionary dictionary];
max = [folders count]; folderName = [folder nameInContainer];
calendars = [[NSMutableArray alloc] initWithCapacity: max]; fDisplayName = [folder displayName];
for (count = 0; count < max; count++) if (fDisplayName == nil)
{ fDisplayName = @"";
folder = [folders objectAtIndex: count]; if ([fDisplayName isEqualToString: [co defaultFolderName]])
calendar = [NSMutableDictionary dictionary]; fDisplayName = [self labelForKey: fDisplayName];
folderName = [folder nameInContainer]; [calendar setObject: [NSString stringWithFormat: @"/%@", folderName]
fDisplayName = [folder displayName]; forKey: @"id"];
if (fDisplayName == nil) [calendar setObject: fDisplayName forKey: @"displayName"];
fDisplayName = @""; [calendar setObject: folderName forKey: @"folder"];
if ([fDisplayName isEqualToString: [co defaultFolderName]]) [calendar setObject: [folder calendarColor] forKey: @"color"];
fDisplayName = [self labelForKey: fDisplayName]; isActive = [NSNumber numberWithBool: [folder isActive]];
[calendar setObject: [NSString stringWithFormat: @"/%@", folderName] [calendar setObject: isActive forKey: @"active"];
forKey: @"id"]; [calendar setObject: [folder ownerInContext: context]
[calendar setObject: fDisplayName forKey: @"displayName"]; forKey: @"owner"];
[calendar setObject: folderName forKey: @"folder"]; fActiveTasks = [folder activeTasks];
[calendar setObject: [folder calendarColor] forKey: @"color"]; [calendar setObject:fActiveTasks forKey:@"activeTasks" ];
isActive = [NSNumber numberWithBool: [folder isActive]]; [calendars addObject: calendar];
[calendar setObject: isActive forKey: @"active"];
[calendar setObject: [folder ownerInContext: context]
forKey: @"owner"];
[calendars addObject: calendar];
}
} }
}
return calendars; return calendars;
} }
@@ -38,9 +38,10 @@ div.colorBox.calendarFolder<var:string value="currentCalendar.folder" />
<var:foreach list="calendars" item="currentCalendar" <var:foreach list="calendars" item="currentCalendar"
><li class="denied" var:id="currentCalendar.id" var:owner="currentCalendar.owner" > ><li class="denied" var:id="currentCalendar.id" var:owner="currentCalendar.owner" >
<input type="checkbox" class="checkBox" const:disabled="disabled" var:checked="currentCalendar.active" /> <input type="checkbox" class="checkBox" const:disabled="disabled" var:checked="currentCalendar.active" />
<div var:class="currentCalendarClass"><entity name="nbsp"/></div <div var:class="currentCalendarClass"><entity name="nbsp"/></div>
><var:string value="currentCalendar.displayName" <var:string value="currentCalendar.displayName" />
/></li> <span id="activeTasks"><var:string value="currentCalendar.activeTasks"/></span>
</li>
</var:foreach> </var:foreach>
</ul> </ul>
</div> </div>
+28 -20
View File
@@ -2900,27 +2900,35 @@ function configureDragHandles() {
} }
function initCalendarSelector() { function initCalendarSelector() {
var selector = $("calendarSelector"); var selector = $("calendarSelector");
updateCalendarStatus(); // triggers the initial events refresh updateCalendarStatus(); // triggers the initial events refresh
selector.changeNotification = updateCalendarsList; selector.changeNotification = updateCalendarsList;
var list = $("calendarList"); var list = $("calendarList");
list.on("mousedown", onCalendarSelectionChange); list.on("mousedown", onCalendarSelectionChange);
list.on("dblclick", onCalendarModify); list.on("dblclick", onCalendarModify);
list.on("selectstart", listRowMouseDownHandler); list.on("selectstart", listRowMouseDownHandler);
list.attachMenu("calendarsMenu"); list.attachMenu("calendarsMenu");
var items = list.childNodesWithTag("li"); var items = list.childNodesWithTag("li");
for (var i = 0; i < items.length; i++) { for (var i = 0; i < items.length; i++) {
var input = items[i].childNodesWithTag("input")[0]; var input = items[i].childNodesWithTag("input")[0];
$(input).observe("click", clickEventWrapper(updateCalendarStatus)); var activeTasks = items[i].childNodesWithTag("span")[0];
$(input).observe("click", clickEventWrapper(updateCalendarStatus));
if (activeTasks.textContent == "0") {
activeTasks.innerHTML = "";
} }
else {
var links = $("calendarSelectorButtons").childNodesWithTag("a"); activeTasks.innerHTML = "(" + activeTasks.innerText + ")";
$(links[0]).observe("click", clickEventWrapper(onCalendarNew)); }
$(links[1]).observe("click", clickEventWrapper(onCalendarWebAdd));
$(links[2]).observe("click", clickEventWrapper(onCalendarAdd)); }
$(links[3]).observe("click", clickEventWrapper(onCalendarRemove));
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) { function onCalendarSelectionChange(event) {