protected override List <NativeItemData> BuildNativeControlItems() { var newListData = new List <NativeItemData>(Items.Count); if (Items != null) { for (int i = 0; i < Items.Count; i++) { string primaryText = Resources.MessageI; if (Items[i].IsMessageInbox) { primaryText = Items[i].UserName; } NativeItemDataNew newNativeItemData = new NativeItemDataNew { Uid = Items[i].Uid, PrimaryText = primaryText, SecondaryText = Items[i].MessageText, TertiaryText = Items[i].MessageWroteDateString, ItemHighlight = Items[i].IsMessageInbox, InfoLeftIndents = new int[3], InfoTopIndents = new int[3] }; newListData.Add(newNativeItemData); } } return(newListData); }
protected override void DrawItemOn(Gdi g, NativeItemData nativeItem, Rectangle rItem, int nItem) { NativeItemDataNew item = (NativeItemDataNew)nativeItem; //выделение DrawItemBackgroundOn(g, item, rItem, nItem, SelectedIndex == nItem); //полоска var rSep = new Rectangle(rItem.Left, rItem.Top, rItem.Width, 1); g.FillRect(rSep, Gdi.CreateSolidBrush(Color.FromArgb(205, 205, 205))); //Имя int topIndent = rItem.Top + item.InfoTopIndents[0]; int leftIndent = rItem.Left + UISettings.CalcPix(7); //rItem.Left + item.InfoLeftIndents[0]; if (!string.IsNullOrEmpty(item.PrimaryText)) { g.Font = Settings.PrimaryTextFontGdi; g.TextAlign = Win32.TextAlign.TA_LEFT; g.TextColor = Settings.ListItemTextColor; g.ExtTextOut(leftIndent, topIndent, item.PrimaryText); } //Дата topIndent = rItem.Top + item.InfoTopIndents[0] + UISettings.CalcPix(1); //из-за разных шрифтов leftIndent = rItem.Right - item.InfoLeftIndents[2]; if (!string.IsNullOrEmpty(item.TertiaryText)) { g.Font = Settings.ThirdTextFontGdi; g.TextAlign = Win32.TextAlign.TA_RIGHT; g.TextColor = Color.FromArgb(51, 153, 255); g.ExtTextOut(leftIndent, topIndent, item.TertiaryText); } //Текст сообщения leftIndent = rItem.Left + UISettings.CalcPix(7); //rItem.Left + item.InfoLeftIndents[0]; topIndent = rItem.Top + item.InfoTopIndents[1]; if (item.SecondaryTextLines.Count > 0) { g.Font = Settings.SecondaryTextFontGdi; g.TextAlign = Win32.TextAlign.TA_LEFT; g.TextColor = Color.FromArgb(102, 102, 102); foreach (string line in item.SecondaryTextLines) { g.ExtTextOut(leftIndent, topIndent, line); topIndent += UISettings.CalcPix(11); } } }
protected override List <NativeItemData> BuildNativeControlItems() { var newListData = new List <NativeItemData>(Items.Count); if (Items != null) { for (int i = 0; i < Items.Count; i++) { List <string> secondaryTextLines = new List <string>(); var hdcMem = OffScreenGraphics.GetHdc(); try { using (Gdi g = Gdi.FromHdc(hdcMem, Rectangle.Empty)) { g.Font = Settings.SecondaryTextFontGdi; g.TextAlign = Win32.TextAlign.TA_LEFT; secondaryTextLines = TextFormatHelper.CutTextToLines(Items[i].MessageText, UISettings.CalcPix(192), 2, g); } } finally { OffScreenGraphics.ReleaseHdc(hdcMem); } NativeItemDataNew newNativeItemData = new NativeItemDataNew { Uid = Items[i].Uid, PrimaryText = Items[i].UserName, SecondaryText = Items[i].MessageText, TertiaryText = Items[i].MessageWroteDateString, SecondaryTextLines = secondaryTextLines, IsItemHighlight = Items[i].IsMessageNew, IsOutboxIconSet = Items[i].IsMessageOutbox, Tag = Items[i].UserID, PrimaryImage = null,//MasterForm.SkinManager.GetImage("IsOutputMessage"), InfoLeftIndents = new int[5], InfoTopIndents = new int[3] }; newListData.Add(newNativeItemData); } } return(newListData); }
protected override void DrawItemOn(Gdi g, NativeItemData nativeItem, Rectangle rItem, int nItem) { NativeItemDataNew item = (NativeItemDataNew)nativeItem; bool isSelected = ShowSelectedItem ? nItem == _SelectedIndex : false; //Подложка айтема DrawItemBackgroundOn(g, item, rItem, nItem, isSelected); //полоска var rSep = new Rectangle(rItem.Left, rItem.Top, rItem.Width, 1); g.FillRect(rSep, Gdi.CreateSolidBrush(Color.FromArgb(219, 219, 219))); //IsItemHighlight icon + кэширование int leftIndent = rItem.Left + item.InfoLeftIndents[0] + UISettings.CalcPix(1); int topIndent = rItem.Top + item.InfoTopIndents[0] + UISettings.CalcPix(3); if (item.IsItemHighlight && item.PrimaryImage != null) { ImageInfo iinfo; item.PrimaryImage.GetImageInfo(out iinfo); if (item.OutboxIcon == null || isSelected) { //g.DrawImageAlphaChannel(item.PrimaryImage, leftIndent, topIndent); if (item.OutboxIcon == null & topIndent > 0) { item.OutboxIcon = new Bitmap((int)iinfo.Width, (int)iinfo.Height); g.CopyImageTo(item.OutboxIcon, 0, 0, Settings.PrimaryIconPixWidth, Settings.PrimaryIconPixHeight, leftIndent, topIndent); } } else { g.DrawImage(item.OutboxIcon, leftIndent, topIndent); } } //Имя Фамилия topIndent = rItem.Top + item.InfoTopIndents[0]; leftIndent = rItem.Left + item.InfoLeftIndents[1]; if (!string.IsNullOrEmpty(item.PrimaryText)) { g.Font = Settings.PrimaryTextFontGdi; g.TextAlign = Win32.TextAlign.TA_LEFT; if (isSelected) { g.TextColor = Color.White; } else { g.TextColor = Settings.ListItemTextColor; } g.ExtTextOut(/*leftIndent*/ UISettings.CalcPix(7), topIndent, item.PrimaryText); } //Дата topIndent = rItem.Top + item.InfoTopIndents[0] + UISettings.CalcPix(1); //из-за разных шрифтов leftIndent = rItem.Right - item.InfoLeftIndents[3]; if (!string.IsNullOrEmpty(item.TertiaryText)) { g.Font = Settings.ThirdTextFontGdi; g.TextAlign = Win32.TextAlign.TA_RIGHT; if (isSelected) { g.TextColor = Color.White; } else { g.TextColor = Color.FromArgb(51, 153, 255); } g.ExtTextOut(leftIndent, topIndent, item.TertiaryText); } //bool needTab = false; //Я: topIndent = rItem.Top + item.InfoTopIndents[1]; leftIndent = rItem.Left + UISettings.CalcPix(7); //rItem.Left + item.InfoLeftIndents[1]; if (item.IsOutboxIconSet) { g.Font = Settings.PrimaryText2FontGdi; g.TextAlign = Win32.TextAlign.TA_LEFT; if (isSelected) { g.TextColor = Color.White; } else { g.TextColor = Settings.ListItemTextColor; } g.ExtTextOut(leftIndent, topIndent, Resources.OutboxText); //Отступ для текста сообщения //leftIndent = rItem.Left + item.InfoLeftIndents[2]; leftIndent = rItem.Left + UISettings.CalcPix(22); } //Текст сообщения if (item.SecondaryTextLines.Count > 0) { g.Font = Settings.SecondaryTextFontGdi; g.TextAlign = Win32.TextAlign.TA_LEFT; if (isSelected) { g.TextColor = Color.White; } else { g.TextColor = Color.FromArgb(102, 102, 102); } foreach (string line in item.SecondaryTextLines) { g.ExtTextOut(leftIndent, topIndent, line); topIndent += UISettings.CalcPix(11); } } //Arrow topIndent = rItem.Top + item.InfoTopIndents[2]; leftIndent = rItem.Right - item.InfoLeftIndents[4]; //if (isSelected) g.DrawImageAlphaChannel(MasterForm.SkinManager.GetImage("MessagesArrowPressed"), leftIndent, topIndent); //else g.DrawImageAlphaChannel(MasterForm.SkinManager.GetImage("MessagesArrow"), leftIndent, topIndent); if (_cachedImages != null && _cachedImages.Count > 1) { if (isSelected) { g.DrawImage(_cachedImages[1], leftIndent, topIndent); } else { g.DrawImage(_cachedImages[0], leftIndent, topIndent); } } }