private string GetMessageItem(GKNet.Message msg) { Peer sender = Core.FindPeer(msg.Sender); string senderName = (msg.Sender == LocalId) ? string.Empty : string.Format("[{0}]", sender.Profile.UserName); return(string.Format("{0:yyyy/MM/dd HH:mm} {1}\r\n{2}", msg.Timestamp, senderName, msg.Text)); }
void IChatForm.OnMessageReceived(Peer sender, GKNet.Message message) { Invoke((MethodInvoker) delegate { PrintMessage(message, true); UpdateStatus(); }); }
protected override void OnDrawItem(DrawItemEventArgs e) { if (e.Index < 0 || e.Index >= Items.Count) { return; } GKNet.Message msg = (GKNet.Message)Items[e.Index]; bool senderIsLocal = (msg.Sender == LocalId); string txt = GetMessageItem(msg); bool isSelected = (e.State & DrawItemState.Selected) == DrawItemState.Selected; Rectangle rt = e.Bounds; Font fnt = Font; Brush itemBrush; if (isSelected) { itemBrush = (senderIsLocal) ? Brushes.Goldenrod : Brushes.LightSteelBlue; } else { itemBrush = (senderIsLocal) ? Brushes.PaleGoldenrod : Brushes.GhostWhite; } Rectangle rt1 = rt; rt1.Width -= 1; rt1.Height -= 1; using (GraphicsPath path = CreateRoundedRectangle(rt1.Left, rt1.Top + 3, rt1.Width, rt1.Height - 3 * 2, 5)) { e.Graphics.FillPath(itemBrush, path); var pen = (isSelected) ? fPen2 : fPen1; e.Graphics.DrawPath(pen, path); } if (senderIsLocal) { // Undelivered / Delivered var icon = UIHelper.GetMessageStatusImage(msg.Status); if (icon != null) { e.Graphics.DrawImage(icon, rt.Right - icon.Width - 2, rt.Top + 4); } } rt.Inflate(-5, -2); StringFormat fmt = new StringFormat(); fmt.Alignment = StringAlignment.Near; fmt.LineAlignment = StringAlignment.Center; e.Graphics.DrawString(txt, fnt, Brushes.Black, rt, fmt); base.OnDrawItem(e); }
private void PrintMessage(GKNet.Message msg, bool scrollToBottom) { lstChatMsgs.Items.Add(msg); if (scrollToBottom) { lstChatMsgs.ScrollToBottom(); } }
protected override void OnMeasureItem(MeasureItemEventArgs e) { base.OnMeasureItem(e); if (e.Index < 0 || e.Index >= Items.Count) { return; } GKNet.Message msg = (GKNet.Message)Items[e.Index]; string txt = GetMessageItem(msg); SizeF txt_size = e.Graphics.MeasureString(txt, this.Font); e.ItemHeight = (int)txt_size.Height + 2 * ItemMargin; e.ItemWidth = (int)txt_size.Width; }