/** * we use QRect to pass data through QVariant tunnel * * order is tran, untr, fuzzy * left() top() width() * */ QVariant ProjectModel::data(const QModelIndex& index, int role) const { if (!index.isValid()) return QVariant(); const ProjectModelColumns& column=(ProjectModelColumns)index.column(); ProjectNode* node = nodeForIndex(index); QModelIndex internalIndex = poOrPotIndexForOuter(index); if (!internalIndex.isValid()) return QVariant(); KFileItem item=itemForIndex(index); bool isDir = item.isDir(); int translated = node->translatedAsPerRole(); int fuzzy = node->fuzzyAsPerRole(); int untranslated = node->untranslated; bool hasStats = translated != -1; switch(role) { case Qt::DisplayRole: switch (column) { case FileName: return item.text(); case Graph: return hasStats?QRect(translated, untranslated, fuzzy, 0):QVariant(); case TotalCount: return hasStats?(translated + untranslated + fuzzy):QVariant(); case TranslatedCount:return hasStats?translated:QVariant(); case FuzzyCount: return hasStats?fuzzy:QVariant(); case UntranslatedCount:return hasStats?untranslated:QVariant(); case SourceDate: return node->sourceDate; case TranslationDate:return node->translationDate; case LastTranslator:return node->lastTranslator; default: return QVariant(); } case Qt::ToolTipRole: switch (column) { case FileName: return item.text(); default: return QVariant(); } case KDirModel::FileItemRole: return QVariant::fromValue(item); case Qt::DecorationRole: switch (column) { case FileName: if (isDir) return m_dirIcon; if (hasStats && fuzzy == 0 && untranslated == 0) return m_poComplIcon; else if (node->poRowNumber != -1) return m_poIcon; else if (node->potRowNumber != -1) return m_potIcon; default: return QVariant(); } case FuzzyUntrCountRole: return item.isFile()?(fuzzy + untranslated):0; case FuzzyCountRole: return item.isFile()?fuzzy:0; case UntransCountRole: return item.isFile()?untranslated:0; case TemplateOnlyRole: return item.isFile()?(node->poRowNumber == -1):0; case TransOnlyRole: return item.isFile()?(node->potRowNumber == -1):0; case TotalRole: return hasStats?(fuzzy + untranslated + translated):0; default: return QVariant(); } }