void InventoryInfoWindow::onPaint() { Common::ScopedPtr<Graphics::Surface> background(_vm->_gfx->getBitmap(IDB_INVENTORY_INFO_BACKGROUND)); // Draw the title uint32 textColor = _vm->_gfx->getColor(212, 109, 0); Common::Rect titleRect(10, 56, 263, 71); Common::String title = _vm->getString(IDES_ITEM_TITLE_BASE + _currentItemID); assert(!title.empty()); _vm->_gfx->renderText(background.get(), _textFont, title, titleRect.left, titleRect.top, titleRect.width(), titleRect.height(), textColor, _fontHeight); // Draw the description Common::Rect descRect(10, 89, 263, 186); Common::String desc = _vm->getString(IDES_ITEM_DESC_BASE + _currentItemID * 5); assert(!desc.empty()); _vm->_gfx->renderText(background.get(), _textFont, desc, descRect.left, descRect.top, descRect.width(), descRect.height(), textColor, _fontHeight); Common::Rect absoluteRect = getAbsoluteRect(); _vm->_gfx->blit(background.get(), absoluteRect.left, absoluteRect.top); }
void EventDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &idx) const { QPixmap icon; QString text = idx.data(Qt::DisplayRole).toString(); QDateTime time = idx.data(QZeitgeist::LogModel::TimeRole).toDateTime(); QStyle *style = QApplication::style(); style->drawPrimitive(QStyle::PE_PanelItemViewItem, &option, painter); QRect baseRect = option.rect.adjusted(5, 5, -5, -5); QRect iconRect(baseRect); QRect descRect(baseRect); iconRect.setWidth(iconRect.width()/3); descRect.setX(iconRect.right()); QIcon::Mode mode = QIcon::Normal; if (option.state == QStyle::State_Active) mode = QIcon::Active; if (option.state == QStyle::State_Selected) mode = QIcon::Selected; painter->save(); painter->setOpacity(0.4); QString url(idx.data(QZeitgeist::LogModel::URLRole).toString()); QPixmap overlay; if (!m_iconCache.contains(url)) { icon = idx.data(QZeitgeist::LogModel::ThumbnailRole).value<QPixmap>(); if (icon.isNull()) { KIcon kicon = KIcon(QUrl(idx.data(QZeitgeist::LogModel::ActorRole).toString()).authority().section(".desktop", 0, 0)); icon = kicon.pixmap(iconRect.size()); } else { icon = icon.scaled(iconRect.size(), Qt::KeepAspectRatio); KIcon kicon = KIcon(QUrl(idx.data(QZeitgeist::LogModel::ActorRole).toString()).authority().section(".desktop", 0, 0)); QPainter overlayPainter(&icon); QRect overlayRect(QPoint(0, 0), iconRect.size()); int iconSize = qMin(overlayRect.width(), overlayRect.height()); overlayRect.setX(iconSize/2); overlayRect.setY(iconSize/2); kicon.paint(&overlayPainter, overlayRect, Qt::AlignCenter, QIcon::Active); } m_iconCache[url] = icon; } else { icon = m_iconCache[url]; } painter->drawPixmap(iconRect, icon); //icon.paint(painter, iconRect, Qt::AlignCenter, mode); painter->setOpacity(1); QFont font; font.setBold(true); font.setPixelSize(15); painter->setFont(font); painter->drawText(baseRect, Qt::AlignLeft | Qt::TextWordWrap, text); painter->restore(); painter->drawText(baseRect, Qt::AlignRight | Qt::AlignBottom, time.toString(Qt::SystemLocaleShortDate)); }
void YTDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const { painter->save(); bool white = false; if(index.data(YTDialog::Clicked).toBool()) { painter->drawPixmap(option.rect.adjusted(0,0,0, -1), hoverBackground ); white = true; } else { if(index.row() % 2 == 0) { painter->fillRect(option.rect, QColor("#f0f6ff")); } else { painter->fillRect(option.rect, Qt::white); } } SingleVideoItem* item = qVariantValue<SingleVideoItem*>(index.data()); QSize sz = option.rect.size(); --sz.rheight(); painter->translate(option.rect.x() , option.rect.y()); painter->drawPixmap(0, 0, PIXWIDTH, sz.height(), item->pix ); if(index.data(YTDialog::Clicked).toBool()) { painter->drawPixmap(0, 0, PIXWIDTH, sz.height(), pixBorderOverlayHover); QPoint pop = QRect(0,0,PIXWIDTH, sz.height()).center() - playOverlay.rect().center(); painter->drawPixmap(pop, playOverlay); } else { painter->drawPixmap(0, 0, PIXWIDTH, sz.height(), index.row() %2 == 0 ? pixBorderOverlay1 : pixBorderOverlay2 ); } QFont font = option.font; font.setPixelSize(11); QFontMetrics fm(font); // total time QString totalTime = timeString(item->totalTime); QRect ttRect = fm.boundingRect(totalTime); ttRect.adjust(-2 , 0, 4, 2); ttRect.moveBottomRight(QPoint(PIXWIDTH -9, sz.height() -11 )); painter->setPen(Qt::white); painter->setFont(font); painter->setOpacity(0.7); painter->drawPixmap(ttRect, durationBackground); ttRect.adjust(1, 1, 1, 0); painter->drawText(ttRect, Qt::AlignHCenter | Qt::AlignTop, totalTime); painter->setOpacity(1); // Header font.setPixelSize(14); fm = QFontMetrics(font); painter->setFont(font); painter->setPen(cr(Qt::black, white)); QRect headerRect = fm.boundingRect(item->header); headerRect = QRect( PIXWIDTH + 4 , 7, sz.width() - PIXWIDTH - 8, headerRect.height() + 4 ); painter->drawText(headerRect, Qt::AlignTop | Qt::AlignLeft | Qt::TextSingleLine, fm.elidedText(item->header, Qt::ElideRight, headerRect.width()), &headerRect ); // Footer font.setPixelSize(11); fm = QFontMetrics(font); painter->setPen(cr(QColor("#636363"), white)); painter->setFont(font); QRect footerRect(PIXWIDTH + 4, ttRect.top(), sz.width() - PIXWIDTH - 8, ttRect.height()); painter->drawText(footerRect, Qt::AlignVCenter | Qt::AlignLeft, item->date.toString("yyyy-MM-dd")); painter->drawText(footerRect, Qt::AlignVCenter | Qt::AlignRight, tr("%L1 views").arg(item->views)); //Description font.setPixelSize(12); painter->setFont(font); QRect descRect( PIXWIDTH + 4, headerRect.bottom() + 7, sz.width() - PIXWIDTH - 8, ttRect.top() - headerRect.bottom() - 7); QTextLayout textLayout(item->desc, font); layoutText(textLayout, item->desc, descRect.size()); textLayout.draw(painter, descRect.topLeft()); QPen sepLinePen(QColor("#e3e3e3")); painter->setPen(sepLinePen); painter->drawLine(0, 90, sz.width(), 90); painter->restore(); }