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 | |
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
-rw-r--r-- | noncore/styles/liquid/liquid.cpp | 545 | ||||
-rw-r--r-- | noncore/styles/liquid/liquid.h | 18 | ||||
-rw-r--r-- | noncore/styles/liquid/opie-liquid.diff | 1111 | ||||
-rw-r--r-- | noncore/styles/liquid/plugin.cpp | 5 |
4 files changed, 1076 insertions, 603 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 @@ -1,12 +1,15 @@ /*- * Copyright (C)QPL 2001 Daniel M. Duley. All rights reserved. */ +// +// (c) 2002 Robert 'sandman' Griebl +// #ifndef INCLUDE_MENUITEM_DEF #define INCLUDE_MENUITEM_DEF #endif #include <qmenudata.h> #include "liquid.h" @@ -26,16 +29,17 @@ #include <qcombobox.h> #include <qdrawutil.h> #include <qwidgetlist.h> #include <qtoolbutton.h> #include <qheader.h> #include <unistd.h> #include <qmenubar.h> #include <qprogressbar.h> +#include <qlineedit.h> #include <stdio.h> #include "htmlmasks.h" #include "embeddata.h" typedef void (QStyle::*QDrawMenuBarItemImpl) (QPainter *, int, int, int, int, QMenuItem *, QColorGroup &, bool, bool); @@ -157,39 +161,43 @@ bool TransMenuHandler::eventFilter(QObject *obj, QEvent *ev) } delete ol; } } return(false); } +static int qt_version ( ) +{ + const char *qver = qVersion ( ); + return ( qver [0] - '0' ) * 100 + ( qver [2] - '0' ) * 10 + ( qver [4] - '0' ); +} + + LiquidStyle::LiquidStyle() :QWindowsStyle() { setName ( "LiquidStyle" ); + oldqte = ( qt_version ( ) < 234 ); flatTBButtons = false; btnMaskBmp = QBitmap(37, 26, buttonmask_bits, true); btnMaskBmp.setMask(btnMaskBmp); htmlBtnMaskBmp = QBitmap(37, 26, htmlbuttonmask_bits, true); htmlBtnMaskBmp.setMask(htmlBtnMaskBmp); headerHoverID = -1; highlightWidget = NULL; setButtonDefaultIndicatorWidth(0); btnDict.setAutoDelete(true); 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")); btnBlendPix = new QPixmap; btnBlendPix->convertFromImage(qembed_findImage("buttonborder")); bevelFillPix = new QPixmap; bevelFillPix->convertFromImage(qembed_findImage("clear_fill_large")); smallBevelFillPix = new QPixmap; smallBevelFillPix->convertFromImage(qembed_findImage("clear_fill_small")); @@ -539,134 +547,122 @@ QPixmap* LiquidStyle::getPixmap(BitmapData item) switch(item){ case HTMLBtnBorder: pixmaps[HTMLBtnBorder] = processEmbedded("htmlbtnborder", btnH, btnS, btnV); break; case HTMLBtnBorderDown: 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); + 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); + 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); + 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 CBDown: - pixmaps[CBDown] = processEmbedded("checkboxdown", btnH, btnS, btnV, true); - break; - case CBDownHover: - pixmaps[CBDownHover] = processEmbedded("checkboxdown", btnHoverH, - btnHoverS, btnHoverV, true); + + case CB: + pixmaps[CB] = processEmbedded("checkbox", bH, bS, bV /*, true*/); break; case CBHover: - pixmaps[CBHover] = processEmbedded("checkbox", btnH, btnS, btnV, true); + pixmaps[CBHover] = processEmbedded("checkbox", btnHoverH, btnHoverS, btnHoverV /*, true*/); break; - case HSlider: - pixmaps[HSlider] = processEmbedded("sliderarrow", btnH, btnS, btnV, true); + case CBDown: + pixmaps[CBDown] = processEmbedded("checkboxdown", btnH, btnS, btnV /*, true*/); break; + case CBDownHover: + pixmaps[CBDownHover] = processEmbedded("checkboxdown", btnHoverH, btnHoverS, btnHoverV /*, true*/); + break; + 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] = pixmaps[HSBSliderTopBg]->xForm(rMatrix); break; case HSBSliderBtmBg: pixmaps[HSBSliderBtmBg] = processEmbedded("sbslider_btm", bH, bS, bV, true); *pixmaps[HSBSliderBtmBg] = pixmaps[HSBSliderBtmBg]->xForm(rMatrix); @@ -685,27 +681,16 @@ void LiquidStyle::polish(QPalette &appPal) { int i; for(i=0; i < BITMAP_ITEMS; ++i){ if(pixmaps[i]){ delete pixmaps[i]; pixmaps[i] = NULL; } } - 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(); btnBorderDict.clear(); bevelFillDict.clear(); smallBevelFillDict.clear(); Config config ( "qpe" ); config. setGroup ( "Liquid-Style" ); @@ -714,21 +699,20 @@ void LiquidStyle::polish(QPalette &appPal) contrast = 0; else if ( contrast > 10 ) contrast = 10; // QPalette pal = QApplication::palette(); // 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)); appPal.setBrush(QColorGroup::Button, btnBrush); } c.hsv(&btnH, &btnS, &btnV); c.light(120).hsv(&btnHoverH, &btnHoverS, &btnHoverV); // menu pixmap @@ -753,33 +737,35 @@ void LiquidStyle::polish(QPalette &appPal) QPixmap *pix = smallBevelFillDict.find(c.rgb()); // better be NULL ;-) if(!pix){ int h, s, v; c.hsv(&h, &s, &v); pix = new QPixmap(*smallBevelFillPix); adjustHSV(*pix, h, s, v); smallBevelFillDict.insert(c.rgb(), pix); } - pagerHoverBrush.setColor(c); - pagerHoverBrush.setPixmap(*pix); +// pagerHoverBrush.setColor(c); +// pagerHoverBrush.setPixmap(*pix); c = c.dark(120); pix = smallBevelFillDict.find(c.rgb()); // better be NULL ;-) if(!pix){ int h, s, v; c.hsv(&h, &s, &v); pix = new QPixmap(*smallBevelFillPix); adjustHSV(*pix, h, s, v); 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); // FIXME? if(vsbSliderFillPix) delete vsbSliderFillPix; vsbSliderFillPix = new QPixmap(bevelFillPix->xForm(rMatrix)); adjustHSV(*vsbSliderFillPix, bH, bS, bV); @@ -793,43 +779,16 @@ void LiquidStyle::polish(QPalette &appPal) painter.drawLine(0, i, 32, i); painter.setPen(c.dark(100 + 3 * contrast / 5 ) ); painter.drawLine(0, i+1, 32, i+1); }; painter.end(); bgBrush.setColor(c); 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); - } - } } void LiquidStyle::polish(QWidget *w) { if(w->inherits("QMenuBar")){ //((QFrame*)w)->setLineWidth(0); w->setBackgroundMode(QWidget::PaletteBackground); w->setBackgroundOrigin(QWidget::ParentOrigin); @@ -848,30 +807,20 @@ void LiquidStyle::polish(QWidget *w) ( qstrcmp ( w-> name(), "automatic what's this? widget" ) != 0 )) { w->installEventFilter(menuHandler); } if(w->isTopLevel()){ return; } - 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 ); w->setBackgroundOrigin ( QWidget::ParentOrigin); } bool isViewport = qstrcmp(w->name(), "qt_viewport") == 0 || qstrcmp(w->name(), "qt_clipped_viewport") == 0; bool isViewportChild = w->parent() && @@ -895,21 +844,24 @@ void LiquidStyle::polish(QWidget *w) } return; } } if(w->inherits("QHeader")){ w->setMouseTracking(true); w->installEventFilter(this); } - if(w-> inherits("QToolButton")&&w->parent()->inherits("QToolBar")) { + 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")) { ((QFrame *) w)-> setFrameShape ( QFrame::NoFrame ); } if(w->ownPalette() && !w->inherits("QButton") && !w->inherits("QComboBox")){ return; } if(w->parent() && w->parent()->isWidgetType() && !((QWidget*)w->parent())-> @@ -966,35 +918,32 @@ void LiquidStyle::unPolish(QWidget *w) w->setBackgroundMode(QWidget::PaletteButton); else w->setBackgroundMode(QWidget::PaletteBackground); } if(isViewportChild) w->setAutoMask(false); - if(w->inherits("QPushButton")){ - unapplyCustomAttributes((QPushButton *)w); - w->removeEventFilter(this); - } /* if(w->inherits("QPushButton") || w-> inherits("QComboBox")){ w-> setBackgroundMode ( PaletteBackground ); } */ - if(w->inherits("QComboBox") || - w->inherits("QLineEdit") || w->inherits("QRadioButton") || - w->inherits("QCheckBox") || w->inherits("QScrollBar")) { + if( w->inherits("QRadioButton") || w->inherits("QCheckBox") || w->inherits("QProgressBar")) { w->removeEventFilter(this); } if(w->inherits("QButton") || w->inherits("QComboBox")){ if(w->parent() && w->parent()->inherits("KHTMLPart")){ w->setAutoMask(false); } } + if(w-> inherits("QToolButton")) { + w-> removeEventFilter ( this ); + } if(w->inherits("QToolBar")){ w->removeEventFilter(this); w->setBackgroundMode(QWidget::PaletteBackground); return; } if(w->inherits("QHeader")){ w->setMouseTracking(false); w->removeEventFilter(this); @@ -1090,16 +1039,36 @@ public: p. setPen ( g.text());//g.highlightedText ( )); p. drawText (x,y,w-1,h-1,AlignCenter,pstr); } } } }; +/* + * 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 ); + } +}; /* * This is a fun method ;-) Here's an overview. KToolBar grabs resize to * force everything to erase and repaint on resize. This is going away, I'm * trying to get shaped widgets to work right without masking. QPushButton, * QComboBox, and Panel applet handles capture mouse enter and leaves in order * to set the highlightwidget and repaint for mouse hovers. CheckBoxes and * RadioButtons need to do this differently. Qt buffers these in pixmaps and @@ -1123,108 +1092,62 @@ bool LiquidStyle::eventFilter(QObject *obj, QEvent *ev) while((child = it.current()) != NULL){ ++it; if(child->isWidgetType()) ((QWidget *)child)->repaint(true); } } } - 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; } } else if(obj->inherits("QRadioButton") || obj->inherits("QCheckBox")){ QButton *btn = (QButton *)obj; bool isRadio = obj->inherits("QRadioButton"); if(ev->type() == QEvent::Paint){ //if(btn->autoMask()) btn->erase(); QPainter p; p.begin(btn); QFontMetrics fm = btn->fontMetrics(); QSize lsz = fm.size(ShowPrefix, btn->text()); QSize sz = isRadio ? exclusiveIndicatorSize() : indicatorSize(); +/* if(btn->hasFocus()){ QRect r = QRect(0, 0, btn->width(), btn->height()); p.setPen(btn->colorGroup().button().dark(140)); p.drawLine(r.x()+1, r.y(), r.right()-1, r.y()); p.drawLine(r.x(), r.y()+1, r.x(), r.bottom()-1); p.drawLine(r.right(), r.y()+1, r.right(), r.bottom()-1); p.drawLine(r.x()+1, r.bottom(), r.right()-1, r.bottom()); } +*/ int x = 0; int y = (btn->height()-lsz.height()+fm.height()-sz.height())/2; 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(), @@ -1234,46 +1157,16 @@ bool LiquidStyle::eventFilter(QObject *obj, QEvent *ev) y = 0; drawItem(&p, sz.width()+6+1, 0, btn->width()-(sz.width()+6+1), btn->height(), AlignLeft|AlignVCenter|ShowPrefix, btn->colorGroup(), btn->isEnabled(), btn->pixmap(), btn->text()); p.end(); 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")){ QHeader *hw = (QHeader *)obj; if(ev->type() == QEvent::Enter){ currentHeader = hw; headerHoverID = -1; } else if(ev->type() == QEvent::Leave){ @@ -1348,18 +1241,21 @@ void LiquidStyle::drawToolButton(QPainter *p, int x, int y, int w, int h, int h, s, v; c.hsv(&h, &s, &v); pix = new QPixmap(*bevelFillPix); adjustHSV(*pix, h, s, v); bevelFillDict.insert(c.rgb(), pix); } 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) : g.background(), g.background()); } } void LiquidStyle::drawPushButton(QPushButton *btn, QPainter *p) { @@ -1506,27 +1402,40 @@ QRect LiquidStyle::buttonRect(int x, int y, int w, int h) { return(QRect(x+5, y+5, w-10, h-10)); } void LiquidStyle::drawComboButton(QPainter *painter, int x, int y, int w, int h, const QColorGroup &g, bool sunken, 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) isMasked = ((QWidget*)painter->device())->autoMask(); // TODO: Do custom code, don't just call drawRoundButton into a pixmap QPixmap tmpPix(w, h); QPainter p(&tmpPix); 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, sunken, false, isMasked); } p.end(); int x2 = x+w-1; int y2 = y+h-1; int bx2 = btnMaskBmp.width()-1; @@ -1568,26 +1477,27 @@ void LiquidStyle::drawComboButtonMask(QPainter *p, int x, int y, int w, int h) } QRect LiquidStyle::comboButtonRect(int x, int y, int w, int h) { //return(QRect(x+3, y+3, w - (h / 3) - 13, h-6)); return(QRect(x+9, y+3, w - (h / 3) - 20, h-6)); } -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)); } void LiquidStyle::drawScrollBarControls(QPainter *p, const QScrollBar *sb, int sliderStart, uint controls, uint activeControl) { - bool isHover = highlightWidget == p->device(); int sliderMin, sliderMax, sliderLength, buttonDim; scrollBarMetrics( sb, sliderMin, sliderMax, sliderLength, buttonDim ); if (sliderStart > sliderMax) sliderStart = sliderMax; bool horiz = sb->orientation() == QScrollBar::Horizontal; QColorGroup g = sb->colorGroup(); @@ -1666,43 +1576,32 @@ void LiquidStyle::drawScrollBarControls(QPainter *p, const QScrollBar *sb, painter.setPen(g.mid()); painter.drawPoint(bgR.x()+1, bgR.y()); painter.drawPoint(bgR.x()+13, bgR.y()); painter.drawPoint(bgR.x()+1, bgR.bottom()-1); painter.drawPoint(bgR.x()+13, bgR.bottom()-1); } 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{ painter.setPen(g.button().dark(210)); drawRoundRect(&painter, sliderR.x()+1, sliderR.y(), 13, sliderR.height()); painter.drawTiledPixmap(sliderR.x()+2, sliderR.y()+1, 11, sliderR.height()-2, - isHover ? *getPixmap(VSBSliderMidHover) : *getPixmap(VSBSliderMid), 1, 0); } } painter.setPen(g.mid()); painter.drawLine(bgR.x(), bgR.y(), bgR.x(), bgR.bottom()); painter.drawLine(bgR.right(), bgR.y(), bgR.right(), bgR.bottom()); if(brokenApp && (controls & Slider)){ painter.setPen(g.background()); @@ -1733,41 +1632,35 @@ void LiquidStyle::drawScrollBarControls(QPainter *p, const QScrollBar *sb, painter.drawPoint(bgR.x(), bgR.y()+1); painter.drawPoint(bgR.x(), bgR.bottom()-1); painter.drawPoint(bgR.right()-1, bgR.y()+1); painter.drawPoint(bgR.right()-1, bgR.bottom()-1); } if(controls & Slider){ 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)); } else if(sliderR.width() >= 8){ 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); } else{ painter.setPen(g.button().dark(210)); drawRoundRect(&painter, sliderR.x(), sliderR.y()+1, 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); } } painter.setPen(g.mid()); painter.drawLine(bgR.x(), bgR.y(), bgR.right(), bgR.y()); painter.drawLine(bgR.x(), bgR.bottom(), bgR.right(), bgR.bottom()); if(brokenApp && (controls & Slider)){ painter.setPen(g.background()); @@ -1936,37 +1829,37 @@ QSize LiquidStyle::exclusiveIndicatorSize() const { return(QSize(16, 16)); } void LiquidStyle::drawExclusiveIndicator(QPainter *p, int x, int y, int /*w*/, int /*h*/, const QColorGroup &/*g*/, bool on, 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(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)); } 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)); } } void LiquidStyle::drawExclusiveIndicatorMask(QPainter *p, int x, int y, int w, int h, bool) { p->fillRect(x, y, w, h, Qt::color0); @@ -1978,49 +1871,49 @@ void LiquidStyle::drawExclusiveIndicatorMask(QPainter *p, int x, int y, int w, QSize LiquidStyle::indicatorSize() const { return(QSize(20, 22)); } 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)); } else{ if(state != QButton::Off){ - p->drawPixmap(x, y, isHover ? *getPixmap(CBDownHover) : + p->drawPixmap(x, y, isActive ? *getPixmap(CBDownHover) : *getPixmap(CBDown)); /* Todo - tristate if(state == QButton::On){ p->setPen(Qt::black); p->drawPixmap(3, 3, xBmp); } else{ p->setPen(g.dark()); p->drawRect(x+2, y+2, w-4, h-4); p->setPen(Qt::black); p->drawLine(x+3, (y+h)/2-2, x+w-4, (y+h)/2-2); p->drawLine(x+3, (y+h)/2, x+w-4, (y+h)/2); p->drawLine(x+3, (y+h)/2+2, x+w-4, (y+h)/2+2); }*/ } else - p->drawPixmap(x, y, isHover ? *getPixmap(CBHover) : *getPixmap(CB)); + p->drawPixmap(x, y, isActive ? *getPixmap(CBHover) : *getPixmap(CB)); } } void LiquidStyle::drawIndicatorMask(QPainter *p, int x, int y, int /*w*/, int /*h*/, int /*state*/) { // needed for some reason by KHtml, even tho it's all filled ;P p->drawPixmap(x, y, *getPixmap(HTMLCB)->mask()); @@ -2355,17 +2248,17 @@ int LiquidStyle::popupMenuItemHeight(bool /*checkable*/, QMenuItem *mi, void LiquidStyle::drawFocusRect(QPainter *p, const QRect &r, const QColorGroup &g, const QColor *c, bool atBorder) { // are we painting a widget? if(p->device()->devType() == QInternal::Widget){ // 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; } else{ QWindowsStyle::drawFocusRect(p, r, g, c, atBorder); } } else QWindowsStyle::drawFocusRect(p, r, g, c, atBorder); @@ -2708,114 +2601,10 @@ void LiquidStyle::drawSliderGrooveMask (QPainter * p, int x, int y, int w, int y2 = y+h-1; x+=2; p->drawLine(x, y+1, x, y2-1); p->fillRect(x+1, y, 4, h, Qt::color1); p->drawLine(x+5, y+1, x+5, y2-1); } } -// 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: */ diff --git a/noncore/styles/liquid/liquid.h b/noncore/styles/liquid/liquid.h index 00cfb35..0582c9a 100644 --- a/noncore/styles/liquid/liquid.h +++ b/noncore/styles/liquid/liquid.h @@ -166,46 +166,32 @@ protected: bool isMasked = false); void drawClearBevel(QPainter *p, int x, int y, int w, int h, const QColor &c, const QColor &bg); void drawSBDeco(QPainter *p, const QRect &r, const QColorGroup &g, bool horiz); void drawSBButton(QPainter *p, const QRect &r, const QColorGroup &g, bool down=false, bool fast = true); void drawRoundRect(QPainter *p, int x, int y, int w, int h); - void loadCustomButtons(); - void applyCustomAttributes(QPushButton *btn); - void unapplyCustomAttributes(QPushButton *btn); QPixmap* getPixmap(BitmapData item); QPixmap* processEmbedded(const char *label, int h, int s, int v, bool blend=false); private: + bool oldqte; bool flatTBButtons; - bool highcolor; - QColorGroup radioOnGrp; QWidget *highlightWidget; - QBrush wallpaper; - QBitmap lightBmp; - QBitmap grayBmp; - QBitmap dgrayBmp; - QBitmap maskBmp; - QBitmap xBmp; QBitmap btnMaskBmp, htmlBtnMaskBmp; QPixmap *btnBorderPix, *btnBlendPix, *bevelFillPix, *smallBevelFillPix, *menuPix; - QBitmap paper1, paper2, paper3; - QBrush baseBrush, menuBrush, pagerBrush, pagerHoverBrush, bgBrush; + QBrush bgBrush, menuBrush; bool menuAni, menuFade; QIntDict<QPixmap>btnDict; QIntDict<QPixmap>btnBorderDict; QIntDict<QPixmap>bevelFillDict; QIntDict<QPixmap>smallBevelFillDict; - QList<QColor>customBtnColorList; - QList<QPixmap>customBtnIconList; - QStrList customBtnLabelList; QPixmap *vsbSliderFillPix; TransMenuHandler *menuHandler; QPixmap *pixmaps[BITMAP_ITEMS]; QPixmap sbBuffer; int oldSliderThickness; int lowLightVal; QHeader *currentHeader; int headerHoverID; diff --git a/noncore/styles/liquid/opie-liquid.diff b/noncore/styles/liquid/opie-liquid.diff index f3531e5..29ae6f3 100644 --- a/noncore/styles/liquid/opie-liquid.diff +++ b/noncore/styles/liquid/opie-liquid.diff @@ -1,15 +1,15 @@ This is a patch to mosfet's liquid 0.7. Features: - Qt-only - works with Qt/E on QPE/OPIE ---- - 2002-10-24 03:19:30.000000000 +0200 -+++ liquid.h 2002-07-15 02:52:50.000000000 +0200 +--- - 2002-11-18 04:47:41.000000000 +0100 ++++ liquid.h 2002-11-18 03:32:40.000000000 +0100 @@ -2,7 +2,7 @@ #define LIQUID_STYLE_H -#include <kstyle.h> +#include <qwindowsstyle.h> #include <qpainter.h> #include <qdrawutil.h> @@ -97,44 +97,85 @@ Features: - const QColorGroup &g, QBrush *); - void drawKickerTaskButton(QPainter *p, int x, int y, int w, int h, - const QColorGroup &g, - const QString &title, bool active, - QPixmap *icon, QBrush *fill); // for repainting toolbuttons when the toolbar is resized bool eventFilter(QObject *obj, QEvent *ev); void drawSliderGroove(QPainter * p, int x, int y, int w, int h, -@@ -204,6 +177,7 @@ +@@ -198,25 +171,15 @@ + void drawSBButton(QPainter *p, const QRect &r, const QColorGroup &g, + bool down=false, bool fast = true); + void drawRoundRect(QPainter *p, int x, int y, int w, int h); +- void loadCustomButtons(); +- void applyCustomAttributes(QPushButton *btn); +- void unapplyCustomAttributes(QPushButton *btn); QPixmap* getPixmap(BitmapData item); QPixmap* processEmbedded(const char *label, int h, int s, int v, bool blend=false); private: +- bool highcolor; +- QColorGroup radioOnGrp; ++ bool oldqte; + bool flatTBButtons; - bool highcolor; - QColorGroup radioOnGrp; QWidget *highlightWidget; ---- - 2002-10-24 03:19:31.000000000 +0200 -+++ liquid.cpp 2002-10-24 03:18:15.000000000 +0200 -@@ -10,12 +10,10 @@ +- QBrush wallpaper; +- QBitmap lightBmp; +- QBitmap grayBmp; +- QBitmap dgrayBmp; +- QBitmap maskBmp; +- QBitmap xBmp; + QBitmap btnMaskBmp, htmlBtnMaskBmp; + QPixmap *btnBorderPix, *btnBlendPix, *bevelFillPix, *smallBevelFillPix, *menuPix; +- QBitmap paper1, paper2, paper3; +- QBrush baseBrush, menuBrush, pagerBrush, pagerHoverBrush, bgBrush; ++ QBrush bgBrush, menuBrush; + bool menuAni, menuFade; + + QIntDict<QPixmap>btnDict; +@@ -224,9 +187,6 @@ + QIntDict<QPixmap>bevelFillDict; + QIntDict<QPixmap>smallBevelFillDict; + +- QList<QColor>customBtnColorList; +- QList<QPixmap>customBtnIconList; +- QStrList customBtnLabelList; + QPixmap *vsbSliderFillPix; + TransMenuHandler *menuHandler; + QPixmap *pixmaps[BITMAP_ITEMS]; +--- - 2002-11-18 04:47:41.000000000 +0100 ++++ liquid.cpp 2002-11-18 04:46:13.000000000 +0100 +@@ -2,6 +2,9 @@ + * Copyright (C)QPL 2001 Daniel M. Duley. All rights reserved. + */ + ++// ++// (c) 2002 Robert 'sandman' Griebl ++// + + + #ifndef INCLUDE_MENUITEM_DEF +@@ -10,12 +13,10 @@ #include <qmenudata.h> #include "liquid.h" -#include <kapp.h> -#include <kglobal.h> -#include <kconfig.h> -#include <kdrawutil.h> -#include <kglobalsettings.h> -#include <kpixmapeffect.h> +//#include "liquiddeco.h" +#include <qapplication.h> +#include <qpe/config.h> +#include "effects.h" #include <qpalette.h> #include <qbitmap.h> #include <qtabbar.h> -@@ -25,28 +23,29 @@ +@@ -25,28 +26,30 @@ #include <qtimer.h> #include <qpixmapcache.h> #include <qradiobutton.h> -#include <kimageeffect.h> -#include <ktoolbar.h> +#include <qcombobox.h> #include <qdrawutil.h> #include <qwidgetlist.h> @@ -142,16 +183,17 @@ Features: #include <qheader.h> #include <unistd.h> -#include <klocale.h> -#include <kiconloader.h> -#include <kmenubar.h> -#include <kipc.h> +#include <qmenubar.h> +#include <qprogressbar.h> ++#include <qlineedit.h> -#include <X11/X.h> -#include <X11/Xlib.h> +#include <stdio.h> #include "htmlmasks.h" #include "embeddata.h" @@ -164,17 +206,17 @@ Features: +void TransMenuHandler::stripePixmap(QPixmap &pix, const QColor &color) { QImage img(pix.convertToImage()); - KImageEffect::fade(img, 0.9, color); + QImageEffect::fade(img, 0.9, color); int x, y; int r, g, b; for(y=0; y < img.height(); y+=3){ -@@ -71,35 +70,37 @@ +@@ -71,35 +74,37 @@ : QObject(parent) { pixDict.setAutoDelete(true); - connect(kapp, SIGNAL(kipcMessage(int, int)), this, - SLOT(slotKIPCMessage(int, int))); reloadSettings(); } @@ -215,26 +257,26 @@ Features: if(type == TransStippleBg || type == TransStippleBtn || type == Custom){ QApplication::syncX(); - KPixmap *pix = new KPixmap; + QPixmap *pix = new QPixmap; if(p->testWFlags(Qt::WType_Popup)){ QRect r(p->x(), p->y(), p->width(), p->height()); QRect deskR = QApplication::desktop()->rect(); -@@ -107,7 +108,7 @@ +@@ -107,7 +112,7 @@ r.setBottom(deskR.bottom()); r.setRight(deskR.right()); } - *pix = QPixmap::grabWindow(qt_xrootwin(), r.x(), r.y(), + *pix = QPixmap::grabWindow(QApplication::desktop()-> winId(), r.x(), r.y(), r.width(), r.height()); } else{ // tear off menu -@@ -121,82 +122,53 @@ +@@ -121,82 +126,61 @@ stripePixmap(*pix, p->colorGroup().button()); } else{ - KPixmapEffect::fade(*pix, (((float)opacity)+80)*0.01, color); + QPixmapEffect::fade(*pix, (((float)opacity)+80)*0.01, color); } + pixDict.insert(p->winId(), pix); @@ -261,21 +303,21 @@ Features: - } - return(false); -} - -void TransMenuHandler::slotKIPCMessage(int id, int) -{ - if(id == LIQUID_MENU_CHANGE){ - bool oldShadow = shadowText; -+// qWarning("Deleting menu pixmap, width %d", pixDict.find(p->winId())->width()); - +- - KConfig *config = KGlobal::config(); - config->reparseConfiguration(); // in case KControl changed values -- ++// qWarning("Deleting menu pixmap, width %d", pixDict.find(p->winId())->width()); + - // Make sure no popupmenus are shown. There shouldn't be any because - // the user just clicked "Apply", but there can be tear offs ;-) - // We just close them so the pixmaps are deleted and regenerated. - QWidgetList *list = QApplication::topLevelWidgets(); - QWidgetListIt it( *list ); - QWidget *w; - while ((w=it.current()) != 0 ){ - ++it; @@ -294,21 +336,20 @@ Features: - // Now repaint menubar if needed - if(shadowText != oldShadow){ - it.toFirst(); - while ((w=it.current()) != 0 ){ - ++it; - if(w->inherits("QMenuBar")){ - w->repaint(); +- } +- } + wid-> setBackgroundMode( QWidget::PaletteBackground ); } -+ delete ol; - } - } - } - else if(id == MOSFET_BUTTON_CHANGE){ - qWarning("In mosfet button change"); - // really, this should be in LiquidStyle, but what the hell? ;-) - QWidgetList *list = QApplication::allWidgets(); - QWidgetListIt it( *list ); - QWidget *w; - while ((w=it.current()) != 0 ){ @@ -318,47 +359,274 @@ Features: - } - } - ((LiquidStyle*)parent())->loadCustomButtons(); - it.toFirst(); - while ((w=it.current()) != 0 ){ - ++it; - if(w->inherits("QPushButton")){ - ((LiquidStyle*)parent())->applyCustomAttributes((QPushButton *)w); -- } -- } -- -- } ++ delete ol; + } + } + return(false); ++} + +- } ++ ++static int qt_version ( ) ++{ ++ const char *qver = qVersion ( ); ++ return ( qver [0] - '0' ) * 100 + ( qver [2] - '0' ) * 10 + ( qver [4] - '0' ); } + LiquidStyle::LiquidStyle() - :KStyle() + :QWindowsStyle() { + setName ( "LiquidStyle" ); + ++ oldqte = ( qt_version ( ) < 234 ); + flatTBButtons = false; + btnMaskBmp = QBitmap(37, 26, buttonmask_bits, true); btnMaskBmp.setMask(btnMaskBmp); htmlBtnMaskBmp = QBitmap(37, 26, htmlbuttonmask_bits, true); -@@ -711,7 +683,6 @@ +@@ -207,12 +191,8 @@ + btnDict.setAutoDelete(true); + 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")); + btnBlendPix = new QPixmap; +@@ -572,131 +552,119 @@ + case HTMLBtnBorderDown: + 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); ++ 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); ++ 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); ++ pixmaps[TabDown] = processEmbedded("tab", btnH, btnS, btnV /*, true*/); + break; + case TabFocus: +- pixmaps[TabFocus] = processEmbedded("tab", btnHoverH, btnHoverS, +- btnHoverS, true); +- break; +- case CBDown: +- pixmaps[CBDown] = processEmbedded("checkboxdown", btnH, btnS, btnV, true); ++ pixmaps[TabFocus] = processEmbedded("tab", btnHoverH, btnHoverS, btnHoverV /*, true*/); + break; +- case CBDownHover: +- pixmaps[CBDownHover] = processEmbedded("checkboxdown", btnHoverH, +- btnHoverS, btnHoverV, true); ++ ++ case CB: ++ pixmaps[CB] = processEmbedded("checkbox", bH, bS, bV /*, true*/); + break; + case CBHover: +- pixmaps[CBHover] = processEmbedded("checkbox", btnH, btnS, btnV, true); ++ pixmaps[CBHover] = processEmbedded("checkbox", btnHoverH, btnHoverS, btnHoverV /*, true*/); + break; +- case HSlider: +- pixmaps[HSlider] = processEmbedded("sliderarrow", btnH, btnS, btnV, true); ++ case CBDown: ++ pixmaps[CBDown] = processEmbedded("checkboxdown", btnH, btnS, btnV /*, true*/); + break; ++ case CBDownHover: ++ pixmaps[CBDownHover] = processEmbedded("checkboxdown", btnHoverH, btnHoverS, btnHoverV /*, true*/); ++ break; ++ + case VSlider: +- pixmaps[VSlider] = processEmbedded("sliderarrow", btnH, btnS, btnV, true); ++ 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; + case HSBSliderMidBg: +@@ -711,7 +679,6 @@ void LiquidStyle::polish(QPalette &appPal) { - int i; for(i=0; i < BITMAP_ITEMS; ++i){ if(pixmaps[i]){ -@@ -730,20 +701,29 @@ +@@ -719,31 +686,28 @@ + pixmaps[i] = NULL; } - - loadCustomButtons(); + } +- 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()+4)*10; + lowLightVal = 100 + (2* /*KGlobalSettings::contrast()*/ 3 +4)*10; btnDict.clear(); btnBorderDict.clear(); bevelFillDict.clear(); smallBevelFillDict.clear(); - KConfig *config = KGlobal::config(); @@ -374,42 +642,60 @@ Features: + +// QPalette pal = QApplication::palette(); // button color stuff - config->setGroup("General"); - QColor c = config->readColorEntry("buttonBackground", &Qt::lightGray); - if(c == config->readColorEntry("background", &Qt::lightGray)){ + 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)); appPal.setBrush(QColorGroup::Button, btnBrush); -@@ -794,15 +774,7 @@ - pagerBrush.setPixmap(*pix); +@@ -778,8 +742,8 @@ + adjustHSV(*pix, h, s, v); + smallBevelFillDict.insert(c.rgb(), pix); + } +- pagerHoverBrush.setColor(c); +- pagerHoverBrush.setPixmap(*pix); ++// pagerHoverBrush.setColor(c); ++// pagerHoverBrush.setPixmap(*pix); + + c = c.dark(120); + pix = smallBevelFillDict.find(c.rgb()); // better be NULL ;-) +@@ -790,19 +754,13 @@ + adjustHSV(*pix, h, s, v); + smallBevelFillDict.insert(c.rgb(), pix); + } +- pagerBrush.setColor(c); +- pagerBrush.setPixmap(*pix); ++// pagerBrush.setColor(c); ++// pagerBrush.setPixmap(*pix); // background color stuff - c = config->readColorEntry("background", &Qt::lightGray); - if(qstrcmp(kapp->argv()[0], "kicker") == 0){ - appPal.setColor(QColorGroup::Mid, menuBrush.color().dark(110)); - appPal.setColor(QColorGroup::Dark, menuBrush.color().dark(130)); - appPal.setColor(QColorGroup::Midlight, menuBrush.color().light(110)); - appPal.setColor(QColorGroup::Light, menuBrush.color().light(115)); - menuBrush.setColor(c); // hack - used for kicker applets - appPal.setBrush(QColorGroup::Background, menuBrush); - } -+ 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); -@@ -817,21 +789,18 @@ +@@ -817,101 +775,50 @@ wallPaper.fill(c.rgb()); painter.begin(&wallPaper); for(i=0; i < 32; i+=4){ - painter.setPen(c.dark(105)); + painter.setPen(c.dark(100 + contrast)); painter.drawLine(0, i, 32, i); - painter.setPen(c.dark(103)); + painter.setPen(c.dark(100 + 3 * contrast / 5 ) ); @@ -417,27 +703,43 @@ Features: }; painter.end(); bgBrush.setColor(c); bgBrush.setPixmap(wallPaper); - if(qstrcmp(kapp->argv()[0], "kicker") != 0 && - qstrcmp(kapp->argv()[0], "ksplash") != 0){ appPal.setBrush(QColorGroup::Background, bgBrush); - } - - // lineedits +- +- // lineedits - c = config->readColorEntry("windowBackground", &Qt::white); -+ c = /*QColor ( config. readEntry("Base", ( Qt::white). name ( )));*/ appPal. color ( QPalette::Active, QColorGroup::Base ); - QPixmap basePix; - basePix.resize(32, 32); - basePix.fill(c.rgb()); -@@ -856,52 +825,37 @@ - applyCustomAttributes((QPushButton *)w); - } - } +- 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); +- } +- } - - config->setGroup(oldGrp); } void LiquidStyle::polish(QWidget *w) { if(w->inherits("QMenuBar")){ - ((QFrame*)w)->setLineWidth(0); @@ -484,57 +786,62 @@ Features: return; } - if(qstrcmp(kapp->argv()[0], "kicker") == 0 && - w->inherits("KPanelExtension")){ // FIXME - doesn't work - w->setPalette(kapp->palette()); - } - if(w->inherits("QComboBox") || -+ if(w->inherits("QComboBox") || w->inherits("QProgressBar") || - w->inherits("QLineEdit") || w->inherits("QRadioButton") || +- w->inherits("QLineEdit") || w->inherits("QRadioButton") || - w->inherits("QCheckBox") || w->inherits("QScrollBar") || - w->isA("AppletHandle") || w->inherits("KMiniPagerButton") || - w->inherits("TaskContainer")){ -+ w->inherits("QCheckBox") || w->inherits("QScrollBar")) { - w->installEventFilter(this); - } - if(w->inherits("QLineEdit")){ -@@ -913,6 +867,10 @@ - applyCustomAttributes((QPushButton *)w); ++ if(w->inherits("QRadioButton") || w->inherits("QCheckBox") || w->inherits("QProgressBar")) { 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); +- w->installEventFilter(this); ++ + if(w->inherits("QButton") || w-> inherits("QComboBox")){ + w-> setBackgroundMode ( QWidget::PaletteBackground ); + w->setBackgroundOrigin ( QWidget::ParentOrigin); -+ } + } bool isViewport = qstrcmp(w->name(), "qt_viewport") == 0 || - qstrcmp(w->name(), "qt_clipped_viewport") == 0; -@@ -942,11 +900,17 @@ +@@ -942,11 +849,20 @@ w->setMouseTracking(true); w->installEventFilter(this); } -+ if(w-> inherits("QToolButton")&&w->parent()->inherits("QToolBar")) { ++ 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")) { + ((QFrame *) w)-> setFrameShape ( QFrame::NoFrame ); + } if(w->ownPalette() && !w->inherits("QButton") && !w->inherits("QComboBox")){ return; } - if(w->inherits("PanelButtonBase")) - return; if(w->parent() && w->parent()->isWidgetType() && !((QWidget*)w->parent())-> palette().active().brush(QColorGroup::Background).pixmap()){ -@@ -954,16 +918,21 @@ +@@ -954,16 +870,21 @@ return; } if(!isViewport && !isViewportChild && !w->testWFlags(WType_Popup) && - !w->inherits("KDesktop") && !w->inherits("PasswordDlg")){ + !( !w-> inherits("QLineEdit") && w-> parent() && w-> parent()-> isWidgetType ( ) && w-> parent()-> inherits ( "QMultiLineEdit" ))) { if(w->backgroundMode() == QWidget::PaletteBackground || w->backgroundMode() == QWidget::PaletteButton){ - w->setBackgroundMode(QWidget::X11ParentRelative); @@ -552,69 +859,75 @@ Features: + else if ( w-> inherits("QFrame") ) + w->setBackgroundOrigin ( QWidget::WidgetOrigin ); + + if ( w->parentWidget()->inherits ( "QWidgetStack" )) { + w->setBackgroundOrigin ( QWidget::WidgetOrigin ); } } -@@ -977,6 +946,11 @@ +@@ -977,6 +898,11 @@ if(w->inherits("QPopupMenu")) w->setBackgroundMode(QWidget::PaletteButton); + else if(w-> testWFlags(Qt::WType_Popup) && + !w->inherits("QListBox") && + ( qstrcmp ( w-> name(), "automatic what's this? widget" ) != 0 )) { + w->removeEventFilter(menuHandler); + } if(w->isTopLevel()) return; -@@ -986,7 +960,7 @@ +@@ -986,7 +912,7 @@ ((qstrcmp(w->parent()->name(), "qt_viewport") == 0) || (qstrcmp(w->parent()->name(), "qt_clipped_viewport") == 0)); - w->setPalette(QApplication::palette()); + w->unsetPalette(); if(w->backgroundMode() == QWidget::X11ParentRelative || isViewportChild){ if(w->inherits("QPushButton")) w->setBackgroundMode(QWidget::PaletteButton); -@@ -1001,12 +975,14 @@ - unapplyCustomAttributes((QPushButton *)w); - w->removeEventFilter(this); - } -- +@@ -997,16 +923,12 @@ + if(isViewportChild) + w->setAutoMask(false); + +- if(w->inherits("QPushButton")){ +- unapplyCustomAttributes((QPushButton *)w); +- w->removeEventFilter(this); +/* + if(w->inherits("QPushButton") || w-> inherits("QComboBox")){ + w-> setBackgroundMode ( PaletteBackground ); -+ } -+*/ - if(w->inherits("QComboBox") || - w->inherits("QLineEdit") || w->inherits("QRadioButton") || + } +- +- if(w->inherits("QComboBox") || +- w->inherits("QLineEdit") || w->inherits("QRadioButton") || - w->inherits("QCheckBox") || w->inherits("QScrollBar") || - w->isA("AppletHandle") || w->inherits("KMiniPagerButton") || - w->inherits("TaskContainer")){ -+ w->inherits("QCheckBox") || w->inherits("QScrollBar")) { ++*/ ++ if( w->inherits("QRadioButton") || w->inherits("QCheckBox") || w->inherits("QProgressBar")) { w->removeEventFilter(this); } if(w->inherits("QButton") || w->inherits("QComboBox")){ -@@ -1014,9 +990,9 @@ +@@ -1014,9 +936,12 @@ w->setAutoMask(false); } } - if(w->inherits("KToolBar")){ ++ if(w-> inherits("QToolButton")) { ++ w-> removeEventFilter ( this ); ++ } + if(w->inherits("QToolBar")){ w->removeEventFilter(this); - //w->setBackgroundMode(QWidget::PaletteBackground); + w->setBackgroundMode(QWidget::PaletteBackground); return; } if(w->inherits("QHeader")){ -@@ -1028,22 +1004,98 @@ +@@ -1028,22 +953,118 @@ void LiquidStyle::polish(QApplication *app) { - KStyle::polish(app); + QWindowsStyle::polish(app); menuAni = app->isEffectEnabled(UI_AnimateMenu); menuFade = app->isEffectEnabled(UI_FadeMenu); if(menuAni) @@ -701,30 +1014,50 @@ Features: + p. setPen ( g.text());//g.highlightedText ( )); + p. drawText (x,y,w-1,h-1,AlignCenter,pstr); + } + } + } +}; + + ++/* ++ * 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 ); ++ } ++}; + /* * This is a fun method ;-) Here's an overview. KToolBar grabs resize to * force everything to erase and repaint on resize. This is going away, I'm -@@ -1063,7 +1115,7 @@ +@@ -1063,7 +1084,7 @@ */ bool LiquidStyle::eventFilter(QObject *obj, QEvent *ev) { - if(obj->inherits("KToolBar")){ + if(obj->inherits("QToolBar")){ if(ev->type() == QEvent::Resize){ const QObjectList *tbChildList = obj->children(); QObjectListIt it(*tbChildList); -@@ -1076,35 +1128,7 @@ +@@ -1076,116 +1097,27 @@ } } - else if(obj->inherits("KMiniPagerButton")){ - QButton *btn = (QButton *)obj; - if(ev->type() == QEvent::Paint){ - if(!(btn->isOn() || btn->isDown())){ - QPalette pal = btn->palette(); @@ -747,43 +1080,165 @@ Features: - else if(ev->type() == QEvent::Leave){ - highlightWidget = NULL; - btn->repaint(false); - } - - } - else if(obj->inherits("QPushButton") || obj->inherits("QComboBox") || - obj->isA("AppletHandle")){ -+ else if(obj->inherits("QPushButton") || obj->inherits("QComboBox")){ - QWidget *btn = (QWidget *)obj; - if(ev->type() == QEvent::Enter){ - if(btn->isEnabled()){ -@@ -1119,20 +1143,7 @@ - } - } - } +- 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("TaskContainer")){ - QButton *btn = (QButton *)obj; - QPalette pal = btn->palette(); - if(ev->type() == QEvent::Enter){ - pal.setColor(QColorGroup::Background, pal.active().button().light(110)); - btn->setPalette(pal); - } - else if(ev->type() == QEvent::Leave){ - pal.setColor(QColorGroup::Background, - QApplication::palette().active().background()); - btn->setPalette(pal); - } - } - else if(obj->inherits("QToolButton") && !obj->inherits("KToolBarButton")){ +- QToolButton *btn = (QToolButton *)btn; +- if(!btn->autoRaise()){ + 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()){ -@@ -1290,7 +1301,24 @@ + 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; + } + } + else if(obj->inherits("QRadioButton") || obj->inherits("QCheckBox")){ +@@ -1201,6 +1133,7 @@ + QSize sz = isRadio ? exclusiveIndicatorSize() + : indicatorSize(); + ++/* + if(btn->hasFocus()){ + QRect r = QRect(0, 0, btn->width(), btn->height()); + p.setPen(btn->colorGroup().button().dark(140)); +@@ -1209,6 +1142,7 @@ + p.drawLine(r.right(), r.y()+1, r.right(), r.bottom()-1); + p.drawLine(r.x()+1, r.bottom(), r.right()-1, r.bottom()); + } ++*/ + int x = 0; + int y = (btn->height()-lsz.height()+fm.height()-sz.height())/2; + if(isRadio) +@@ -1228,36 +1162,6 @@ + p.end(); + 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")){ + QHeader *hw = (QHeader *)obj; +@@ -1290,7 +1194,24 @@ } } } - return(false); + else if (obj-> inherits( "QProgressBar" )) { + if ( ev->type() == QEvent::Paint ) { + HackProgressBar *p = (HackProgressBar *) obj; + const QColorGroup &g = p-> colorGroup ( ); @@ -799,115 +1254,308 @@ Features: + p-> paint ((QPaintEvent *) ev, g, pix ); + return true; + } + } + return false ; } void LiquidStyle::drawButton(QPainter *p, int x, int y, int w, int h, -@@ -1340,11 +1368,6 @@ +@@ -1325,8 +1246,11 @@ + } + + 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) : + g.background(), g.background()); +@@ -1340,11 +1264,6 @@ QColorGroup g = btn->colorGroup(); - QColor testColor; - if(btn->parent() && btn->parent()->isWidgetType()){ - testColor = p->backgroundColor(); // remove me - } - //int dw = buttonDefaultIndicatorWidth(); if(btn->hasFocus() || btn->isDefault()){ QColor c = btn->hasFocus() ? g.button().light(110) : g.background(); -@@ -1596,7 +1619,7 @@ +@@ -1488,7 +1407,20 @@ + const QColorGroup &g, bool sunken, + 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) + isMasked = ((QWidget*)painter->device())->autoMask(); +@@ -1498,7 +1430,7 @@ + + 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, + sunken, false, isMasked); +@@ -1550,16 +1482,17 @@ + return(QRect(x+9, y+3, w - (h / 3) - 20, h-6)); + } + +-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)); + } + + void LiquidStyle::drawScrollBarControls(QPainter *p, const QScrollBar *sb, + int sliderStart, uint controls, + uint activeControl) + { +- bool isHover = highlightWidget == p->device(); + int sliderMin, sliderMax, sliderLength, buttonDim; + scrollBarMetrics( sb, sliderMin, sliderMax, sliderLength, buttonDim ); + +@@ -1596,7 +1529,7 @@ if(sbBuffer.size() != sb->size()) sbBuffer.resize(sb->size()); } - subB.setRect( subX,subY,buttonDim,buttonDim ); + subB.setRect( subX,subY,0,0); // buttonDim,buttonDim ); addB.setRect( addX,addY,buttonDim,buttonDim ); if(horiz) subHC.setRect(addX-buttonDim,addY,buttonDim,buttonDim ); -@@ -1624,7 +1647,7 @@ +@@ -1624,7 +1557,7 @@ QPainter painter; if(!horiz){ painter.begin(&sbBuffer); - QRect bgR(0, subB.bottom()+1, sb->width(), (len-(buttonDim*3))+1); + QRect bgR(0, subB.bottom()+1, sb->width(), (len-(buttonDim*2))+1); if(sliderR.height() >= 8){ painter.drawPixmap(bgR.x()+1, bgR.y(), *vsbSliderFillPix, 0, 0, 13, 8); -@@ -1690,7 +1713,7 @@ +@@ -1648,25 +1581,15 @@ + } + 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{ + painter.setPen(g.button().dark(210)); +@@ -1674,7 +1597,6 @@ + 13, sliderR.height()); + painter.drawTiledPixmap(sliderR.x()+2, sliderR.y()+1, + 11, sliderR.height()-2, +- isHover ? *getPixmap(VSBSliderMidHover) : + *getPixmap(VSBSliderMid), 1, 0); + } + } +@@ -1690,7 +1612,7 @@ } else{ painter.begin(&sbBuffer); - QRect bgR(subB.right()+1, 0, (len-(buttonDim*3))+1, sb->height()); + QRect bgR(subB.right()+1, 0, (len-(buttonDim*2))+1, sb->height()); if(sliderR.width() >= 8){ painter.drawPixmap(bgR.x(), bgR.y()+1, *vsbSliderFillPix, 0, 0, 8, 13); -@@ -1761,10 +1784,10 @@ +@@ -1715,22 +1637,17 @@ + if(controls & Slider){ + 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)); + } + else if(sliderR.width() >= 8){ + 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); + } + else{ +@@ -1738,8 +1655,7 @@ + drawRoundRect(&painter, sliderR.x(), sliderR.y()+1, + 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); + } + } +@@ -1761,10 +1677,10 @@ addB.width()-8, addB.height()-8, g, !maxed); } if ( controls & SubLine ) { - drawSBButton(p, subB, g, activeControl == SubLine); - drawArrow( p, horiz ? LeftArrow : UpArrow, - false, subB.x()+4, subB.y()+4, - subB.width()-8, subB.height()-8, g, !maxed); + // drawSBButton(p, subB, g, activeControl == SubLine); + // drawArrow( p, horiz ? LeftArrow : UpArrow, + // false, subB.x()+4, subB.y()+4, + // subB.width()-8, subB.height()-8, g, !maxed); drawSBButton(p, subHC, g, activeControl == SubLine); drawArrow( p, horiz ? LeftArrow : UpArrow, false, subHC.x()+4, subHC.y()+4, -@@ -1865,8 +1888,8 @@ +@@ -1865,8 +1781,8 @@ else buttonDim = ( length - b*2 )/2 - 1; - sliderMin = b + buttonDim; - maxLength = length - b*2 - buttonDim*3; + sliderMin = b + 0; // buttonDim; + maxLength = length - b*2 - buttonDim*2; // 3; if ( sb->maxValue() == sb->minValue() ) { sliderLength = maxLength; -@@ -1914,8 +1937,8 @@ +@@ -1914,31 +1830,31 @@ return(QSize(16, 16)); } -void LiquidStyle::drawExclusiveIndicator(QPainter *p, int x, int y, int w, - int h, const QColorGroup &g, bool on, +void LiquidStyle::drawExclusiveIndicator(QPainter *p, int x, int y, int /*w*/, + int /*h*/, const QColorGroup &/*g*/, bool on, bool down, bool) { - bool isHover = highlightWidget == p->device(); -@@ -1957,8 +1980,8 @@ +- 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(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)); + + } + 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)); + } + } +@@ -1957,25 +1873,25 @@ return(QSize(20, 22)); } -void LiquidStyle::drawIndicator(QPainter *p, int x, int y, int w, int h, - const QColorGroup &g, int state, bool down, bool) +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 isHover = highlightWidget == p->device(); ++ bool isActive = ( p->device()->devType() == QInternal::Widget ) && ( qApp-> focusWidget ( ) == p-> device ( )); bool isMasked = p->device() && p->device()->devType() == QInternal::Widget -@@ -1996,8 +2019,8 @@ + && ((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)); + + } + else{ + if(state != QButton::Off){ +- p->drawPixmap(x, y, isHover ? *getPixmap(CBDownHover) : ++ p->drawPixmap(x, y, isActive ? *getPixmap(CBDownHover) : + *getPixmap(CBDown)); + /* Todo - tristate + if(state == QButton::On){ +@@ -1992,12 +1908,12 @@ + }*/ + } + else +- p->drawPixmap(x, y, isHover ? *getPixmap(CBHover) : *getPixmap(CB)); ++ p->drawPixmap(x, y, isActive ? *getPixmap(CBHover) : *getPixmap(CB)); } } -void LiquidStyle::drawIndicatorMask(QPainter *p, int x, int y, int w, int h, - int state) +void LiquidStyle::drawIndicatorMask(QPainter *p, int x, int y, int /*w*/, int /*h*/, + int /*state*/) { // needed for some reason by KHtml, even tho it's all filled ;P p->drawPixmap(x, y, *getPixmap(HTMLCB)->mask()); -@@ -2005,18 +2028,17 @@ +@@ -2005,18 +1921,17 @@ } void LiquidStyle::drawSlider(QPainter *p, int x, int y, int w, int h, - const QColorGroup &g, Orientation orient, + const QColorGroup &/*g*/, Orientation orient, bool, bool) { QWidget *parent = (QWidget *)p->device(); @@ -919,17 +1567,17 @@ Features: *getPixmap(VSlider)); } -void LiquidStyle::drawSliderMask(QPainter *p, int x, int y, int w, int h, +void LiquidStyle::drawSliderMask(QPainter *p, int x, int y, int /*w*/, int /*h*/, Orientation orient, bool, bool) { p->drawPixmap(x, y, orient == Qt::Horizontal ? *getPixmap(HSlider)->mask() : -@@ -2065,203 +2087,26 @@ +@@ -2065,203 +1980,26 @@ p->drawLineSegments(a); } -void LiquidStyle::drawKBarHandle(QPainter *p, int x, int y, int w, int h, - const QColorGroup &g, KToolBarPos, - QBrush *) -{ - p->setPen(g.button().dark(120)); @@ -941,36 +1589,34 @@ Features: - p->drawLine(x2, y+1, x2, y2-1); - - p->setPen(g.background()); - p->drawPoint(x, y); - p->drawPoint(x2, y); - p->drawPoint(x, y2); - p->drawPoint(x2, y2); - - +- - - // p->drawRect(x, y, w, h); - QPixmap *pix = bevelFillDict.find(g.button().rgb()); - if(!pix){ - int h, s, v; - g.button().hsv(&h, &s, &v); - pix = new QPixmap(*bevelFillPix); - adjustHSV(*pix, h, s, v); - bevelFillDict.insert(g.button().rgb(), pix); - } - - p->drawTiledPixmap(x+1, y+1, w-2, h-2, *pix); -} - -void LiquidStyle::drawKMenuBar(QPainter *p, int x, int y, int w, int h, - const QColorGroup &g, bool mac, QBrush *) -+void LiquidStyle::drawMenuBarItem(QPainter *p, int x, int y, int w, int h, -+ QMenuItem *mi, QColorGroup &g, bool /*enabled*/, bool active ) - { +-{ - if(p->device() && p->device()->devType() == QInternal::Widget && - ((KMenuBar *)p->device())->isTopLevelMenu()){ - p->setPen(Qt::black); - p->drawRect(x, y, w, h); - p->drawTiledPixmap(x+1, y+1, w-2, h-2, *menuPix); - // left - p->drawLine(x+1, y+1, x+1, y+5); - p->drawLine(x+2, y+1, x+2, y+3); @@ -984,20 +1630,22 @@ Features: - p->drawLine(x2-4, y+1, x2-6, y+1); - } - else{ - qDrawShadePanel(p, x, y, w, h, g, false, 1, - &g.brush(QColorGroup::Background)); - } - -} -- + -void LiquidStyle::drawKToolBar(QPainter *p, int x, int y, int w, int h, - const QColorGroup &g, KToolBarPos, QBrush *) --{ ++void LiquidStyle::drawMenuBarItem(QPainter *p, int x, int y, int w, int h, ++ QMenuItem *mi, QColorGroup &g, bool /*enabled*/, bool active ) + { - //p->fillRect(x, y, w, h, g.brush(QColorGroup::Background)); -} - -void LiquidStyle::drawKToolBarButton(QPainter *p, int x, int y, int w, int h, - const QColorGroup &g, bool sunken, - bool raised, bool enabled, bool popup, - KToolButtonType icontext, - const QString& btext, const QPixmap *pixmap, @@ -1113,18 +1761,18 @@ Features: - 0, 0, g, false); + if(active){ + x -= 2; // Bug in Qt/E + y -= 2; + w += 2; + h += 2; } -} - - + -void LiquidStyle::drawKMenuItem(QPainter *p, int x, int y, int w, int h, - const QColorGroup &g, bool active, QMenuItem *mi, - QBrush *) -{ - if ( p->font() == KGlobalSettings::generalFont() ) - p->setFont( KGlobalSettings::menuFont() ); + QWidget *parent = (QWidget *)p->device(); + p->setBrushOrigin(parent->pos()); @@ -1135,46 +1783,46 @@ Features: if(p->device() && p->device()->devType() == QInternal::Widget && - ((QWidget *)p->device())->inherits("KMenuBar")){ - shadow = ((KMenuBar*)p->device())->isTopLevel() ? g.button().dark(130) : + ((QWidget *)p->device())->inherits("QMenuBar")){ + shadow = ((QMenuBar*)p->device())->isTopLevel() ? g.button().dark(130) : g.background().dark(130); } else -@@ -2300,8 +2145,8 @@ +@@ -2300,8 +2038,8 @@ } void LiquidStyle::drawPopupPanel(QPainter *p, int x, int y, int w, int h, - const QColorGroup &g, int lineWidth, - const QBrush * fill) + const QColorGroup &g, int /*lineWidth*/, + const QBrush * /*fill*/) { QColor c; switch(menuHandler->transType()){ -@@ -2336,8 +2181,6 @@ +@@ -2336,8 +2074,6 @@ maxpmw = QMAX( maxpmw, 20 ); - if ( p->font() == KGlobalSettings::generalFont() ) - p->setFont( KGlobalSettings::menuFont() ); bool dis = !enabled; QColorGroup itemg = dis ? pal.disabled() : pal.active(); -@@ -2363,7 +2206,7 @@ +@@ -2363,7 +2099,7 @@ p->fillRect(x, y, w, h, menuBrush); } else{ - KPixmap *pix = menuHandler->pixmap(((QWidget*)p->device())->winId()); + QPixmap *pix = menuHandler->pixmap(((QWidget*)p->device())->winId()); if(pix) p->drawPixmap(x, y, *pix, x, y, w, h); } -@@ -2508,25 +2351,6 @@ +@@ -2508,25 +2244,6 @@ return h; } -void LiquidStyle::drawKProgressBlock(QPainter *p, int x, int y, int w, int h, - const QColorGroup &g, QBrush *fill) -{ - p->setPen(g.button().dark(130)); - p->drawRect(x, y, w, h); @@ -1190,17 +1838,22 @@ Features: - bevelFillDict.insert(g.button().dark(120).rgb(), pix); - } - p->drawTiledPixmap(x+2, y+2, w-4, h-4, *pix); - } -} void LiquidStyle::drawFocusRect(QPainter *p, const QRect &r, const QColorGroup &g, const QColor *c, -@@ -2540,25 +2364,25 @@ +@@ -2536,29 +2253,29 @@ + if(p->device()->devType() == QInternal::Widget){ + // 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; } else{ - KStyle::drawFocusRect(p, r, g, c, atBorder); + QWindowsStyle::drawFocusRect(p, r, g, c, atBorder); } } else @@ -1220,35 +1873,35 @@ Features: bool selected) { if(tabBar->shape() != QTabBar::RoundedAbove){ - KStyle::drawTab(p, tabBar, tab, selected); + QWindowsStyle::drawTab(p, tabBar, tab, selected); return; } QPixmap tilePix; -@@ -2671,7 +2495,7 @@ +@@ -2671,7 +2388,7 @@ vFrame = 8; // was 10 } else - KStyle::tabbarMetrics(t, hFrame, vFrame, overlap); + QWindowsStyle::tabbarMetrics(t, hFrame, vFrame, overlap); } -@@ -2699,7 +2523,7 @@ +@@ -2699,7 +2416,7 @@ p->drawLine(x+1, y+1, x+1, y2-1); } else if(lineWidth != 2 || !sunken) - KStyle::drawPanel(p, x, y, w, h, g, sunken, lineWidth, fill); + QWindowsStyle::drawPanel(p, x, y, w, h, g, sunken, lineWidth, fill); else{ QPen oldPen = p->pen(); int x2 = x+w-1; -@@ -2726,105 +2550,6 @@ +@@ -2726,105 +2443,6 @@ } } -void LiquidStyle::drawKickerAppletHandle(QPainter *p, int x, int y, int w, int h, - const QColorGroup &g, QBrush *) -{ - p->fillRect(x, y, w, h, g.brush(QColorGroup::Background)); - drawClearBevel(p, x, y, w, h, highlightWidget == p->device() ? @@ -1344,165 +1997,215 @@ Features: - p->drawText(br.x()+ textPos, -1, w-textPos, h, - AlignLeft|AlignVCenter, s); - } - -} void LiquidStyle::adjustHSV(QPixmap &pix, int h, int s, int v) { -@@ -2998,22 +2723,22 @@ - customBtnIconList.clear(); - customBtnLabelList.clear(); +@@ -2988,110 +2606,5 @@ + } + } +-// 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"); -+// 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); +- +- 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); -+// 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(); - +- +- const char *labelStr = customBtnLabelList.first(); +- const char *colorStr = colorList.first(); +- const char *iconStr = iconList.first(); +- - KIconLoader *ldr = KGlobal::iconLoader(); -+// KIconLoader *ldr = KGlobal::iconLoader(); - while(labelStr != NULL){ - QColor *c = new QColor; - c->setNamedColor(QString(colorStr)); -@@ -3022,7 +2747,7 @@ - QString tmpStr(iconStr); - if(!tmpStr.isEmpty()){ - QPixmap *pixmap = +- 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)); -+ new QPixmap();//ldr->loadIcon(tmpStr, KIcon::Small)); - if(pixmap->isNull()){ - delete pixmap; - customBtnIconList.append(NULL); -@@ -3037,7 +2762,6 @@ - colorStr = colorList.next(); - iconStr = iconList.next(); - } +- 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(); +- } - config->setGroup(oldGrp); - } - - void LiquidStyle::applyCustomAttributes(QPushButton *btn) -@@ -3087,7 +2811,7 @@ - } - } - +-} +- +-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" -+// #include "liquid.moc" - - +- +- +- +- +- ---- - 2002-10-24 03:19:31.000000000 +0200 -+++ plugin.cpp 2002-10-04 03:37:38.000000000 +0200 -@@ -1,29 +1,84 @@ + /* vim: set noet sw=8 ts=8: */ +--- - 2002-11-18 04:47:41.000000000 +0100 ++++ plugin.cpp 2002-11-18 03:54:56.000000000 +0100 +@@ -1,29 +1,79 @@ +#include <qapplication.h> + #include "liquid.h" -#include <klocale.h> +#include "liquidset.h" +#include "plugin.h" + + + +LiquidInterface::LiquidInterface ( ) : ref ( 0 ) +{ + m_widget = 0; +} -+ + +-extern "C" { +- KStyle* allocate(); +- int minor_version(); +- int major_version(); +- const char *description(); +LiquidInterface::~LiquidInterface ( ) +{ -+} -+ + } + +-KStyle* allocate() +QStyle *LiquidInterface::style ( ) -+{ + { +- return(new LiquidStyle); + return new LiquidStyle ( ); -+} -+ + } + +-int minor_version() +QString LiquidInterface::name ( ) const -+{ + { +- return(0); + return qApp-> translate ( "Styles", "Liquid" ); -+} -+ + } + +-int major_version() +QString LiquidInterface::description ( ) const -+{ + { +- return(1); + return qApp-> translate ( "Styles", "High Performance Liquid style by Mosfet" ); -+} -+ + } + +-const char *description() +bool LiquidInterface::hasSettings ( ) const -+{ + { +- return(i18n("High performance liquid plugin").utf8()); + return true; +} + +QWidget *LiquidInterface::create ( QWidget *parent, const char *name ) +{ + m_widget = new LiquidSettings ( parent, name ? name : "LIQUID-SETTINGS" ); - --extern "C" { -- KStyle* allocate(); -- int minor_version(); -- int major_version(); -- const char *description(); ++ + return m_widget; - } - --KStyle* allocate() ++} ++ +bool LiquidInterface::accept ( ) - { -- return(new LiquidStyle); ++{ + if ( !m_widget ) + return false; + + return m_widget-> writeConfig ( ); } - --int minor_version() ++ +void LiquidInterface::reject ( ) - { -- return(0); - } - --int major_version() ++{ ++} ++ + +QRESULT LiquidInterface::queryInterface ( const QUuid &uuid, QUnknownInterface **iface ) - { -- return(1); ++{ + *iface = 0; + + if ( uuid == IID_QUnknown ) + *iface = this; + else if ( uuid == IID_Style ) + *iface = this; + else if ( uuid == IID_StyleExtended ) + *iface = this; + + if ( *iface ) + (*iface)-> addRef ( ); + + return QS_OK; - } - --const char *description() ++} ++ +Q_EXPORT_INTERFACE() - { -- return(i18n("High performance liquid plugin").utf8()); ++{ + Q_CREATE_INSTANCE( LiquidInterface ) - } -+ -+ -+ ++} + -+// Hack for Retail Z experiments -+extern "C" { QStyle *allocate ( ) { return new LiquidStyle ( ); } } diff --git a/noncore/styles/liquid/plugin.cpp b/noncore/styles/liquid/plugin.cpp index 0740420..6813fc5 100644 --- a/noncore/styles/liquid/plugin.cpp +++ b/noncore/styles/liquid/plugin.cpp @@ -72,13 +72,8 @@ QRESULT LiquidInterface::queryInterface ( const QUuid &uuid, QUnknownInterface * return QS_OK; } Q_EXPORT_INTERFACE() { Q_CREATE_INSTANCE( LiquidInterface ) } - - - -// Hack for Retail Z experiments -extern "C" { QStyle *allocate ( ) { return new LiquidStyle ( ); } } |