395
396
p->setPen(QPen(opt->palette.light(), 0));
396
397
p->drawLine(opt->rect.x() + opt->rect.width(), opt->rect.y(),
397
opt->rect.x() + opt->rect.width() / 2, opt->rect.height());
398
opt->rect.x() + opt->rect.width() / 2, opt->rect.y() + opt->rect.height());
398
399
p->setPen(QPen(opt->palette.dark(), 0));
399
pa.setPoint(0, opt->rect.x() + opt->rect.width() / 2, opt->rect.height());
400
pa.setPoint(0, opt->rect.x() + opt->rect.width() / 2, opt->rect.y() + opt->rect.height());
400
401
pa.setPoint(1, opt->rect.x(), opt->rect.y());
401
402
pa.setPoint(2, opt->rect.x() + opt->rect.width(), opt->rect.y());
402
403
p->drawPolyline(pa);
403
404
} else if (header->sortIndicator & QStyleOptionHeader::SortDown) {
405
406
p->setPen(QPen(opt->palette.light(), 0));
406
pa.setPoint(0, opt->rect.x(), opt->rect.height());
407
pa.setPoint(1, opt->rect.x() + opt->rect.width(), opt->rect.height());
407
pa.setPoint(0, opt->rect.x(), opt->rect.y() + opt->rect.height());
408
pa.setPoint(1, opt->rect.x() + opt->rect.width(), opt->rect.y() + opt->rect.height());
408
409
pa.setPoint(2, opt->rect.x() + opt->rect.width() / 2, opt->rect.y());
409
410
p->drawPolyline(pa);
410
411
p->setPen(QPen(opt->palette.dark(), 0));
411
p->drawLine(opt->rect.x(), opt->rect.height(),
412
p->drawLine(opt->rect.x(), opt->rect.y() + opt->rect.height(),
412
413
opt->rect.x() + opt->rect.width() / 2, opt->rect.y());
414
415
p->setPen(oldPen);
1348
} else if (corner == Qt::TopRightCorner) {
1350
for (int i = 0; i < 4; ++i) {
1351
p->setPen(QPen(opt->palette.light().color(), 1));
1352
p->drawLine(sx - 1, y, sw, sy + 1);
1353
p->setPen(QPen(opt->palette.dark().color(), 1));
1354
p->drawLine(sx, y, sw, sy);
1355
p->setPen(QPen(opt->palette.dark().color(), 1));
1356
p->drawLine(sx + 1, y, sw, sy - 1);
1360
} else if (corner == Qt::TopLeftCorner) {
1361
for (int i = 0; i < 4; ++i) {
1362
p->setPen(QPen(opt->palette.light().color(), 1));
1363
p->drawLine(x, sy - 1, sx - 1, y);
1364
p->setPen(QPen(opt->palette.dark().color(), 1));
1365
p->drawLine(x, sy, sx, y);
1366
p->setPen(QPen(opt->palette.dark().color(), 1));
1367
p->drawLine(x, sy + 1, sx + 1, y);
1819
1854
switch (twf->shape) {
1820
1855
case QTabBar::RoundedNorth:
1821
1856
case QTabBar::TriangularNorth:
1822
r = QRect(QPoint(0,twf->tabBarSize.height() - overlap), QSize(twf->rect.width(), twf->rect.height() - twf->tabBarSize.height() + overlap));
1857
r = QRect(QPoint(0,qMax(twf->tabBarSize.height() - overlap, 0)),
1858
QSize(twf->rect.width(), qMin(twf->rect.height() - twf->tabBarSize.height() + overlap, twf->rect.height())));
1824
1860
case QTabBar::RoundedSouth:
1825
1861
case QTabBar::TriangularSouth:
1826
r = QRect(QPoint(0,0), QSize(twf->rect.width(), twf->rect.height() - twf->tabBarSize.height() + overlap));
1862
r = QRect(QPoint(0,0), QSize(twf->rect.width(), qMin(twf->rect.height() - twf->tabBarSize.height() + overlap, twf->rect.height())));
1828
1864
case QTabBar::RoundedEast:
1829
1865
case QTabBar::TriangularEast:
1830
r = QRect(QPoint(0, 0), QSize(twf->rect.width() - twf->tabBarSize.width() + overlap, twf->rect.height()));
1866
r = QRect(QPoint(0, 0), QSize(qMin(twf->rect.width() - twf->tabBarSize.width() + overlap, twf->rect.width()), twf->rect.height()));
1832
1868
case QTabBar::RoundedWest:
1833
1869
case QTabBar::TriangularWest:
1834
r = QRect(QPoint(twf->tabBarSize.width() - overlap, 0), QSize(twf->rect.width() - twf->tabBarSize.width() + overlap, twf->rect.height()));
1870
r = QRect(QPoint(qMax(twf->tabBarSize.width() - overlap, 0), 0),
1871
QSize(qMin(twf->rect.width() - twf->tabBarSize.width() + overlap, twf->rect.width()), twf->rect.height()));
1837
1874
if (sr == SE_TabWidgetTabContents)
3026
3076
#ifndef QT_NO_GROUPBOX
3028
3078
if (const QStyleOptionGroupBox *groupBox = qstyleoption_cast<const QStyleOptionGroupBox *>(opt)) {
3031
int verticalAlignment = styleHint(SH_GroupBox_TextLabelVerticalAlignment, groupBox, widget);
3032
if (groupBox->text.size()) {
3033
topHeight = groupBox->fontMetrics.height();
3034
if (verticalAlignment & Qt::AlignVCenter)
3035
topMargin = topHeight / 2;
3036
else if (verticalAlignment & Qt::AlignTop)
3037
topMargin = topHeight;
3040
QRect frameRect = groupBox->rect;
3041
frameRect.setTop(topMargin);
3043
if (sc == SC_GroupBoxFrame) {
3048
if (sc == SC_GroupBoxContents) {
3080
case SC_GroupBoxFrame:
3082
case SC_GroupBoxContents: {
3085
int verticalAlignment = styleHint(SH_GroupBox_TextLabelVerticalAlignment, groupBox, widget);
3086
if (groupBox->text.size()) {
3087
topHeight = groupBox->fontMetrics.height();
3088
if (verticalAlignment & Qt::AlignVCenter)
3089
topMargin = topHeight / 2;
3090
else if (verticalAlignment & Qt::AlignTop)
3091
topMargin = topHeight;
3094
QRect frameRect = groupBox->rect;
3096
if (sc == SC_GroupBoxFrame) {
3097
frameRect.setTop(topMargin);
3050
3103
if ((groupBox->features & QStyleOptionFrameV2::Flat) == 0)
3051
margin = pixelMetric(PM_DefaultFrameWidth, groupBox, widget);
3052
ret = frameRect.adjusted(margin, margin + topHeight, -margin, -margin);
3056
QFontMetrics fontMetrics = groupBox->fontMetrics;
3057
int h = fontMetrics.height();
3058
int tw = fontMetrics.size(Qt::TextShowMnemonic, groupBox->text + QLatin1Char(' ')).width();
3059
int marg = (groupBox->features & QStyleOptionFrameV2::Flat) ? 0 : 8;
3060
ret = groupBox->rect.adjusted(marg, 1, -marg, 0);
3062
QRect labelRect = alignedRect(groupBox->direction, groupBox->textAlignment,
3065
int indicatorWidth = pixelMetric(PM_IndicatorWidth, opt, widget);
3066
int checkSpacing = pixelMetric(PM_CheckBoxLabelSpacing, opt, widget);
3067
bool hasCheckBox = groupBox->subControls & QStyle::SC_GroupBoxCheckBox;
3068
bool rtl = groupBox->direction == Qt::RightToLeft;
3071
labelRect.moveLeft(labelRect.left() + indicatorWidth + checkSpacing - 1);
3073
labelRect.moveLeft(labelRect.left() - indicatorWidth - checkSpacing + 1);
3076
if (sc == SC_GroupBoxLabel)
3079
if (sc == SC_GroupBoxCheckBox) {
3080
// Hmm... since I used alignedRect, I can't use visual rect down here.
3081
int indicatorHeight = pixelMetric(PM_IndicatorHeight, opt, widget);
3082
int left = rtl ? labelRect.right() - indicatorWidth : labelRect.left();
3084
left += rtl ? indicatorWidth + checkSpacing - 1 : -(indicatorWidth + checkSpacing) + 3;
3085
ret.setRect(left, ret.top() + (fontMetrics.height() - indicatorHeight) / 2,
3086
indicatorWidth, indicatorHeight);
3104
frameWidth = pixelMetric(PM_DefaultFrameWidth, groupBox, widget);
3105
ret = frameRect.adjusted(frameWidth, frameWidth + topHeight, -frameWidth, -frameWidth);
3108
case SC_GroupBoxCheckBox:
3110
case SC_GroupBoxLabel: {
3111
QFontMetrics fontMetrics = groupBox->fontMetrics;
3112
int h = fontMetrics.height();
3113
int tw = fontMetrics.size(Qt::TextShowMnemonic, groupBox->text + QLatin1Char(' ')).width();
3114
int marg = (groupBox->features & QStyleOptionFrameV2::Flat) ? 0 : 8;
3115
ret = groupBox->rect.adjusted(marg, 0, -marg, 0);
3118
int indicatorWidth = pixelMetric(PM_IndicatorWidth, opt, widget);
3119
int indicatorSpace = pixelMetric(PM_CheckBoxLabelSpacing, opt, widget) - 1;
3120
bool hasCheckBox = groupBox->subControls & QStyle::SC_GroupBoxCheckBox;
3121
int checkBoxSize = hasCheckBox ? (indicatorWidth + indicatorSpace) : 0;
3123
// Adjusted rect for label + indicatorWidth + indicatorSpace
3124
QRect totalRect = alignedRect(groupBox->direction, groupBox->textAlignment,
3125
QSize(tw + checkBoxSize, h), ret);
3127
// Adjust totalRect if checkbox is set
3129
bool ltr = groupBox->direction == Qt::LeftToRight;
3131
// Adjust for check box
3132
if (sc == SC_GroupBoxCheckBox) {
3133
int indicatorHeight = pixelMetric(PM_IndicatorHeight, opt, widget);
3134
left = ltr ? totalRect.left() : (totalRect.right() - indicatorWidth);
3135
int top = totalRect.top() + (fontMetrics.height() - indicatorHeight) / 2;
3136
totalRect.setRect(left, top, indicatorWidth, indicatorHeight);
3139
left = ltr ? (totalRect.left() + checkBoxSize - 2) : totalRect.left();
3140
totalRect.setRect(left, totalRect.top(),
3141
totalRect.width() - checkBoxSize, totalRect.height());
3090
3153
#endif // QT_NO_GROUPBOX
3092
qWarning("QCommonStyle::subControlRect case not handled %d", cc);
3155
qWarning("QCommonStyle::subControlRect: Case %d not handled", cc);
3697
3810
return QPixmap(filedialog_end_xpm);
3698
3811
#endif // QT_NO_IMAGEFORMAT_XPM
3699
3812
#ifndef QT_NO_IMAGEFORMAT_PNG
3813
case SP_ArrowForward:
3814
if (QApplication::layoutDirection() == Qt::RightToLeft)
3815
return standardPixmap(SP_ArrowLeft, option, widget);
3816
return standardPixmap(SP_ArrowRight, option, widget);
3818
if (QApplication::layoutDirection() == Qt::RightToLeft)
3819
return standardPixmap(SP_ArrowRight, option, widget);
3820
return standardPixmap(SP_ArrowLeft, option, widget);
3822
return QPixmap(QLatin1String(":/trolltech/styles/commonstyle/images/left-16.png"));
3824
return QPixmap(QLatin1String(":/trolltech/styles/commonstyle/images/right-16.png"));
3826
return QPixmap(QLatin1String(":/trolltech/styles/commonstyle/images/up-16.png"));
3828
return QPixmap(QLatin1String(":/trolltech/styles/commonstyle/images/down-16.png"));
3700
3829
case SP_FileDialogToParent:
3701
return QPixmap(QLatin1String(":/trolltech/styles/commonstyle/images/parentdir-16.png"));
3830
return standardPixmap(SP_ArrowUp, option, widget);
3702
3831
case SP_FileDialogNewFolder:
3703
3832
return QPixmap(QLatin1String(":/trolltech/styles/commonstyle/images/newdirectory-16.png"));
3704
3833
case SP_FileDialogDetailedView:
3737
3867
return QPixmap(QLatin1String(":/trolltech/styles/commonstyle/images/file-16.png"));
3738
3868
case SP_FileLinkIcon:
3739
3869
return QPixmap(QLatin1String(":/trolltech/styles/commonstyle/images/filelink-16.png"));
3870
case SP_DialogOkButton:
3871
return QPixmap(QLatin1String(":/trolltech/styles/commonstyle/images/standardbutton-ok-16.png"));
3872
case SP_DialogCancelButton:
3873
return QPixmap(QLatin1String(":/trolltech/styles/commonstyle/images/standardbutton-cancel-16.png"));
3874
case SP_DialogHelpButton:
3875
return QPixmap(QLatin1String(":/trolltech/styles/commonstyle/images/standardbutton-help-16.png"));
3876
case SP_DialogOpenButton:
3877
return QPixmap(QLatin1String(":/trolltech/styles/commonstyle/images/standardbutton-open-16.png"));
3878
case SP_DialogSaveButton:
3879
return QPixmap(QLatin1String(":/trolltech/styles/commonstyle/images/standardbutton-save-16.png"));
3880
case SP_DialogCloseButton:
3881
return QPixmap(QLatin1String(":/trolltech/styles/commonstyle/images/standardbutton-close-16.png"));
3882
case SP_DialogApplyButton:
3883
return QPixmap(QLatin1String(":/trolltech/styles/commonstyle/images/standardbutton-apply-16.png"));
3884
case SP_DialogResetButton:
3885
return QPixmap(QLatin1String(":/trolltech/styles/commonstyle/images/standardbutton-reset-16.png"));
3886
case SP_DialogDiscardButton:
3887
return QPixmap(QLatin1String(":/trolltech/styles/commonstyle/images/standardbutton-discard-16.png"));
3888
case SP_DialogYesButton:
3889
return QPixmap(QLatin1String(":/trolltech/styles/commonstyle/images/standardbutton-yes-16.png"));
3890
case SP_DialogNoButton:
3891
return QPixmap(QLatin1String(":/trolltech/styles/commonstyle/images/standardbutton-no-16.png"));
3740
3892
#endif // QT_NO_IMAGEFORMAT_PNG
3744
3896
return QPixmap();
3902
QIcon QCommonStyle::standardIconImplementation(StandardPixmap standardIcon, const QStyleOption *option,
3903
const QWidget *widget) const
3906
switch (standardIcon) {
3907
#ifndef QT_NO_IMAGEFORMAT_PNG
3908
case SP_FileDialogNewFolder:
3909
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/newdirectory-16.png"));
3910
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/newdirectory-32.png"));
3911
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/newdirectory-128.png"));
3913
case SP_FileDialogBack:
3914
return standardIconImplementation(SP_ArrowBack, option, widget);
3915
case SP_FileDialogToParent:
3916
return standardIconImplementation(SP_ArrowUp, option, widget);
3917
case SP_FileDialogDetailedView:
3918
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/viewdetailed-16.png"));
3919
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/viewdetailed-32.png"));
3920
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/viewdetailed-128.png"));
3922
case SP_FileDialogInfoView:
3923
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/fileinfo-16.png"));
3924
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/fileinfo-32.png"));
3925
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/fileinfo-128.png"));
3927
case SP_FileDialogContentsView:
3928
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/filecontents-16.png"));
3929
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/filecontents-32.png"));
3930
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/filecontents-128.png"));
3932
case SP_FileDialogListView:
3933
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/viewlist-16.png"));
3934
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/viewlist-32.png"));
3935
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/viewlist-128.png"));
3937
case SP_DialogOkButton:
3938
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/standardbutton-ok-16.png"));
3939
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/standardbutton-ok-32.png"));
3940
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/standardbutton-ok-128.png"));
3942
case SP_DialogCancelButton:
3943
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/standardbutton-cancel-16.png"));
3944
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/standardbutton-cancel-32.png"));
3945
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/standardbutton-cancel-128.png"));
3947
case SP_DialogHelpButton:
3948
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/standardbutton-help-16.png"));
3949
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/standardbutton-help-32.png"));
3950
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/standardbutton-help-128.png"));
3952
case SP_DialogOpenButton:
3953
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/standardbutton-open-16.png"));
3954
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/standardbutton-open-32.png"));
3955
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/standardbutton-open-128.png"));
3957
case SP_DialogSaveButton:
3958
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/standardbutton-save-16.png"));
3959
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/standardbutton-save-32.png"));
3960
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/standardbutton-save-128.png"));
3962
case SP_DialogCloseButton:
3963
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/standardbutton-close-16.png"));
3964
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/standardbutton-close-32.png"));
3965
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/standardbutton-close-128.png"));
3967
case SP_DialogApplyButton:
3968
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/standardbutton-apply-16.png"));
3969
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/standardbutton-apply-32.png"));
3970
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/standardbutton-apply-128.png"));
3972
case SP_DialogResetButton:
3973
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/standardbutton-reset-16.png"));
3974
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/standardbutton-reset-32.png"));
3975
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/standardbutton-reset-128.png"));
3977
case SP_DialogDiscardButton:
3978
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/standardbutton-discard-16.png"));
3979
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/standardbutton-discard-32.png"));
3980
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/standardbutton-discard-128.png"));
3982
case SP_DialogYesButton:
3983
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/standardbutton-yes-16.png"));
3984
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/standardbutton-yes-32.png"));
3985
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/standardbutton-yes-128.png"));
3987
case SP_DialogNoButton:
3988
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/standardbutton-no-16.png"));
3989
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/standardbutton-no-32.png"));
3990
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/standardbutton-no-128.png"));
3992
case SP_ArrowForward:
3993
if (QApplication::layoutDirection() == Qt::RightToLeft)
3994
return standardIconImplementation(SP_ArrowLeft, option, widget);
3995
return standardIconImplementation(SP_ArrowRight, option, widget);
3997
if (QApplication::layoutDirection() == Qt::RightToLeft)
3998
return standardIconImplementation(SP_ArrowRight, option, widget);
3999
return standardIconImplementation(SP_ArrowLeft, option, widget);
4001
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/left-16.png"));
4002
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/left-32.png"));
4003
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/left-128.png"));
4006
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/right-16.png"));
4007
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/right-32.png"));
4008
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/right-128.png"));
4011
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/up-16.png"));
4012
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/up-32.png"));
4013
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/up-128.png"));
4016
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/down-16.png"));
4017
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/down-32.png"));
4018
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/down-128.png"));
4021
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/dirclosed-16.png"),
4022
QSize(), QIcon::Normal, QIcon::Off);
4023
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/diropen-16.png"),
4024
QSize(), QIcon::Normal, QIcon::On);
4025
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/dirclosed-32.png"),
4026
QSize(32, 32), QIcon::Normal, QIcon::Off);
4027
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/diropen-32.png"),
4028
QSize(32, 32), QIcon::Normal, QIcon::On);
4029
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/dirclosed-128.png"),
4030
QSize(128, 128), QIcon::Normal, QIcon::Off);
4031
icon.addFile(QLatin1String(":/trolltech/styles/commonstyle/images/diropen-128.png"),
4032
QSize(128, 128), QIcon::Normal, QIcon::On);
4034
#endif // QT_NO_IMAGEFORMAT_PNG
4036
icon.addPixmap(standardPixmap(standardIcon, option, widget));
3747
4042
static inline uint qt_intensity(uint r, uint g, uint b)
3749
4044
// 30% red, 59% green, 11% blue