diff options
author | Daniel Teske <daniel.teske@digia.com> | 2014-07-11 16:54:04 +0200 |
---|---|---|
committer | Daniel Teske <daniel.teske@digia.com> | 2014-07-22 16:51:19 +0200 |
commit | 2f32457d0407c94980972d0a5877f87152d38d09 (patch) | |
tree | 22cbefb41c60f50b0eea89134b91220d1cdcfc19 /src/plugins/projectexplorer/projectwindow.cpp | |
parent | a58325578c57f8b2b1c1fafcbd97a0ac5f06d366 (diff) | |
download | qt-creator-2f32457d0407c94980972d0a5877f87152d38d09.tar.gz |
Move PanelsWidget and PropertiesPanel to their own files
Change-Id: I6d5442fb42727fd3fa0a841800cbf55c5ec494f0
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
Diffstat (limited to 'src/plugins/projectexplorer/projectwindow.cpp')
-rw-r--r-- | src/plugins/projectexplorer/projectwindow.cpp | 174 |
1 files changed, 2 insertions, 172 deletions
diff --git a/src/plugins/projectexplorer/projectwindow.cpp b/src/plugins/projectexplorer/projectwindow.cpp index 5c11a1527c..7e0f92de19 100644 --- a/src/plugins/projectexplorer/projectwindow.cpp +++ b/src/plugins/projectexplorer/projectwindow.cpp @@ -30,6 +30,7 @@ #include "projectwindow.h" #include "doubletabwidget.h" +#include "panelswidget.h" #include "kitmanager.h" #include "project.h" @@ -43,183 +44,12 @@ #include <extensionsystem/pluginmanager.h> #include <utils/algorithm.h> #include <utils/qtcassert.h> -#include <utils/stylehelper.h> -#include <QGridLayout> -#include <QLabel> -#include <QPainter> #include <QStackedWidget> +#include <QVBoxLayout> using namespace ProjectExplorer; using namespace ProjectExplorer::Internal; - -namespace { -const int ICON_SIZE(64); - -const int ABOVE_HEADING_MARGIN(10); -const int ABOVE_CONTENTS_MARGIN(4); -const int BELOW_CONTENTS_MARGIN(16); - -} // anonymous namespace - -/// -// OnePixelBlackLine -/// - -class OnePixelBlackLine : public QWidget -{ -public: - OnePixelBlackLine(QWidget *parent) - : QWidget(parent) - { - setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - setMinimumHeight(1); - setMaximumHeight(1); - } - void paintEvent(QPaintEvent *e) - { - Q_UNUSED(e); - QPainter p(this); - QColor fillColor = Utils::StyleHelper::mergedColors( - palette().button().color(), Qt::black, 80); - p.fillRect(contentsRect(), fillColor); - } -}; - -class RootWidget : public QWidget -{ -public: - RootWidget(QWidget *parent) : QWidget(parent) { - setFocusPolicy(Qt::NoFocus); - } - void paintEvent(QPaintEvent *); -}; - -void RootWidget::paintEvent(QPaintEvent *e) -{ - QWidget::paintEvent(e); - - QPainter painter(this); - QColor light = Utils::StyleHelper::mergedColors( - palette().button().color(), Qt::white, 30); - QColor dark = Utils::StyleHelper::mergedColors( - palette().button().color(), Qt::black, 85); - - painter.setPen(light); - painter.drawLine(rect().topRight(), rect().bottomRight()); - painter.setPen(dark); - painter.drawLine(rect().topRight() - QPoint(1,0), rect().bottomRight() - QPoint(1,0)); -} - -/// -// PanelsWidget -/// - -PanelsWidget::PanelsWidget(QWidget *parent) : - QScrollArea(parent), - m_root(new RootWidget(this)) -{ - // We want a 900px wide widget with and the scrollbar at the - // side of the screen. - m_root->setMaximumWidth(900); - m_root->setContentsMargins(0, 0, 40, 0); - - QPalette pal; - QColor background = Utils::StyleHelper::mergedColors( - palette().window().color(), Qt::white, 85); - pal.setColor(QPalette::All, QPalette::Window, background.darker(102)); - setPalette(pal); - pal.setColor(QPalette::All, QPalette::Window, background); - m_root->setPalette(pal); - - // The layout holding the individual panels: - QVBoxLayout *topLayout = new QVBoxLayout(m_root); - topLayout->setMargin(0); - topLayout->setSpacing(0); - - m_layout = new QGridLayout; - m_layout->setColumnMinimumWidth(0, ICON_SIZE + 4); - m_layout->setSpacing(0); - topLayout->addLayout(m_layout); - topLayout->addStretch(100); - - setWidget(m_root); - setFrameStyle(QFrame::NoFrame); - setWidgetResizable(true); - setFocusPolicy(Qt::NoFocus); -} - -PanelsWidget::~PanelsWidget() -{ - qDeleteAll(m_panels); -} - -/* - * Add a widget with heading information into the grid - * layout of the PanelsWidget. - * - * ... - * +--------+-------------------------------------------+ ABOVE_HEADING_MARGIN - * | icon | name | - * + +-------------------------------------------+ - * | | line | - * + +-------------------------------------------+ ABOVE_CONTENTS_MARGIN - * | | widget (with contentsmargins adjusted!) | - * +--------+-------------------------------------------+ BELOW_CONTENTS_MARGIN - */ -void PanelsWidget::addPropertiesPanel(PropertiesPanel *panel) -{ - QTC_ASSERT(panel, return); - - const int headerRow = m_layout->rowCount(); - - // icon: - if (!panel->icon().isNull()) { - QLabel *iconLabel = new QLabel(m_root); - iconLabel->setPixmap(panel->icon().pixmap(ICON_SIZE, ICON_SIZE)); - iconLabel->setContentsMargins(0, ABOVE_HEADING_MARGIN, 0, 0); - m_layout->addWidget(iconLabel, headerRow, 0, 3, 1, Qt::AlignTop | Qt::AlignHCenter); - } - - // name: - QLabel *nameLabel = new QLabel(m_root); - nameLabel->setText(panel->displayName()); - QPalette palette = nameLabel->palette(); - for (int i = QPalette::Active; i < QPalette::NColorGroups; ++i ) { - QColor foregroundColor = palette.color(QPalette::ColorGroup(i), QPalette::Foreground); - foregroundColor.setAlpha(110); - palette.setBrush(QPalette::ColorGroup(i), QPalette::Foreground, foregroundColor); - } - nameLabel->setPalette(palette); - nameLabel->setContentsMargins(0, ABOVE_HEADING_MARGIN, 0, 0); - QFont f = nameLabel->font(); - f.setBold(true); - f.setPointSizeF(f.pointSizeF() * 1.6); - nameLabel->setFont(f); - m_layout->addWidget(nameLabel, headerRow, 1, 1, 1, Qt::AlignVCenter | Qt::AlignLeft); - - // line: - const int lineRow(headerRow + 1); - QWidget *line = new OnePixelBlackLine(m_root); - m_layout->addWidget(line, lineRow, 1, 1, -1, Qt::AlignTop); - - // add the widget: - const int widgetRow(lineRow + 1); - addPanelWidget(panel, widgetRow); -} - -void PanelsWidget::addPanelWidget(PropertiesPanel *panel, int row) -{ - QWidget *widget = panel->widget(); - widget->setContentsMargins(Constants::PANEL_LEFT_MARGIN, - ABOVE_CONTENTS_MARGIN, 0, - BELOW_CONTENTS_MARGIN); - widget->setParent(m_root); - m_layout->addWidget(widget, row, 0, 1, 2); - - m_panels.append(panel); -} - /// // ProjectWindow /// |