QVariant HistoryModel::data(const QModelIndex &index, int role) const { HistoryItem* item = itemFromIndex(index); if (index.row() < 0 || !item) { return QVariant(); } if (item->isTopLevel()) { switch (role) { case IsTopLevelRole: return true; case TimestampStartRole: return item->startTimestamp(); case TimestampEndRole: return item->endTimestamp(); case Qt::DisplayRole: case Qt::EditRole: return index.column() == 0 ? item->title : QVariant(); case Qt::DecorationRole: return index.column() == 0 ? QIcon(":/icons/menu/history_entry.png") : QVariant(); } return QVariant(); } const HistoryEntry &entry = item->historyEntry; switch (role) { case IdRole: return entry.id; case TitleRole: return entry.title; case UrlRole: return entry.url; case UrlStringRole: return entry.urlString; case IconRole: return item->icon(); case IconLoadedRole: return item->iconLoaded(); case IsTopLevelRole: return false; case TimestampStartRole: return -1; case TimestampEndRole: return -1; case Qt::ToolTipRole: if (index.column() == 0) { return QString("%1\n%2").arg(entry.title, entry.urlString); } case Qt::DisplayRole: case Qt::EditRole: switch (index.column()) { case 0: return entry.title; case 1: return entry.urlString; case 2: return dateTimeToString(entry.date); case 3: return entry.count; } break; case Qt::DecorationRole: if (index.column() == 0) { return item->icon().isNull() ? qIconProvider->emptyWebIcon() : item->icon(); } } return QVariant(); }