qpixmapstyle.cpp

Absolute File Name:/home/qt/qt5_coco/qt5/qtbase/src/widgets/styles/qpixmapstyle.cpp
Source codeSwitch to Preprocessed file
LineSourceCount
1/***************************************************************************-
2**-
3** Copyright (C) 2014 BlackBerry Limited. All rights reserved.-
4** Copyright (C) 2015 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com-
5** Copyright (C) 2016 The Qt Company Ltd.-
6** Contact: https://www.qt.io/licensing/-
7**-
8** This file is part of the QtWidgets module of the Qt Toolkit.-
9**-
10** $QT_BEGIN_LICENSE:LGPL$-
11** Commercial License Usage-
12** Licensees holding valid commercial Qt licenses may use this file in-
13** accordance with the commercial license agreement provided with the-
14** Software or, alternatively, in accordance with the terms contained in-
15** a written agreement between you and The Qt Company. For licensing terms-
16** and conditions see https://www.qt.io/terms-conditions. For further-
17** information use the contact form at https://www.qt.io/contact-us.-
18**-
19** GNU Lesser General Public License Usage-
20** Alternatively, this file may be used under the terms of the GNU Lesser-
21** General Public License version 3 as published by the Free Software-
22** Foundation and appearing in the file LICENSE.LGPL3 included in the-
23** packaging of this file. Please review the following information to-
24** ensure the GNU Lesser General Public License version 3 requirements-
25** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.-
26**-
27** GNU General Public License Usage-
28** Alternatively, this file may be used under the terms of the GNU-
29** General Public License version 2.0 or (at your option) the GNU General-
30** Public license version 3 or any later version approved by the KDE Free-
31** Qt Foundation. The licenses are as published by the Free Software-
32** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3-
33** included in the packaging of this file. Please review the following-
34** information to ensure the GNU General Public License requirements will-
35** be met: https://www.gnu.org/licenses/gpl-2.0.html and-
36** https://www.gnu.org/licenses/gpl-3.0.html.-
37**-
38** $QT_END_LICENSE$-
39**-
40****************************************************************************/-
41-
42#include "qpixmapstyle_p.h"-
43#include "qpixmapstyle_p_p.h"-
44-
45#include <QDebug>-
46#include <QTextEdit>-
47#include <QStringBuilder>-
48#include <QPainter>-
49#include <QPixmapCache>-
50#include <QStyleOption>-
51#include <QString>-
52#include <QProgressBar>-
53#include <QSlider>-
54#include <QEvent>-
55#include <QComboBox>-
56#include <QAbstractItemView>-
57#include <QListView>-
58#include <QTreeView>-
59#include <QStyledItemDelegate>-
60#include <QAbstractScrollArea>-
61#include <QScrollBar>-
62-
63#include <qscroller.h>-
64-
65QT_BEGIN_NAMESPACE-
66-
67/*!-
68 \class QPixmapStyle-
69 \brief The QPixmapStyle class provides mechanism for writing pixmap based styles.-
70-
71 \since 5.7-
72 \ingroup appearance-
73 \inmodule QtWidgets-
74 \internal-
75-
76 This is a convenience class that enables the implementation of a widget style using-
77 pixmaps, on the same fashion used by the \l{BorderImage} QML type.-
78-
79 In order to style a QWidget, one simply needs to call QPixmapStyle::addDescriptor()-
80 or QPixmapStyle::addPixmap() with the id of the component to be styled, the path of-
81 the image to be used, the margins and the tiling rules:-
82-
83 \snippet styles/qcustompixmapstyle.cpp 0-
84-
85 \sa QStyle, QCommonStyle-
86*/-
87-
88/*!-
89 \internal-
90-
91 Constructs a QPixmapStyle object.-
92*/-
93QPixmapStyle::QPixmapStyle()-
94 : QCommonStyle(*new QPixmapStylePrivate)-
95{-
96}
never executed: end of block
0
97-
98/*!-
99 Destroys the QPixmapStyle object.-
100*/-
101QPixmapStyle::~QPixmapStyle()-
102{-
103}-
104-
105/*!-
106 \reimp-
107*/-
108void QPixmapStyle::polish(QApplication *application)-
109{-
110 QCommonStyle::polish(application);-
111#if defined(Q_DEAD_CODE_FROM_QT4_WIN)-
112 QApplication::setEffectEnabled(Qt::UI_AnimateCombo, false);-
113#endif-
114}
never executed: end of block
0
115-
116/*!-
117 \reimp-
118*/-
119void QPixmapStyle::polish(QPalette &palette)-
120{-
121 palette = proxy()->standardPalette();-
122}
never executed: end of block
0
123-
124/*!-
125 \reimp-
126*/-
127void QPixmapStyle::polish(QWidget *widget)-
128{-
129 Q_D(QPixmapStyle);-
130-
131 // Don't fill the interior of the QTextEdit-
132 if (qobject_cast<QTextEdit*>(widget)) {
qobject_cast<Q...Edit*>(widget)Description
TRUEnever evaluated
FALSEnever evaluated
0
133 QPalette p = widget->palette();-
134 p.setBrush(QPalette::Base, Qt::NoBrush);-
135 widget->setPalette(p);-
136 }
never executed: end of block
0
137-
138 if (QProgressBar *pb = qobject_cast<QProgressBar*>(widget)) {
QProgressBar *...sBar*>(widget)Description
TRUEnever evaluated
FALSEnever evaluated
0
139 // Center the text in the progress bar-
140 pb->setAlignment(Qt::AlignCenter);-
141 // Change the font size if needed, as it's used to compute the minimum size-
142 QFont font = pb->font();-
143 font.setPixelSize(d->descriptors.value(PB_HBackground).size.height()/2);-
144 pb->setFont(font);-
145 }
never executed: end of block
0
146-
147 if (qobject_cast<QSlider*>(widget))
qobject_cast<QSlider*>(widget)Description
TRUEnever evaluated
FALSEnever evaluated
0
148 widget->installEventFilter(this);
never executed: widget->installEventFilter(this);
0
149-
150 if (QComboBox *cb = qobject_cast<QComboBox*>(widget)) {
QComboBox *cb ...oBox*>(widget)Description
TRUEnever evaluated
FALSEnever evaluated
0
151 widget->installEventFilter(this);-
152 // NOTE: This will break if the private API of QComboBox changes drastically-
153 // Make sure the popup is created so we can change the frame style-
154 QAbstractItemView *list = cb->view();-
155 list->setProperty("_pixmap_combobox_list", true);-
156 list->setItemDelegate(new QStyledItemDelegate(list));-
157 QPalette p = list->palette();-
158 p.setBrush(QPalette::Active, QPalette::Base, QBrush(Qt::transparent) );-
159 p.setBrush(QPalette::Active, QPalette::AlternateBase, QBrush(Qt::transparent) );-
160 p.setBrush(QPalette::Inactive, QPalette::Base, QBrush(Qt::transparent) );-
161 p.setBrush(QPalette::Inactive, QPalette::AlternateBase, QBrush(Qt::transparent) );-
162 p.setBrush(QPalette::Disabled, QPalette::Base, QBrush(Qt::transparent) );-
163 p.setBrush(QPalette::Disabled, QPalette::AlternateBase, QBrush(Qt::transparent) );-
164 list->setPalette(p);-
165-
166 QFrame *frame = qobject_cast<QFrame*>(list->parent());-
167 if (frame) {
frameDescription
TRUEnever evaluated
FALSEnever evaluated
0
168 const QPixmapStyleDescriptor &desc = d->descriptors.value(DD_PopupDown);-
169 const QPixmapStylePixmap &pix = d->pixmaps.value(DD_ItemSeparator);-
170 frame->setContentsMargins(pix.margins.left(), desc.margins.top(),-
171 pix.margins.right(), desc.margins.bottom());-
172 frame->setAttribute(Qt::WA_TranslucentBackground);-
173#ifdef Q_DEAD_CODE_FROM_QT4_WIN-
174 // FramelessWindowHint is needed on windows to make-
175 // WA_TranslucentBackground work properly-
176 frame->setWindowFlags(widget->windowFlags() | Qt::FramelessWindowHint);-
177#endif-
178 }
never executed: end of block
0
179 }
never executed: end of block
0
180-
181 if (qstrcmp(widget->metaObject()->className(),"QComboBoxPrivateContainer") == 0)
qstrcmp(widget...ntainer") == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
182 widget->installEventFilter(this);
never executed: widget->installEventFilter(this);
0
183-
184 if (QAbstractScrollArea *scrollArea = qobject_cast<QAbstractScrollArea*>(widget)) {
QAbstractScrol...Area*>(widget)Description
TRUEnever evaluated
FALSEnever evaluated
0
185 scrollArea->viewport()->setAutoFillBackground(false);-
186 if (QAbstractItemView *view = qobject_cast<QAbstractItemView*>(scrollArea)) {
QAbstractItemV...*>(scrollArea)Description
TRUEnever evaluated
FALSEnever evaluated
0
187 view->setHorizontalScrollMode(QAbstractItemView::ScrollPerPixel);-
188 view->setVerticalScrollMode(QAbstractItemView::ScrollPerPixel);-
189 }
never executed: end of block
0
190 QScroller::grabGesture(scrollArea->viewport(), QScroller::LeftMouseButtonGesture);-
191 }
never executed: end of block
0
192-
193 if (qobject_cast<QScrollBar*>(widget))
qobject_cast<Q...lBar*>(widget)Description
TRUEnever evaluated
FALSEnever evaluated
0
194 widget->setAttribute(Qt::WA_OpaquePaintEvent, false);
never executed: widget->setAttribute(Qt::WA_OpaquePaintEvent, false);
0
195-
196 QCommonStyle::polish(widget);-
197}
never executed: end of block
0
198-
199/*!-
200 \reimp-
201*/-
202void QPixmapStyle::unpolish(QApplication *application)-
203{-
204 QCommonStyle::unpolish(application);-
205}
never executed: end of block
0
206-
207/*!-
208 \reimp-
209*/-
210void QPixmapStyle::unpolish(QWidget *widget)-
211{-
212 if (qobject_cast<QSlider*>(widget) ||
qobject_cast<QSlider*>(widget)Description
TRUEnever evaluated
FALSEnever evaluated
0
213 qobject_cast<QComboBox*>(widget)) {
qobject_cast<Q...oBox*>(widget)Description
TRUEnever evaluated
FALSEnever evaluated
0
214 widget->removeEventFilter(this);-
215 }
never executed: end of block
0
216-
217 if (qstrcmp(widget->metaObject()->className(),"QComboBoxPrivateContainer") == 0)
qstrcmp(widget...ntainer") == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
218 widget->removeEventFilter(this);
never executed: widget->removeEventFilter(this);
0
219-
220 if (QAbstractScrollArea *scrollArea = qobject_cast<QAbstractScrollArea*>(widget))
QAbstractScrol...Area*>(widget)Description
TRUEnever evaluated
FALSEnever evaluated
0
221 QScroller::ungrabGesture(scrollArea->viewport());
never executed: QScroller::ungrabGesture(scrollArea->viewport());
0
222-
223 QCommonStyle::unpolish(widget);-
224}
never executed: end of block
0
225-
226/*!-
227 \reimp-
228*/-
229void QPixmapStyle::drawPrimitive(PrimitiveElement element, const QStyleOption *option,-
230 QPainter *painter, const QWidget *widget) const-
231{-
232 switch (element) {-
233 case PE_FrameFocusRect: //disable focus rectangle
never executed: case PE_FrameFocusRect:
0
234 break;
never executed: break;
0
235 case PE_PanelButtonBevel:
never executed: case PE_PanelButtonBevel:
0
236 case PE_PanelButtonCommand:
never executed: case PE_PanelButtonCommand:
0
237 drawPushButton(option, painter, widget);-
238 break;
never executed: break;
0
239 case PE_PanelLineEdit:
never executed: case PE_PanelLineEdit:
0
240 case PE_FrameLineEdit:
never executed: case PE_FrameLineEdit:
0
241 drawLineEdit(option, painter, widget);-
242 break;
never executed: break;
0
243 case PE_Frame:
never executed: case PE_Frame:
0
244 case PE_FrameDefaultButton:
never executed: case PE_FrameDefaultButton:
0
245 if (qobject_cast<const QTextEdit*>(widget))
qobject_cast<c...Edit*>(widget)Description
TRUEnever evaluated
FALSEnever evaluated
0
246 drawTextEdit(option, painter, widget);
never executed: drawTextEdit(option, painter, widget);
0
247 break;
never executed: break;
0
248 case PE_IndicatorCheckBox:
never executed: case PE_IndicatorCheckBox:
0
249 drawCheckBox(option, painter, widget);-
250 break;
never executed: break;
0
251 case PE_IndicatorRadioButton:
never executed: case PE_IndicatorRadioButton:
0
252 drawRadioButton(option, painter, widget);-
253 break;
never executed: break;
0
254 case PE_PanelItemViewItem:
never executed: case PE_PanelItemViewItem:
0
255 if (qobject_cast<const QListView*>(widget))
qobject_cast<c...View*>(widget)Description
TRUEnever evaluated
FALSEnever evaluated
0
256 drawPanelItemViewItem(option, painter, widget);
never executed: drawPanelItemViewItem(option, painter, widget);
0
257 else-
258 QCommonStyle::drawPrimitive(element, option, painter, widget);
never executed: QCommonStyle::drawPrimitive(element, option, painter, widget);
0
259 break;
never executed: break;
0
260 default:
never executed: default:
0
261 QCommonStyle::drawPrimitive(element, option, painter, widget);-
262 }
never executed: end of block
0
263}-
264-
265/*!-
266 \reimp-
267*/-
268void QPixmapStyle::drawControl(ControlElement element, const QStyleOption *option,-
269 QPainter *painter, const QWidget *widget) const-
270{-
271 Q_D(const QPixmapStyle);-
272-
273 switch (element) {-
274 case CE_ProgressBarGroove:
never executed: case CE_ProgressBarGroove:
0
275 drawProgressBarBackground(option, painter, widget);-
276 break;
never executed: break;
0
277 case CE_ProgressBarLabel:
never executed: case CE_ProgressBarLabel:
0
278 drawProgressBarLabel(option, painter, widget);-
279 break;
never executed: break;
0
280 case CE_ProgressBarContents:
never executed: case CE_ProgressBarContents:
0
281 drawProgressBarFill(option, painter, widget);-
282 break;
never executed: break;
0
283 case CE_ShapedFrame:
never executed: case CE_ShapedFrame:
0
284 // NOTE: This will break if the private API of QComboBox changes drastically-
285 if (qstrcmp(widget->metaObject()->className(),"QComboBoxPrivateContainer") == 0) {
qstrcmp(widget...ntainer") == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
286 const QPixmapStyleDescriptor &desc = d->descriptors.value(DD_PopupDown);-
287 const QPixmapStylePixmap &pix = d->pixmaps.value(DD_ItemSeparator);-
288 QRect rect = option->rect;-
289 rect.adjust(-pix.margins.left(), -desc.margins.top(),-
290 pix.margins.right(), desc.margins.bottom());-
291 bool up = widget->property("_pixmapstyle_combobox_up").toBool();-
292 drawCachedPixmap(up ? DD_PopupUp : DD_PopupDown, rect, painter);-
293 }
never executed: end of block
0
294 else {-
295 QCommonStyle::drawControl(element, option, painter, widget);-
296 }
never executed: end of block
0
297 break;
never executed: break;
0
298 default:
never executed: default:
0
299 QCommonStyle::drawControl(element, option, painter, widget);-
300 }
never executed: end of block
0
301}-
302-
303/*!-
304 \reimp-
305*/-
306void QPixmapStyle::drawComplexControl(ComplexControl cc, const QStyleOptionComplex *option,-
307 QPainter *painter, const QWidget *widget) const-
308{-
309 switch (cc) {-
310 case CC_Slider:
never executed: case CC_Slider:
0
311 drawSlider(option, painter, widget);-
312 break;
never executed: break;
0
313 case CC_ComboBox:
never executed: case CC_ComboBox:
0
314 drawComboBox(option, painter, widget);-
315 break;
never executed: break;
0
316 case CC_ScrollBar:
never executed: case CC_ScrollBar:
0
317 drawScrollBar(option, painter, widget);-
318 break;
never executed: break;
0
319 default:
never executed: default:
0
320 QCommonStyle::drawComplexControl(cc, option, painter, widget);-
321 }
never executed: end of block
0
322}-
323-
324/*!-
325 \reimp-
326*/-
327QSize QPixmapStyle::sizeFromContents(ContentsType type, const QStyleOption *option,-
328 const QSize &contentsSize, const QWidget *widget) const-
329{-
330 switch (type) {-
331 case CT_PushButton:
never executed: case CT_PushButton:
0
332 return pushButtonSizeFromContents(option, contentsSize, widget);
never executed: return pushButtonSizeFromContents(option, contentsSize, widget);
0
333 case CT_LineEdit:
never executed: case CT_LineEdit:
0
334 return lineEditSizeFromContents(option, contentsSize, widget);
never executed: return lineEditSizeFromContents(option, contentsSize, widget);
0
335 case CT_ProgressBar:
never executed: case CT_ProgressBar:
0
336 return progressBarSizeFromContents(option, contentsSize, widget);
never executed: return progressBarSizeFromContents(option, contentsSize, widget);
0
337 case CT_Slider:
never executed: case CT_Slider:
0
338 return sliderSizeFromContents(option, contentsSize, widget);
never executed: return sliderSizeFromContents(option, contentsSize, widget);
0
339 case CT_ComboBox:
never executed: case CT_ComboBox:
0
340 return comboBoxSizeFromContents(option, contentsSize, widget);
never executed: return comboBoxSizeFromContents(option, contentsSize, widget);
0
341 case CT_ItemViewItem:
never executed: case CT_ItemViewItem:
0
342 return itemViewSizeFromContents(option, contentsSize, widget);
never executed: return itemViewSizeFromContents(option, contentsSize, widget);
0
343 default: ;
never executed: default:
0
344 }
never executed: end of block
0
345-
346 return QCommonStyle::sizeFromContents(type, option, contentsSize, widget);
never executed: return QCommonStyle::sizeFromContents(type, option, contentsSize, widget);
0
347}-
348-
349/*!-
350 \reimp-
351*/-
352QRect QPixmapStyle::subElementRect(SubElement element, const QStyleOption *option,-
353 const QWidget *widget) const-
354{-
355 Q_D(const QPixmapStyle);-
356-
357 switch (element) {-
358 case SE_LineEditContents:
never executed: case SE_LineEditContents:
0
359 {-
360 QRect rect = QCommonStyle::subElementRect(element, option, widget);-
361 const QPixmapStyleDescriptor &desc = d->descriptors.value(LE_Enabled);-
362 rect.adjust(desc.margins.left(), desc.margins.top(),-
363 -desc.margins.right(), -desc.margins.bottom());-
364 rect = visualRect(option->direction, option->rect, rect);-
365 return rect;
never executed: return rect;
0
366 }-
367 default: ;
never executed: default:
0
368 }
never executed: end of block
0
369-
370 return QCommonStyle::subElementRect(element, option, widget);
never executed: return QCommonStyle::subElementRect(element, option, widget);
0
371}-
372-
373/*!-
374 \reimp-
375*/-
376QRect QPixmapStyle::subControlRect(ComplexControl cc, const QStyleOptionComplex *option,-
377 SubControl sc, const QWidget *widget) const-
378{-
379 switch (cc) {-
380 case CC_ComboBox:
never executed: case CC_ComboBox:
0
381 return comboBoxSubControlRect(option, sc, widget);
never executed: return comboBoxSubControlRect(option, sc, widget);
0
382 case CC_ScrollBar:
never executed: case CC_ScrollBar:
0
383 return scrollBarSubControlRect(option, sc, widget);
never executed: return scrollBarSubControlRect(option, sc, widget);
0
384 default: ;
never executed: default:
0
385 }
never executed: end of block
0
386-
387 return QCommonStyle::subControlRect(cc, option, sc, widget);
never executed: return QCommonStyle::subControlRect(cc, option, sc, widget);
0
388}-
389-
390/*!-
391 \reimp-
392*/-
393int QPixmapStyle::pixelMetric(PixelMetric metric, const QStyleOption *option,-
394 const QWidget *widget) const-
395{-
396 Q_D(const QPixmapStyle);-
397-
398 switch (metric) {-
399 case PM_ButtonShiftHorizontal:
never executed: case PM_ButtonShiftHorizontal:
0
400 case PM_ButtonShiftVertical:
never executed: case PM_ButtonShiftVertical:
0
401 return 0;
never executed: return 0;
0
402 case PM_DefaultFrameWidth:
never executed: case PM_DefaultFrameWidth:
0
403 if (qobject_cast<const QTextEdit*>(widget)) {
qobject_cast<c...Edit*>(widget)Description
TRUEnever evaluated
FALSEnever evaluated
0
404 const QPixmapStyleDescriptor &desc = d->descriptors.value(LE_Enabled);-
405 return qMax(qMax(desc.margins.left(), desc.margins.right()),
never executed: return qMax(qMax(desc.margins.left(), desc.margins.right()), qMax(desc.margins.top(), desc.margins.bottom()));
0
406 qMax(desc.margins.top(), desc.margins.bottom()));
never executed: return qMax(qMax(desc.margins.left(), desc.margins.right()), qMax(desc.margins.top(), desc.margins.bottom()));
0
407 }-
408 return 0;
never executed: return 0;
0
409 case PM_IndicatorWidth:
never executed: case PM_IndicatorWidth:
0
410 return d->pixmaps.value(CB_Enabled).pixmap.width();
never executed: return d->pixmaps.value(CB_Enabled).pixmap.width();
0
411 case PM_IndicatorHeight:
never executed: case PM_IndicatorHeight:
0
412 return d->pixmaps.value(CB_Enabled).pixmap.height();
never executed: return d->pixmaps.value(CB_Enabled).pixmap.height();
0
413 case PM_CheckBoxLabelSpacing:
never executed: case PM_CheckBoxLabelSpacing:
0
414 {-
415 const QPixmapStylePixmap &pix = d->pixmaps.value(CB_Enabled);-
416 return qMax(qMax(pix.margins.left(), pix.margins.right()),
never executed: return qMax(qMax(pix.margins.left(), pix.margins.right()), qMax(pix.margins.top(), pix.margins.bottom()));
0
417 qMax(pix.margins.top(), pix.margins.bottom()));
never executed: return qMax(qMax(pix.margins.left(), pix.margins.right()), qMax(pix.margins.top(), pix.margins.bottom()));
0
418 }-
419 case PM_ExclusiveIndicatorWidth:
never executed: case PM_ExclusiveIndicatorWidth:
0
420 return d->pixmaps.value(RB_Enabled).pixmap.width();
never executed: return d->pixmaps.value(RB_Enabled).pixmap.width();
0
421 case PM_ExclusiveIndicatorHeight:
never executed: case PM_ExclusiveIndicatorHeight:
0
422 return d->pixmaps.value(RB_Enabled).pixmap.height();
never executed: return d->pixmaps.value(RB_Enabled).pixmap.height();
0
423 case PM_RadioButtonLabelSpacing:
never executed: case PM_RadioButtonLabelSpacing:
0
424 {-
425 const QPixmapStylePixmap &pix = d->pixmaps.value(RB_Enabled);-
426 return qMax(qMax(pix.margins.left(), pix.margins.right()),
never executed: return qMax(qMax(pix.margins.left(), pix.margins.right()), qMax(pix.margins.top(), pix.margins.bottom()));
0
427 qMax(pix.margins.top(), pix.margins.bottom()));
never executed: return qMax(qMax(pix.margins.left(), pix.margins.right()), qMax(pix.margins.top(), pix.margins.bottom()));
0
428 }-
429 case PM_SliderThickness:
never executed: case PM_SliderThickness:
0
430 if (const QStyleOptionSlider *slider =
const QStyleOp...ider*>(option)Description
TRUEnever evaluated
FALSEnever evaluated
0
431 qstyleoption_cast<const QStyleOptionSlider*>(option)) {
const QStyleOp...ider*>(option)Description
TRUEnever evaluated
FALSEnever evaluated
0
432 const QPixmapStyleDescriptor desc =-
433 d->descriptors.value(slider->orientation == Qt::Horizontal-
434 ? SG_HEnabled : SG_VEnabled);-
435 return slider->orientation == Qt::Horizontal
never executed: return slider->orientation == Qt::Horizontal ? desc.size.height() : desc.size.width();
0
436 ? desc.size.height() : desc.size.width();
never executed: return slider->orientation == Qt::Horizontal ? desc.size.height() : desc.size.width();
0
437 }-
438 break;
never executed: break;
0
439 case PM_SliderControlThickness:
never executed: case PM_SliderControlThickness:
0
440 if (const QStyleOptionSlider *slider =
const QStyleOp...ider*>(option)Description
TRUEnever evaluated
FALSEnever evaluated
0
441 qstyleoption_cast<const QStyleOptionSlider*>(option)) {
const QStyleOp...ider*>(option)Description
TRUEnever evaluated
FALSEnever evaluated
0
442 const QPixmapStylePixmap pix =-
443 d->pixmaps.value(slider->orientation == Qt::Horizontal-
444 ? SH_HEnabled : SH_VEnabled);-
445 return slider->orientation == Qt::Horizontal
never executed: return slider->orientation == Qt::Horizontal ? pix.pixmap.height() : pix.pixmap.width();
0
446 ? pix.pixmap.height() : pix.pixmap.width();
never executed: return slider->orientation == Qt::Horizontal ? pix.pixmap.height() : pix.pixmap.width();
0
447 }-
448 break;
never executed: break;
0
449 case PM_SliderLength:
never executed: case PM_SliderLength:
0
450 if (const QStyleOptionSlider *slider =
const QStyleOp...ider*>(option)Description
TRUEnever evaluated
FALSEnever evaluated
0
451 qstyleoption_cast<const QStyleOptionSlider*>(option)) {
const QStyleOp...ider*>(option)Description
TRUEnever evaluated
FALSEnever evaluated
0
452 const QPixmapStylePixmap pix =-
453 d->pixmaps.value(slider->orientation == Qt::Horizontal-
454 ? SH_HEnabled : SH_VEnabled);-
455 return slider->orientation == Qt::Horizontal
never executed: return slider->orientation == Qt::Horizontal ? pix.pixmap.width() : pix.pixmap.height();
0
456 ? pix.pixmap.width() : pix.pixmap.height();
never executed: return slider->orientation == Qt::Horizontal ? pix.pixmap.width() : pix.pixmap.height();
0
457 }-
458 break;
never executed: break;
0
459 case PM_ScrollBarExtent:
never executed: case PM_ScrollBarExtent:
0
460 if (const QStyleOptionSlider *slider =
const QStyleOp...ider*>(option)Description
TRUEnever evaluated
FALSEnever evaluated
0
461 qstyleoption_cast<const QStyleOptionSlider*>(option)) {
const QStyleOp...ider*>(option)Description
TRUEnever evaluated
FALSEnever evaluated
0
462 const QPixmapStyleDescriptor desc =-
463 d->descriptors.value(slider->orientation == Qt::Horizontal-
464 ? SB_Horizontal : SB_Vertical);-
465 return slider->orientation == Qt::Horizontal
never executed: return slider->orientation == Qt::Horizontal ? desc.size.height() : desc.size.width();
0
466 ? desc.size.height() : desc.size.width();
never executed: return slider->orientation == Qt::Horizontal ? desc.size.height() : desc.size.width();
0
467 }-
468 break;
never executed: break;
0
469 case PM_ScrollBarSliderMin:
never executed: case PM_ScrollBarSliderMin:
0
470 return 0;
never executed: return 0;
0
471 default: ;
never executed: default:
0
472 }
never executed: end of block
0
473-
474 return QCommonStyle::pixelMetric(metric, option, widget);
never executed: return QCommonStyle::pixelMetric(metric, option, widget);
0
475}-
476-
477/*!-
478 \reimp-
479*/-
480int QPixmapStyle::styleHint(StyleHint hint, const QStyleOption *option,-
481 const QWidget *widget, QStyleHintReturn *returnData) const-
482{-
483 switch (hint) {-
484 case SH_EtchDisabledText:
never executed: case SH_EtchDisabledText:
0
485 return false;
never executed: return false;
0
486 case SH_ComboBox_Popup:
never executed: case SH_ComboBox_Popup:
0
487 return false;
never executed: return false;
0
488 default: ;
never executed: default:
0
489 }
never executed: end of block
0
490-
491 return QCommonStyle::styleHint(hint, option, widget, returnData);
never executed: return QCommonStyle::styleHint(hint, option, widget, returnData);
0
492}-
493-
494/*!-
495 \reimp-
496*/-
497QStyle::SubControl QPixmapStyle::hitTestComplexControl(QStyle::ComplexControl control,-
498 const QStyleOptionComplex *option,-
499 const QPoint &pos,-
500 const QWidget *widget) const-
501{-
502 const SubControl sc = QCommonStyle::hitTestComplexControl(control, option, pos, widget);-
503 if (control == CC_ScrollBar) {
control == CC_ScrollBarDescription
TRUEnever evaluated
FALSEnever evaluated
0
504 if (sc == SC_ScrollBarAddLine)
sc == SC_ScrollBarAddLineDescription
TRUEnever evaluated
FALSEnever evaluated
0
505 return SC_ScrollBarAddPage;
never executed: return SC_ScrollBarAddPage;
0
506 else if (sc == SC_ScrollBarSubLine)
sc == SC_ScrollBarSubLineDescription
TRUEnever evaluated
FALSEnever evaluated
0
507 return SC_ScrollBarSubPage;
never executed: return SC_ScrollBarSubPage;
0
508 }
never executed: end of block
0
509-
510 return sc;
never executed: return sc;
0
511}-
512-
513/*!-
514 \reimp-
515*/-
516bool QPixmapStyle::eventFilter(QObject *watched, QEvent *event)-
517{-
518 Q_D(QPixmapStyle);-
519-
520 if (QSlider *slider = qobject_cast<QSlider*>(watched)) {
QSlider *slide...der*>(watched)Description
TRUEnever evaluated
FALSEnever evaluated
0
521 switch (event->type()) {-
522 case QEvent::MouseButtonPress:
never executed: case QEvent::MouseButtonPress:
0
523 case QEvent::MouseButtonRelease:
never executed: case QEvent::MouseButtonRelease:
0
524 case QEvent::MouseMove:
never executed: case QEvent::MouseMove:
0
525 slider->update();-
526 break;
never executed: break;
0
527 default: ;
never executed: default:
0
528 }
never executed: end of block
0
529 }-
530-
531 if (QComboBox *comboBox = qobject_cast<QComboBox*>(watched)) {
QComboBox *com...Box*>(watched)Description
TRUEnever evaluated
FALSEnever evaluated
0
532 switch (event->type()) {-
533 case QEvent::MouseButtonPress:
never executed: case QEvent::MouseButtonPress:
0
534 event->ignore();-
535 comboBox->setProperty("_pixmapstyle_combobox_pressed", true);-
536 comboBox->repaint();-
537 return true;
never executed: return true;
0
538 case QEvent::MouseButtonRelease:
never executed: case QEvent::MouseButtonRelease:
0
539 comboBox->setProperty("_pixmapstyle_combobox_pressed", false);-
540 comboBox->repaint();-
541 if ( comboBox->view() ) {
comboBox->view()Description
TRUEnever evaluated
FALSEnever evaluated
0
542 if ( comboBox->view()->isVisible() || (!comboBox->isEnabled()))
comboBox->view()->isVisible()Description
TRUEnever evaluated
FALSEnever evaluated
(!comboBox->isEnabled())Description
TRUEnever evaluated
FALSEnever evaluated
0
543 comboBox->hidePopup();
never executed: comboBox->hidePopup();
0
544 else-
545 comboBox->showPopup();
never executed: comboBox->showPopup();
0
546 }-
547 break;
never executed: break;
0
548 default: ;
never executed: default:
0
549 }
never executed: end of block
0
550 }-
551-
552 if (qstrcmp(watched->metaObject()->className(),"QComboBoxPrivateContainer") == 0) {
qstrcmp(watche...ntainer") == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
553 if (event->type() == QEvent::Show) {
event->type() == QEvent::ShowDescription
TRUEnever evaluated
FALSEnever evaluated
0
554 QWidget *widget = qobject_cast<QWidget*>(watched);-
555 int yPopup = widget->geometry().top();-
556 int yCombo = widget->parentWidget()->mapToGlobal(QPoint(0, 0)).y();-
557 QRect geom = widget->geometry();-
558 const QPixmapStyleDescriptor &desc = d->descriptors.value(DD_ButtonEnabled);-
559 const bool up = yPopup < yCombo;-
560 geom.moveTop(geom.top() + (up ? desc.margins.top() : -desc.margins.bottom()));-
561 widget->setGeometry(geom);-
562 widget->setProperty("_pixmapstyle_combobox_up", up);-
563 widget->parentWidget()->setProperty("_pixmapstyle_combobox_up", up);-
564 }
never executed: end of block
0
565 }
never executed: end of block
0
566-
567 return QCommonStyle::eventFilter(watched, event);
never executed: return QCommonStyle::eventFilter(watched, event);
0
568}-
569-
570/*!-
571 \fn void QPixmapStyle::addDescriptor(QPixmapStyle::ControlDescriptor control, const QString &fileName, QMargins margins, QTileRules tileRules)-
572-
573 Associates the pixmap having the given \a fileName with the given \a control. The \a margins parameter describe the boundaries-
574 of the pixmap's top-left, top-right, bottom-left and bottom-right corners, as well as the left, right, top and bottorm segments-
575 and the middle. The \a tileRules parameter describes how QPixmapStyle is supposed to handle the scaling of the center of the pixmap.-
576-
577 Use QPixmapStyle::addPixmap() for controls that are not resizable.-
578-
579 \snippet styles/qcustompixmapstyle.cpp 1-
580-
581 \sa addPixmap, copyDescriptor-
582-
583*/-
584void QPixmapStyle::addDescriptor(QPixmapStyle::ControlDescriptor control, const QString &fileName,-
585 QMargins margins, QTileRules tileRules)-
586{-
587 Q_D(QPixmapStyle);-
588-
589 QPixmapStyleDescriptor desc;-
590 QImage image(fileName);-
591-
592 if (image.isNull())
image.isNull()Description
TRUEnever evaluated
FALSEnever evaluated
0
593 return;
never executed: return;
0
594-
595 desc.fileName = fileName;-
596 desc.margins = margins;-
597 desc.tileRules = tileRules;-
598 desc.size = image.size();-
599-
600 d->descriptors[control] = desc;-
601}
never executed: end of block
0
602-
603/*!-
604 \fn void QPixmapStyle::copyDescriptor(QPixmapStyle::ControlDescriptor source, QPixmapStyle::ControlDescriptor dest)-
605-
606 Copies the data associated with the \a source descriptor to the \a dest descriptor.-
607-
608 \snippet styles/qcustompixmapstyle.cpp 2-
609*/-
610-
611void QPixmapStyle::copyDescriptor(QPixmapStyle::ControlDescriptor source,-
612 QPixmapStyle::ControlDescriptor dest)-
613{-
614 Q_D(QPixmapStyle);-
615 d->descriptors[dest] = d->descriptors.value(source);-
616}
never executed: end of block
0
617-
618/*!-
619 \fn void QPixmapStyle::drawCachedPixmap(QPixmapStyle::ControlDescriptor control, const QRect &rect, QPainter *painter) const-
620-
621 Draws the image associated with the current \a control on the given \a rect using the given \a painter.-
622*/-
623void QPixmapStyle::drawCachedPixmap(QPixmapStyle::ControlDescriptor control, const QRect &rect,-
624 QPainter *p) const-
625{-
626 Q_D(const QPixmapStyle);-
627 if (!d->descriptors.contains(control))
!d->descriptor...tains(control)Description
TRUEnever evaluated
FALSEnever evaluated
0
628 return;
never executed: return;
0
629 const QPixmapStyleDescriptor &desc = d->descriptors.value(control);-
630 const QPixmap pix = d->getCachedPixmap(control, desc, rect.size());-
631 Q_ASSERT(!pix.isNull());-
632 p->drawPixmap(rect, pix);-
633}
never executed: end of block
0
634-
635/*!-
636 \fn void QPixmapStyle::addPixmap(ControlPixmap control, const QString &fileName, QMargins margins)-
637-
638 Use this function to style statically sized controls such as check boxes.-
639-
640 \sa addDescriptor, copyPixmap-
641*/-
642void QPixmapStyle::addPixmap(ControlPixmap control, const QString &fileName,-
643 QMargins margins)-
644{-
645 Q_D(QPixmapStyle);-
646-
647 QPixmapStylePixmap pix;-
648 QPixmap image(fileName);-
649-
650 if (image.isNull())
image.isNull()Description
TRUEnever evaluated
FALSEnever evaluated
0
651 return;
never executed: return;
0
652-
653 pix.pixmap = image;-
654 pix.margins = margins;-
655-
656 d->pixmaps[control] = pix;-
657}
never executed: end of block
0
658-
659/*-
660 \fn void QPixmapStyle::copyPixmap(QPixmapStyle::ControlPixmap source, QPixmapStyle::ControlPixmap dest)-
661-
662 Copies the data associated with the \a source pixmap to the \a dest pixmap.-
663-
664 \sa addPixmap, addDescriptor, copyDescriptor-
665*/-
666void QPixmapStyle::copyPixmap(QPixmapStyle::ControlPixmap source, QPixmapStyle::ControlPixmap dest)-
667{-
668 Q_D(QPixmapStyle);-
669 d->pixmaps[dest] = d->pixmaps.value(source);-
670}
never executed: end of block
0
671-
672/*!-
673 \internal-
674-
675 Constructs a QPixmapStyle object.-
676*/-
677QPixmapStyle::QPixmapStyle(QPixmapStylePrivate &dd)-
678 : QCommonStyle(dd)-
679{}
never executed: end of block
0
680-
681void QPixmapStyle::drawPushButton(const QStyleOption *option,-
682 QPainter *painter, const QWidget *) const-
683{-
684 const bool checked = option->state & State_On;-
685 const bool pressed = option->state & State_Sunken;-
686 const bool enabled = option->state & State_Enabled;-
687-
688 ControlDescriptor control = PB_Enabled;-
689 if (enabled)
enabledDescription
TRUEnever evaluated
FALSEnever evaluated
0
690 control = pressed ? PB_Pressed : (checked ? PB_Checked : PB_Enabled);
never executed: control = pressed ? PB_Pressed : (checked ? PB_Checked : PB_Enabled);
pressedDescription
TRUEnever evaluated
FALSEnever evaluated
checkedDescription
TRUEnever evaluated
FALSEnever evaluated
0
691 else-
692 control = checked ? PB_PressedDisabled : PB_Disabled;
never executed: control = checked ? PB_PressedDisabled : PB_Disabled;
checkedDescription
TRUEnever evaluated
FALSEnever evaluated
0
693 drawCachedPixmap(control, option->rect, painter);-
694}
never executed: end of block
0
695-
696void QPixmapStyle::drawLineEdit(const QStyleOption *option,-
697 QPainter *painter, const QWidget *widget) const-
698{-
699 // Don't draw for the line edit inside a combobox-
700 if (widget && qobject_cast<const QComboBox*>(widget->parentWidget()))
widgetDescription
TRUEnever evaluated
FALSEnever evaluated
qobject_cast<c...arentWidget())Description
TRUEnever evaluated
FALSEnever evaluated
0
701 return;
never executed: return;
0
702-
703 const bool enabled = option->state & State_Enabled;-
704 const bool focused = option->state & State_HasFocus;-
705 ControlDescriptor control = enabled ? (focused ? LE_Focused : LE_Enabled) : LE_Disabled;
enabledDescription
TRUEnever evaluated
FALSEnever evaluated
focusedDescription
TRUEnever evaluated
FALSEnever evaluated
0
706 drawCachedPixmap(control, option->rect, painter);-
707}
never executed: end of block
0
708-
709void QPixmapStyle::drawTextEdit(const QStyleOption *option,-
710 QPainter *painter, const QWidget *) const-
711{-
712 const bool enabled = option->state & State_Enabled;-
713 const bool focused = option->state & State_HasFocus;-
714 ControlDescriptor control = enabled ? (focused ? TE_Focused : TE_Enabled) : TE_Disabled;
enabledDescription
TRUEnever evaluated
FALSEnever evaluated
focusedDescription
TRUEnever evaluated
FALSEnever evaluated
0
715 drawCachedPixmap(control, option->rect, painter);-
716}
never executed: end of block
0
717-
718void QPixmapStyle::drawCheckBox(const QStyleOption *option,-
719 QPainter *painter, const QWidget *) const-
720{-
721 Q_D(const QPixmapStyle);-
722-
723 const QStyleOptionButton *button = qstyleoption_cast<const QStyleOptionButton*>(option);-
724-
725 const bool down = button->state & State_Sunken;-
726 const bool enabled = button->state & State_Enabled;-
727 const bool on = button->state & State_On;-
728-
729 ControlPixmap control;-
730 if (enabled)
enabledDescription
TRUEnever evaluated
FALSEnever evaluated
0
731 control = on ? (down ? CB_PressedChecked : CB_Checked) : (down ? CB_Pressed : CB_Enabled);
never executed: control = on ? (down ? CB_PressedChecked : CB_Checked) : (down ? CB_Pressed : CB_Enabled);
onDescription
TRUEnever evaluated
FALSEnever evaluated
downDescription
TRUEnever evaluated
FALSEnever evaluated
downDescription
TRUEnever evaluated
FALSEnever evaluated
0
732 else-
733 control = on ? CB_DisabledChecked : CB_Disabled;
never executed: control = on ? CB_DisabledChecked : CB_Disabled;
onDescription
TRUEnever evaluated
FALSEnever evaluated
0
734 painter->drawPixmap(button->rect, d->pixmaps.value(control).pixmap);-
735}
never executed: end of block
0
736-
737void QPixmapStyle::drawRadioButton(const QStyleOption *option,-
738 QPainter *painter, const QWidget *) const-
739{-
740 Q_D(const QPixmapStyle);-
741-
742 const QStyleOptionButton *button = qstyleoption_cast<const QStyleOptionButton*>(option);-
743-
744 const bool down = button->state & State_Sunken;-
745 const bool enabled = button->state & State_Enabled;-
746 const bool on = button->state & State_On;-
747-
748 ControlPixmap control;-
749 if (enabled)
enabledDescription
TRUEnever evaluated
FALSEnever evaluated
0
750 control = on ? RB_Checked : (down ? RB_Pressed : RB_Enabled);
never executed: control = on ? RB_Checked : (down ? RB_Pressed : RB_Enabled);
onDescription
TRUEnever evaluated
FALSEnever evaluated
downDescription
TRUEnever evaluated
FALSEnever evaluated
0
751 else-
752 control = on ? RB_DisabledChecked : RB_Disabled;
never executed: control = on ? RB_DisabledChecked : RB_Disabled;
onDescription
TRUEnever evaluated
FALSEnever evaluated
0
753 painter->drawPixmap(button->rect, d->pixmaps.value(control).pixmap);-
754}
never executed: end of block
0
755-
756void QPixmapStyle::drawPanelItemViewItem(const QStyleOption *option, QPainter *painter,-
757 const QWidget *widget) const-
758{-
759 Q_D(const QPixmapStyle);-
760-
761 ControlPixmap cp = ID_Separator;-
762 ControlDescriptor cd = ID_Selected;-
763-
764 if (widget && widget->property("_pixmap_combobox_list").toBool()) {
widgetDescription
TRUEnever evaluated
FALSEnever evaluated
widget->proper...ist").toBool()Description
TRUEnever evaluated
FALSEnever evaluated
0
765 cp = DD_ItemSeparator;-
766 cd = DD_ItemSelected;-
767 }
never executed: end of block
0
768-
769 QPixmap pix = d->pixmaps.value(cp).pixmap;-
770 QRect rect = option->rect;-
771 rect.setBottom(rect.top() + pix.height()-1);-
772 painter->drawPixmap(rect, pix);-
773 if (option->state & QStyle::State_Selected) {
option->state ...State_SelectedDescription
TRUEnever evaluated
FALSEnever evaluated
0
774 rect = option->rect;-
775 rect.setTop(rect.top() + pix.height());-
776 drawCachedPixmap(cd, rect, painter);-
777 }
never executed: end of block
0
778}
never executed: end of block
0
779-
780void QPixmapStyle::drawProgressBarBackground(const QStyleOption *option,-
781 QPainter *painter, const QWidget *) const-
782{-
783 bool vertical = false;-
784 if (const QStyleOptionProgressBar *pb =
const QStyleOp...Bar *>(option)Description
TRUEnever evaluated
FALSEnever evaluated
0
785 qstyleoption_cast<const QStyleOptionProgressBar *>(option)) {
const QStyleOp...Bar *>(option)Description
TRUEnever evaluated
FALSEnever evaluated
0
786 vertical = pb->orientation == Qt::Vertical;-
787 }
never executed: end of block
0
788 drawCachedPixmap(vertical ? PB_VBackground : PB_HBackground, option->rect, painter);-
789}
never executed: end of block
0
790-
791void QPixmapStyle::drawProgressBarLabel(const QStyleOption *option,-
792 QPainter *painter, const QWidget *) const-
793{-
794 if (const QStyleOptionProgressBar *pb =
const QStyleOp...Bar *>(option)Description
TRUEnever evaluated
FALSEnever evaluated
0
795 qstyleoption_cast<const QStyleOptionProgressBar *>(option)) {
const QStyleOp...Bar *>(option)Description
TRUEnever evaluated
FALSEnever evaluated
0
796 const bool vertical = pb->orientation == Qt::Vertical;-
797 if (!vertical) {
!verticalDescription
TRUEnever evaluated
FALSEnever evaluated
0
798 QPalette::ColorRole textRole = QPalette::ButtonText;-
799 proxy()->drawItemText(painter, pb->rect,-
800 Qt::AlignCenter | Qt::TextSingleLine, pb->palette,-
801 pb->state & State_Enabled, pb->text, textRole);-
802 }
never executed: end of block
0
803 }
never executed: end of block
0
804}
never executed: end of block
0
805-
806void QPixmapStyle::drawProgressBarFill(const QStyleOption *option,-
807 QPainter *painter, const QWidget *) const-
808{-
809 const QStyleOptionProgressBar *pbar =-
810 qstyleoption_cast<const QStyleOptionProgressBar*>(option);-
811 const bool vertical = pbar->orientation == Qt::Vertical;-
812 const bool flip = (pbar->direction == Qt::RightToLeft) ^ pbar->invertedAppearance;-
813-
814 if (pbar->progress == pbar->maximum) {
pbar->progress... pbar->maximumDescription
TRUEnever evaluated
FALSEnever evaluated
0
815 drawCachedPixmap(vertical ? PB_VComplete : PB_HComplete, option->rect, painter);-
816-
817 } else {
never executed: end of block
0
818 if (pbar->progress == 0)
pbar->progress == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
819 return;
never executed: return;
0
820 const int maximum = pbar->maximum;-
821 const qreal ratio = qreal(vertical?option->rect.height():option->rect.width())/maximum;-
822 const int progress = pbar->progress*ratio;-
823-
824 QRect optRect = option->rect;-
825 if (vertical) {
verticalDescription
TRUEnever evaluated
FALSEnever evaluated
0
826 if (flip)
flipDescription
TRUEnever evaluated
FALSEnever evaluated
0
827 optRect.setBottom(optRect.top()+progress-1);
never executed: optRect.setBottom(optRect.top()+progress-1);
0
828 else-
829 optRect.setTop(optRect.bottom()-progress+1);
never executed: optRect.setTop(optRect.bottom()-progress+1);
0
830 } else {-
831 if (flip)
flipDescription
TRUEnever evaluated
FALSEnever evaluated
0
832 optRect.setLeft(optRect.right()-progress+1);
never executed: optRect.setLeft(optRect.right()-progress+1);
0
833 else-
834 optRect.setRight(optRect.left()+progress-1);
never executed: optRect.setRight(optRect.left()+progress-1);
0
835 }-
836-
837 drawCachedPixmap(vertical ? PB_VContent : PB_HContent, optRect, painter);-
838 }
never executed: end of block
0
839}-
840-
841void QPixmapStyle::drawSlider(const QStyleOptionComplex *option,-
842 QPainter *painter, const QWidget *widget) const-
843{-
844 Q_D(const QPixmapStyle);-
845-
846 const QStyleOptionSlider *slider = qstyleoption_cast<const QStyleOptionSlider*>(option);-
847 if (!slider)
!sliderDescription
TRUEnever evaluated
FALSEnever evaluated
0
848 return;
never executed: return;
0
849-
850 const bool enabled = option->state & State_Enabled;-
851 const bool pressed = option->state & State_Sunken;-
852 const Qt::Orientation orient = slider->orientation;-
853-
854 const QRect handle = proxy()->subControlRect(CC_Slider, option, SC_SliderHandle, widget);-
855 if (option->subControls & SC_SliderGroove) {
option->subCon...C_SliderGrooveDescription
TRUEnever evaluated
FALSEnever evaluated
0
856 QRect groove = proxy()->subControlRect(CC_Slider, option, SC_SliderGroove, widget);-
857 if (groove.isValid()) {
groove.isValid()Description
TRUEnever evaluated
FALSEnever evaluated
0
858 // Draw the background-
859 ControlDescriptor control;-
860 if (orient == Qt::Horizontal)
orient == Qt::HorizontalDescription
TRUEnever evaluated
FALSEnever evaluated
0
861 control = enabled ? SG_HEnabled : SG_HDisabled;
never executed: control = enabled ? SG_HEnabled : SG_HDisabled;
enabledDescription
TRUEnever evaluated
FALSEnever evaluated
0
862 else-
863 control = enabled ? SG_VEnabled : SG_VDisabled;
never executed: control = enabled ? SG_VEnabled : SG_VDisabled;
enabledDescription
TRUEnever evaluated
FALSEnever evaluated
0
864 drawCachedPixmap(control, groove, painter);-
865-
866 // Draw the active part-
867 if (orient == Qt::Horizontal) {
orient == Qt::HorizontalDescription
TRUEnever evaluated
FALSEnever evaluated
0
868 control = enabled ? (pressed ? SG_HActivePressed : SG_HActiveEnabled )
enabledDescription
TRUEnever evaluated
FALSEnever evaluated
pressedDescription
TRUEnever evaluated
FALSEnever evaluated
0
869 : SG_HActiveDisabled;-
870 } else {
never executed: end of block
0
871 control = enabled ? (pressed ? SG_VActivePressed : SG_VActiveEnabled )
enabledDescription
TRUEnever evaluated
FALSEnever evaluated
pressedDescription
TRUEnever evaluated
FALSEnever evaluated
0
872 : SG_VActiveDisabled;-
873 }
never executed: end of block
0
874 const QPixmapStyleDescriptor &desc = d->descriptors.value(control);-
875 const QPixmap pix = d->getCachedPixmap(control, desc, groove.size());-
876 if (!pix.isNull()) {
!pix.isNull()Description
TRUEnever evaluated
FALSEnever evaluated
0
877 groove.setRight(orient == Qt::Horizontal-
878 ? handle.center().x() : handle.center().y());-
879 painter->drawPixmap(groove, pix, groove);-
880 }
never executed: end of block
0
881 }
never executed: end of block
0
882 }
never executed: end of block
0
883 if (option->subControls & SC_SliderHandle) {
option->subCon...C_SliderHandleDescription
TRUEnever evaluated
FALSEnever evaluated
0
884 if (handle.isValid()) {
handle.isValid()Description
TRUEnever evaluated
FALSEnever evaluated
0
885 ControlPixmap pix;-
886 if (orient == Qt::Horizontal)
orient == Qt::HorizontalDescription
TRUEnever evaluated
FALSEnever evaluated
0
887 pix = enabled ? (pressed ? SH_HPressed : SH_HEnabled) : SH_HDisabled;
never executed: pix = enabled ? (pressed ? SH_HPressed : SH_HEnabled) : SH_HDisabled;
enabledDescription
TRUEnever evaluated
FALSEnever evaluated
pressedDescription
TRUEnever evaluated
FALSEnever evaluated
0
888 else-
889 pix = enabled ? (pressed ? SH_VPressed : SH_VEnabled) : SH_VDisabled;
never executed: pix = enabled ? (pressed ? SH_VPressed : SH_VEnabled) : SH_VDisabled;
enabledDescription
TRUEnever evaluated
FALSEnever evaluated
pressedDescription
TRUEnever evaluated
FALSEnever evaluated
0
890 painter->drawPixmap(handle, d->pixmaps.value(pix).pixmap);-
891 }
never executed: end of block
0
892 }
never executed: end of block
0
893}
never executed: end of block
0
894-
895void QPixmapStyle::drawComboBox(const QStyleOptionComplex *option,-
896 QPainter *painter, const QWidget *widget) const-
897{-
898 Q_D(const QPixmapStyle);-
899-
900 const bool enabled = option->state & State_Enabled;-
901 const bool pressed = widget->property("_pixmapstyle_combobox_pressed").toBool();-
902 const bool opened = option->state & State_On;-
903-
904 ControlDescriptor control =-
905 enabled ? (pressed ? DD_ButtonPressed : DD_ButtonEnabled) : DD_ButtonDisabled;
enabledDescription
TRUEnever evaluated
FALSEnever evaluated
pressedDescription
TRUEnever evaluated
FALSEnever evaluated
0
906 drawCachedPixmap(control, option->rect, painter);-
907-
908 ControlPixmap cp = enabled ? (opened ? DD_ArrowOpen
enabledDescription
TRUEnever evaluated
FALSEnever evaluated
openedDescription
TRUEnever evaluated
FALSEnever evaluated
0
909 : (pressed ? DD_ArrowPressed : DD_ArrowEnabled))
pressedDescription
TRUEnever evaluated
FALSEnever evaluated
0
910 : DD_ArrowDisabled;-
911 QPixmapStylePixmap pix = d->pixmaps.value(cp);-
912 QRect rect = comboBoxSubControlRect(option, SC_ComboBoxArrow, widget);-
913 painter->drawPixmap(rect, pix.pixmap);-
914}
never executed: end of block
0
915-
916void QPixmapStyle::drawScrollBar(const QStyleOptionComplex *option,-
917 QPainter *painter, const QWidget *widget) const-
918{-
919 if (const QStyleOptionSlider *slider =
const QStyleOp...ider*>(option)Description
TRUEnever evaluated
FALSEnever evaluated
0
920 qstyleoption_cast<const QStyleOptionSlider*>(option)) {
const QStyleOp...ider*>(option)Description
TRUEnever evaluated
FALSEnever evaluated
0
921 // Do not draw the scrollbar-
922 if (slider->minimum == slider->maximum)
slider->minimu...lider->maximumDescription
TRUEnever evaluated
FALSEnever evaluated
0
923 return;
never executed: return;
0
924-
925 QRect rect = scrollBarSubControlRect(option, SC_ScrollBarSlider, widget);-
926 ControlDescriptor control = slider->orientation == Qt::Horizontal
slider->orient...Qt::HorizontalDescription
TRUEnever evaluated
FALSEnever evaluated
0
927 ? SB_Horizontal : SB_Vertical;-
928 drawCachedPixmap(control, rect, painter);-
929 }
never executed: end of block
0
930}
never executed: end of block
0
931-
932QSize QPixmapStyle::pushButtonSizeFromContents(const QStyleOption *option,-
933 const QSize &contentsSize,-
934 const QWidget *widget) const-
935{-
936 Q_D(const QPixmapStyle);-
937-
938 const QPixmapStyleDescriptor &desc = d->descriptors.value(PB_Enabled);-
939 const int bm = proxy()->pixelMetric(PM_ButtonMargin, option, widget);-
940-
941 int w = contentsSize.width();-
942 int h = contentsSize.height();-
943 w += desc.margins.left() + desc.margins.right() + bm;-
944 h += desc.margins.top() + desc.margins.bottom() + bm;-
945-
946 return d->computeSize(desc, w, h);
never executed: return d->computeSize(desc, w, h);
0
947}-
948-
949QSize QPixmapStyle::lineEditSizeFromContents(const QStyleOption *,-
950 const QSize &contentsSize, const QWidget *) const-
951{-
952 Q_D(const QPixmapStyle);-
953-
954 const QPixmapStyleDescriptor &desc = d->descriptors.value(LE_Enabled);-
955 const int border = 2 * proxy()->pixelMetric(PM_DefaultFrameWidth);-
956-
957 int w = contentsSize.width() + border + desc.margins.left() + desc.margins.right();-
958 int h = contentsSize.height() + border + desc.margins.top() + desc.margins.bottom();-
959-
960 return d->computeSize(desc, w, h);
never executed: return d->computeSize(desc, w, h);
0
961}-
962-
963QSize QPixmapStyle::progressBarSizeFromContents(const QStyleOption *option,-
964 const QSize &contentsSize,-
965 const QWidget *widget) const-
966{-
967 Q_D(const QPixmapStyle);-
968-
969 bool vertical = false;-
970 if (const QStyleOptionProgressBar *pb =
const QStyleOp...Bar *>(option)Description
TRUEnever evaluated
FALSEnever evaluated
0
971 qstyleoption_cast<const QStyleOptionProgressBar *>(option)) {
const QStyleOp...Bar *>(option)Description
TRUEnever evaluated
FALSEnever evaluated
0
972 vertical = pb->orientation == Qt::Vertical;-
973 }
never executed: end of block
0
974 QSize result = QCommonStyle::sizeFromContents(CT_Slider, option, contentsSize, widget);-
975 if (vertical) {
verticalDescription
TRUEnever evaluated
FALSEnever evaluated
0
976 const QPixmapStyleDescriptor desc = d->descriptors.value(PB_VBackground);-
977 return QSize(desc.size.height(), result.height());
never executed: return QSize(desc.size.height(), result.height());
0
978 } else {-
979 const QPixmapStyleDescriptor desc = d->descriptors.value(PB_HBackground);-
980 return QSize(result.width(), desc.size.height());
never executed: return QSize(result.width(), desc.size.height());
0
981 }-
982}-
983-
984QSize QPixmapStyle::sliderSizeFromContents(const QStyleOption *option,-
985 const QSize &contentsSize,-
986 const QWidget *widget) const-
987{-
988 Q_D(const QPixmapStyle);-
989-
990 const QStyleOptionSlider *slider = qstyleoption_cast<const QStyleOptionSlider*>(option);-
991 if (!slider)
!sliderDescription
TRUEnever evaluated
FALSEnever evaluated
0
992 return QSize();
never executed: return QSize();
0
993-
994 QSize result = QCommonStyle::sizeFromContents(CT_Slider, option, contentsSize, widget);-
995-
996 const QPixmapStyleDescriptor desc = d->descriptors.value(slider->orientation == Qt::Horizontal-
997 ? SG_HEnabled : SG_VEnabled);-
998-
999 if (slider->orientation == Qt::Horizontal)
slider->orient...Qt::HorizontalDescription
TRUEnever evaluated
FALSEnever evaluated
0
1000 return QSize(result.width(), desc.size.height());
never executed: return QSize(result.width(), desc.size.height());
0
1001 else-
1002 return QSize(desc.size.width(), result.height());
never executed: return QSize(desc.size.width(), result.height());
0
1003}-
1004-
1005QSize QPixmapStyle::comboBoxSizeFromContents(const QStyleOption *option,-
1006 const QSize &contentsSize,-
1007 const QWidget *widget) const-
1008{-
1009 Q_D(const QPixmapStyle);-
1010-
1011 const QPixmapStyleDescriptor &desc = d->descriptors.value(DD_ButtonEnabled);-
1012-
1013 QSize result = QCommonStyle::sizeFromContents(CT_ComboBox, option, contentsSize, widget);-
1014 return d->computeSize(desc, result.width(), result.height());
never executed: return d->computeSize(desc, result.width(), result.height());
0
1015}-
1016-
1017QSize QPixmapStyle::itemViewSizeFromContents(const QStyleOption *option,-
1018 const QSize &contentsSize,-
1019 const QWidget *widget) const-
1020{-
1021 Q_D(const QPixmapStyle);-
1022-
1023 QSize size = QCommonStyle::sizeFromContents(CT_ItemViewItem, option, contentsSize, widget);-
1024-
1025 ControlPixmap cp = ID_Separator;-
1026 ControlDescriptor cd = ID_Selected;-
1027 if (widget && widget->property("_pixmap_combobox_list").toBool()) {
widgetDescription
TRUEnever evaluated
FALSEnever evaluated
widget->proper...ist").toBool()Description
TRUEnever evaluated
FALSEnever evaluated
0
1028 cp = DD_ItemSeparator;-
1029 cd = DD_ItemSelected;-
1030 }
never executed: end of block
0
1031-
1032 const QPixmapStyleDescriptor &desc = d->descriptors.value(cd);-
1033 const QPixmapStylePixmap &pix = d->pixmaps.value(cp);-
1034 size.setHeight(qMax(size.height(),-
1035 desc.size.height() + pix.pixmap.height()));-
1036 return size;
never executed: return size;
0
1037}-
1038-
1039QRect QPixmapStyle::comboBoxSubControlRect(const QStyleOptionComplex *option,-
1040 QStyle::SubControl sc, const QWidget *) const-
1041{-
1042 Q_D(const QPixmapStyle);-
1043-
1044 QRect r = option->rect; // Default size-
1045 const QPixmapStylePixmap &pix = d->pixmaps.value(DD_ArrowEnabled);-
1046 const QPixmapStyleDescriptor &desc = d->descriptors.value(DD_ButtonEnabled);-
1047-
1048 switch (sc) {-
1049 case SC_ComboBoxArrow:
never executed: case SC_ComboBoxArrow:
0
1050 r.setRect(r.right() - pix.margins.right() - pix.pixmap.width(),-
1051 r.top() + pix.margins.top(),-
1052 pix.pixmap.width(), pix.pixmap.height());-
1053 break;
never executed: break;
0
1054 case SC_ComboBoxEditField:
never executed: case SC_ComboBoxEditField:
0
1055 r.adjust(desc.margins.left(), desc.margins.right(),-
1056 -desc.margins.right(), -desc.margins.bottom());-
1057 r.setRight(r.right() - pix.margins.right() - pix.margins.left() - pix.pixmap.width());-
1058 break;
never executed: break;
0
1059 default:
never executed: default:
0
1060 break;
never executed: break;
0
1061 }-
1062-
1063 r = visualRect(option->direction, option->rect, r);-
1064 return r;
never executed: return r;
0
1065}-
1066-
1067QRect QPixmapStyle::scrollBarSubControlRect(const QStyleOptionComplex *option,-
1068 QStyle::SubControl sc, const QWidget *) const-
1069{-
1070 if (const QStyleOptionSlider *slider =
const QStyleOp...ider*>(option)Description
TRUEnever evaluated
FALSEnever evaluated
0
1071 qstyleoption_cast<const QStyleOptionSlider*>(option)) {
const QStyleOp...ider*>(option)Description
TRUEnever evaluated
FALSEnever evaluated
0
1072 int length = (slider->orientation == Qt::Horizontal)
(slider->orien...t::Horizontal)Description
TRUEnever evaluated
FALSEnever evaluated
0
1073 ? slider->rect.width() : slider->rect.height();-
1074 int page = length * slider->pageStep-
1075 / (slider->maximum - slider->minimum + slider->pageStep);-
1076 int pos = length * slider->sliderValue-
1077 / (slider->maximum - slider->minimum + slider->pageStep);-
1078 pos = qMin(pos+page, length) - page;-
1079-
1080 QRect rect = slider->rect;-
1081-
1082 if (slider->orientation == Qt::Horizontal) {
slider->orient...Qt::HorizontalDescription
TRUEnever evaluated
FALSEnever evaluated
0
1083 switch (sc) {-
1084 case SC_ScrollBarAddPage:
never executed: case SC_ScrollBarAddPage:
0
1085 rect.setLeft(pos+page);-
1086 return rect;
never executed: return rect;
0
1087 case SC_ScrollBarSubPage:
never executed: case SC_ScrollBarSubPage:
0
1088 rect.setRight(pos);-
1089 return rect;
never executed: return rect;
0
1090 case SC_ScrollBarGroove:
never executed: case SC_ScrollBarGroove:
0
1091 return rect;
never executed: return rect;
0
1092 case SC_ScrollBarSlider:
never executed: case SC_ScrollBarSlider:
0
1093 rect.setLeft(pos);-
1094 rect.setRight(pos+page);-
1095 return rect;
never executed: return rect;
0
1096 default: ;
never executed: default:
0
1097 }
never executed: end of block
0
1098 } else {-
1099 switch (sc) {-
1100 case SC_ScrollBarAddPage:
never executed: case SC_ScrollBarAddPage:
0
1101 rect.setTop(pos+page);-
1102 return rect;
never executed: return rect;
0
1103 case SC_ScrollBarSubPage:
never executed: case SC_ScrollBarSubPage:
0
1104 rect.setBottom(pos);-
1105 return rect;
never executed: return rect;
0
1106 case SC_ScrollBarGroove:
never executed: case SC_ScrollBarGroove:
0
1107 return rect;
never executed: return rect;
0
1108 case SC_ScrollBarSlider:
never executed: case SC_ScrollBarSlider:
0
1109 rect.setTop(pos);-
1110 rect.setBottom(pos+page);-
1111 return rect;
never executed: return rect;
0
1112 default: ;
never executed: default:
0
1113 }
never executed: end of block
0
1114 }-
1115 }-
1116 return QRect();
never executed: return QRect();
0
1117}-
1118-
1119QPixmap QPixmapStylePrivate::scale(int w, int h, const QPixmap &pixmap, const QPixmapStyleDescriptor &desc)-
1120{-
1121 QPixmap result(w, h);-
1122 {-
1123 const QColor transparent(0, 0, 0, 0);-
1124 result.fill( transparent );-
1125 QPainter p( &result );-
1126 const QMargins margins = desc.margins;-
1127 qDrawBorderPixmap(&p, result.rect(), margins, pixmap,-
1128 pixmap.rect(), margins, desc.tileRules);-
1129 }-
1130 return result;
never executed: return result;
0
1131}-
1132-
1133QPixmap QPixmapStylePrivate::getCachedPixmap(QPixmapStyle::ControlDescriptor control,-
1134 const QPixmapStyleDescriptor &desc,-
1135 const QSize &size) const-
1136{-
1137 Q_Q(const QPixmapStyle);-
1138-
1139 const QString sizeString = QString::number(size.width()) % QLatin1Char('*')-
1140 % QString::number(size.height());-
1141 const QString key = QLatin1String(q->metaObject()->className()) % QString::number(control)-
1142 % QLatin1Char('@') % sizeString;-
1143-
1144 QPixmap result;-
1145-
1146 if (!QPixmapCache::find( key, &result)) {
!QPixmapCache:... key, &result)Description
TRUEnever evaluated
FALSEnever evaluated
0
1147 QPixmap source(desc.fileName);-
1148 result = scale(size.width(), size.height(), source, desc);-
1149 QPixmapCache::insert(key, result);-
1150 }
never executed: end of block
0
1151 return result;
never executed: return result;
0
1152}-
1153-
1154QSize QPixmapStylePrivate::computeSize(const QPixmapStyleDescriptor &desc, int width, int height) const-
1155{-
1156 if (desc.tileRules.horizontal != Qt::RepeatTile)
desc.tileRules...Qt::RepeatTileDescription
TRUEnever evaluated
FALSEnever evaluated
0
1157 width = qMax(width, desc.size.width());
never executed: width = qMax(width, desc.size.width());
0
1158 if (desc.tileRules.vertical != Qt::RepeatTile)
desc.tileRules...Qt::RepeatTileDescription
TRUEnever evaluated
FALSEnever evaluated
0
1159 height = qMax(height, desc.size.height());
never executed: height = qMax(height, desc.size.height());
0
1160 return QSize(width, height);
never executed: return QSize(width, height);
0
1161}-
1162-
1163QT_END_NAMESPACE-
Source codeSwitch to Preprocessed file

Generated by Squish Coco Non-Commercial 4.3.0-BETA-master-30-08-2018-4cb69e9