24 QStyledItemDelegate(parent)
26 humanReadable =
false;
35 paintTextDocument(painter, option, index);
43void VuoNodeClassListItemDelegate::paintTextDocument(QPainter *painter,
const QStyleOptionViewItem &option,
const QModelIndex &index)
const
48 QColor baseTextColor, disambiguatingTitleFontColor;
49 setUpSelectionHighlighting(painter, baseTextColor, disambiguatingTitleFontColor, option, index);
52 QTextDocument *doc = generateTextDocument(index, baseTextColor, disambiguatingTitleFontColor);
55 QAbstractTextDocumentLayout::PaintContext context;
56 QRect r = option.rect;
57 painter->setClipRect(r);
61 int yAdjusted = r.y() + r.size().height()/2 - h/2 + 1;
63 painter->translate(r.x(), yAdjusted);
64 doc->drawContents(painter);
74void VuoNodeClassListItemDelegate::setUpSelectionHighlighting(QPainter *painter, QColor &baseTextColor, QColor &disambiguatingTitleFontColor,
const QStyleOptionViewItem &option,
const QModelIndex &index)
const
78 if (option.state & QStyle::State_Selected)
80 bool isActive = option.state & QStyle::State_Active;
81 painter->fillRect(option.rect, isDark ? QColor(isActive ?
"#1d6ae5" :
"#606060") : QColor(isActive ?
"#74acec" :
"#e0e0e0"));
83 QPalette::ColorGroup cg = isActive ? QPalette::Normal : QPalette::Inactive;
84 QColor textColor = option.palette.color(cg, QPalette::HighlightedText);
85 baseTextColor = isDark ? QColor(
"#dadada") : textColor;
86 disambiguatingTitleFontColor = isDark ? QColor(
"#909090") : textColor;
92 painter->fillRect(option.rect, isDark ? QColor(
"#2b2b2b") : QColor(
"#f8f8f8"));
94 baseTextColor = QColor(isDark ?
"#a0a0a0" :
"#606060");
95 disambiguatingTitleFontColor = QColor(isDark ?
"#606060" :
"#b0b0b0");
103QTextDocument *VuoNodeClassListItemDelegate::generateTextDocument(
const QModelIndex &index, QColor baseTextColor, QColor disambiguatingTitleFontColor)
const
105 const QColor baseTitleFontColor = baseTextColor;
110 QString baseTitle = (humanReadable? humanReadableName:className);
113 to.setWrapMode(QTextOption::NoWrap);
114 QTextDocument *document =
new QTextDocument();
115 document->setDefaultTextOption(to);
116 document->setDefaultFont(QFont(
"PT Sans"));
120 QStringList tokenizedTextFilter = filterText.split(QRegExp(
"[\\s\\.]+"));
121 for (
int tokenIndex = 0; tokenIndex < tokenizedTextFilter.size(); ++tokenIndex)
123 QString token = tokenizedTextFilter.at(tokenIndex);
124 if (! token.isEmpty())
130 QString disambiguationSeparator =
" ";
133 QString formattedBaseTitle = QString(
"<span style=\"color:%1; font-size:%2pt;\">%3</span>")
134 .arg(baseTitleFontColor.name())
137 QString fullText = formattedBaseTitle;
142 QString formattedDisambiguationText = QString(
"%1<span style=\"color:%2; font-size:%3pt;\">%4</span>")
143 .arg(disambiguationSeparator)
144 .arg(disambiguatingTitleFontColor.name())
147 fullText.append(formattedDisambiguationText);
150 document->setHtml(fullText);
160 QWidget *parentWidget = (QWidget *)parent();
161 return QSize(parentWidget->width() - parentWidget->style()->pixelMetric(QStyle::PM_ScrollBarExtent) - 4,
176 return humanReadable;
185 this->humanReadable = humanReadable;
193 this->filterText = filterText;