public override void Paint(Qyoto.QPainter painter, Qyoto.QStyleOptionGraphicsItem option, Qyoto.QWidget widget) { painter.SetRenderHint(QPainter.RenderHint.Antialiasing, true); int iconSize = m_Grid.IconSize; // Parent opacity overrides item opacity. var parentGroup = (RosterItemGroup)base.Group(); if (parentGroup == null) // This happens while the item is being removed. { return; } if (parentGroup.Opacity != 1) { painter.SetOpacity(parentGroup.Opacity); } else { painter.SetOpacity(m_Opacity); } QPixmap pixmap = (QPixmap)m_Grid.Model.GetImage(m_Item); Gui.DrawAvatar(painter, iconSize, iconSize, pixmap); if (IsHover) { // FIXME: Do something? } if (m_Grid.ListMode) { var rect = BoundingRect(); var pen = new QPen(); pen.SetBrush(m_Grid.Palette.Text()); painter.SetPen(pen); int x = iconSize + m_Grid.IconPadding; painter.DrawText(x, 0, (int)rect.Width() - x, (int)rect.Height(), (int)Qt.TextFlag.TextSingleLine, m_Grid.Model.GetName(m_Item)); } }
public override void Paint(Qyoto.QPainter painter, Qyoto.QStyleOptionGraphicsItem option, Qyoto.QWidget widget) { painter.SetOpacity(m_Opacity); var color = m_Grid.Palette.Color(QPalette.ColorRole.Text); // Group Name painter.SetFont(m_Font); painter.SetPen(new QPen(color)); string text = null; if (m_Grid.ShowGroupCounts) { text = String.Format("{0} ({1}/{2})", m_GroupName, m_Grid.Model.NumOnlineItemsInGroup(m_GroupName), m_Grid.Model.NumItemsInGroup(m_GroupName)); } else { text = m_GroupName; } painter.DrawText(BoundingRect(), text); int arrowX = m_Grid.IconPadding + m_Metrics.Width(text) + 4; int arrowY = 5; // Group expander arrow painter.Save(); painter.Translate(arrowX, arrowY); QPainterPath path = new QPainterPath(); if (IsExpanded) { path.MoveTo(0, 0); path.LineTo(4, 0); path.LineTo(2, 2); path.LineTo(0, 0); } else { path.MoveTo(2, 0); path.LineTo(2, 4); path.LineTo(0, 2); path.LineTo(2, 0); } painter.SetPen(new QPen(color)); painter.SetBrush(new QBrush(color)); painter.DrawPath(path); painter.Restore(); m_ArrowRect = new QRectF(arrowX, 0, 4, m_Grid.HeaderHeight); if (ItemOver) { painter.SetPen(new QPen(new QColor("red"))); painter.DrawRect(BoundingRect()); } }