summaryrefslogtreecommitdiff
path: root/src/libs/utils/detailswidget.cpp
diff options
context:
space:
mode:
authordt <qtc-committer@nokia.com>2009-10-01 14:39:31 +0200
committerdt <qtc-committer@nokia.com>2009-10-01 14:39:31 +0200
commite78d049b942c67066ef027d280069bbb88b3806a (patch)
tree7e7a7d6f1e9fe3d5aed2d568e6e6eb3b8910e683 /src/libs/utils/detailswidget.cpp
parenta97dcb53d167e9ea1deb564a3b5fa6265b0eb1ab (diff)
downloadqt-creator-e78d049b942c67066ef027d280069bbb88b3806a.tar.gz
Add missing files
Diffstat (limited to 'src/libs/utils/detailswidget.cpp')
-rw-r--r--src/libs/utils/detailswidget.cpp77
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();
+ }
+}