DetailsWidget: make cacheBackground public

Change-Id: Ib3725298f77f8ea878717e31bffceffc8bf1f7c6
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
This commit is contained in:
hjk
2012-11-15 17:14:40 +01:00
parent 5dfdf75efc
commit d452da17a7
2 changed files with 10 additions and 9 deletions

View File

@@ -69,7 +69,6 @@ class DetailsWidgetPrivate
public: public:
DetailsWidgetPrivate(QWidget *parent); DetailsWidgetPrivate(QWidget *parent);
QPixmap cacheBackground(const QSize &size);
void updateControls(); void updateControls();
void changeHoverState(bool hovered); void changeHoverState(bool hovered);
@@ -131,16 +130,12 @@ DetailsWidgetPrivate::DetailsWidgetPrivate(QWidget *parent) :
m_grid->addWidget(m_additionalSummaryLabel, 1, 0, 1, 3); m_grid->addWidget(m_additionalSummaryLabel, 1, 0, 1, 3);
} }
QPixmap DetailsWidgetPrivate::cacheBackground(const QSize &size) QPixmap DetailsWidget::createBackground(const QSize &size, int topHeight, QWidget *widget)
{ {
QPixmap pixmap(size); QPixmap pixmap(size);
pixmap.fill(Qt::transparent); pixmap.fill(Qt::transparent);
QPainter p(&pixmap); QPainter p(&pixmap);
int topHeight = m_useCheckBox ? m_summaryCheckBox->height() : m_summaryLabel->height();
if (m_state == DetailsWidget::Expanded || m_state == DetailsWidget::Collapsed) // Details Button is shown
topHeight = qMax(m_detailsButton->height(), topHeight);
QRect topRect(0, 0, size.width(), topHeight); QRect topRect(0, 0, size.width(), topHeight);
QRect fullRect(0, 0, size.width(), size.height()); QRect fullRect(0, 0, size.width(), size.height());
if (HostOsInfo::isMacHost()) if (HostOsInfo::isMacHost())
@@ -160,7 +155,7 @@ QPixmap DetailsWidgetPrivate::cacheBackground(const QSize &size)
p.setBrush(Qt::NoBrush); p.setBrush(Qt::NoBrush);
p.setPen(QColor(255,255,255,140)); p.setPen(QColor(255,255,255,140));
p.drawRoundedRect(fullRect.adjusted(1, 1, -2, -2), 2, 2); p.drawRoundedRect(fullRect.adjusted(1, 1, -2, -2), 2, 2);
p.setPen(QPen(q->palette().color(QPalette::Mid))); p.setPen(QPen(widget->palette().color(QPalette::Mid)));
return pixmap; return pixmap;
} }
@@ -263,15 +258,19 @@ void DetailsWidget::paintEvent(QPaintEvent *paintEvent)
QPoint topLeft(topLeftWidget->geometry().left() - MARGIN, contentsRect().top()); QPoint topLeft(topLeftWidget->geometry().left() - MARGIN, contentsRect().top());
const QRect paintArea(topLeft, contentsRect().bottomRight()); const QRect paintArea(topLeft, contentsRect().bottomRight());
int topHeight = d->m_useCheckBox ? d->m_summaryCheckBox->height() : d->m_summaryLabel->height();
if (d->m_state == DetailsWidget::Expanded || d->m_state == DetailsWidget::Collapsed) // Details Button is shown
topHeight = qMax(d->m_detailsButton->height(), topHeight);
if (d->m_state == Collapsed) { if (d->m_state == Collapsed) {
if (d->m_collapsedPixmap.isNull() || if (d->m_collapsedPixmap.isNull() ||
d->m_collapsedPixmap.size() != size()) d->m_collapsedPixmap.size() != size())
d->m_collapsedPixmap = d->cacheBackground(paintArea.size()); d->m_collapsedPixmap = createBackground(paintArea.size(), topHeight, this);
p.drawPixmap(paintArea, d->m_collapsedPixmap); p.drawPixmap(paintArea, d->m_collapsedPixmap);
} else { } else {
if (d->m_expandedPixmap.isNull() || if (d->m_expandedPixmap.isNull() ||
d->m_expandedPixmap.size() != size()) d->m_expandedPixmap.size() != size())
d->m_expandedPixmap = d->cacheBackground(paintArea.size()); d->m_expandedPixmap = createBackground(paintArea.size(), topHeight, this);
p.drawPixmap(paintArea, d->m_expandedPixmap); p.drawPixmap(paintArea, d->m_expandedPixmap);
} }
} }

View File

@@ -86,6 +86,8 @@ public:
/// Sets an icon, only supported if useCheckBox is true /// Sets an icon, only supported if useCheckBox is true
void setIcon(const QIcon &icon); void setIcon(const QIcon &icon);
static QPixmap createBackground(const QSize &size, int topHeight, QWidget *widget);
signals: signals:
void checked(bool); void checked(bool);
void linkActivated(const QString &link); void linkActivated(const QString &link);