ElementAction::ElementAction( const Element & e, QWidget * parent )
: QAction( parent )
, element( e )
{
	setText( e.displayName() );
	QPixmap p = ElementUi(e).image();
	if( !p.isNull() )
		setIcon( QIcon(p) );
}
void AssetTemplateItem::setup( const Record & rec, const QModelIndex & self ) {
	r = rec;
	Element e(r);
	_flags = Qt::ItemFlags(0);
	isRecurseTemplate = false;
	isGhostItem = false;
	QModelIndex parent = self.parent();
	QModelIndex par(parent);
	while( par.isValid() ) {
		Element p(AssetTemplateTranslator::getRecordStatic(par));
		if( p.assetTemplate().isRecord() ) {
			isGhostItem = true;
			break;
		}
		par = par.parent();
	}

	// Set it if we are a recurse template ourselves
	isRecurseTemplate = e.assetTemplate().isRecord();

	if( e.isRecord() ) {
		col1 = e.displayName();
		icon = ElementUi(e).image();
		// If we have an asset template, then overlay the icon
		if( isRecurseTemplate ) {
			QImage over( ":/images/plus_overlay.png" );
			QPainter p( &icon );
			p.drawImage( QPoint(6,6), over );
		}
		if( isGhostItem )
		{
			QPixmap cur(icon.size());
			cur.fill( QColor( 180, 180, 180, 200 ) );
			QPainter p( &icon );
			p.setCompositionMode( QPainter::CompositionMode_SourceAtop );
			p.drawPixmap(QPoint(),cur);
		}
		if( isRecurseTemplate )
			_flags = Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsDragEnabled;
		else if( isGhostItem )
			_flags = 0;
		else
			_flags = Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsDragEnabled | Qt::ItemIsDropEnabled;
	}
	FileTracker ft(r);
	if( ft.isRecord() ) {
		col1 = ft.name();
		icon = QPixmap( ":/images/tracker.png" );
		_flags = Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsDragEnabled;
	}
}