示例#1
0
void ThumbnailView::GridResizeInteraction::leaveGridResizingMode()
{
    KSharedConfig::openConfig()->sync();
    model()->beginResetModel();
    cellGeometryInfo()->flushCache();
    model()->endResetModel();
    model()->updateVisibleRowInfo();
    widget()->setCurrentIndex( model()->index( m_currentRow, 0 ) );
}
示例#2
0
void ThumbnailView::GridResizeInteraction::setCellSize(int size)
{
    const int baseSize = Settings::SettingsData::instance()->thumbnailSize();

    // snap to base size:
    if ( qAbs( size - baseSize ) < 10 )
        size = baseSize;

    model()->beginResetModel();
    Settings::SettingsData::instance()->setActualThumbnailSize( size );
    cellGeometryInfo()->calculateCellSize();
    model()->endResetModel();
}
void ThumbnailView::Delegate::paintCellText( QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index ) const
{
    // Optimization based on result from KCacheGrind
    if ( !Settings::SettingsData::instance()->displayLabels() && !Settings::SettingsData::instance()->displayCategories() )
        return;

    DB::FileName fileName = model()->imageAt( index.row() );
    if ( fileName.isNull() )
        return;

    QString title = index.data( Qt::DisplayRole ).value<QString>();
    QRect rect = cellGeometryInfo()->cellTextGeometry();
    painter->setPen( Utilities::contrastColor( Settings::SettingsData::instance()->backgroundColor() ) );

    //Qt::TextWordWrap just in case, if the text's width is wider than the cell's width
    painter->drawText( rect.translated( option.rect.topLeft() ), Qt::AlignCenter | Qt::TextWordWrap, title );
}
void ThumbnailView::Delegate::paintCellPixmap( QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index ) const
{
    const QPixmap pixmap = index.data( Qt::DecorationRole ).value<QPixmap>();

    const QRect pixmapRect = cellGeometryInfo()->iconGeometry( pixmap ).translated(option.rect.topLeft());
    paintBoundingRect( painter, pixmapRect, index );
    painter->drawPixmap( pixmapRect, pixmap );
    paintVideoInfo(painter, pixmapRect, index );
    paintDropIndicator( painter, option.rect, index );
    paintStackedIndicator(painter, pixmapRect, index);

    // Paint transparent pixels over the widget for selection.
    const QItemSelectionModel *selectionModel = widget()->selectionModel();
    if ( selectionModel->isSelected( index ) )
        painter->fillRect( option.rect, QColor(58,98,134, 127) );
    else if ( selectionModel->hasSelection() && selectionModel->currentIndex() == index )
        painter->fillRect( option.rect, QColor(58,98,134, 127) );
}
QSize ThumbnailView::Delegate::sizeHint( const QStyleOptionViewItem& /*option*/, const QModelIndex& /*index*/ ) const
{
    return cellGeometryInfo()->cellSize();
}