void LogDelegate::paint (QPainter * painter, QStyleOptionViewItem const & option, QModelIndex const & index) const { painter->save(); QStyleOptionViewItemV4 option4 = option; initStyleOption(&option4, index); std::vector<QString> const & column_aligns = m_log_widget.config().m_columns_align; if (index.column() < column_aligns.size()) { E_Align const align = stringToAlign(column_aligns[index.column()].at(0).toLatin1()); option4.displayAlignment = static_cast<Qt::Alignment>(1 << align); } std::vector<QString> const & column_elides = m_log_widget.config().m_columns_elide; if (index.column() < column_elides.size()) { E_Elide const elide = stringToElide(column_elides[index.column()].at(0).toLatin1()); option4.textElideMode = static_cast<Qt::TextElideMode>(elide); } int const tag = m_log_widget.column2Tag(index.column()); if (tag < tlv::tag_max_value) { switch (tag) { case tlv::tag_file: paintTokenized(painter, option4, index, QString("[:/\\\\]"), "/", m_log_widget.config().m_cut_path_level); break; case tlv::tag_func: paintTokenized(painter, option4, index, QString("[::]"), "::", m_log_widget.config().m_cut_namespaces); break; case tlv::tag_ctx: if (m_app_data.getDictCtx().m_names.size()) paintContext(painter, option4, index); else QStyledItemDelegate::paint(painter, option4, index); // no dictionnary break; case tlv::tag_ctime: case tlv::tag_stime: paintTime(painter, option4, index); break; default: QStyledItemDelegate::paint(painter, option4, index); break; } } else { // user tags QStyledItemDelegate::paint(painter, option4, index); } painter->restore(); }
void LogDelegate::paint (QPainter * painter, QStyleOptionViewItem const & option, QModelIndex const & index) const { painter->save(); QStyleOptionViewItemV4 option4 = option; initStyleOption(&option4, index); // TODO: nonexistent item !!!!!!!!!!!!!!!!! QVector<QString> const & column_aligns = m_log_widget.getConfig().m_columns_align; E_Align const align = stringToAlign(column_aligns[index.column()].at(0).toLatin1()); option4.displayAlignment = static_cast<Qt::Alignment>(1 << align); QVector<QString> const & column_elides = m_log_widget.getConfig().m_columns_elide; E_Elide const elide = stringToElide(column_elides[index.column()].at(0).toLatin1()); option4.textElideMode = static_cast<Qt::TextElideMode>(elide); /* { // color tagged line? int row = index.row(); if (m_log_widget.isModelProxy()) if (FilterProxyModel const * proxy = m_log_widget.logProxy()) { QModelIndex const curr = proxy->mapToSource(index); row = curr.row(); } if (m_log_widget.findColorTagRow(row)) { painter->fillRect(option.rect, QColor(202, 225, 255)); } }*/ LogWidget & lw = const_cast<LogWidget &>(m_log_widget); // hm if (m_log_widget.getConfig().m_cut_path && index.column() == lw.findColumn4Tag(tlv::tag_file)) { int level = m_log_widget.getConfig().m_cut_path_level; paintTokenized(painter, option4, index, QString("[:/\\\\]"), "/", level); } else if (m_log_widget.getConfig().m_cut_namespaces && index.column() == lw.findColumn4Tag(tlv::tag_func)) { int level = m_log_widget.getConfig().m_cut_namespaces; paintTokenized(painter, option4, index, QString("[::]"), "::", level); } else if (m_app_data.getDictCtx().m_names.size() && index.column() == lw.findColumn4Tag(tlv::tag_ctx)) { paintContext(painter, option4, index); } else if (index.column() == lw.findColumn4Tag(tlv::tag_ctime)) { paintTime(painter, option4, index); } else if (index.column() == lw.findColumn4Tag(tlv::tag_stime)) { paintTime(painter, option4, index); } else { QStyledItemDelegate::paint(painter, option4, index); } painter->restore(); }