diff options
author | dt <qtc-committer@nokia.com> | 2009-10-01 14:39:31 +0200 |
---|---|---|
committer | dt <qtc-committer@nokia.com> | 2009-10-01 14:39:31 +0200 |
commit | e78d049b942c67066ef027d280069bbb88b3806a (patch) | |
tree | 7e7a7d6f1e9fe3d5aed2d568e6e6eb3b8910e683 /src/libs/utils/detailswidget.cpp | |
parent | a97dcb53d167e9ea1deb564a3b5fa6265b0eb1ab (diff) | |
download | qt-creator-e78d049b942c67066ef027d280069bbb88b3806a.tar.gz |
Add missing files
Diffstat (limited to 'src/libs/utils/detailswidget.cpp')
-rw-r--r-- | src/libs/utils/detailswidget.cpp | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/src/libs/utils/detailswidget.cpp b/src/libs/utils/detailswidget.cpp new file mode 100644 index 0000000000..6aea8c411c --- /dev/null +++ b/src/libs/utils/detailswidget.cpp @@ -0,0 +1,77 @@ +#include "detailswidget.h" +#include "detailsbutton.h" + +#include <QtGui/QGridLayout> +#include <QtCore/QStack> + +using namespace Utils; + +DetailsWidget::DetailsWidget(QWidget *parent) + : QWidget(parent), + m_widget(0), + m_toolWidget(0) +{ + m_grid = new QGridLayout(this); + m_grid->setMargin(0); + m_summaryLabel = new QLabel(this); + m_summaryLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); + m_detailsButton = new DetailsButton(this); + + m_grid->addWidget(m_summaryLabel, 0, 0, 2, 0); + m_grid->addWidget(m_detailsButton, 0, 2); + + connect(m_detailsButton, SIGNAL(clicked()), + this, SLOT(detailsButtonClicked())); +} + +DetailsWidget::~DetailsWidget() +{ + +} + +void DetailsWidget::detailsButtonClicked() +{ + if (m_widget) + m_widget->setVisible(m_detailsButton->isToggled()); + fixUpLayout(); +} + +void DetailsWidget::setSummaryText(const QString &text) +{ + m_summaryLabel->setText(text); +} + +void DetailsWidget::setWidget(QWidget *widget) +{ + if (m_widget == widget) + return; + if (m_widget) + m_grid->removeWidget(m_widget); + m_grid->addWidget(widget, 2, 0, 1, 3); + m_widget = widget; + m_widget->setVisible(m_detailsButton->isToggled()); +} + +void DetailsWidget::setToolWidget(QWidget *widget) +{ + if (m_toolWidget == widget) + return; + if (m_toolWidget) + m_grid->removeWidget(m_toolWidget); + m_grid->addWidget(widget, 0, 1); + m_toolWidget = widget; +} + +void DetailsWidget::fixUpLayout() +{ + QWidget *parent = m_widget; + QStack<QWidget *> widgets; + while((parent = parent->parentWidget()) && parent && parent->layout()) { + widgets.push(parent); + parent->layout()->update(); + } + + while(!widgets.isEmpty()) { + widgets.pop()->layout()->activate(); + } +} |