void ThumbnailView::GridResizeInteraction::leaveGridResizingMode() { KSharedConfig::openConfig()->sync(); model()->beginResetModel(); cellGeometryInfo()->flushCache(); model()->endResetModel(); model()->updateVisibleRowInfo(); widget()->setCurrentIndex( model()->index( m_currentRow, 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(); }