author | sandman <sandman> | 2002-11-18 03:48:58 (UTC) |
---|---|---|
committer | sandman <sandman> | 2002-11-18 03:48:58 (UTC) |
commit | c2d7749ca68a545b67e1b07ffbb65f08da203702 (patch) (side-by-side diff) | |
tree | b5d867ada033b4c98ffaba8bb1d4cfbb8c0e023a /noncore/styles/liquid/liquid.cpp | |
parent | ee9696cbb7a39e0f13739ae86cd925b0f675a43c (diff) | |
download | opie-c2d7749ca68a545b67e1b07ffbb65f08da203702.zip opie-c2d7749ca68a545b67e1b07ffbb65f08da203702.tar.gz opie-c2d7749ca68a545b67e1b07ffbb65f08da203702.tar.bz2 |
Optimized Liquid for handhelds:
- removed some dead code from the original liquid
- removed all code related to mouse-hover
- rewrote QToolButton drawing, so navigating toolbars with Menu/Direction
keys looks nicer
- changed the way focus indicators are drawn on many widgets
- support for libqte's with version < 2.3.4
Diffstat (limited to 'noncore/styles/liquid/liquid.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/styles/liquid/liquid.cpp | 567 |
1 files changed, 178 insertions, 389 deletions
diff --git a/noncore/styles/liquid/liquid.cpp b/noncore/styles/liquid/liquid.cpp index 6812d16..ba732aa 100644 --- a/noncore/styles/liquid/liquid.cpp +++ b/noncore/styles/liquid/liquid.cpp @@ -3,4 +3,7 @@ */ +// +// (c) 2002 Robert 'sandman' Griebl +// @@ -32,4 +35,5 @@ #include <qmenubar.h> #include <qprogressbar.h> +#include <qlineedit.h> #include <stdio.h> @@ -163,4 +167,11 @@ bool TransMenuHandler::eventFilter(QObject *obj, QEvent *ev) +static int qt_version ( ) +{ + const char *qver = qVersion ( ); + return ( qver [0] - '0' ) * 100 + ( qver [2] - '0' ) * 10 + ( qver [4] - '0' ); +} + + LiquidStyle::LiquidStyle() :QWindowsStyle() @@ -168,4 +179,5 @@ LiquidStyle::LiquidStyle() setName ( "LiquidStyle" ); + oldqte = ( qt_version ( ) < 234 ); flatTBButtons = false; @@ -180,10 +192,6 @@ LiquidStyle::LiquidStyle() bevelFillDict.setAutoDelete(true); smallBevelFillDict.setAutoDelete(true); - customBtnColorList.setAutoDelete(true); - customBtnIconList.setAutoDelete(true); - customBtnLabelList.setAutoDelete(true); rMatrix.rotate(270.0); - highcolor = QPixmap::defaultDepth() > 8; btnBorderPix = new QPixmap; btnBorderPix->convertFromImage(qembed_findImage("buttonfill")); @@ -545,129 +553,117 @@ QPixmap* LiquidStyle::getPixmap(BitmapData item) pixmaps[HTMLBtnBorderDown] = processEmbedded("htmlbtnborder", btnHoverH, btnHoverS, btnHoverV); break; + case HTMLCB: pixmaps[HTMLCB] = processEmbedded("htmlcheckbox", bH, bS, bV); break; + case HTMLCBHover: + pixmaps[HTMLCBHover] = processEmbedded("htmlcheckbox", btnHoverH, btnHoverS, btnHoverV); + break; case HTMLCBDown: pixmaps[HTMLCBDown] = processEmbedded("htmlcheckboxdown", btnH, btnS, btnV); break; - case HTMLCBHover: - pixmaps[HTMLCBHover] = processEmbedded("htmlcheckbox", btnH, btnS, btnV); - break; case HTMLCBDownHover: - pixmaps[HTMLCBDownHover] = processEmbedded("htmlcheckboxdown", - btnHoverH, btnHoverS, - btnHoverV); + pixmaps[HTMLCBDownHover] = processEmbedded("htmlcheckboxdown", btnHoverH, btnHoverS, btnHoverV); break; + case HTMLRadio: pixmaps[HTMLRadio] = processEmbedded("htmlradio", bH, bS, bV); + break; + case HTMLRadioHover: + pixmaps[HTMLRadioHover] = processEmbedded("htmlradio", btnHoverH, btnHoverS, btnHoverV); + break; case HTMLRadioDown: pixmaps[HTMLRadioDown] = processEmbedded("htmlradiodown", btnH, btnS, btnV); - case HTMLRadioHover: - pixmaps[HTMLRadioHover] = processEmbedded("htmlradio", btnH, btnS, btnV); + break; case HTMLRadioDownHover: - pixmaps[HTMLRadioDownHover] = processEmbedded("htmlradiodown", - btnHoverH, btnHoverS, - btnHoverV); - case RadioOn: - pixmaps[RadioOn] = processEmbedded("radio_down", btnH, btnS, btnV, true); + pixmaps[HTMLRadioDownHover] = processEmbedded("htmlradiodown", btnHoverH, btnHoverS, btnHoverV); + break; + + case RadioOff: + pixmaps[RadioOff] = processEmbedded("radio", bH, bS, bV /*, true*/); + break; + case RadioOffHover: + pixmaps[RadioOffHover] = processEmbedded("radio", btnHoverH, btnHoverS, btnHoverV /*, true*/); + break; + case RadioOn: + pixmaps[RadioOn] = processEmbedded("radio_down", btnH, btnS, btnV /*, true*/); break; case RadioOnHover: - pixmaps[RadioOnHover] = processEmbedded("radio_down", btnHoverH, btnHoverS, - btnHoverV, true); + pixmaps[RadioOnHover] = processEmbedded("radio_down", btnHoverH, btnHoverS, btnHoverV /*, true*/); break; - case RadioOffHover: - pixmaps[RadioOffHover] = processEmbedded("radio", btnH, btnS, btnV, true); + + case Tab: + pixmaps[Tab] = processEmbedded("tab", bH, bS, bV /*, true*/); break; case TabDown: - pixmaps[TabDown] = processEmbedded("tab", btnH, btnS, btnV, true); - break; + pixmaps[TabDown] = processEmbedded("tab", btnH, btnS, btnV /*, true*/); + break; case TabFocus: - pixmaps[TabFocus] = processEmbedded("tab", btnHoverH, btnHoverS, - btnHoverS, true); + pixmaps[TabFocus] = processEmbedded("tab", btnHoverH, btnHoverS, btnHoverV /*, true*/); + break; + + case CB: + pixmaps[CB] = processEmbedded("checkbox", bH, bS, bV /*, true*/); + break; + case CBHover: + pixmaps[CBHover] = processEmbedded("checkbox", btnHoverH, btnHoverS, btnHoverV /*, true*/); break; case CBDown: - pixmaps[CBDown] = processEmbedded("checkboxdown", btnH, btnS, btnV, true); + pixmaps[CBDown] = processEmbedded("checkboxdown", btnH, btnS, btnV /*, true*/); break; case CBDownHover: - pixmaps[CBDownHover] = processEmbedded("checkboxdown", btnHoverH, - btnHoverS, btnHoverV, true); - break; - case CBHover: - pixmaps[CBHover] = processEmbedded("checkbox", btnH, btnS, btnV, true); + pixmaps[CBDownHover] = processEmbedded("checkboxdown", btnHoverH, btnHoverS, btnHoverV /*, true*/); break; - case HSlider: - pixmaps[HSlider] = processEmbedded("sliderarrow", btnH, btnS, btnV, true); - break; - case VSlider: - pixmaps[VSlider] = processEmbedded("sliderarrow", btnH, btnS, btnV, true); + + case VSlider: + pixmaps[VSlider] = processEmbedded("sliderarrow", btnH, btnS, btnV, true ); *pixmaps[VSlider] = pixmaps[VSlider]->xForm(rMatrix); break; - case RadioOff: - pixmaps[RadioOff] = processEmbedded("radio", bH, bS, bV, true); - break; - case Tab: - pixmaps[Tab] = processEmbedded("tab", bH, bS, bV, true); - break; - case CB: - pixmaps[CB] = processEmbedded("checkbox", bH, bS, bV, true); - break; case VSBSliderTop: - pixmaps[VSBSliderTop] = processEmbedded("sbslider_top", btnH, btnS, btnV, true); + case VSBSliderTopHover: + pixmaps[item] = processEmbedded("sbslider_top", btnH, btnS, btnV /*, true*/); break; case VSBSliderBtm: - pixmaps[VSBSliderBtm] = processEmbedded("sbslider_btm", btnH, btnS, btnV, true); + case VSBSliderBtmHover: + pixmaps[item] = processEmbedded("sbslider_btm", btnH, btnS, btnV /*, true*/); break; case VSBSliderMid: - pixmaps[VSBSliderMid] = processEmbedded("sbslider_mid", btnH, btnS, btnV); + case VSBSliderMidHover: + pixmaps[item] = processEmbedded("sbslider_mid", btnH, btnS, btnV); break; - case VSBSliderTopHover: - pixmaps[VSBSliderTopHover] = processEmbedded("sbslider_top", btnHoverH, btnHoverS, btnHoverV, true); + case VSBSliderTopBg: + pixmaps[VSBSliderTopBg] = processEmbedded("sbslider_top", bH, bS, bV /*, true*/); break; - case VSBSliderBtmHover: - pixmaps[VSBSliderBtmHover] = processEmbedded("sbslider_btm", btnHoverH, btnHoverS, btnHoverV, true); + case VSBSliderBtmBg: + pixmaps[VSBSliderBtmBg] = processEmbedded("sbslider_btm", bH, bS, bV /*, true*/); break; - case VSBSliderMidHover: - pixmaps[VSBSliderMidHover] = processEmbedded("sbslider_mid", btnHoverH, btnHoverS, btnHoverV); + case VSBSliderMidBg: + pixmaps[VSBSliderMidBg] = processEmbedded("sbslider_mid", bH, bS, bV); break; - case HSBSliderTop: - pixmaps[HSBSliderTop] = processEmbedded("sbslider_top", btnH, btnS, btnV, true); - *pixmaps[HSBSliderTop] = pixmaps[HSBSliderTop]->xForm(rMatrix); - break; - case HSBSliderBtm: - pixmaps[HSBSliderBtm] = processEmbedded("sbslider_btm", btnH, btnS, btnV, true); - *pixmaps[HSBSliderBtm] = pixmaps[HSBSliderBtm]->xForm(rMatrix); - break; - case HSBSliderMid: - pixmaps[HSBSliderMid] = processEmbedded("sbslider_mid", btnH, btnS, btnV); - *pixmaps[HSBSliderMid] = pixmaps[HSBSliderMid]->xForm(rMatrix); + case HSlider: + pixmaps[HSlider] = processEmbedded("sliderarrow", btnH, btnS, btnV /*, true*/); break; + case HSBSliderTop: case HSBSliderTopHover: - pixmaps[HSBSliderTopHover] = processEmbedded("sbslider_top", btnHoverH, btnHoverS, btnHoverV, true); - *pixmaps[HSBSliderTopHover] = pixmaps[HSBSliderTopHover]->xForm(rMatrix); + pixmaps[item] = processEmbedded("sbslider_top", btnH, btnS, btnV, true ); + *pixmaps[item] = pixmaps[item]->xForm(rMatrix); break; + case HSBSliderBtm: case HSBSliderBtmHover: - pixmaps[HSBSliderBtmHover] = processEmbedded("sbslider_btm", btnHoverH, btnHoverS, btnHoverV, true); - *pixmaps[HSBSliderBtmHover] = pixmaps[HSBSliderBtmHover]->xForm(rMatrix); + pixmaps[item] = processEmbedded("sbslider_btm", btnH, btnS, btnV, true ); + *pixmaps[item] = pixmaps[item]->xForm(rMatrix); break; + case HSBSliderMid: case HSBSliderMidHover: - pixmaps[HSBSliderMidHover] = processEmbedded("sbslider_mid", btnHoverH, btnHoverS, btnHoverV); - *pixmaps[HSBSliderMidHover] = pixmaps[HSBSliderMidHover]->xForm(rMatrix); - break; - case VSBSliderTopBg: - pixmaps[VSBSliderTopBg] = processEmbedded("sbslider_top", bH, bS, bV, true); - break; - case VSBSliderBtmBg: - pixmaps[VSBSliderBtmBg] = processEmbedded("sbslider_btm", bH, bS, bV, true); - break; - case VSBSliderMidBg: - pixmaps[VSBSliderMidBg] = processEmbedded("sbslider_mid", bH, bS, bV); + pixmaps[item] = processEmbedded("sbslider_mid", btnH, btnS, btnV); + *pixmaps[item] = pixmaps[item]->xForm(rMatrix); break; case HSBSliderTopBg: - pixmaps[HSBSliderTopBg] = processEmbedded("sbslider_top", bH, bS, bV, true); + pixmaps[HSBSliderTopBg] = processEmbedded("sbslider_top", bH, bS, bV, true ); *pixmaps[HSBSliderTopBg] = pixmaps[HSBSliderTopBg]->xForm(rMatrix); break; case HSBSliderBtmBg: - pixmaps[HSBSliderBtmBg] = processEmbedded("sbslider_btm", bH, bS, bV, true); + pixmaps[HSBSliderBtmBg] = processEmbedded("sbslider_btm", bH, bS, bV, true ); *pixmaps[HSBSliderBtmBg] = pixmaps[HSBSliderBtmBg]->xForm(rMatrix); break; @@ -691,15 +687,4 @@ void LiquidStyle::polish(QPalette &appPal) } } - QWidgetList *list = QApplication::allWidgets(); - QWidgetListIt it( *list ); - QWidget *w; - while ((w=it.current()) != 0 ){ - ++it; - if(w->inherits("QPushButton")){ - unapplyCustomAttributes((QPushButton *)w); - } - } - - loadCustomButtons(); lowLightVal = 100 + (2* /*KGlobalSettings::contrast()*/ 3 +4)*10; btnDict.clear(); @@ -720,9 +705,8 @@ void LiquidStyle::polish(QPalette &appPal) // button color stuff config. setGroup ( "Appearance" ); - QColor c = // QColor ( config. readEntry("Button", ( Qt::lightGray ). name ( ))); - appPal. color ( QPalette::Active, QColorGroup::Button ); - if ( c == appPal. color ( QPalette::Active, QColorGroup::Background ) - //QColor ( config. readEntry ( "background", ( Qt::lightGray ). name ( ))) - ) { + QColor c = oldqte ? QColor ( config. readEntry("Button", ( Qt::lightGray ). name ( ))) + : appPal. color ( QPalette::Active, QColorGroup::Button ); + if ( c == ( oldqte ? QColor ( config. readEntry ( "background", ( Qt::lightGray ). name ( ))) + : appPal. color ( QPalette::Active, QColorGroup::Background ))) { // force button color to be different from background QBrush btnBrush(QColor(200, 202, 228)); @@ -759,6 +743,6 @@ void LiquidStyle::polish(QPalette &appPal) smallBevelFillDict.insert(c.rgb(), pix); } - pagerHoverBrush.setColor(c); - pagerHoverBrush.setPixmap(*pix); +// pagerHoverBrush.setColor(c); +// pagerHoverBrush.setPixmap(*pix); c = c.dark(120); @@ -771,9 +755,11 @@ void LiquidStyle::polish(QPalette &appPal) smallBevelFillDict.insert(c.rgb(), pix); } - pagerBrush.setColor(c); - pagerBrush.setPixmap(*pix); +// pagerBrush.setColor(c); +// pagerBrush.setPixmap(*pix); // background color stuff - c = /*QColor ( config. readEntry ( "Background", ( Qt::lightGray ).name ( )));*/ appPal. color ( QPalette::Active, QColorGroup::Background ); + c = oldqte ? QColor ( config. readEntry ( "Background", ( Qt::lightGray ).name ( ))) + : appPal. color ( QPalette::Active, QColorGroup::Background ); + c.hsv(&bH, &bS, &bV); c.light(120).hsv(&bHoverH, &bHoverS, &bHoverV); @@ -799,31 +785,4 @@ void LiquidStyle::polish(QPalette &appPal) bgBrush.setPixmap(wallPaper); appPal.setBrush(QColorGroup::Background, bgBrush); - - // lineedits - c = /*QColor ( config. readEntry("Base", ( Qt::white). name ( )));*/ appPal. color ( QPalette::Active, QColorGroup::Base ); - QPixmap basePix; - basePix.resize(32, 32); - basePix.fill(c.rgb()); - painter.begin(&basePix); - painter.setPen(c.dark(105)); - for(i=0; i < 32; i+=4){ - painter.drawLine(0, i, 32, i); - painter.drawLine(0, i+1, 32, i+1); - }; - painter.end(); - baseBrush.setColor(c); - baseBrush.setPixmap(basePix); - it.toFirst(); - while ((w=it.current()) != 0 ){ - ++it; - if(w->inherits("QLineEdit")){ - QPalette pal = w->palette(); - pal.setBrush(QColorGroup::Base, baseBrush); - w->setPalette(pal); - } - else if(w->inherits("QPushButton")){ - applyCustomAttributes((QPushButton *)w); - } - } } @@ -854,18 +813,8 @@ void LiquidStyle::polish(QWidget *w) } - if(w->inherits("QComboBox") || w->inherits("QProgressBar") || - w->inherits("QLineEdit") || w->inherits("QRadioButton") || - w->inherits("QCheckBox") || w->inherits("QScrollBar")) { - w->installEventFilter(this); - } - if(w->inherits("QLineEdit")){ - QPalette pal = w->palette(); - pal.setBrush(QColorGroup::Base, baseBrush); - w->setPalette(pal); - } - if(w->inherits("QPushButton")){ - applyCustomAttributes((QPushButton *)w); + if(w->inherits("QRadioButton") || w->inherits("QCheckBox") || w->inherits("QProgressBar")) { w->installEventFilter(this); } + if(w->inherits("QButton") || w-> inherits("QComboBox")){ w-> setBackgroundMode ( QWidget::PaletteBackground ); @@ -901,8 +850,11 @@ void LiquidStyle::polish(QWidget *w) w->installEventFilter(this); } - if(w-> inherits("QToolButton")&&w->parent()->inherits("QToolBar")) { - ((QToolButton*)w)->setAutoRaise (flatTBButtons); - if ( flatTBButtons ) - w->setBackgroundOrigin(QWidget::ParentOrigin); + if(w-> inherits("QToolButton")) { + if (w->parent()->inherits("QToolBar")) { + ((QToolButton*)w)->setAutoRaise (flatTBButtons); + if ( flatTBButtons ) + w->setBackgroundOrigin(QWidget::ParentOrigin); + } + w-> installEventFilter ( this ); } if(w-> inherits("QToolBarSeparator")&&w->parent()->inherits("QToolBar")) { @@ -972,8 +924,4 @@ void LiquidStyle::unPolish(QWidget *w) w->setAutoMask(false); - if(w->inherits("QPushButton")){ - unapplyCustomAttributes((QPushButton *)w); - w->removeEventFilter(this); - } /* if(w->inherits("QPushButton") || w-> inherits("QComboBox")){ @@ -981,8 +929,6 @@ void LiquidStyle::unPolish(QWidget *w) } */ - if(w->inherits("QComboBox") || - w->inherits("QLineEdit") || w->inherits("QRadioButton") || - w->inherits("QCheckBox") || w->inherits("QScrollBar")) { - w->removeEventFilter(this); + if( w->inherits("QRadioButton") || w->inherits("QCheckBox") || w->inherits("QProgressBar")) { + w->removeEventFilter(this); } if(w->inherits("QButton") || w->inherits("QComboBox")){ @@ -991,4 +937,7 @@ void LiquidStyle::unPolish(QWidget *w) } } + if(w-> inherits("QToolButton")) { + w-> removeEventFilter ( this ); + } if(w->inherits("QToolBar")){ w->removeEventFilter(this); @@ -1096,4 +1045,24 @@ public: +/* + * The same for QToolButton: + * TT hardcoded the drawing of the focus rect ... + * + * - sandman + */ + + +class HackToolButton : public QToolButton { +public: + HackToolButton ( ); + + void paint ( QPaintEvent *ev ) + { + erase ( ev-> region ( )); + QPainter p ( this ); + style ( ). drawToolButton ( this, &p ); + drawButtonLabel ( &p ); + } +}; /* @@ -1129,73 +1098,25 @@ bool LiquidStyle::eventFilter(QObject *obj, QEvent *ev) } } - else if(obj->inherits("QPushButton") || obj->inherits("QComboBox")){ - QWidget *btn = (QWidget *)obj; - if(ev->type() == QEvent::Enter){ - if(btn->isEnabled()){ - highlightWidget = btn; - btn->repaint(false); - } - } - else if(ev->type() == QEvent::Leave){ - if(btn == highlightWidget){ - highlightWidget = NULL; - btn->repaint(false); - } - } - } else if(obj->inherits("QToolButton")){ - QToolButton *btn = (QToolButton *)btn; - if(!btn->autoRaise()){ + QToolButton *btn = (QToolButton *)obj; + if(ev->type() == QEvent::FocusIn ){ // && !btn-> autoRaise () if(btn->isEnabled()){ highlightWidget = btn; btn->repaint(false); + + qDebug ( "TB FOCUS IN [%p]", btn ); } } - else if(ev->type() == QEvent::Leave){ - QWidget *btn = (QWidget *)obj; + else if(ev->type() == QEvent::FocusOut ){ if(btn == highlightWidget){ highlightWidget = NULL; btn->repaint(false); + + qDebug ( "TB FOCUS OUT [%p]", btn ); } } - else - highlightWidget = NULL; - } - else if(obj->inherits("QScrollBar")){ - QScrollBar *sb = (QScrollBar *)obj; - if(ev->type() == QEvent::Enter){ - if(sb->isEnabled()){ - highlightWidget = sb; - sb->repaint(false); - } - } - else if(ev->type() == QEvent::Leave){ - if(sb == highlightWidget && !sb->draggingSlider()){ - highlightWidget = NULL; - sb->repaint(false); - } - } - else if(ev->type() == QEvent::MouseButtonRelease){ - QMouseEvent *me = (QMouseEvent *)ev; - if(sb == highlightWidget && !sb->rect().contains(me->pos())){ - highlightWidget = NULL; - sb->repaint(false); - } - } - } - else if(obj->inherits("QLineEdit")){ - if(obj->parent() && obj->parent()->inherits("QComboBox")){ - QWidget *btn = (QComboBox *)obj->parent(); - if(ev->type() == QEvent::Enter){ - if (btn->isEnabled()){ - highlightWidget = btn; - btn->repaint(false); - } - } - else if(ev->type() == QEvent::Leave){ - if (btn == highlightWidget) - highlightWidget = NULL; - btn->repaint(false); - } + else if(ev->type() == QEvent::Paint) { + (( HackToolButton *) btn )-> paint ((QPaintEvent *) ev ); + return true; } } @@ -1213,4 +1134,5 @@ bool LiquidStyle::eventFilter(QObject *obj, QEvent *ev) : indicatorSize(); +/* if(btn->hasFocus()){ QRect r = QRect(0, 0, btn->width(), btn->height()); @@ -1221,5 +1143,6 @@ bool LiquidStyle::eventFilter(QObject *obj, QEvent *ev) p.drawLine(r.x()+1, r.bottom(), r.right()-1, r.bottom()); } - int x = 0; +*/ + int x = 0; int y = (btn->height()-lsz.height()+fm.height()-sz.height())/2; if(isRadio) @@ -1240,34 +1163,4 @@ bool LiquidStyle::eventFilter(QObject *obj, QEvent *ev) return(true); } - // for hover, just redraw the indicator (not the text) - else if((ev->type() == QEvent::Enter && btn->isEnabled()) || - (ev->type() == QEvent::Leave && btn == highlightWidget)){ - QButton *btn = (QButton *)obj; - bool isRadio = obj->inherits("QRadioButton"); - - if(ev->type() == QEvent::Enter) - highlightWidget = btn; - else - highlightWidget = NULL; - QFontMetrics fm = btn->fontMetrics(); - QSize lsz = fm.size(ShowPrefix, btn->text()); - QSize sz = isRadio ? exclusiveIndicatorSize() - : indicatorSize(); - int x = 0; - int y = (btn->height()-lsz.height()+fm.height()-sz.height())/2; - //if(btn->autoMask()) - // btn->erase(x+1, y+1, sz.width()-2, sz.height()-2); - QPainter p; - p.begin(btn); - if(isRadio) - drawExclusiveIndicator(&p, x, y, sz.width(), sz.height(), - btn->colorGroup(), btn->isOn(), - btn->isDown(), btn->isEnabled()); - else - drawIndicator(&p, x, y, sz.width(), sz.height(), - btn->colorGroup(), btn->state(), btn->isDown(), - btn->isEnabled()); - p.end(); - } } else if(obj->inherits("QHeader")){ @@ -1354,6 +1247,9 @@ void LiquidStyle::drawToolButton(QPainter *p, int x, int y, int w, int h, p->drawTiledPixmap(x+2, y+2, w-4, h-4, *pix); + qDebug ( "DRAW TOOLBUTTON IN PIXMAP" ); } else{ + qDebug ( "DRAW TOOLBUTTON sunken=%d/high=%p/device=%p", sunken, highlightWidget,p->device() ); + drawClearBevel(p, x, y, w, h, sunken ? g.button() : highlightWidget == p->device() ? g.button().light(110) : @@ -1512,5 +1408,18 @@ void LiquidStyle::drawComboButton(QPainter *painter, int x, int y, int w, int h, bool edit, bool, const QBrush *) { - bool isHover = highlightWidget == painter->device(); + bool isActive = false; + if (( painter->device()->devType() == QInternal::Widget ) && + ( + ( qApp-> focusWidget ( ) == painter-> device ( )) || + ( + edit && + ((QWidget *) painter-> device ( ))-> inherits ( "QComboBox" ) && + ( qApp-> focusWidget ( ) == ((QComboBox *) painter->device())->lineEdit ( )) + ) + ) + ) { + isActive = true; + } + bool isMasked = false; if(painter->device()->devType() == QInternal::Widget) @@ -1522,5 +1431,5 @@ void LiquidStyle::drawComboButton(QPainter *painter, int x, int y, int w, int h, drawRoundButton(&p, g.button(), g.background(), 0, 0, w, h, false, sunken, false, isMasked); - if(!isHover){ + if(!isActive){ p.setClipRect(0, 0, w-17, h); drawRoundButton(&p, g.background(), g.background(), 0, 0, w, h, false, @@ -1574,7 +1483,9 @@ QRect LiquidStyle::comboButtonRect(int x, int y, int w, int h) } -QRect LiquidStyle::comboButtonFocusRect(int x, int y, int w, int h) +QRect LiquidStyle::comboButtonFocusRect(int /*x*/, int /*y*/, int /*w*/, int /*h*/) { - return(QRect(x+5, y+3, w-(h/3)-13, h-5)); + return QRect ( ); + +// return(QRect(x+5, y+3, w-(h/3)-13, h-5)); } @@ -1583,5 +1494,4 @@ void LiquidStyle::drawScrollBarControls(QPainter *p, const QScrollBar *sb, uint activeControl) { - bool isHover = highlightWidget == p->device(); int sliderMin, sliderMax, sliderLength, buttonDim; scrollBarMetrics( sb, sliderMin, sliderMax, sliderLength, buttonDim ); @@ -1672,23 +1582,13 @@ void LiquidStyle::drawScrollBarControls(QPainter *p, const QScrollBar *sb, if(controls & Slider){ if(sliderR.height() >= 16){ - painter.drawPixmap(sliderR.x()+1, sliderR.y(), - isHover ? *getPixmap(VSBSliderTopHover): - *getPixmap(VSBSliderTop)); + painter.drawPixmap(sliderR.x()+1, sliderR.y(), *getPixmap(VSBSliderTop)); painter.drawTiledPixmap(sliderR.x()+1, sliderR.y()+8, 13, - sliderR.height()-16, isHover ? - *getPixmap(VSBSliderMidHover) : - *getPixmap(VSBSliderMid)); - painter.drawPixmap(sliderR.x()+1, sliderR.bottom()-8, - isHover ? *getPixmap(VSBSliderBtmHover) : - *getPixmap(VSBSliderBtm)); + sliderR.height()-16, *getPixmap(VSBSliderMid)); + painter.drawPixmap(sliderR.x()+1, sliderR.bottom()-8, *getPixmap(VSBSliderBtm)); } else if(sliderR.height() >= 8){ int m = sliderR.height()/2; - painter.drawPixmap(sliderR.x()+1, sliderR.y(), - isHover ? *getPixmap(VSBSliderTopHover): - *getPixmap(VSBSliderTop), 0, 0, 13, m); - painter.drawPixmap(sliderR.x()+1, sliderR.y()+m, - isHover ? *getPixmap(VSBSliderBtmHover): - *getPixmap(VSBSliderBtm), 0, 8-m, 13, m); + painter.drawPixmap(sliderR.x()+1, sliderR.y(), *getPixmap(VSBSliderTop), 0, 0, 13, m); + painter.drawPixmap(sliderR.x()+1, sliderR.y()+m, *getPixmap(VSBSliderBtm), 0, 8-m, 13, m); } else{ @@ -1698,5 +1598,4 @@ void LiquidStyle::drawScrollBarControls(QPainter *p, const QScrollBar *sb, painter.drawTiledPixmap(sliderR.x()+2, sliderR.y()+1, 11, sliderR.height()-2, - isHover ? *getPixmap(VSBSliderMidHover) : *getPixmap(VSBSliderMid), 1, 0); } @@ -1739,11 +1638,8 @@ void LiquidStyle::drawScrollBarControls(QPainter *p, const QScrollBar *sb, if(sliderR.width() >= 16){ painter.drawPixmap(sliderR.x(), sliderR.y()+1, - isHover ? *getPixmap(HSBSliderTopHover) : *getPixmap(HSBSliderTop)); painter.drawTiledPixmap(sliderR.x()+8, sliderR.y()+1, sliderR.width()-16, - 13, isHover ? *getPixmap(HSBSliderMidHover) : - *getPixmap(HSBSliderMid)); - painter.drawPixmap(sliderR.right()-8, sliderR.y()+1, isHover ? - *getPixmap(HSBSliderBtmHover) : + 13, *getPixmap(HSBSliderMid)); + painter.drawPixmap(sliderR.right()-8, sliderR.y()+1, *getPixmap(HSBSliderBtm)); } @@ -1751,8 +1647,6 @@ void LiquidStyle::drawScrollBarControls(QPainter *p, const QScrollBar *sb, int m = sliderR.width()/2; painter.drawPixmap(sliderR.x(), sliderR.y()+1, - isHover ? *getPixmap(HSBSliderTopHover) : *getPixmap(HSBSliderTop), 0, 0, m, 13); - painter.drawPixmap(sliderR.right()-8, sliderR.y()+1, isHover ? - *getPixmap(HSBSliderBtmHover) : + painter.drawPixmap(sliderR.right()-8, sliderR.y()+1, *getPixmap(HSBSliderBtm), 8-m, 0, m, 13); } @@ -1762,6 +1656,5 @@ void LiquidStyle::drawScrollBarControls(QPainter *p, const QScrollBar *sb, sliderR.width(), 13); painter.drawTiledPixmap(sliderR.x()+1, sliderR.y()+2, - sliderR.width()-2, 11, isHover ? - *getPixmap(HSBSliderMidHover) : + sliderR.width()-2, 11, *getPixmap(HSBSliderMid), 0, 1); } @@ -1942,5 +1835,5 @@ void LiquidStyle::drawExclusiveIndicator(QPainter *p, int x, int y, int /*w*/, bool down, bool) { - bool isHover = highlightWidget == p->device(); + bool isActive = ( p->device()->devType() == QInternal::Widget ) && ( qApp-> focusWidget ( ) == p-> device ( )); bool isMasked = p->device() && p->device()->devType() == QInternal::Widget && ((QWidget*)p->device())->autoMask(); @@ -1948,9 +1841,9 @@ void LiquidStyle::drawExclusiveIndicator(QPainter *p, int x, int y, int /*w*/, if(isMasked){ if(on || down){ - p->drawPixmap(x, y, isHover ? *getPixmap(HTMLRadioDownHover) : + p->drawPixmap(x, y, isActive ? *getPixmap(HTMLRadioDownHover) : *getPixmap(HTMLRadioDown)); } else - p->drawPixmap(x, y, isHover ? *getPixmap(HTMLRadioHover) : + p->drawPixmap(x, y, isActive ? *getPixmap(HTMLRadioHover) : *getPixmap(HTMLRadio)); @@ -1958,9 +1851,9 @@ void LiquidStyle::drawExclusiveIndicator(QPainter *p, int x, int y, int /*w*/, else{ if(on || down){ - p->drawPixmap(x, y, isHover ? *getPixmap(RadioOnHover) : + p->drawPixmap(x, y, isActive ? *getPixmap(RadioOnHover) : *getPixmap(RadioOn)); } else - p->drawPixmap(x, y, isHover ? *getPixmap(RadioOffHover) : + p->drawPixmap(x, y, isActive ? *getPixmap(RadioOffHover) : *getPixmap(RadioOff)); } @@ -1984,14 +1877,14 @@ void LiquidStyle::drawIndicator(QPainter *p, int x, int y, int /*w*/, int /*h*/, const QColorGroup &/*g*/, int state, bool /*down*/, bool) { - bool isHover = highlightWidget == p->device(); + bool isActive = ( p->device()->devType() == QInternal::Widget ) && ( qApp-> focusWidget ( ) == p-> device ( )); bool isMasked = p->device() && p->device()->devType() == QInternal::Widget && ((QWidget*)p->device())->autoMask(); if(isMasked){ if(state != QButton::Off){ - p->drawPixmap(x, y, isHover ? *getPixmap(HTMLCBDownHover) : + p->drawPixmap(x, y, isActive ? *getPixmap(HTMLCBDownHover) : *getPixmap(HTMLCBDown)); } else - p->drawPixmap(x, y, isHover ? *getPixmap(HTMLCBHover) : + p->drawPixmap(x, y, isActive ? *getPixmap(HTMLCBHover) : *getPixmap(HTMLCB)); @@ -1999,5 +1892,5 @@ void LiquidStyle::drawIndicator(QPainter *p, int x, int y, int /*w*/, int /*h*/, else{ if(state != QButton::Off){ - p->drawPixmap(x, y, isHover ? *getPixmap(CBDownHover) : + p->drawPixmap(x, y, isActive ? *getPixmap(CBDownHover) : *getPixmap(CBDown)); /* Todo - tristate @@ -2016,5 +1909,5 @@ void LiquidStyle::drawIndicator(QPainter *p, int x, int y, int /*w*/, int /*h*/, } else - p->drawPixmap(x, y, isHover ? *getPixmap(CBHover) : *getPixmap(CB)); + p->drawPixmap(x, y, isActive ? *getPixmap(CBHover) : *getPixmap(CB)); } } @@ -2361,5 +2254,5 @@ void LiquidStyle::drawFocusRect(QPainter *p, const QRect &r, // if so does it use a special focus rectangle? QWidget *w = (QWidget *)p->device(); - if(w->inherits("QPushButton") || w->inherits("QSlider")){ + if(w->inherits("QPushButton") || w->inherits("QSlider") || w->inherits("QComboBox") || w->inherits("QToolButton" )){ return; } @@ -2714,108 +2607,4 @@ void LiquidStyle::drawSliderGrooveMask (QPainter * p, int x, int y, int w, } -// I'm debating if to use QValueList or QList here. I like QValueList better, -// but QList handles pointers which is good for a lot of empty icons... - -void LiquidStyle::loadCustomButtons() -{ - return; // TODO - customBtnColorList.clear(); - customBtnIconList.clear(); - customBtnLabelList.clear(); - -// KConfig *config = KGlobal::config(); -// QString oldGrp = config->group(); -// config->setGroup("MosfetButtons"); - - QStrList iconList, colorList; //temp, we store QPixmaps and QColors - iconList.setAutoDelete(true); - colorList.setAutoDelete(true); -// config->readListEntry("Labels", customBtnLabelList); -// config->readListEntry("Icons", iconList); -// config->readListEntry("Colors", colorList); - - const char *labelStr = customBtnLabelList.first(); - const char *colorStr = colorList.first(); - const char *iconStr = iconList.first(); - -// KIconLoader *ldr = KGlobal::iconLoader(); - while(labelStr != NULL){ - QColor *c = new QColor; - c->setNamedColor(QString(colorStr)); - customBtnColorList.append(c); - - QString tmpStr(iconStr); - if(!tmpStr.isEmpty()){ - QPixmap *pixmap = - new QPixmap();//ldr->loadIcon(tmpStr, KIcon::Small)); - if(pixmap->isNull()){ - delete pixmap; - customBtnIconList.append(NULL); - } - else - customBtnIconList.append(pixmap); - } - else - customBtnIconList.append(NULL); - - labelStr = customBtnLabelList.next(); - colorStr = colorList.next(); - iconStr = iconList.next(); - } -} - -void LiquidStyle::applyCustomAttributes(QPushButton *btn) -{ - return; // TODO - QString str = btn->text(); - if(str.isEmpty()) - return; - while(str.contains('&') != 0) - str = str.remove(str.find('&'), 1); - - const char *s; - int idx = 0; - for(s = customBtnLabelList.first(); s != NULL; - ++idx, s = customBtnLabelList.next()){ - if(qstricmp(s, str.latin1()) == 0){ - QPalette pal = btn->palette(); - pal.setColor(QColorGroup::Button, - *customBtnColorList.at(idx)); - btn->setPalette(pal); - /* - if(customBtnIconList.at(idx) != NULL){ - QPixmap *pix = customBtnIconList.at(idx); - btn->setIconSet(QIconSet(*pix)); - }*/ - break; - } - } -} - -void LiquidStyle::unapplyCustomAttributes(QPushButton *btn) -{ - return; // TODO - QString str = btn->text(); - if(str.isEmpty()) - return; - while(str.contains('&') != 0) - str = str.remove(str.find('&'), 1); - - const char *s; - for(s = customBtnLabelList.first(); s != NULL; s = customBtnLabelList.next()){ - if(qstricmp(s, str.latin1()) == 0){ - btn->setPalette(QApplication::palette()); - btn->setIconSet(QIconSet()); - break; - } - } -} - -// #include "liquid.moc" - - - - - /* vim: set noet sw=8 ts=8: */ |