示例#1
0
void UrlLineEdit::paintEvent(QPaintEvent *event)
{
    QPalette p = palette();
    if (m_webView && m_webView->url().scheme() == QLatin1String("https")) {
        QColor lightYellow(248, 248, 210);
        p.setBrush(QPalette::Base, generateGradient(lightYellow));
    } else {
        p.setBrush(QPalette::Base, m_defaultBaseColor);
    }
    setPalette(p);
    ExLineEdit::paintEvent(event);

    QPainter painter(this);
    QStyleOptionFrame panel;
    initStyleOption(&panel);
    QRect backgroundRect = style()->subElementRect(QStyle::SE_LineEditContents, &panel, this);
    if (m_webView && !hasFocus()) {
        int progress = m_webView->progress();
        QColor loadingColor = QColor(116, 192, 250);
        painter.setBrush(generateGradient(loadingColor));
        painter.setPen(Qt::transparent);
        int mid = backgroundRect.width() / 100.0f * progress;
        QRect progressRect(backgroundRect.x(), backgroundRect.y(), mid, backgroundRect.height());
        painter.drawRect(progressRect);
    }
}
void AddressBar::paintEvent(QPaintEvent * event)
{
    QPainter p(this);
    QStyleOptionFrameV2 panel;
    initStyleOption(&panel);
    style()->drawPrimitive(QStyle::PE_PanelLineEdit, &panel, &p, this);

    if(hasFocus() || progress == 100) QLineEdit::paintEvent(event);

    QPainter painter(this);
    QStyleOptionFrameV2 lenap;
    initStyleOption(&lenap);
    QRect backgroundRect = style()->subElementRect(QStyle::SE_LineEditContents, &lenap, this);

    if(!hasFocus() && progress < 100)
    {
        QColor loadingColor = QColor(116, 192, 250);
        painter.setBrush(generateGradient(loadingColor));
        painter.setPen(Qt::transparent);
        int mid = backgroundRect.width() / 100 * progress;
        QRect progressRect(backgroundRect.x(), backgroundRect.y(), mid, backgroundRect.height());
        painter.drawRect(progressRect);

        painter.setPen(Qt::SolidLine);
        painter.drawText(backgroundRect,Qt::AlignLeft|Qt::AlignVCenter, " " + this->text());
    }
}
示例#3
0
QPixmap* HostListItem::pixmapVolume( int type )
{
  if( type == PixInset ) 
  {
    static QPixmap m_pixmapInset( locate( "data", "amarok/images/nmm-volume-inset.png" ) );
    return &m_pixmapInset; 
  }
  else if( type == PixRight )
  {
    static QPixmap m_pixmapGradientRight = generateGradient( PixRight );
    return &m_pixmapGradientRight;
  }
  else if ( type == PixLeft ) 
  {
    static QPixmap m_pixmapGradientLeft = generateGradient( PixLeft );
    return &m_pixmapGradientLeft;
  }

  return 0;
}
示例#4
0
Amarok::VolumeSlider::VolumeSlider(QWidget* parent, uint max)
    : Amarok::Slider(Qt::Horizontal, parent, max),
      m_animCount(0),
      m_animTimer(new QTimer(this)),
      m_pixmapInset(QPixmap(drawVolumePixmap ())) {
  setFocusPolicy(Qt::NoFocus);

  // Store theme colors to check theme change at paintEvent
  m_previous_theme_text_color = palette().color(QPalette::WindowText);
  m_previous_theme_highlight_color = palette().color(QPalette::Highlight);

  drawVolumeSliderHandle();
  generateGradient();

  setMinimumWidth(m_pixmapInset.width());
  setMinimumHeight(m_pixmapInset.height());

  connect(m_animTimer, SIGNAL(timeout()), this, SLOT(slotAnimTimer()));
}
示例#5
0
void LocationBar::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);

    QPalette p = palette();
    QColor backgroundColor = m_defaultBaseColor;
    if (m_webView && m_webView->url().scheme() == QLatin1String("https")
        && p.color(QPalette::Text).value() < 128) {
        QColor lightYellow(248, 248, 210);
        backgroundColor = lightYellow;
    }

    // paint the text background
    QStyleOptionFrameV2 panel;
    initStyleOption(&panel);
    QRect backgroundRect = style()->subElementRect(QStyle::SE_LineEditContents, &panel, this);
#if QT_VERSION < 0x040500
    int left = textMargin(LineEdit::LeftSide);
    int right = textMargin(LineEdit::RightSide);
    backgroundRect.adjust(-left, 0, right, 0);
#endif
    painter.setBrush(backgroundColor);
    painter.setPen(backgroundColor);
    painter.drawRect(backgroundRect);

    // paint the progressbar
    if (m_webView && !hasFocus()) {
        int progress = m_webView->progress();
        QColor loadingColor = QColor(116, 192, 250);
        if (p.color(QPalette::Text).value() >= 128)
            loadingColor = m_defaultBaseColor.darker(200);

        painter.setBrush(generateGradient(m_defaultBaseColor, loadingColor, height()));
        painter.setPen(Qt::transparent);

        int mid = backgroundRect.width() * progress / 100;
        QRect progressRect = QRect(backgroundRect.x(), backgroundRect.y(), mid, backgroundRect.height());
        painter.drawRect(progressRect);
    }
    painter.end();

    LineEdit::paintEvent(event);
}
示例#6
0
/*static*/ void EWASiteDrawer::drawSiteStateInfo( EWASiteHandle *pSite, 
    QPainter *pPainter, const QRect& qrRect, bool bShowPercentsAndText, 
    bool bSelected, bool bUnderMouse )
{
    if( !pSite || !pPainter )
        return;

    pPainter->save();
    
    pPainter->setRenderHints( EWAApplication::getRenderHints() );
    QColor textColor = QColor( 0, 0, 127, 255 );
    QColor baseColor = Qt::white;
    if ( bSelected )
    {
        textColor = Qt::white;
        //-- <draw visible selection>
        baseColor = EWASiteDelegateBase::m_selectedColor;
        pPainter->fillRect( qrRect, baseColor );
        //-- </draw visible selection>
    }

    //-- <draw download progress>
    int dwnProgress = pSite->getDownloadProgress();
    if( dwnProgress && !pSite->getTypingProgress() )
    {
        QColor loadingColor( 227, 214, 28 );
        QRect dwnProgressRect = getSlicedRect( qrRect, dwnProgress );
        
        pPainter->setBrush( generateGradient( loadingColor, dwnProgressRect, baseColor ) );
        pPainter->setPen( Qt::transparent );
        pPainter->drawRoundedRect( dwnProgressRect, 4,4 );
        
        if ( bSelected )
        {
            textColor = QColor( 0, 0, 127, 255 );
        }
    }
    //-- </draw download progress>
    else
    {//-- <draw time progress>
        dwnProgress = pSite->getCountdownCurrent();
        double fullPeriod = pSite->getCountdownOriginal();
        if( !dwnProgress || dwnProgress == (int)fullPeriod || pSite->getTypingProgress() )
        {
            dwnProgress = pSite->getTypingProgress();
            fullPeriod = 100;
        }
        
        if( dwnProgress && fullPeriod )
        {
            double fullPeriodPercent = fullPeriod/100;
            int progress = dwnProgress;
            progress = ( int )( dwnProgress/fullPeriodPercent );

            QColor loadingColor( 200, 200, 200 );
            QRect dwnProgressRect = getSlicedRect( qrRect, progress );
            
            pPainter->setBrush( generateGradient( loadingColor, dwnProgressRect, baseColor ) );
            pPainter->setPen( Qt::transparent );
            pPainter->drawRoundedRect( dwnProgressRect, 4,4 );

            if ( bSelected )
            {
                textColor = QColor( 0, 0, 127, 255 );
            }
        }
        dwnProgress ^= dwnProgress;
    }//-- </draw time progress>

    if( bShowPercentsAndText )
    {
        //-- <draw url>
        QRect txtRect = qrRect;
        txtRect.adjust( 2, 1, -2, -1 );
    
        pPainter->setPen( textColor );
        if( bUnderMouse )
        {
            QFont font = pPainter->font();
            font.setBold( true );
            pPainter->setFont( font );
        }
        pPainter->drawText( txtRect, Qt::AlignVCenter|Qt::AlignLeft, pSite->getVisibleMsgTitle() );
        
        //-- </draw url>
    }
    
    if( dwnProgress && bShowPercentsAndText )
    {
        QFont paintersFont = pPainter->font();
        paintersFont.setBold( true );
        pPainter->setFont( paintersFont );
        
        QString strProgress = QString( "  %1%  " ).arg( dwnProgress );
        
        QRect percentsBackgroundRect = pPainter->fontMetrics().boundingRect( strProgress );
        percentsBackgroundRect.moveCenter( qrRect.center() );
        
        pPainter->setBrush( Qt::black );
        pPainter->setOpacity( 0.5 );
        pPainter->drawRoundedRect( percentsBackgroundRect, 4,4 );
        
        pPainter->setOpacity( 1.0 );
        pPainter->setPen( Qt::white );
        QRectF fRect( qrRect );

        fRect.setLeft( fRect.left() - 25 ); //-- white space on left
        fRect.setRight( fRect.right() + 25 ); //-- and right of the text

        pPainter->drawText( fRect, Qt::AlignCenter, strProgress, &fRect );
    }
    
    pPainter->restore();
}
示例#7
0
void Amarok::VolumeSlider::paletteChange(const QPalette&) {
  generateGradient();
}