Пример #1
0
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);
}
Пример #2
0
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));
}
Пример #3
0
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();
}