Make BuildStepConfigWidget hideable

Some steps only want to show a summary text.

Change-Id: I125fa90c13f0757ea78b6b50834c43b1beb484c5
Reviewed-by: Nikolai Kosjar
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
This commit is contained in:
Daniel Teske
2011-12-08 14:29:24 +01:00
parent 8b1b493754
commit 90449d10e7
4 changed files with 17 additions and 7 deletions

View File

@@ -139,8 +139,10 @@ QPixmap DetailsWidgetPrivate::cacheBackground(const QSize &size, bool expanded)
pixmap.fill(Qt::transparent); pixmap.fill(Qt::transparent);
QPainter p(&pixmap); QPainter p(&pixmap);
int topHeight = qMax(m_detailsButton->height(), int topHeight = m_useCheckBox ? m_summaryCheckBox->height() : m_summaryLabel->height();
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());
#ifdef Q_WS_MAC #ifdef Q_WS_MAC
@@ -175,7 +177,7 @@ void DetailsWidgetPrivate::updateControls()
if (m_widget) if (m_widget)
m_widget->setVisible(m_state == DetailsWidget::Expanded || m_state == DetailsWidget::NoSummary); m_widget->setVisible(m_state == DetailsWidget::Expanded || m_state == DetailsWidget::NoSummary);
m_detailsButton->setChecked(m_state == DetailsWidget::Expanded && m_widget); m_detailsButton->setChecked(m_state == DetailsWidget::Expanded && m_widget);
m_detailsButton->setVisible(m_state != DetailsWidget::NoSummary); m_detailsButton->setVisible(m_state == DetailsWidget::Expanded || m_state == DetailsWidget::Collapsed);
m_summaryLabel->setVisible(m_state != DetailsWidget::NoSummary && !m_useCheckBox); m_summaryLabel->setVisible(m_state != DetailsWidget::NoSummary && !m_useCheckBox);
m_summaryCheckBox->setVisible(m_state != DetailsWidget::NoSummary && m_useCheckBox); m_summaryCheckBox->setVisible(m_state != DetailsWidget::NoSummary && m_useCheckBox);
@@ -269,7 +271,7 @@ 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());
if (d->m_state != Expanded) { 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(), false); d->m_collapsedPixmap = d->cacheBackground(paintArea.size(), false);

View File

@@ -56,7 +56,8 @@ public:
enum State { enum State {
Expanded, Expanded,
Collapsed, Collapsed,
NoSummary NoSummary,
OnlySummary
}; };
explicit DetailsWidget(QWidget *parent = 0); explicit DetailsWidget(QWidget *parent = 0);

View File

@@ -140,6 +140,7 @@ public:
virtual QString summaryText() const = 0; virtual QString summaryText() const = 0;
virtual QString additionalSummaryText() const { return QString(); } virtual QString additionalSummaryText() const { return QString(); }
virtual QString displayName() const = 0; virtual QString displayName() const = 0;
virtual bool showWidget() const { return true; }
signals: signals:
void updateSummary(); void updateSummary();

View File

@@ -180,7 +180,9 @@ void BuildStepListWidget::init(BuildStepList *bsl)
for (int i = 0; i < bsl->count(); ++i) { for (int i = 0; i < bsl->count(); ++i) {
addBuildStep(i); addBuildStep(i);
m_buildStepsData.at(i)->detailsWidget->setState(Utils::DetailsWidget::Collapsed); // addBuilStep expands the config widget by default, which we don't want here
if (m_buildStepsData.at(i)->widget->showWidget())
m_buildStepsData.at(i)->detailsWidget->setState(Utils::DetailsWidget::Collapsed);
} }
m_noStepsLabel->setVisible(bsl->isEmpty()); m_noStepsLabel->setVisible(bsl->isEmpty());
@@ -261,7 +263,11 @@ void BuildStepListWidget::addBuildStep(int pos)
BuildStep *newStep = m_buildStepList->at(pos); BuildStep *newStep = m_buildStepList->at(pos);
addBuildStepWidget(pos, newStep); addBuildStepWidget(pos, newStep);
BuildStepsWidgetData *s = m_buildStepsData.at(pos); BuildStepsWidgetData *s = m_buildStepsData.at(pos);
s->detailsWidget->setState(Utils::DetailsWidget::Expanded); // Expand new build steps by default
if (s->widget->showWidget())
s->detailsWidget->setState(Utils::DetailsWidget::Expanded);
else
s->detailsWidget->setState(Utils::DetailsWidget::OnlySummary);
m_noStepsLabel->setVisible(false); m_noStepsLabel->setVisible(false);
updateBuildStepButtonsState(); updateBuildStepButtonsState();