QVariant SubkeyListModel::data( const QModelIndex & idx, int role ) const {

    if ( role != Qt::DisplayRole && role != Qt::EditRole && role != Qt::ToolTipRole )
	return QVariant();

    const Subkey subkey = this->subkey( idx );
    if ( subkey.isNull() )
	return QVariant();

    switch ( idx.column() ) {
    case ID:
	return QString::fromLatin1( subkey.keyID() );
    case Type:
	return Formatting::type( subkey );
    case ValidFrom:
	if ( role == Qt::EditRole )
	    return Formatting::creationDate( subkey );
	else
	    return Formatting::creationDateString( subkey );
    case ValidUntil:
	if ( role == Qt::EditRole )
	    return Formatting::expirationDate( subkey );
	else
	    return Formatting::expirationDateString( subkey );
    case Status:
	return Formatting::validityShort( subkey );
    case Bits:
	return subkey.length();
    }

    return QVariant();
}