QString ResultList::getItemString(ResultList::ColumnType type, QVariant* item) const
{	
	const QString resultTypeTexts[6] = {
		tr("OK"),
		tr("OT"),
		tr("MP"),
		tr("DNF"),
		tr("DISQ"),
		tr("DNS")
	};
	
	switch (type)
	{
	case ColumnRank:
		if (item->isValid() && item->toInt() > 0)
			return item->toString();
		else
			return "-";
	case ColumnCategory:
		return reinterpret_cast<AbstractCategory*>(item->value<void*>())->name;
	case ColumnRunner:
	{
		Runner* runner = reinterpret_cast<Runner*>(item->value<void*>());
		if (runner)
			return runner->getShortDesc();
		else
			return "";
	}
	case ColumnClub:
	{
		Club* club = reinterpret_cast<Club*>(item->value<void*>());
		if (club)
			return club->getName();
		else if (item->type() == QVariant::String)
			return item->toString();
		else
			return tr("- no club -");
	}
	case ColumnPoints: case ColumnPointInfo:
		return item->isValid() ? pointsToString(item->toInt(), decimal_places, decimal_factor) : "-";
	case ColumnTime:
		return item->isValid() ? timeToString(item->toInt()) : "";
	case ColumnResult:
		return resultTypeTexts[item->toInt()];
	default:
		return item->toString();
	}
}