public override void Draw(RectangleF rect) { const int padright = 21; var ctx = UIGraphics.GetCurrentContext(); float boxWidth; SizeF ssize; if (MessageCount > 0) { var ms = MessageCount.ToString(); ssize = StringSize(ms, CountFont); boxWidth = Math.Min(22 + ssize.Width, 18); var crect = new RectangleF(Bounds.Width - 20 - boxWidth, 32, boxWidth, 16); UIColor.Gray.SetFill(); GraphicsUtil.FillRoundedRect(ctx, crect, 3); UIColor.White.SetColor(); crect.X += 5; DrawString(ms, crect, CountFont); boxWidth += padright; } else { boxWidth = 0; } UIColor.FromRGB(36, 112, 216).SetColor(); var diff = DateTime.Now - Date; string label; if (DateTime.Now.Day == Date.Day) { label = Date.ToShortTimeString(); } else if (diff <= TimeSpan.FromHours(24)) { label = "Yesterday".GetText(); } else if (diff < TimeSpan.FromDays(6)) { label = Date.ToString("dddd"); } else { label = Date.ToShortDateString(); } ssize = StringSize(label, SubjectFont); float dateSize = ssize.Width + padright + 5; DrawString(label, new RectangleF(Bounds.Width - dateSize, 6, dateSize, 14), SubjectFont, UILineBreakMode.Clip, UITextAlignment.Left); const int offset = 33; float bw = Bounds.Width - offset; UIColor.Black.SetColor(); DrawString(Sender, new PointF(offset, 2), bw - dateSize, SenderFont, UILineBreakMode.TailTruncation); DrawString(Subject, new PointF(offset, 23), bw - offset - boxWidth, SubjectFont, UILineBreakMode.TailTruncation); //UIColor.Black.SetFill (); //ctx.FillRect (new RectangleF (offset, 40, bw-boxWidth, 34)); UIColor.Gray.SetColor(); DrawString(Body, new RectangleF(offset, 40, bw - boxWidth, 34), TextFont, UILineBreakMode.TailTruncation, UITextAlignment.Left); if (NewFlag) { ctx.SaveState(); ctx.AddEllipseInRect(new RectangleF(10, 32, 12, 12)); ctx.Clip(); ctx.DrawLinearGradient(gradient, new PointF(10, 32), new PointF(22, 44), CGGradientDrawingOptions.DrawsAfterEndLocation); ctx.RestoreState(); } #if WANT_SHADOWS ctx.SaveState(); UIColor.FromRGB(78, 122, 198).SetStroke(); ctx.SetShadow(new SizeF(1, 1), 3); ctx.StrokeEllipseInRect(new RectangleF(10, 32, 12, 12)); ctx.RestoreState(); #endif }