From f3f790cec0910e2638f97e604cc059bcc0bfa77d Mon Sep 17 00:00:00 2001 From: con <qtc-committer@nokia.com> Date: Wed, 15 Jul 2009 12:42:09 +0200 Subject: [PATCH] Missing files --- src/libs/utils/styledbar.cpp | 65 ++++++++++++++++++++++++++++++++++++ src/libs/utils/styledbar.h | 23 +++++++++++++ 2 files changed, 88 insertions(+) create mode 100644 src/libs/utils/styledbar.cpp create mode 100644 src/libs/utils/styledbar.h diff --git a/src/libs/utils/styledbar.cpp b/src/libs/utils/styledbar.cpp new file mode 100644 index 00000000000..39326a17cbf --- /dev/null +++ b/src/libs/utils/styledbar.cpp @@ -0,0 +1,65 @@ +#include "styledbar.h" + +#include "stylehelper.h" + +#include <QtCore/QVariant> +#include <QtGui/QPainter> +#include <QtGui/QPixmapCache> + +using namespace Core::Utils; + +StyledBar::StyledBar(QWidget *parent) + : QWidget(parent) +{ + setProperty("panelwidget", true); +} + +void StyledBar::paintEvent(QPaintEvent *event) +{ + // Currently from the style + // Goal should be to migrate that into a Utils::StyledWidget class + Q_UNUSED(event) + QPainter painter(this); + + QRect selfRect = rect(); + QString key; + key.sprintf("mh_toolbar %d %d %d", selfRect.width(), selfRect.height(), StyleHelper::baseColor().rgb());; + + QPixmap pixmap; + QPainter *p = &painter; + if (StyleHelper::usePixmapCache() && !QPixmapCache::find(key, pixmap)) { + pixmap = QPixmap(selfRect.size()); + p = new QPainter(&pixmap); + selfRect = QRect(0, 0, selfRect.width(), selfRect.height()); + } + + // Map offset for global window gradient + QPoint offset = window()->mapToGlobal(selfRect.topLeft()) - + mapToGlobal(selfRect.topLeft()); + QRect gradientSpan; + gradientSpan = QRect(offset, window()->size()); + StyleHelper::horizontalGradient(p, gradientSpan, selfRect); + + p->setPen(StyleHelper::borderColor()); + + // Note: This is a hack to determine if the + // toolbar should draw the top or bottom outline + // (needed for the find toolbar for instance) + QColor lighter(255, 255, 255, 40); + if (property("topBorder").toBool()) { + p->drawLine(selfRect.topLeft(), selfRect.topRight()); + p->setPen(lighter); + p->drawLine(selfRect.topLeft() + QPoint(0, 1), selfRect.topRight() + QPoint(0, 1)); + } else { + p->drawLine(selfRect.bottomLeft(), selfRect.bottomRight()); + p->setPen(lighter); + p->drawLine(selfRect.topLeft(), selfRect.topRight()); + } + + if (StyleHelper::usePixmapCache() && !QPixmapCache::find(key, pixmap)) { + painter.drawPixmap(selfRect.topLeft(), pixmap); + p->end(); + delete p; + QPixmapCache::insert(key, pixmap); + } +} diff --git a/src/libs/utils/styledbar.h b/src/libs/utils/styledbar.h new file mode 100644 index 00000000000..6b93ffe5568 --- /dev/null +++ b/src/libs/utils/styledbar.h @@ -0,0 +1,23 @@ +#ifndef STYLEDBAR_H +#define STYLEDBAR_H + +#include "utils_global.h" + +#include <QtGui/QWidget> + +namespace Core { +namespace Utils { + +class QTCREATOR_UTILS_EXPORT StyledBar : public QWidget +{ +public: + StyledBar(QWidget *parent = 0); + +protected: + void paintEvent(QPaintEvent *event); +}; + +} // Utils +} // Core + +#endif // STYLEDBAR_H -- GitLab