Thanks for your both for your help.
I think you should still use a cck field.
You took a good picture of the scenario, but this is exactly the point of what I was trying to avoid. :-)
I don't want to use a cck field for books and I don't want to hide it with hook_form_alter.
I think I finally found a solution that didn't require adding extra CCK-fields to my "non-image" content types (audio and text).
There is a module called "Views custom field" (drupal.org/project/views_customfield) that allows you to add a PHP-processed-field to your view, so you can filter by content type and apply imagecache or imageapi code
$node=node_load($data->nid);
$img_path=drupal_get_path("module", "gt_medias") . "/images";
switch ($node->type) {
case "gt_video":
$img_path = $node->field_gt_thumbnail[0][filepath];
break;
case "book":
$img_path .= "/bookDefault.jpg";
break;
case "gt_audio":
$img_path .="/audioDefault.png";
break;
case "pingv_image":
$img_path = $node->field_pingv_image[0][filepath];
break;
}
$imgcache_url = imagecache_create_url('gt_medias_video_346', $img_path);
$output .= '<img src="'. $imgcache_url .'" ' />';
return ($output);
Where "gt_medias_video_346" is the name of my imagecache preset.
Once again, thanks you both for your help,
m.