//--------------------------------------------------------------------------- PlotLegend::PlotLegend( QWidget *parent ): QwtLegend( parent ) { setMinimumHeight( 1 ); setMaxColumns( 1 ); setContentsMargins( 0, 0, 0, 0 ); QLayout* layout = contentsWidget()->layout(); layout->setAlignment( Qt::AlignLeft | Qt::AlignTop ); layout->setSpacing( 0 ); QScrollArea *scrollArea = findChild<QScrollArea *>(); if ( scrollArea ) { scrollArea->setVerticalScrollBarPolicy( Qt::ScrollBarAlwaysOff ); scrollArea->setHorizontalScrollBarPolicy( Qt::ScrollBarAlwaysOff ); } #if 1 QFont fnt = font(); if ( fnt.pointSize() > 8 ) { fnt.setPointSize( 8 ); setFont( fnt ); } #endif }
/*! Render the legend into a given rectangle. \param painter Painter \param rect Bounding rectangle \param fillBackground When true, fill rect with the widget background \sa renderLegend() is used by QwtPlotRenderer - not by QwtLegend itself */ void QwtLegend::renderLegend( QPainter *painter, const QRectF &rect, bool fillBackground ) const { if ( d_data->itemMap.isEmpty() ) return; if ( fillBackground ) { if ( autoFillBackground() || testAttribute( Qt::WA_StyledBackground ) ) { QwtPainter::drawBackgound( painter, rect, this ); } } const QwtDynGridLayout *legendLayout = qobject_cast<QwtDynGridLayout *>( contentsWidget()->layout() ); if ( legendLayout == NULL ) return; int left, right, top, bottom; getContentsMargins( &left, &top, &right, &bottom ); QRect layoutRect; layoutRect.setLeft( qCeil( rect.left() ) + left ); layoutRect.setTop( qCeil( rect.top() ) + top ); layoutRect.setRight( qFloor( rect.right() ) - right ); layoutRect.setBottom( qFloor( rect.bottom() ) - bottom ); uint numCols = legendLayout->columnsForWidth( layoutRect.width() ); QList<QRect> itemRects = legendLayout->layoutItems( layoutRect, numCols ); int index = 0; for ( int i = 0; i < legendLayout->count(); i++ ) { QLayoutItem *item = legendLayout->itemAt( i ); QWidget *w = item->widget(); if ( w ) { painter->save(); painter->setClipRect( itemRects[index], Qt::IntersectClip ); renderItem( painter, w, itemRects[index], fillBackground ); index++; painter->restore(); } } }
void ProgressBarWidget::timerEvent(QTimerEvent *event) { if (event->timerId() == m_geometryUpdateTimer) { killTimer(m_geometryUpdateTimer); m_geometryUpdateTimer = 0; if (!m_window) { return; } WebContentsWidget *contentsWidget(qobject_cast<WebContentsWidget*>(m_window->getContentsWidget())); if (!contentsWidget || !contentsWidget->getWebWidget()) { return; } WebWidget *webWidget(contentsWidget->getWebWidget()); QRect geometry(webWidget->getProgressBarGeometry()); const ToolBarsManager::ToolBarVisibility visibility(ToolBarsManager::getToolBarDefinition(ToolBarsManager::ProgressBar).normalVisibility); if (visibility == ToolBarsManager::AlwaysVisibleToolBar || (visibility == ToolBarsManager::AutoVisibilityToolBar && webWidget->getLoadingState() == WindowsManager::OngoingLoadingState)) { if (!isVisible()) { connect(webWidget, SIGNAL(progressBarGeometryChanged()), this, SLOT(scheduleGeometryUpdate())); } geometry.translate(0, webWidget->pos().y()); setGeometry(geometry); show(); raise(); } else { disconnect(webWidget, SIGNAL(progressBarGeometryChanged()), this, SLOT(scheduleGeometryUpdate())); hide(); } } }
void ProgressBarWidget::updateLoadingState(WindowsManager::LoadingState state) { const ToolBarsManager::ToolBarVisibility visibility(ToolBarsManager::getToolBarDefinition(ToolBarsManager::ProgressBar).normalVisibility); if (visibility == ToolBarsManager::AlwaysVisibleToolBar || (visibility == ToolBarsManager::AutoVisibilityToolBar && state == WindowsManager::OngoingLoadingState)) { scheduleGeometryUpdate(); } else { hide(); WebContentsWidget *contentsWidget(qobject_cast<WebContentsWidget*>(m_window->getContentsWidget())); if (contentsWidget && contentsWidget->getWebWidget()) { disconnect(contentsWidget->getWebWidget(), SIGNAL(progressBarGeometryChanged()), this, SLOT(scheduleGeometryUpdate())); } } }