void CMultiLineListBox::DrawItem(LPDRAWITEMSTRUCT lpDIS) { CDC* pDC = CDC::FromHandle(lpDIS->hDC); COLORREF rColor = (COLORREF)lpDIS->itemData; // RGB in item data CString sLabel; GetText(lpDIS->itemID, sLabel); // item selected if ((lpDIS->itemState & ODS_SELECTED) && (lpDIS->itemAction & (ODA_SELECT | ODA_DRAWENTIRE))) { // draw color box CBrush colorBrush(rColor); CRect colorRect = lpDIS->rcItem; // draw label background CBrush labelBrush(::GetSysColor(COLOR_HIGHLIGHT)); CRect labelRect = lpDIS->rcItem; pDC->FillRect(&labelRect,&labelBrush); // draw label text COLORREF colorTextSave; COLORREF colorBkSave; colorTextSave = pDC->SetTextColor(::GetSysColor(COLOR_HIGHLIGHTTEXT)); colorBkSave = pDC->SetBkColor(::GetSysColor(COLOR_HIGHLIGHT)); pDC->DrawText( sLabel, -1, &lpDIS->rcItem, DT_WORDBREAK ); pDC->SetTextColor(colorTextSave); pDC->SetBkColor(colorBkSave); return; } // item brought into box if (lpDIS->itemAction & ODA_DRAWENTIRE) { CBrush brush(rColor); CRect rect = lpDIS->rcItem; pDC->SetBkColor(rColor); pDC->FillRect(&rect,&brush); pDC->DrawText( sLabel, -1, &lpDIS->rcItem, DT_WORDBREAK ); return; } // item deselected if (!(lpDIS->itemState & ODS_SELECTED) && (lpDIS->itemAction & ODA_SELECT)) { CRect rect = lpDIS->rcItem; CBrush brush(rColor); pDC->SetBkColor(rColor); pDC->FillRect(&rect,&brush); pDC->DrawText( sLabel, -1, &lpDIS->rcItem, DT_WORDBREAK ); return; } }
QVariant ColumnDigikamProperties::data(TableViewModel::Item* const item, const int role) const { if ( (role != Qt::DisplayRole) && (role != Qt::TextAlignmentRole) && (role != Qt::ForegroundRole ) ) { return QVariant(); } if (role == Qt::TextAlignmentRole) { switch (subColumn) { case SubColumnRating: return QVariant(Qt::Alignment(Qt::AlignRight | Qt::AlignVCenter)); default: return QVariant(); } } if (role == Qt::ForegroundRole) { switch (subColumn) { case SubColumnPickLabel: { const ImageInfo info = s->tableViewModel->infoFromItem(item); const PickLabel pickLabel = PickLabel(info.pickLabel()); QColor labelColor; switch (pickLabel) { case NoPickLabel: labelColor = Qt::darkGray; break; case RejectedLabel: labelColor = Qt::red; break; case PendingLabel: // yellow is too hard to read labelColor = Qt::darkYellow; break; case AcceptedLabel: // green is too hard to read labelColor = Qt::darkGreen; break; default: break; } QBrush labelBrush(labelColor); return QVariant::fromValue(labelBrush); } case SubColumnColorLabel: { const ImageInfo info = s->tableViewModel->infoFromItem(item); const ColorLabel colorLabel = ColorLabel(info.colorLabel()); QColor labelColor; switch (colorLabel) { case NoColorLabel: labelColor = Qt::lightGray; break; case RedLabel: labelColor = Qt::red; break; case OrangeLabel: labelColor = QColor(0xff, 0x80, 0x00); break; case YellowLabel: labelColor = Qt::darkYellow; break; case GreenLabel: labelColor = Qt::darkGreen; break; case BlueLabel: labelColor = Qt::darkBlue; break; case MagentaLabel: labelColor = Qt::magenta; break; case GrayLabel: labelColor = Qt::darkGray; break; case BlackLabel: labelColor = Qt::black; break; case WhiteLabel: labelColor = Qt::white; break; default: break; } QBrush labelBrush(labelColor); return QVariant::fromValue(labelBrush); } default: return QVariant(); } } const ImageInfo info = s->tableViewModel->infoFromItem(item); /// @todo Also display the pick label icon? /// @todo Make display of text/icon configurable. switch (subColumn) { case SubColumnRating: { const int itemRating = info.rating(); if (itemRating <= 0) { // no rating return QString(); } return QLocale().toString(itemRating); } case SubColumnPickLabel: { const PickLabel pickLabel = PickLabel(info.pickLabel()); QString labelString; switch (pickLabel) { case NoPickLabel: labelString = i18n("None"); break; case RejectedLabel: labelString = i18n("Rejected"); break; case PendingLabel: labelString = i18n("Pending"); break; case AcceptedLabel: labelString = i18n("Accepted"); break; default: break; } return labelString; } case SubColumnColorLabel: { const ColorLabel colorLabel = ColorLabel(info.colorLabel()); QString labelString; switch (colorLabel) { case NoColorLabel: labelString = i18n("None"); break; case RedLabel: labelString = i18n("Red"); break; case OrangeLabel: labelString = i18n("Orange"); break; case YellowLabel: labelString = i18n("Yellow"); break; case GreenLabel: labelString = i18n("Green"); break; case BlueLabel: labelString = i18n("Blue"); break; case MagentaLabel: labelString = i18n("Magenta"); break; case GrayLabel: labelString = i18n("Gray"); break; case BlackLabel: labelString = i18n("Black"); break; case WhiteLabel: labelString = i18n("White"); break; default: break; } return labelString; } case SubColumnTitle: { const QString title = info.title(); return title; } case SubColumnCaption: { const QString caption = info.comment(); return caption; } } return QVariant(); }