getImageSrc: function calTreeGetImageSrc(row, col) { if (col.element.getAttribute("anonid") == "col-calendar-status") { // Make sure this is first, to override any other status if (this.calTree.mTreeRows[row].isLoading) { return "chrome://skin/calendar/synch_animated.gif"; } if (this.calTree.mTreeRows[row].readOnly) { return "chrome://skin/calendar/Secure-url.png"; } // Yeah, we don't support this yet, but it'd be nice to // distinguish it from regular read-only if (this.calTree.mTreeRows[row].inErrorMode) { return "chrome://skin/calendar/error.png"; } } if (col.element.getAttribute("anonid") == "col-calendar-Checkbox") { function drawCheckBox(aColor, aChecked) { var canvas = document.createElementNS("http://www.w3.org/1999/xhtml", 'canvas'); var ctx = canvas.getContext('2d'); if (!aColor) { // Default color aColor = "#A8C2E1"; } ctx.fillStyle = aColor.toString(); ctx.globalAlpha=.75; ctx.beginPath(); var radius = 3; var height = 12; var width = 12; ctx.moveTo(0, radius); ctx.lineTo(0, height-radius); ctx.quadraticCurveTo(0, height, radius, height); ctx.lineTo(width-radius, height); ctx.quadraticCurveTo(width, height, width, height-radius); ctx.lineTo(width, radius); ctx.quadraticCurveTo(width, 0, width-radius,0); ctx.lineTo(radius, 0); ctx.quadraticCurveTo(0, 0, 0, radius); ctx.fill(); ctx.globalAlpha = 1.0; ctx.stroke(); if (aChecked) { ctx.lineWidth = 2.0; ctx.moveTo(4,4); ctx.lineTo(width/2, height-1); ctx.lineTo(width+1, 0); ctx.stroke(); } jDebug.logMessage("returing:"+canvas.toDataURL()); return canvas.toDataURL(); } var cal = this.calTree.mTreeRows[row]; if (!(cal instanceof Components.interfaces.calICalendar) || !this.calTree.mDisplayCalendar) { // Containers return; } var calMgr = Components.classes["@mozilla.org/calendar/manager;1"] .getService(Components.interfaces.calICalendarManager); var color = calMgr.getCalendarPref(cal, 'color'); if (this.calTree.mDisplayCalendar.getCalendar(cal.uri)) { //XXX someone broke data: for tree icons return "chrome://calendar/skin/unifinder/checkbox_checked.png"; var res = drawCheckBox(color,true); jDebug.logMessage("res:"+res.toString()+'\n'+row); return "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAACWCAYAAABkW7XSAAACf0lEQVR4nO3bT2jOcRwH8I9nW9sQa7OVlU1MGYqsrGSkFCnjRuFAmsOuGko5strFYUXtRuE25eDkIC0UdjArMzH/1sz+pG2W2Ry2p55HJpTnubxe9T38Pt/P4X16H379fhERM/9wWgIgw3IjInbuO/T24IlTfUXFZd9+tTQyNJB36Xzj2u7OhyVzo/aMJQSYk4iI+F1ZRUQsKSqZGux/X5gyuv/fkwH8JBERkVpWfS+7C2NmOm3p1rXW5Z/63y3McDaANInUh7PH925qOra7tqfr6aLkbODD6/z2q62rMh8NIF1aYZWWr5iIiHh0707yXVVcaT6zZvLrRO76zVsHMx0OIFVaYW2s3TEUEfHscUdxRMTd2zdKu550LMsvKJw6efpiTzYCAiSlFVZt3Z7hRE7OzJve50s/9PUWXL98oSoi4sDRxldl5SsnsxMRYFZaYS0uKp6qXL1udPr79wXnGuprvowO51dWVY/uP9L4MVsBAZISEbPfWSUHG2q2DkVEjI99ycvJzZtuaGp+kUjkzKTsjGchJ8BsYd1sa6lIFtKW7Xs+Jy931R/uW129aWxkaCDvZltLxdy4Mws5ASLi73/LqctOTICIbRHxICLGYv6SGpvb2ZaljADzWpbtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPyZH4e6m4acevVEAAAAAElFTkSuQmCC"; } else { //XXX see above return "chrome://calendar/skin/unifinder/checkbox_unchecked.png"; return drawCheckBox(color, false); } } },