示例#1
0
	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();
	}
示例#2
0
void LogCtxMenu::onClickedAtSettingColumnElide (QModelIndex const idx)
{
	syncSettingsViews(m_ui->listViewColumnElide, idx);
	QString const txt = m_ui->listViewColumnElide->model()->data(idx).toString();
	E_Elide act = static_cast<E_Elide>(0);
	if (txt.isEmpty())
	{ }
	else
	{
		E_Elide const curr = stringToElide(txt.toStdString().c_str()[0]);
		size_t i = (curr + 1) % e_max_elide_enum_value;
		act = static_cast<E_Elide>(i);
	}
	m_ui->listViewColumnElide->model()->setData(idx, QString(elideToString(act)));
}
示例#3
0
	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();
	}