qreal QTextDocumentProto::idealWidth() const { QTextDocument *item = qscriptvalue_cast<QTextDocument*>(thisObject()); if (item) return item->idealWidth(); return qreal(); }
QSize HTMLDelegate::sizeHint ( const QStyleOptionViewItem & option, const QModelIndex & index ) const { QStyleOptionViewItemV4 options = option; initStyleOption(&options, index); QTextDocument doc; doc.setHtml(options.text); doc.setTextWidth(options.rect.width()); return QSize(doc.idealWidth(), doc.size().height()); }
QSize RichTextDelegate::sizeHint(const QStyleOptionViewItem& o, const QModelIndex& index) const { QStyleOptionViewItemV4 ov4 = o; initStyleOption(&ov4, index); QTextDocument doc; doc.setHtml(ov4.text); doc.setTextWidth(ov4.rect.width()); return QSize(doc.idealWidth(), doc.size().height()); }
QSize MessageViewDelegate::sizeHint ( const QStyleOptionViewItem & option, const QModelIndex & index ) const { QStyleOptionViewItemV4 options = option; initStyleOption(&options, index); QTextDocument doc; doc.setHtml(index.data(MessageModel::HTMLRole).toString()); doc.setTextWidth(options.rect.width()); return QSize(doc.idealWidth(), doc.size().height() + 20); }
QSize JenkinsTreeItemDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const { QStyleOptionViewItem options = option; initStyleOption(&options, index); QTextDocument doc; doc.setDocumentMargin(1); bool isRunning = index.data(JenkinsTreeItem::JobRoles::IsRunningRole).toBool(); if (isRunning) doc.setHtml(options.text + QStringLiteral(" <i>[Running]</i>")); else doc.setHtml(options.text); doc.setTextWidth(options.rect.width()); QSize size = QStyledItemDelegate::sizeHint(option, index); return QSize(size.width() > doc.idealWidth() ? size.width() : doc.idealWidth(), size.height() > doc.size().height() ? size.height() : doc.size().height()); }
QSize HtmlDelegate::sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const { QStyleOptionViewItemV4 options = option; initStyleOption(&options, index); QSize iconSize = QIcon().actualSize(mIconSize); QRect iconRect = QRect(4, 4, iconSize.width(), iconSize.height()); QTextDocument doc; doc.setHtml(options.text); doc.setTextWidth(options.rect.width()-iconRect.right()- 10); return QSize(doc.idealWidth(), doc.size().height() + 8); }
QSize HtmlDelegate::sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const { Q_ASSERT(index.isValid()); QStyleOptionViewItem opt = option; initStyleOption(&opt, index); QTextDocument doc; doc.setHtml(opt.text); doc.setTextWidth(opt.rect.width()); return QSize(doc.idealWidth(), doc.size().height()); }
void ItemNotes::updateSize(const QSize &maximumSize, int idealWidth) { setMaximumSize(maximumSize); if (m_notes) { const int w = maximumSize.width() - 2 * notesIndent - 8; QTextDocument *doc = m_notes->document(); doc->setTextWidth(w); m_notes->setFixedSize( doc->idealWidth() + 16, doc->size().height() ); } if ( !m_childItem.isNull() ) m_childItem->updateSize(maximumSize, idealWidth); adjustSize(); setFixedSize(sizeHint()); }
QSize SearchDelegate::sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index ) const { switch (index.column()) { case 1: { QStyleOptionViewItemV4 optionV4 = option; initStyleOption(&optionV4, index); QTextDocument doc; doc.setHtml(this->toHtmlText(optionV4.text)); //doc.setTextWidth(optionV4.rect.width()); return QSize(doc.idealWidth() + 20, doc.size().height()); // + 20 is for the icon, TODO: find a better way to obtain this value. } break; default: return QStyledItemDelegate::sizeHint(option, index); } }
int Widget::computeWidth() { if (m_messageQueue.isEmpty()) return -1; Message& m = m_messageQueue.front(); QFont boldFont = font(); boldFont.setBold(true); int width = 0; QString text = m_contentView["text"]->text(); width += QFontMetrics(boldFont).width(m_contentView["title"]->text()); if (Qt::mightBeRichText(text)) { QTextDocument doc; doc.setUseDesignMetrics(true); doc.setHtml(text); doc.setDefaultFont(font()); width += doc.idealWidth(); } else width += QFontMetrics(font()).width(text); if (m.data["icon"]) width += m_contentView["icon"]->pixmap()->width(); return width; }
void PlaylistLargeItemDelegate::paint( QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index ) const { TrackModelItem* item = m_model->itemFromIndex( m_model->mapToSource( index ) ); Q_ASSERT( item ); QStyleOptionViewItemV4 opt = option; prepareStyleOption( &opt, index, item ); opt.text.clear(); qApp->style()->drawControl( QStyle::CE_ItemViewItem, &opt, painter ); if ( m_view->header()->visualIndex( index.column() ) > 0 ) return; QPixmap pixmap, avatar; QString artist, track, lowerText; unsigned int duration = 0; if ( item->query()->results().count() ) { artist = item->query()->results().first()->artist()->name(); track = item->query()->results().first()->track(); duration = item->query()->results().first()->duration(); } else { artist = item->query()->artist(); track = item->query()->track(); } QSize avatarSize( 32, 32 ); source_ptr source = item->query()->playedBy().first; if ( m_mode == RecentlyPlayed && !source.isNull() ) { avatar = source->avatar( Source::FancyStyle, avatarSize ); QString playtime = TomahawkUtils::ageToString( QDateTime::fromTime_t( item->query()->playedBy().second ), true ); if ( source == SourceList::instance()->getLocal() ) lowerText = QString( tr( "played %1 by you" ) ).arg( playtime ); else lowerText = QString( tr( "played %1 by %2" ) ).arg( playtime ).arg( source->friendlyName() ); } if ( m_mode == LatestAdditions && item->query()->numResults() ) { QString playtime = TomahawkUtils::ageToString( QDateTime::fromTime_t( item->query()->results().first()->modificationTime() ), true ); lowerText = QString( tr( "added %1" ) ).arg( playtime ); } if ( m_mode == LovedTracks ) lowerText = item->query()->socialActionDescription( "Love", Query::Detailed ); painter->save(); { QRect r = opt.rect.adjusted( 3, 6, 0, -6 ); // Paint Now Playing Speaker Icon if ( item->isPlaying() ) { QPixmap nowPlayingIcon = TomahawkUtils::defaultPixmap( TomahawkUtils::NowPlayingSpeaker ); QRect npr = r.adjusted( 3, r.height() / 2 - nowPlayingIcon.height() / 2, 18 - r.width(), -r.height() / 2 + nowPlayingIcon.height() / 2 ); nowPlayingIcon = TomahawkUtils::defaultPixmap( TomahawkUtils::NowPlayingSpeaker, TomahawkUtils::Original, npr.size() ); painter->drawPixmap( npr, nowPlayingIcon ); r.adjust( 22, 0, 0, 0 ); } painter->setPen( opt.palette.text().color() ); QRect pixmapRect = r.adjusted( 6, 0, -option.rect.width() + option.rect.height() - 6 + r.left(), 0 ); QRect avatarRect = r.adjusted( option.rect.width() - r.left() - 12 - avatarSize.width(), ( option.rect.height() - avatarSize.height() ) / 2 - 5, 0, 0 ); avatarRect.setSize( avatarSize ); pixmap = item->query()->cover( pixmapRect.size(), false ); if ( !pixmap ) { pixmap = TomahawkUtils::defaultPixmap( TomahawkUtils::DefaultTrackImage, TomahawkUtils::ScaledCover, pixmapRect.size() ); } painter->drawPixmap( pixmapRect, pixmap ); if ( !avatar.isNull() ) painter->drawPixmap( avatarRect, avatar ); QFont boldFont = opt.font; boldFont.setPixelSize( 15 ); boldFont.setWeight( 99 ); QFont smallBoldFont = opt.font; smallBoldFont.setPixelSize( 12 ); smallBoldFont.setBold( true ); smallBoldFont.setWeight( 60 ); QFont smallFont = opt.font; smallFont.setPixelSize( 10 ); r.adjust( pixmapRect.width() + 12, 1, -28 - avatar.width(), 0 ); QRect leftRect = r.adjusted( 0, 0, -48, 0 ); QRect rightRect = r.adjusted( r.width() - 40, 0, 0, 0 ); painter->setFont( boldFont ); QString text = painter->fontMetrics().elidedText( track, Qt::ElideRight, leftRect.width() ); painter->drawText( leftRect, text, m_topOption ); painter->setFont( smallBoldFont ); text = painter->fontMetrics().elidedText( artist, Qt::ElideRight, leftRect.width() ); painter->drawText( leftRect.adjusted( 0, 19, 0, 0 ), text, m_topOption ); painter->setFont( smallFont ); painter->setPen( Qt::gray ); QTextDocument textDoc; textDoc.setHtml( lowerText ); textDoc.setDocumentMargin( 0 ); textDoc.setDefaultFont( painter->font() ); textDoc.setDefaultTextOption( m_bottomOption ); if ( textDoc.idealWidth() > leftRect.width() ) textDoc.setHtml( item->query()->socialActionDescription( "Love", Query::Short ) ); drawRichText( painter, leftRect, Qt::AlignBottom, textDoc ); if ( duration > 0 ) { painter->setFont( smallBoldFont ); text = painter->fontMetrics().elidedText( TomahawkUtils::timeToString( duration ), Qt::ElideRight, rightRect.width() ); painter->drawText( rightRect, text, m_centerRightOption ); } } painter->restore(); }