Even though the last alpha was .91 this one is going to be 82 as I'd like to have...
[kdevelopdvcssupport.git] / sublime / containerstyle.cpp
blob6b6ae627a42aa5907e272ae663d7b310f3c343ab
1 /***************************************************************************
2 * Copyright (C) 2007 Fredrik Höglund <fredrik@kde.org> *
3 * Originally created as konqproxystyle.cpp, adapted to KDevelop. *
4 * *
5 * This program is free software; you can redistribute it and/or modify *
6 * it under the terms of the GNU Library General Public License as *
7 * published by the Free Software Foundation; either version 2 of the *
8 * License, or (at your option) any later version. *
9 * *
10 * This program is distributed in the hope that it will be useful, *
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13 * GNU General Public License for more details. *
14 * *
15 * You should have received a copy of the GNU Library General Public *
16 * License along with this program; if not, write to the *
17 * Free Software Foundation, Inc., *
18 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
19 ***************************************************************************/
20 #include "containerstyle.h"
22 #include <QtGui/QWidget>
23 #include <QStyleOptionTabV2>
25 #include "container.h"
27 namespace Sublime {
29 ContainerStyle::ContainerStyle(QWidget *parent)
30 :QStyle(), parent(parent)
34 QStyle *ContainerStyle::style() const
36 return parent->parentWidget()->style();
39 void ContainerStyle::drawComplexControl(ComplexControl control, const QStyleOptionComplex *option,
40 QPainter *painter, const QWidget *widget) const
42 style()->drawComplexControl(control, option, painter, widget);
45 void ContainerStyle::drawControl(ControlElement element, const QStyleOption *option, QPainter *painter,
46 const QWidget *widget) const
48 style()->drawControl(element, option, painter, widget);
51 void ContainerStyle::drawItemPixmap(QPainter *painter, const QRect &rectangle, int alignment,
52 const QPixmap &pixmap) const
54 style()->drawItemPixmap(painter, rectangle, alignment, pixmap);
57 void ContainerStyle::drawItemText(QPainter *painter, const QRect &rectangle, int alignment, const QPalette &palette,
58 bool enabled, const QString &text, QPalette::ColorRole textRole) const
60 style()->drawItemText(painter, rectangle, alignment, palette, enabled, text, textRole);
63 void ContainerStyle::drawPrimitive(PrimitiveElement element, const QStyleOption *option, QPainter *painter,
64 const QWidget *widget) const
66 if (element == PE_FrameTabWidget)
68 const Container *tw = static_cast<const Sublime::Container*>(widget);
69 const QTabBar *tb = tw->tabBar();
71 QStyleOptionTabV2 tab;
72 tab.initFrom(tb);
73 tab.shape = tb->shape();
74 int overlap = style()->pixelMetric(PM_TabBarBaseOverlap, &tab, tb);
76 if (overlap <= 0 || tw->isTabBarHidden() || tb->count() == 0)
77 return;
79 QStyleOptionTabBarBase opt;
80 opt.initFrom(tb);
82 opt.selectedTabRect = tb->tabRect(tb->currentIndex());
83 opt.selectedTabRect = QRect(tb->mapToParent(opt.selectedTabRect.topLeft()), opt.selectedTabRect.size());
84 opt.tabBarRect = QRect(tb->mapToParent(tb->rect().topLeft()), tb->size());
86 if (tw->tabPosition() == QTabWidget::North)
87 opt.rect = QRect(option->rect.left(), option->rect.top(), option->rect.width(), overlap);
88 else
89 opt.rect = QRect(option->rect.left(), option->rect.bottom() - overlap - 1, option->rect.width(), overlap);
91 style()->drawPrimitive(PE_FrameTabBarBase, &opt, painter, tb);
92 return;
95 style()->drawPrimitive(element, option, painter, widget);
98 QPixmap ContainerStyle::generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap,
99 const QStyleOption *option) const
101 return style()->generatedIconPixmap(iconMode, pixmap, option);
104 QStyle::SubControl ContainerStyle::hitTestComplexControl(ComplexControl control, const QStyleOptionComplex *option,
105 const QPoint &position, const QWidget *widget) const
107 return style()->hitTestComplexControl(control, option, position, widget);
110 QRect ContainerStyle::itemPixmapRect(const QRect &rectangle, int alignment, const QPixmap &pixmap) const
112 return style()->itemPixmapRect(rectangle, alignment, pixmap);
115 QRect ContainerStyle::itemTextRect(const QFontMetrics &metrics, const QRect &rectangle, int alignment,
116 bool enabled, const QString &text) const
118 return style()->itemTextRect(metrics, rectangle, alignment, enabled, text);
121 int ContainerStyle::pixelMetric(PixelMetric metric, const QStyleOption *option, const QWidget *widget) const
123 return style()->pixelMetric(metric, option, widget);
126 void ContainerStyle::polish(QWidget *widget)
128 style()->polish(widget);
131 void ContainerStyle::polish(QApplication *application)
133 style()->polish(application);
136 void ContainerStyle::polish(QPalette &palette)
138 style()->polish(palette);
141 QSize ContainerStyle::sizeFromContents(ContentsType type, const QStyleOption *option,
142 const QSize &contentsSize, const QWidget *widget) const
144 return style()->sizeFromContents(type, option, contentsSize, widget);
147 QIcon ContainerStyle::standardIcon(StandardPixmap standardIcon, const QStyleOption *option,
148 const QWidget *widget) const
150 return style()->standardIcon(standardIcon, option, widget);
153 QPixmap ContainerStyle::standardPixmap(StandardPixmap standardPixmap, const QStyleOption *option,
154 const QWidget *widget) const
156 return style()->standardPixmap(standardPixmap, option, widget);
159 QPalette ContainerStyle::standardPalette() const
161 return style()->standardPalette();
164 int ContainerStyle::styleHint(StyleHint hint, const QStyleOption *option, const QWidget *widget,
165 QStyleHintReturn *returnData) const
167 return style()->styleHint(hint, option, widget, returnData);
170 QRect ContainerStyle::subControlRect(ComplexControl control, const QStyleOptionComplex *option,
171 SubControl subControl, const QWidget *widget) const
173 return style()->subControlRect(control, option, subControl, widget);
176 QRect ContainerStyle::subElementRect(SubElement element, const QStyleOption *option,
177 const QWidget *widget) const
179 if (element == SE_TabWidgetTabContents)
181 QRect rect = style()->subElementRect(SE_TabWidgetTabPane, option, widget);
183 const Container *tw = static_cast<const Sublime::Container*>(widget);
184 const QTabBar *tb = tw->tabBar();
186 QStyleOptionTabV2 tab;
187 tab.initFrom(tb);
188 tab.shape = tb->shape();
189 int overlap = style()->pixelMetric(PM_TabBarBaseOverlap, &tab, tw->tabBar());
191 if (overlap <= 0 || tw->isTabBarHidden())
192 return rect;
194 return tw->tabPosition() == QTabWidget::North ?
195 rect.adjusted(0, overlap, 0, 0) : rect.adjusted(0, 0, 0, -overlap);
197 return style()->subElementRect(element, option, widget);
200 void ContainerStyle::unpolish(QWidget *widget)
202 style()->unpolish(widget);
205 void ContainerStyle::unpolish(QApplication *application)
207 style()->unpolish(application);