summaryrefslogtreecommitdiff
path: root/noncore/styles/liquid/liquid.cpp
Unidiff
Diffstat (limited to 'noncore/styles/liquid/liquid.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/styles/liquid/liquid.cpp567
1 files changed, 178 insertions, 389 deletions
diff --git a/noncore/styles/liquid/liquid.cpp b/noncore/styles/liquid/liquid.cpp
index 6812d16..ba732aa 100644
--- a/noncore/styles/liquid/liquid.cpp
+++ b/noncore/styles/liquid/liquid.cpp
@@ -1,57 +1,61 @@
1/*- 1/*-
2 * Copyright (C)QPL 2001 Daniel M. Duley. All rights reserved. 2 * Copyright (C)QPL 2001 Daniel M. Duley. All rights reserved.
3 */ 3 */
4 4
5//
6// (c) 2002 Robert 'sandman' Griebl
7//
5 8
6 9
7#ifndef INCLUDE_MENUITEM_DEF 10#ifndef INCLUDE_MENUITEM_DEF
8#define INCLUDE_MENUITEM_DEF 11#define INCLUDE_MENUITEM_DEF
9#endif 12#endif
10 13
11#include <qmenudata.h> 14#include <qmenudata.h>
12#include "liquid.h" 15#include "liquid.h"
13//#include "liquiddeco.h" 16//#include "liquiddeco.h"
14#include <qapplication.h> 17#include <qapplication.h>
15#include <qpe/config.h> 18#include <qpe/config.h>
16#include "effects.h" 19#include "effects.h"
17#include <qpalette.h> 20#include <qpalette.h>
18#include <qbitmap.h> 21#include <qbitmap.h>
19#include <qtabbar.h> 22#include <qtabbar.h>
20#include <qpopupmenu.h> 23#include <qpopupmenu.h>
21#include <qobjectlist.h> 24#include <qobjectlist.h>
22#include <qimage.h> 25#include <qimage.h>
23#include <qtimer.h> 26#include <qtimer.h>
24#include <qpixmapcache.h> 27#include <qpixmapcache.h>
25#include <qradiobutton.h> 28#include <qradiobutton.h>
26#include <qcombobox.h> 29#include <qcombobox.h>
27#include <qdrawutil.h> 30#include <qdrawutil.h>
28#include <qwidgetlist.h> 31#include <qwidgetlist.h>
29#include <qtoolbutton.h> 32#include <qtoolbutton.h>
30#include <qheader.h> 33#include <qheader.h>
31#include <unistd.h> 34#include <unistd.h>
32#include <qmenubar.h> 35#include <qmenubar.h>
33#include <qprogressbar.h> 36#include <qprogressbar.h>
37#include <qlineedit.h>
34 38
35#include <stdio.h> 39#include <stdio.h>
36 40
37#include "htmlmasks.h" 41#include "htmlmasks.h"
38#include "embeddata.h" 42#include "embeddata.h"
39 43
40typedef void (QStyle::*QDrawMenuBarItemImpl) (QPainter *, int, int, int, int, QMenuItem *, 44typedef void (QStyle::*QDrawMenuBarItemImpl) (QPainter *, int, int, int, int, QMenuItem *,
41 QColorGroup &, bool, bool); 45 QColorGroup &, bool, bool);
42 46
43QDrawMenuBarItemImpl qt_set_draw_menu_bar_impl(QDrawMenuBarItemImpl impl); 47QDrawMenuBarItemImpl qt_set_draw_menu_bar_impl(QDrawMenuBarItemImpl impl);
44 48
45void TransMenuHandler::stripePixmap(QPixmap &pix, const QColor &color) 49void TransMenuHandler::stripePixmap(QPixmap &pix, const QColor &color)
46{ 50{
47 QImage img(pix.convertToImage()); 51 QImage img(pix.convertToImage());
48 QImageEffect::fade(img, 0.9, color); 52 QImageEffect::fade(img, 0.9, color);
49 int x, y; 53 int x, y;
50 int r, g, b; 54 int r, g, b;
51 for(y=0; y < img.height(); y+=3){ 55 for(y=0; y < img.height(); y+=3){
52 unsigned int *data = (unsigned int *) img.scanLine(y); 56 unsigned int *data = (unsigned int *) img.scanLine(y);
53 for(x=0; x < img.width(); ++x){ 57 for(x=0; x < img.width(); ++x){
54 r = qRed(data[x]); 58 r = qRed(data[x]);
55 g = qGreen(data[x]); 59 g = qGreen(data[x]);
56 b = qBlue(data[x]); 60 b = qBlue(data[x]);
57 if(r-10) 61 if(r-10)
@@ -141,71 +145,75 @@ bool TransMenuHandler::eventFilter(QObject *obj, QEvent *ev)
141 } 145 }
142 } 146 }
143 else if(ev->type() == QEvent::Hide){ 147 else if(ev->type() == QEvent::Hide){
144 if(type == TransStippleBg || type == TransStippleBtn || 148 if(type == TransStippleBg || type == TransStippleBtn ||
145 type == Custom){ 149 type == Custom){
146// qWarning("Deleting menu pixmap, width %d", pixDict.find(p->winId())->width()); 150// qWarning("Deleting menu pixmap, width %d", pixDict.find(p->winId())->width());
147 151
148 pixDict.remove(p->winId()); 152 pixDict.remove(p->winId());
149 if ( !p->inherits("QPopupMenu")) 153 if ( !p->inherits("QPopupMenu"))
150 p->setBackgroundMode(QWidget::PaletteBackground); 154 p->setBackgroundMode(QWidget::PaletteBackground);
151 155
152 QObjectList *ol = p-> queryList("QWidget"); 156 QObjectList *ol = p-> queryList("QWidget");
153 for ( QObjectListIt it( *ol ); it. current ( ); ++it ) { 157 for ( QObjectListIt it( *ol ); it. current ( ); ++it ) {
154 QWidget *wid = (QWidget *) it.current ( ); 158 QWidget *wid = (QWidget *) it.current ( );
155 159
156 wid-> setBackgroundMode( QWidget::PaletteBackground ); 160 wid-> setBackgroundMode( QWidget::PaletteBackground );
157 } 161 }
158 delete ol; 162 delete ol;
159 } 163 }
160 } 164 }
161 return(false); 165 return(false);
162} 166}
163 167
164 168
169static int qt_version ( )
170{
171 const char *qver = qVersion ( );
172 return ( qver [0] - '0' ) * 100 + ( qver [2] - '0' ) * 10 + ( qver [4] - '0' );
173}
174
175
165LiquidStyle::LiquidStyle() 176LiquidStyle::LiquidStyle()
166 :QWindowsStyle() 177 :QWindowsStyle()
167{ 178{
168 setName ( "LiquidStyle" ); 179 setName ( "LiquidStyle" );
169 180
181 oldqte = ( qt_version ( ) < 234 );
170 flatTBButtons = false; 182 flatTBButtons = false;
171 183
172 btnMaskBmp = QBitmap(37, 26, buttonmask_bits, true); 184 btnMaskBmp = QBitmap(37, 26, buttonmask_bits, true);
173 btnMaskBmp.setMask(btnMaskBmp); 185 btnMaskBmp.setMask(btnMaskBmp);
174 htmlBtnMaskBmp = QBitmap(37, 26, htmlbuttonmask_bits, true); 186 htmlBtnMaskBmp = QBitmap(37, 26, htmlbuttonmask_bits, true);
175 htmlBtnMaskBmp.setMask(htmlBtnMaskBmp); 187 htmlBtnMaskBmp.setMask(htmlBtnMaskBmp);
176 headerHoverID = -1; 188 headerHoverID = -1;
177 highlightWidget = NULL; 189 highlightWidget = NULL;
178 setButtonDefaultIndicatorWidth(0); 190 setButtonDefaultIndicatorWidth(0);
179 btnDict.setAutoDelete(true); 191 btnDict.setAutoDelete(true);
180 bevelFillDict.setAutoDelete(true); 192 bevelFillDict.setAutoDelete(true);
181 smallBevelFillDict.setAutoDelete(true); 193 smallBevelFillDict.setAutoDelete(true);
182 customBtnColorList.setAutoDelete(true);
183 customBtnIconList.setAutoDelete(true);
184 customBtnLabelList.setAutoDelete(true);
185 194
186 rMatrix.rotate(270.0); 195 rMatrix.rotate(270.0);
187 highcolor = QPixmap::defaultDepth() > 8;
188 btnBorderPix = new QPixmap; 196 btnBorderPix = new QPixmap;
189 btnBorderPix->convertFromImage(qembed_findImage("buttonfill")); 197 btnBorderPix->convertFromImage(qembed_findImage("buttonfill"));
190 btnBlendPix = new QPixmap; 198 btnBlendPix = new QPixmap;
191 btnBlendPix->convertFromImage(qembed_findImage("buttonborder")); 199 btnBlendPix->convertFromImage(qembed_findImage("buttonborder"));
192 bevelFillPix = new QPixmap; 200 bevelFillPix = new QPixmap;
193 bevelFillPix->convertFromImage(qembed_findImage("clear_fill_large")); 201 bevelFillPix->convertFromImage(qembed_findImage("clear_fill_large"));
194 smallBevelFillPix = new QPixmap; 202 smallBevelFillPix = new QPixmap;
195 smallBevelFillPix->convertFromImage(qembed_findImage("clear_fill_small")); 203 smallBevelFillPix->convertFromImage(qembed_findImage("clear_fill_small"));
196 // new stuff 204 // new stuff
197 vsbSliderFillPix = menuPix = NULL; 205 vsbSliderFillPix = menuPix = NULL;
198 menuHandler = new TransMenuHandler(this); 206 menuHandler = new TransMenuHandler(this);
199 setScrollBarExtent(15, 15); 207 setScrollBarExtent(15, 15);
200 int i; 208 int i;
201 for(i=0; i < BITMAP_ITEMS; ++i){ 209 for(i=0; i < BITMAP_ITEMS; ++i){
202 pixmaps[i] = NULL; 210 pixmaps[i] = NULL;
203 } 211 }
204 oldSliderThickness = sliderThickness(); 212 oldSliderThickness = sliderThickness();
205 setSliderThickness(11); 213 setSliderThickness(11);
206} 214}
207 215
208LiquidStyle::~LiquidStyle() 216LiquidStyle::~LiquidStyle()
209{ 217{
210 if(btnBorderPix) 218 if(btnBorderPix)
211 delete btnBorderPix; 219 delete btnBorderPix;
@@ -523,408 +531,352 @@ QPixmap* LiquidStyle::processEmbedded(const char *label, int h, int s, int v,
523 } 531 }
524 data[current] = qRgba(c.red(), c.green(), c.blue(), alpha); 532 data[current] = qRgba(c.red(), c.green(), c.blue(), alpha);
525 } 533 }
526 QPixmap *pix = new QPixmap; 534 QPixmap *pix = new QPixmap;
527 pix->convertFromImage(img); 535 pix->convertFromImage(img);
528 return(pix); 536 return(pix);
529} 537}
530 538
531 539
532 540
533 541
534QPixmap* LiquidStyle::getPixmap(BitmapData item) 542QPixmap* LiquidStyle::getPixmap(BitmapData item)
535{ 543{
536 544
537 if(pixmaps[item]) 545 if(pixmaps[item])
538 return(pixmaps[item]); 546 return(pixmaps[item]);
539 547
540 switch(item){ 548 switch(item){
541 case HTMLBtnBorder: 549 case HTMLBtnBorder:
542 pixmaps[HTMLBtnBorder] = processEmbedded("htmlbtnborder", btnH, btnS, btnV); 550 pixmaps[HTMLBtnBorder] = processEmbedded("htmlbtnborder", btnH, btnS, btnV);
543 break; 551 break;
544 case HTMLBtnBorderDown: 552 case HTMLBtnBorderDown:
545 pixmaps[HTMLBtnBorderDown] = processEmbedded("htmlbtnborder", btnHoverH, btnHoverS, btnHoverV); 553 pixmaps[HTMLBtnBorderDown] = processEmbedded("htmlbtnborder", btnHoverH, btnHoverS, btnHoverV);
546 break; 554 break;
555
547 case HTMLCB: 556 case HTMLCB:
548 pixmaps[HTMLCB] = processEmbedded("htmlcheckbox", bH, bS, bV); 557 pixmaps[HTMLCB] = processEmbedded("htmlcheckbox", bH, bS, bV);
549 break; 558 break;
559 case HTMLCBHover:
560 pixmaps[HTMLCBHover] = processEmbedded("htmlcheckbox", btnHoverH, btnHoverS, btnHoverV);
561 break;
550 case HTMLCBDown: 562 case HTMLCBDown:
551 pixmaps[HTMLCBDown] = processEmbedded("htmlcheckboxdown", btnH, btnS, btnV); 563 pixmaps[HTMLCBDown] = processEmbedded("htmlcheckboxdown", btnH, btnS, btnV);
552 break; 564 break;
553 case HTMLCBHover:
554 pixmaps[HTMLCBHover] = processEmbedded("htmlcheckbox", btnH, btnS, btnV);
555 break;
556 case HTMLCBDownHover: 565 case HTMLCBDownHover:
557 pixmaps[HTMLCBDownHover] = processEmbedded("htmlcheckboxdown", 566 pixmaps[HTMLCBDownHover] = processEmbedded("htmlcheckboxdown", btnHoverH, btnHoverS, btnHoverV);
558 btnHoverH, btnHoverS,
559 btnHoverV);
560 break; 567 break;
568
561 case HTMLRadio: 569 case HTMLRadio:
562 pixmaps[HTMLRadio] = processEmbedded("htmlradio", bH, bS, bV); 570 pixmaps[HTMLRadio] = processEmbedded("htmlradio", bH, bS, bV);
571 break;
572 case HTMLRadioHover:
573 pixmaps[HTMLRadioHover] = processEmbedded("htmlradio", btnHoverH, btnHoverS, btnHoverV);
574 break;
563 case HTMLRadioDown: 575 case HTMLRadioDown:
564 pixmaps[HTMLRadioDown] = processEmbedded("htmlradiodown", btnH, btnS, btnV); 576 pixmaps[HTMLRadioDown] = processEmbedded("htmlradiodown", btnH, btnS, btnV);
565 case HTMLRadioHover: 577 break;
566 pixmaps[HTMLRadioHover] = processEmbedded("htmlradio", btnH, btnS, btnV);
567 case HTMLRadioDownHover: 578 case HTMLRadioDownHover:
568 pixmaps[HTMLRadioDownHover] = processEmbedded("htmlradiodown", 579 pixmaps[HTMLRadioDownHover] = processEmbedded("htmlradiodown", btnHoverH, btnHoverS, btnHoverV);
569 btnHoverH, btnHoverS, 580 break;
570 btnHoverV); 581
571 case RadioOn: 582 case RadioOff:
572 pixmaps[RadioOn] = processEmbedded("radio_down", btnH, btnS, btnV, true); 583 pixmaps[RadioOff] = processEmbedded("radio", bH, bS, bV /*, true*/);
584 break;
585 case RadioOffHover:
586 pixmaps[RadioOffHover] = processEmbedded("radio", btnHoverH, btnHoverS, btnHoverV /*, true*/);
587 break;
588 case RadioOn:
589 pixmaps[RadioOn] = processEmbedded("radio_down", btnH, btnS, btnV /*, true*/);
573 break; 590 break;
574 case RadioOnHover: 591 case RadioOnHover:
575 pixmaps[RadioOnHover] = processEmbedded("radio_down", btnHoverH, btnHoverS, 592 pixmaps[RadioOnHover] = processEmbedded("radio_down", btnHoverH, btnHoverS, btnHoverV /*, true*/);
576 btnHoverV, true);
577 break; 593 break;
578 case RadioOffHover: 594
579 pixmaps[RadioOffHover] = processEmbedded("radio", btnH, btnS, btnV, true); 595 case Tab:
596 pixmaps[Tab] = processEmbedded("tab", bH, bS, bV /*, true*/);
580 break; 597 break;
581 case TabDown: 598 case TabDown:
582 pixmaps[TabDown] = processEmbedded("tab", btnH, btnS, btnV, true); 599 pixmaps[TabDown] = processEmbedded("tab", btnH, btnS, btnV /*, true*/);
583 break; 600 break;
584 case TabFocus: 601 case TabFocus:
585 pixmaps[TabFocus] = processEmbedded("tab", btnHoverH, btnHoverS, 602 pixmaps[TabFocus] = processEmbedded("tab", btnHoverH, btnHoverS, btnHoverV /*, true*/);
586 btnHoverS, true); 603 break;
604
605 case CB:
606 pixmaps[CB] = processEmbedded("checkbox", bH, bS, bV /*, true*/);
607 break;
608 case CBHover:
609 pixmaps[CBHover] = processEmbedded("checkbox", btnHoverH, btnHoverS, btnHoverV /*, true*/);
587 break; 610 break;
588 case CBDown: 611 case CBDown:
589 pixmaps[CBDown] = processEmbedded("checkboxdown", btnH, btnS, btnV, true); 612 pixmaps[CBDown] = processEmbedded("checkboxdown", btnH, btnS, btnV /*, true*/);
590 break; 613 break;
591 case CBDownHover: 614 case CBDownHover:
592 pixmaps[CBDownHover] = processEmbedded("checkboxdown", btnHoverH, 615 pixmaps[CBDownHover] = processEmbedded("checkboxdown", btnHoverH, btnHoverS, btnHoverV /*, true*/);
593 btnHoverS, btnHoverV, true);
594 break;
595 case CBHover:
596 pixmaps[CBHover] = processEmbedded("checkbox", btnH, btnS, btnV, true);
597 break; 616 break;
598 case HSlider: 617
599 pixmaps[HSlider] = processEmbedded("sliderarrow", btnH, btnS, btnV, true); 618 case VSlider:
600 break; 619 pixmaps[VSlider] = processEmbedded("sliderarrow", btnH, btnS, btnV, true );
601 case VSlider:
602 pixmaps[VSlider] = processEmbedded("sliderarrow", btnH, btnS, btnV, true);
603 *pixmaps[VSlider] = pixmaps[VSlider]->xForm(rMatrix); 620 *pixmaps[VSlider] = pixmaps[VSlider]->xForm(rMatrix);
604 break; 621 break;
605 case RadioOff:
606 pixmaps[RadioOff] = processEmbedded("radio", bH, bS, bV, true);
607 break;
608 case Tab:
609 pixmaps[Tab] = processEmbedded("tab", bH, bS, bV, true);
610 break;
611 case CB:
612 pixmaps[CB] = processEmbedded("checkbox", bH, bS, bV, true);
613 break;
614 case VSBSliderTop: 622 case VSBSliderTop:
615 pixmaps[VSBSliderTop] = processEmbedded("sbslider_top", btnH, btnS, btnV, true); 623 case VSBSliderTopHover:
624 pixmaps[item] = processEmbedded("sbslider_top", btnH, btnS, btnV /*, true*/);
616 break; 625 break;
617 case VSBSliderBtm: 626 case VSBSliderBtm:
618 pixmaps[VSBSliderBtm] = processEmbedded("sbslider_btm", btnH, btnS, btnV, true); 627 case VSBSliderBtmHover:
628 pixmaps[item] = processEmbedded("sbslider_btm", btnH, btnS, btnV /*, true*/);
619 break; 629 break;
620 case VSBSliderMid: 630 case VSBSliderMid:
621 pixmaps[VSBSliderMid] = processEmbedded("sbslider_mid", btnH, btnS, btnV); 631 case VSBSliderMidHover:
632 pixmaps[item] = processEmbedded("sbslider_mid", btnH, btnS, btnV);
622 break; 633 break;
623 case VSBSliderTopHover: 634 case VSBSliderTopBg:
624 pixmaps[VSBSliderTopHover] = processEmbedded("sbslider_top", btnHoverH, btnHoverS, btnHoverV, true); 635 pixmaps[VSBSliderTopBg] = processEmbedded("sbslider_top", bH, bS, bV /*, true*/);
625 break; 636 break;
626 case VSBSliderBtmHover: 637 case VSBSliderBtmBg:
627 pixmaps[VSBSliderBtmHover] = processEmbedded("sbslider_btm", btnHoverH, btnHoverS, btnHoverV, true); 638 pixmaps[VSBSliderBtmBg] = processEmbedded("sbslider_btm", bH, bS, bV /*, true*/);
628 break; 639 break;
629 case VSBSliderMidHover: 640 case VSBSliderMidBg:
630 pixmaps[VSBSliderMidHover] = processEmbedded("sbslider_mid", btnHoverH, btnHoverS, btnHoverV); 641 pixmaps[VSBSliderMidBg] = processEmbedded("sbslider_mid", bH, bS, bV);
631 break; 642 break;
632 643
633 case HSBSliderTop: 644 case HSlider:
634 pixmaps[HSBSliderTop] = processEmbedded("sbslider_top", btnH, btnS, btnV, true); 645 pixmaps[HSlider] = processEmbedded("sliderarrow", btnH, btnS, btnV /*, true*/);
635 *pixmaps[HSBSliderTop] = pixmaps[HSBSliderTop]->xForm(rMatrix);
636 break;
637 case HSBSliderBtm:
638 pixmaps[HSBSliderBtm] = processEmbedded("sbslider_btm", btnH, btnS, btnV, true);
639 *pixmaps[HSBSliderBtm] = pixmaps[HSBSliderBtm]->xForm(rMatrix);
640 break;
641 case HSBSliderMid:
642 pixmaps[HSBSliderMid] = processEmbedded("sbslider_mid", btnH, btnS, btnV);
643 *pixmaps[HSBSliderMid] = pixmaps[HSBSliderMid]->xForm(rMatrix);
644 break; 646 break;
647 case HSBSliderTop:
645 case HSBSliderTopHover: 648 case HSBSliderTopHover:
646 pixmaps[HSBSliderTopHover] = processEmbedded("sbslider_top", btnHoverH, btnHoverS, btnHoverV, true); 649 pixmaps[item] = processEmbedded("sbslider_top", btnH, btnS, btnV, true );
647 *pixmaps[HSBSliderTopHover] = pixmaps[HSBSliderTopHover]->xForm(rMatrix); 650 *pixmaps[item] = pixmaps[item]->xForm(rMatrix);
648 break; 651 break;
652 case HSBSliderBtm:
649 case HSBSliderBtmHover: 653 case HSBSliderBtmHover:
650 pixmaps[HSBSliderBtmHover] = processEmbedded("sbslider_btm", btnHoverH, btnHoverS, btnHoverV, true); 654 pixmaps[item] = processEmbedded("sbslider_btm", btnH, btnS, btnV, true );
651 *pixmaps[HSBSliderBtmHover] = pixmaps[HSBSliderBtmHover]->xForm(rMatrix); 655 *pixmaps[item] = pixmaps[item]->xForm(rMatrix);
652 break; 656 break;
657 case HSBSliderMid:
653 case HSBSliderMidHover: 658 case HSBSliderMidHover:
654 pixmaps[HSBSliderMidHover] = processEmbedded("sbslider_mid", btnHoverH, btnHoverS, btnHoverV); 659 pixmaps[item] = processEmbedded("sbslider_mid", btnH, btnS, btnV);
655 *pixmaps[HSBSliderMidHover] = pixmaps[HSBSliderMidHover]->xForm(rMatrix); 660 *pixmaps[item] = pixmaps[item]->xForm(rMatrix);
656 break;
657 case VSBSliderTopBg:
658 pixmaps[VSBSliderTopBg] = processEmbedded("sbslider_top", bH, bS, bV, true);
659 break;
660 case VSBSliderBtmBg:
661 pixmaps[VSBSliderBtmBg] = processEmbedded("sbslider_btm", bH, bS, bV, true);
662 break;
663 case VSBSliderMidBg:
664 pixmaps[VSBSliderMidBg] = processEmbedded("sbslider_mid", bH, bS, bV);
665 break; 661 break;
666 case HSBSliderTopBg: 662 case HSBSliderTopBg:
667 pixmaps[HSBSliderTopBg] = processEmbedded("sbslider_top", bH, bS, bV, true); 663 pixmaps[HSBSliderTopBg] = processEmbedded("sbslider_top", bH, bS, bV, true );
668 *pixmaps[HSBSliderTopBg] = pixmaps[HSBSliderTopBg]->xForm(rMatrix); 664 *pixmaps[HSBSliderTopBg] = pixmaps[HSBSliderTopBg]->xForm(rMatrix);
669 break; 665 break;
670 case HSBSliderBtmBg: 666 case HSBSliderBtmBg:
671 pixmaps[HSBSliderBtmBg] = processEmbedded("sbslider_btm", bH, bS, bV, true); 667 pixmaps[HSBSliderBtmBg] = processEmbedded("sbslider_btm", bH, bS, bV, true );
672 *pixmaps[HSBSliderBtmBg] = pixmaps[HSBSliderBtmBg]->xForm(rMatrix); 668 *pixmaps[HSBSliderBtmBg] = pixmaps[HSBSliderBtmBg]->xForm(rMatrix);
673 break; 669 break;
674 case HSBSliderMidBg: 670 case HSBSliderMidBg:
675 pixmaps[HSBSliderMidBg] = processEmbedded("sbslider_mid", bH, bS, bV); 671 pixmaps[HSBSliderMidBg] = processEmbedded("sbslider_mid", bH, bS, bV);
676 *pixmaps[HSBSliderMidBg] = pixmaps[HSBSliderMidBg]->xForm(rMatrix); 672 *pixmaps[HSBSliderMidBg] = pixmaps[HSBSliderMidBg]->xForm(rMatrix);
677 break; 673 break;
678 default: 674 default:
679 break; 675 break;
680 } 676 }
681 return(pixmaps[item]); 677 return(pixmaps[item]);
682} 678}
683 679
684void LiquidStyle::polish(QPalette &appPal) 680void LiquidStyle::polish(QPalette &appPal)
685{ 681{
686 int i; 682 int i;
687 for(i=0; i < BITMAP_ITEMS; ++i){ 683 for(i=0; i < BITMAP_ITEMS; ++i){
688 if(pixmaps[i]){ 684 if(pixmaps[i]){
689 delete pixmaps[i]; 685 delete pixmaps[i];
690 pixmaps[i] = NULL; 686 pixmaps[i] = NULL;
691 } 687 }
692 } 688 }
693 QWidgetList *list = QApplication::allWidgets();
694 QWidgetListIt it( *list );
695 QWidget *w;
696 while ((w=it.current()) != 0 ){
697 ++it;
698 if(w->inherits("QPushButton")){
699 unapplyCustomAttributes((QPushButton *)w);
700 }
701 }
702
703 loadCustomButtons();
704 lowLightVal = 100 + (2* /*KGlobalSettings::contrast()*/ 3 +4)*10; 689 lowLightVal = 100 + (2* /*KGlobalSettings::contrast()*/ 3 +4)*10;
705 btnDict.clear(); 690 btnDict.clear();
706 btnBorderDict.clear(); 691 btnBorderDict.clear();
707 bevelFillDict.clear(); 692 bevelFillDict.clear();
708 smallBevelFillDict.clear(); 693 smallBevelFillDict.clear();
709 694
710 Config config ( "qpe" ); 695 Config config ( "qpe" );
711 config. setGroup ( "Liquid-Style" ); 696 config. setGroup ( "Liquid-Style" );
712 int contrast = config. readNumEntry ( "StippleContrast", 5 ); 697 int contrast = config. readNumEntry ( "StippleContrast", 5 );
713 if ( contrast < 0 ) 698 if ( contrast < 0 )
714 contrast = 0; 699 contrast = 0;
715 else if ( contrast > 10 ) 700 else if ( contrast > 10 )
716 contrast = 10; 701 contrast = 10;
717 702
718// QPalette pal = QApplication::palette(); 703// QPalette pal = QApplication::palette();
719 704
720 // button color stuff 705 // button color stuff
721 config. setGroup ( "Appearance" ); 706 config. setGroup ( "Appearance" );
722 QColor c = // QColor ( config. readEntry("Button", ( Qt::lightGray ). name ( ))); 707 QColor c = oldqte ? QColor ( config. readEntry("Button", ( Qt::lightGray ). name ( )))
723 appPal. color ( QPalette::Active, QColorGroup::Button ); 708 : appPal. color ( QPalette::Active, QColorGroup::Button );
724 if ( c == appPal. color ( QPalette::Active, QColorGroup::Background ) 709 if ( c == ( oldqte ? QColor ( config. readEntry ( "background", ( Qt::lightGray ). name ( )))
725 //QColor ( config. readEntry ( "background", ( Qt::lightGray ). name ( ))) 710 : appPal. color ( QPalette::Active, QColorGroup::Background ))) {
726 ) {
727 // force button color to be different from background 711 // force button color to be different from background
728 QBrush btnBrush(QColor(200, 202, 228)); 712 QBrush btnBrush(QColor(200, 202, 228));
729 appPal.setBrush(QColorGroup::Button, btnBrush); 713 appPal.setBrush(QColorGroup::Button, btnBrush);
730 } 714 }
731 c.hsv(&btnH, &btnS, &btnV); 715 c.hsv(&btnH, &btnS, &btnV);
732 c.light(120).hsv(&btnHoverH, &btnHoverS, &btnHoverV); 716 c.light(120).hsv(&btnHoverH, &btnHoverS, &btnHoverV);
733 717
734 // menu pixmap 718 // menu pixmap
735 if(!menuPix){ 719 if(!menuPix){
736 menuPix = new QPixmap; 720 menuPix = new QPixmap;
737 menuPix->resize(64, 64); 721 menuPix->resize(64, 64);
738 } 722 }
739 QPainter painter; 723 QPainter painter;
740 menuPix->fill(c.rgb()); 724 menuPix->fill(c.rgb());
741 painter.begin(menuPix); 725 painter.begin(menuPix);
742 painter.setPen(c.dark(105)); 726 painter.setPen(c.dark(105));
743 for(i=0; i < 63; i+=4){ 727 for(i=0; i < 63; i+=4){
744 painter.drawLine(0, i, 63, i); 728 painter.drawLine(0, i, 63, i);
745 painter.drawLine(0, i+1, 63, i+1); 729 painter.drawLine(0, i+1, 63, i+1);
746 }; 730 };
747 painter.end(); 731 painter.end();
748 menuBrush.setColor(c); 732 menuBrush.setColor(c);
749 menuBrush.setPixmap(*menuPix); 733 menuBrush.setPixmap(*menuPix);
750 734
751 // pager brush 735 // pager brush
752 c = c.dark(120); 736 c = c.dark(120);
753 QPixmap *pix = smallBevelFillDict.find(c.rgb()); // better be NULL ;-) 737 QPixmap *pix = smallBevelFillDict.find(c.rgb()); // better be NULL ;-)
754 if(!pix){ 738 if(!pix){
755 int h, s, v; 739 int h, s, v;
756 c.hsv(&h, &s, &v); 740 c.hsv(&h, &s, &v);
757 pix = new QPixmap(*smallBevelFillPix); 741 pix = new QPixmap(*smallBevelFillPix);
758 adjustHSV(*pix, h, s, v); 742 adjustHSV(*pix, h, s, v);
759 smallBevelFillDict.insert(c.rgb(), pix); 743 smallBevelFillDict.insert(c.rgb(), pix);
760 } 744 }
761 pagerHoverBrush.setColor(c); 745// pagerHoverBrush.setColor(c);
762 pagerHoverBrush.setPixmap(*pix); 746// pagerHoverBrush.setPixmap(*pix);
763 747
764 c = c.dark(120); 748 c = c.dark(120);
765 pix = smallBevelFillDict.find(c.rgb()); // better be NULL ;-) 749 pix = smallBevelFillDict.find(c.rgb()); // better be NULL ;-)
766 if(!pix){ 750 if(!pix){
767 int h, s, v; 751 int h, s, v;
768 c.hsv(&h, &s, &v); 752 c.hsv(&h, &s, &v);
769 pix = new QPixmap(*smallBevelFillPix); 753 pix = new QPixmap(*smallBevelFillPix);
770 adjustHSV(*pix, h, s, v); 754 adjustHSV(*pix, h, s, v);
771 smallBevelFillDict.insert(c.rgb(), pix); 755 smallBevelFillDict.insert(c.rgb(), pix);
772 } 756 }
773 pagerBrush.setColor(c); 757// pagerBrush.setColor(c);
774 pagerBrush.setPixmap(*pix); 758// pagerBrush.setPixmap(*pix);
775 759
776 // background color stuff 760 // background color stuff
777 c = /*QColor ( config. readEntry ( "Background", ( Qt::lightGray ).name ( )));*/ appPal. color ( QPalette::Active, QColorGroup::Background ); 761 c = oldqte ? QColor ( config. readEntry ( "Background", ( Qt::lightGray ).name ( )))
762 : appPal. color ( QPalette::Active, QColorGroup::Background );
763
778 c.hsv(&bH, &bS, &bV); 764 c.hsv(&bH, &bS, &bV);
779 c.light(120).hsv(&bHoverH, &bHoverS, &bHoverV); 765 c.light(120).hsv(&bHoverH, &bHoverS, &bHoverV);
780 766
781 // FIXME? 767 // FIXME?
782 if(vsbSliderFillPix) 768 if(vsbSliderFillPix)
783 delete vsbSliderFillPix; 769 delete vsbSliderFillPix;
784 vsbSliderFillPix = new QPixmap(bevelFillPix->xForm(rMatrix)); 770 vsbSliderFillPix = new QPixmap(bevelFillPix->xForm(rMatrix));
785 adjustHSV(*vsbSliderFillPix, bH, bS, bV); 771 adjustHSV(*vsbSliderFillPix, bH, bS, bV);
786 772
787 // background brush 773 // background brush
788 QPixmap wallPaper(32, 32); 774 QPixmap wallPaper(32, 32);
789 wallPaper.fill(c.rgb()); 775 wallPaper.fill(c.rgb());
790 painter.begin(&wallPaper); 776 painter.begin(&wallPaper);
791 for(i=0; i < 32; i+=4){ 777 for(i=0; i < 32; i+=4){
792 painter.setPen(c.dark(100 + contrast)); 778 painter.setPen(c.dark(100 + contrast));
793 painter.drawLine(0, i, 32, i); 779 painter.drawLine(0, i, 32, i);
794 painter.setPen(c.dark(100 + 3 * contrast / 5 ) ); 780 painter.setPen(c.dark(100 + 3 * contrast / 5 ) );
795 painter.drawLine(0, i+1, 32, i+1); 781 painter.drawLine(0, i+1, 32, i+1);
796 }; 782 };
797 painter.end(); 783 painter.end();
798 bgBrush.setColor(c); 784 bgBrush.setColor(c);
799 bgBrush.setPixmap(wallPaper); 785 bgBrush.setPixmap(wallPaper);
800 appPal.setBrush(QColorGroup::Background, bgBrush); 786 appPal.setBrush(QColorGroup::Background, bgBrush);
801
802 // lineedits
803 c = /*QColor ( config. readEntry("Base", ( Qt::white). name ( )));*/ appPal. color ( QPalette::Active, QColorGroup::Base );
804 QPixmap basePix;
805 basePix.resize(32, 32);
806 basePix.fill(c.rgb());
807 painter.begin(&basePix);
808 painter.setPen(c.dark(105));
809 for(i=0; i < 32; i+=4){
810 painter.drawLine(0, i, 32, i);
811 painter.drawLine(0, i+1, 32, i+1);
812 };
813 painter.end();
814 baseBrush.setColor(c);
815 baseBrush.setPixmap(basePix);
816 it.toFirst();
817 while ((w=it.current()) != 0 ){
818 ++it;
819 if(w->inherits("QLineEdit")){
820 QPalette pal = w->palette();
821 pal.setBrush(QColorGroup::Base, baseBrush);
822 w->setPalette(pal);
823 }
824 else if(w->inherits("QPushButton")){
825 applyCustomAttributes((QPushButton *)w);
826 }
827 }
828} 787}
829 788
830void LiquidStyle::polish(QWidget *w) 789void LiquidStyle::polish(QWidget *w)
831{ 790{
832 if(w->inherits("QMenuBar")){ 791 if(w->inherits("QMenuBar")){
833 //((QFrame*)w)->setLineWidth(0); 792 //((QFrame*)w)->setLineWidth(0);
834 w->setBackgroundMode(QWidget::PaletteBackground); 793 w->setBackgroundMode(QWidget::PaletteBackground);
835 w->setBackgroundOrigin(QWidget::ParentOrigin); 794 w->setBackgroundOrigin(QWidget::ParentOrigin);
836 return; 795 return;
837 } 796 }
838 if(w->inherits("QToolBar")){ 797 if(w->inherits("QToolBar")){
839 w->installEventFilter(this); 798 w->installEventFilter(this);
840 w->setBackgroundMode(QWidget::PaletteBackground); 799 w->setBackgroundMode(QWidget::PaletteBackground);
841 w->setBackgroundOrigin(QWidget::WidgetOrigin); 800 w->setBackgroundOrigin(QWidget::WidgetOrigin);
842 return; 801 return;
843 } 802 }
844 if(w->inherits("QPopupMenu")) 803 if(w->inherits("QPopupMenu"))
845 w->setBackgroundMode(QWidget::NoBackground); 804 w->setBackgroundMode(QWidget::NoBackground);
846 else if(w-> testWFlags(Qt::WType_Popup) && 805 else if(w-> testWFlags(Qt::WType_Popup) &&
847 !w->inherits("QListBox") && 806 !w->inherits("QListBox") &&
848 ( qstrcmp ( w-> name(), "automatic what's this? widget" ) != 0 )) { 807 ( qstrcmp ( w-> name(), "automatic what's this? widget" ) != 0 )) {
849 w->installEventFilter(menuHandler); 808 w->installEventFilter(menuHandler);
850 } 809 }
851 810
852 if(w->isTopLevel()){ 811 if(w->isTopLevel()){
853 return; 812 return;
854 } 813 }
855 814
856 if(w->inherits("QComboBox") || w->inherits("QProgressBar") || 815 if(w->inherits("QRadioButton") || w->inherits("QCheckBox") || w->inherits("QProgressBar")) {
857 w->inherits("QLineEdit") || w->inherits("QRadioButton") ||
858 w->inherits("QCheckBox") || w->inherits("QScrollBar")) {
859 w->installEventFilter(this);
860 }
861 if(w->inherits("QLineEdit")){
862 QPalette pal = w->palette();
863 pal.setBrush(QColorGroup::Base, baseBrush);
864 w->setPalette(pal);
865 }
866 if(w->inherits("QPushButton")){
867 applyCustomAttributes((QPushButton *)w);
868 w->installEventFilter(this); 816 w->installEventFilter(this);
869 } 817 }
818
870 if(w->inherits("QButton") || w-> inherits("QComboBox")){ 819 if(w->inherits("QButton") || w-> inherits("QComboBox")){
871 w-> setBackgroundMode ( QWidget::PaletteBackground ); 820 w-> setBackgroundMode ( QWidget::PaletteBackground );
872 w->setBackgroundOrigin ( QWidget::ParentOrigin); 821 w->setBackgroundOrigin ( QWidget::ParentOrigin);
873 } 822 }
874 823
875 bool isViewport = qstrcmp(w->name(), "qt_viewport") == 0 || 824 bool isViewport = qstrcmp(w->name(), "qt_viewport") == 0 ||
876 qstrcmp(w->name(), "qt_clipped_viewport") == 0; 825 qstrcmp(w->name(), "qt_clipped_viewport") == 0;
877 bool isViewportChild = w->parent() && 826 bool isViewportChild = w->parent() &&
878 ((qstrcmp(w->parent()->name(), "qt_viewport") == 0) || 827 ((qstrcmp(w->parent()->name(), "qt_viewport") == 0) ||
879 (qstrcmp(w->parent()->name(), "qt_clipped_viewport") == 0)); 828 (qstrcmp(w->parent()->name(), "qt_clipped_viewport") == 0));
880 829
881 if(isViewport && w->parent() && qstrcmp(w->parent()->name(), "proxyview") == 0){ 830 if(isViewport && w->parent() && qstrcmp(w->parent()->name(), "proxyview") == 0){
882 w->setBackgroundMode(QWidget::X11ParentRelative); 831 w->setBackgroundMode(QWidget::X11ParentRelative);
883 return; 832 return;
884 } 833 }
885 if(isViewportChild){ 834 if(isViewportChild){
886 if(w->inherits("QButton") || w->inherits("QComboBox")){ 835 if(w->inherits("QButton") || w->inherits("QComboBox")){
887 if(w->parent()){ // heh, only way to test for KHTML children ;-) 836 if(w->parent()){ // heh, only way to test for KHTML children ;-)
888 if(w->parent()->parent()){ 837 if(w->parent()->parent()){
889 if(w->parent()->parent()->parent() && 838 if(w->parent()->parent()->parent() &&
890 w->parent()->parent()->parent()->inherits("KHTMLView")){ 839 w->parent()->parent()->parent()->inherits("KHTMLView")){
891 w->setAutoMask(true); 840 w->setAutoMask(true);
892 w->setBackgroundMode(QWidget::NoBackground); 841 w->setBackgroundMode(QWidget::NoBackground);
893 } 842 }
894 } 843 }
895 } 844 }
896 return; 845 return;
897 } 846 }
898 } 847 }
899 if(w->inherits("QHeader")){ 848 if(w->inherits("QHeader")){
900 w->setMouseTracking(true); 849 w->setMouseTracking(true);
901 w->installEventFilter(this); 850 w->installEventFilter(this);
902 } 851 }
903 if(w-> inherits("QToolButton")&&w->parent()->inherits("QToolBar")) { 852 if(w-> inherits("QToolButton")) {
904 ((QToolButton*)w)->setAutoRaise (flatTBButtons); 853 if (w->parent()->inherits("QToolBar")) {
905 if ( flatTBButtons ) 854 ((QToolButton*)w)->setAutoRaise (flatTBButtons);
906 w->setBackgroundOrigin(QWidget::ParentOrigin); 855 if ( flatTBButtons )
856 w->setBackgroundOrigin(QWidget::ParentOrigin);
857 }
858 w-> installEventFilter ( this );
907 } 859 }
908 if(w-> inherits("QToolBarSeparator")&&w->parent()->inherits("QToolBar")) { 860 if(w-> inherits("QToolBarSeparator")&&w->parent()->inherits("QToolBar")) {
909 ((QFrame *) w)-> setFrameShape ( QFrame::NoFrame ); 861 ((QFrame *) w)-> setFrameShape ( QFrame::NoFrame );
910 } 862 }
911 if(w->ownPalette() && !w->inherits("QButton") && !w->inherits("QComboBox")){ 863 if(w->ownPalette() && !w->inherits("QButton") && !w->inherits("QComboBox")){
912 return; 864 return;
913 } 865 }
914 866
915 if(w->parent() && w->parent()->isWidgetType() && !((QWidget*)w->parent())-> 867 if(w->parent() && w->parent()->isWidgetType() && !((QWidget*)w->parent())->
916 palette().active().brush(QColorGroup::Background).pixmap()){ 868 palette().active().brush(QColorGroup::Background).pixmap()){
917 qWarning("No parent pixmap for child widget %s", w->className()); 869 qWarning("No parent pixmap for child widget %s", w->className());
918 return; 870 return;
919 } 871 }
920 if(!isViewport && !isViewportChild && !w->testWFlags(WType_Popup) && 872 if(!isViewport && !isViewportChild && !w->testWFlags(WType_Popup) &&
921 !( !w-> inherits("QLineEdit") && w-> parent() && w-> parent()-> isWidgetType ( ) && w-> parent()-> inherits ( "QMultiLineEdit" ))) { 873 !( !w-> inherits("QLineEdit") && w-> parent() && w-> parent()-> isWidgetType ( ) && w-> parent()-> inherits ( "QMultiLineEdit" ))) {
922 if(w->backgroundMode() == QWidget::PaletteBackground || 874 if(w->backgroundMode() == QWidget::PaletteBackground ||
923 w->backgroundMode() == QWidget::PaletteButton){ 875 w->backgroundMode() == QWidget::PaletteButton){
924 w->setBackgroundMode(w->parentWidget()->backgroundMode( )/*QWidget::X11ParentRelative*/); 876 w->setBackgroundMode(w->parentWidget()->backgroundMode( )/*QWidget::X11ParentRelative*/);
925 w->setBackgroundOrigin(QWidget::ParentOrigin); 877 w->setBackgroundOrigin(QWidget::ParentOrigin);
926 // w->setBackgroundMode(QWidget::NoBackground); 878 // w->setBackgroundMode(QWidget::NoBackground);
927 } 879 }
928 } 880 }
929 if ( !w-> inherits("QFrame") || (((QFrame*) w)-> frameShape () == QFrame::NoFrame )) 881 if ( !w-> inherits("QFrame") || (((QFrame*) w)-> frameShape () == QFrame::NoFrame ))
930 w-> setBackgroundOrigin ( QWidget::ParentOrigin ); 882 w-> setBackgroundOrigin ( QWidget::ParentOrigin );
@@ -950,67 +902,64 @@ void LiquidStyle::unPolish(QWidget *w)
950 !w->inherits("QListBox") && 902 !w->inherits("QListBox") &&
951 ( qstrcmp ( w-> name(), "automatic what's this? widget" ) != 0 )) { 903 ( qstrcmp ( w-> name(), "automatic what's this? widget" ) != 0 )) {
952 w->removeEventFilter(menuHandler); 904 w->removeEventFilter(menuHandler);
953 } 905 }
954 906
955 if(w->isTopLevel()) 907 if(w->isTopLevel())
956 return; 908 return;
957 909
958 // for viewport children, don't just check for NoBackground.... 910 // for viewport children, don't just check for NoBackground....
959 bool isViewportChild = w->parent() && 911 bool isViewportChild = w->parent() &&
960 ((qstrcmp(w->parent()->name(), "qt_viewport") == 0) || 912 ((qstrcmp(w->parent()->name(), "qt_viewport") == 0) ||
961 (qstrcmp(w->parent()->name(), "qt_clipped_viewport") == 0)); 913 (qstrcmp(w->parent()->name(), "qt_clipped_viewport") == 0));
962 914
963 w->unsetPalette(); 915 w->unsetPalette();
964 if(w->backgroundMode() == QWidget::X11ParentRelative || isViewportChild){ 916 if(w->backgroundMode() == QWidget::X11ParentRelative || isViewportChild){
965 if(w->inherits("QPushButton")) 917 if(w->inherits("QPushButton"))
966 w->setBackgroundMode(QWidget::PaletteButton); 918 w->setBackgroundMode(QWidget::PaletteButton);
967 else 919 else
968 w->setBackgroundMode(QWidget::PaletteBackground); 920 w->setBackgroundMode(QWidget::PaletteBackground);
969 } 921 }
970 922
971 if(isViewportChild) 923 if(isViewportChild)
972 w->setAutoMask(false); 924 w->setAutoMask(false);
973 925
974 if(w->inherits("QPushButton")){
975 unapplyCustomAttributes((QPushButton *)w);
976 w->removeEventFilter(this);
977 }
978/* 926/*
979 if(w->inherits("QPushButton") || w-> inherits("QComboBox")){ 927 if(w->inherits("QPushButton") || w-> inherits("QComboBox")){
980 w-> setBackgroundMode ( PaletteBackground ); 928 w-> setBackgroundMode ( PaletteBackground );
981 } 929 }
982*/ 930*/
983 if(w->inherits("QComboBox") || 931 if( w->inherits("QRadioButton") || w->inherits("QCheckBox") || w->inherits("QProgressBar")) {
984 w->inherits("QLineEdit") || w->inherits("QRadioButton") || 932 w->removeEventFilter(this);
985 w->inherits("QCheckBox") || w->inherits("QScrollBar")) {
986 w->removeEventFilter(this);
987 } 933 }
988 if(w->inherits("QButton") || w->inherits("QComboBox")){ 934 if(w->inherits("QButton") || w->inherits("QComboBox")){
989 if(w->parent() && w->parent()->inherits("KHTMLPart")){ 935 if(w->parent() && w->parent()->inherits("KHTMLPart")){
990 w->setAutoMask(false); 936 w->setAutoMask(false);
991 } 937 }
992 } 938 }
939 if(w-> inherits("QToolButton")) {
940 w-> removeEventFilter ( this );
941 }
993 if(w->inherits("QToolBar")){ 942 if(w->inherits("QToolBar")){
994 w->removeEventFilter(this); 943 w->removeEventFilter(this);
995 w->setBackgroundMode(QWidget::PaletteBackground); 944 w->setBackgroundMode(QWidget::PaletteBackground);
996 return; 945 return;
997 } 946 }
998 if(w->inherits("QHeader")){ 947 if(w->inherits("QHeader")){
999 w->setMouseTracking(false); 948 w->setMouseTracking(false);
1000 w->removeEventFilter(this); 949 w->removeEventFilter(this);
1001 } 950 }
1002} 951}
1003 952
1004void LiquidStyle::polish(QApplication *app) 953void LiquidStyle::polish(QApplication *app)
1005{ 954{
1006 955
1007 QWindowsStyle::polish(app); 956 QWindowsStyle::polish(app);
1008 menuAni = app->isEffectEnabled(UI_AnimateMenu); 957 menuAni = app->isEffectEnabled(UI_AnimateMenu);
1009 menuFade = app->isEffectEnabled(UI_FadeMenu); 958 menuFade = app->isEffectEnabled(UI_FadeMenu);
1010 if(menuAni) 959 if(menuAni)
1011 app->setEffectEnabled(UI_AnimateMenu, false); 960 app->setEffectEnabled(UI_AnimateMenu, false);
1012 if(menuFade) 961 if(menuFade)
1013 app->setEffectEnabled(UI_FadeMenu, false); 962 app->setEffectEnabled(UI_FadeMenu, false);
1014 963
1015 qt_set_draw_menu_bar_impl((QDrawMenuBarItemImpl) &LiquidStyle::drawMenuBarItem); 964 qt_set_draw_menu_bar_impl((QDrawMenuBarItemImpl) &LiquidStyle::drawMenuBarItem);
1016 965
@@ -1074,222 +1023,166 @@ public:
1074 total = 1; 1023 total = 1;
1075 int bw = w * prog / total; 1024 int bw = w * prog / total;
1076 if ( bw > w ) 1025 if ( bw > w )
1077 bw = w; 1026 bw = w;
1078 1027
1079 p.setPen(g.button().dark(130)); 1028 p.setPen(g.button().dark(130));
1080 p.drawRect(x, y, bw, h); 1029 p.drawRect(x, y, bw, h);
1081 p.setPen(g.button().light(120)); 1030 p.setPen(g.button().light(120));
1082 p.drawRect(x+1, y+1, bw-2, h-2); 1031 p.drawRect(x+1, y+1, bw-2, h-2);
1083 1032
1084 if(bw >= 4 && h >= 4 && pix) 1033 if(bw >= 4 && h >= 4 && pix)
1085 p.drawTiledPixmap(x+2, y+2, bw-4, h-4, *pix); 1034 p.drawTiledPixmap(x+2, y+2, bw-4, h-4, *pix);
1086 1035
1087 if ( progress ( )>= 0 && totalSteps ( ) > 0 ) { 1036 if ( progress ( )>= 0 && totalSteps ( ) > 0 ) {
1088 QString pstr; 1037 QString pstr;
1089 pstr. sprintf ( "%d%%", 100 * progress()/totalSteps ()); 1038 pstr. sprintf ( "%d%%", 100 * progress()/totalSteps ());
1090 p. setPen ( g.text());//g.highlightedText ( )); 1039 p. setPen ( g.text());//g.highlightedText ( ));
1091 p. drawText (x,y,w-1,h-1,AlignCenter,pstr); 1040 p. drawText (x,y,w-1,h-1,AlignCenter,pstr);
1092 } 1041 }
1093 } 1042 }
1094 } 1043 }
1095}; 1044};
1096 1045
1097 1046
1047/*
1048 * The same for QToolButton:
1049 * TT hardcoded the drawing of the focus rect ...
1050 *
1051 * - sandman
1052 */
1053
1054
1055class HackToolButton : public QToolButton {
1056public:
1057 HackToolButton ( );
1058
1059 void paint ( QPaintEvent *ev )
1060 {
1061 erase ( ev-> region ( ));
1062 QPainter p ( this );
1063 style ( ). drawToolButton ( this, &p );
1064 drawButtonLabel ( &p );
1065 }
1066};
1098 1067
1099/* 1068/*
1100 * This is a fun method ;-) Here's an overview. KToolBar grabs resize to 1069 * This is a fun method ;-) Here's an overview. KToolBar grabs resize to
1101 * force everything to erase and repaint on resize. This is going away, I'm 1070 * force everything to erase and repaint on resize. This is going away, I'm
1102 * trying to get shaped widgets to work right without masking. QPushButton, 1071 * trying to get shaped widgets to work right without masking. QPushButton,
1103 * QComboBox, and Panel applet handles capture mouse enter and leaves in order 1072 * QComboBox, and Panel applet handles capture mouse enter and leaves in order
1104 * to set the highlightwidget and repaint for mouse hovers. CheckBoxes and 1073 * to set the highlightwidget and repaint for mouse hovers. CheckBoxes and
1105 * RadioButtons need to do this differently. Qt buffers these in pixmaps and 1074 * RadioButtons need to do this differently. Qt buffers these in pixmaps and
1106 * caches them in QPixmapCache, which is bad for doing things like hover 1075 * caches them in QPixmapCache, which is bad for doing things like hover
1107 * because the style methods aren't called in paintEvents if everything 1076 * because the style methods aren't called in paintEvents if everything
1108 * is cached. We use our own Paint event handler instead. Taskbuttons and 1077 * is cached. We use our own Paint event handler instead. Taskbuttons and
1109 * pager buttons draw into a pixmap buffer, so we handle those with palette 1078 * pager buttons draw into a pixmap buffer, so we handle those with palette
1110 * modifications. For QHeader, different header items are actually one widget 1079 * modifications. For QHeader, different header items are actually one widget
1111 * that draws multiple items, so we need to check which ID is hightlighted 1080 * that draws multiple items, so we need to check which ID is hightlighted
1112 * and draw it. Finally, we also check enter and leave events for QLineEdit, 1081 * and draw it. Finally, we also check enter and leave events for QLineEdit,
1113 * since if it's inside a combobox we want to highlight the combobox during 1082 * since if it's inside a combobox we want to highlight the combobox during
1114 * hovering in the edit. 1083 * hovering in the edit.
1115 */ 1084 */
1116bool LiquidStyle::eventFilter(QObject *obj, QEvent *ev) 1085bool LiquidStyle::eventFilter(QObject *obj, QEvent *ev)
1117{ 1086{
1118 if(obj->inherits("QToolBar")){ 1087 if(obj->inherits("QToolBar")){
1119 if(ev->type() == QEvent::Resize){ 1088 if(ev->type() == QEvent::Resize){
1120 const QObjectList *tbChildList = obj->children(); 1089 const QObjectList *tbChildList = obj->children();
1121 QObjectListIt it(*tbChildList); 1090 QObjectListIt it(*tbChildList);
1122 QObject *child; 1091 QObject *child;
1123 while((child = it.current()) != NULL){ 1092 while((child = it.current()) != NULL){
1124 ++it; 1093 ++it;
1125 if(child->isWidgetType()) 1094 if(child->isWidgetType())
1126 ((QWidget *)child)->repaint(true); 1095 ((QWidget *)child)->repaint(true);
1127 } 1096 }
1128 1097
1129 } 1098 }
1130 } 1099 }
1131 else if(obj->inherits("QPushButton") || obj->inherits("QComboBox")){
1132 QWidget *btn = (QWidget *)obj;
1133 if(ev->type() == QEvent::Enter){
1134 if(btn->isEnabled()){
1135 highlightWidget = btn;
1136 btn->repaint(false);
1137 }
1138 }
1139 else if(ev->type() == QEvent::Leave){
1140 if(btn == highlightWidget){
1141 highlightWidget = NULL;
1142 btn->repaint(false);
1143 }
1144 }
1145 }
1146 else if(obj->inherits("QToolButton")){ 1100 else if(obj->inherits("QToolButton")){
1147 QToolButton *btn = (QToolButton *)btn; 1101 QToolButton *btn = (QToolButton *)obj;
1148 if(!btn->autoRaise()){ 1102 if(ev->type() == QEvent::FocusIn ){ // && !btn-> autoRaise ()
1149 if(btn->isEnabled()){ 1103 if(btn->isEnabled()){
1150 highlightWidget = btn; 1104 highlightWidget = btn;
1151 btn->repaint(false); 1105 btn->repaint(false);
1106
1107 qDebug ( "TB FOCUS IN [%p]", btn );
1152 } 1108 }
1153 } 1109 }
1154 else if(ev->type() == QEvent::Leave){ 1110 else if(ev->type() == QEvent::FocusOut ){
1155 QWidget *btn = (QWidget *)obj;
1156 if(btn == highlightWidget){ 1111 if(btn == highlightWidget){
1157 highlightWidget = NULL; 1112 highlightWidget = NULL;
1158 btn->repaint(false); 1113 btn->repaint(false);
1114
1115 qDebug ( "TB FOCUS OUT [%p]", btn );
1159 } 1116 }
1160 } 1117 }
1161 else 1118 else if(ev->type() == QEvent::Paint) {
1162 highlightWidget = NULL; 1119 (( HackToolButton *) btn )-> paint ((QPaintEvent *) ev );
1163 } 1120 return true;
1164 else if(obj->inherits("QScrollBar")){
1165 QScrollBar *sb = (QScrollBar *)obj;
1166 if(ev->type() == QEvent::Enter){
1167 if(sb->isEnabled()){
1168 highlightWidget = sb;
1169 sb->repaint(false);
1170 }
1171 }
1172 else if(ev->type() == QEvent::Leave){
1173 if(sb == highlightWidget && !sb->draggingSlider()){
1174 highlightWidget = NULL;
1175 sb->repaint(false);
1176 }
1177 }
1178 else if(ev->type() == QEvent::MouseButtonRelease){
1179 QMouseEvent *me = (QMouseEvent *)ev;
1180 if(sb == highlightWidget && !sb->rect().contains(me->pos())){
1181 highlightWidget = NULL;
1182 sb->repaint(false);
1183 }
1184 }
1185 }
1186 else if(obj->inherits("QLineEdit")){
1187 if(obj->parent() && obj->parent()->inherits("QComboBox")){
1188 QWidget *btn = (QComboBox *)obj->parent();
1189 if(ev->type() == QEvent::Enter){
1190 if (btn->isEnabled()){
1191 highlightWidget = btn;
1192 btn->repaint(false);
1193 }
1194 }
1195 else if(ev->type() == QEvent::Leave){
1196 if (btn == highlightWidget)
1197 highlightWidget = NULL;
1198 btn->repaint(false);
1199 }
1200 } 1121 }
1201 } 1122 }
1202 else if(obj->inherits("QRadioButton") || obj->inherits("QCheckBox")){ 1123 else if(obj->inherits("QRadioButton") || obj->inherits("QCheckBox")){
1203 QButton *btn = (QButton *)obj; 1124 QButton *btn = (QButton *)obj;
1204 bool isRadio = obj->inherits("QRadioButton"); 1125 bool isRadio = obj->inherits("QRadioButton");
1205 if(ev->type() == QEvent::Paint){ 1126 if(ev->type() == QEvent::Paint){
1206 //if(btn->autoMask()) 1127 //if(btn->autoMask())
1207 btn->erase(); 1128 btn->erase();
1208 QPainter p; 1129 QPainter p;
1209 p.begin(btn); 1130 p.begin(btn);
1210 QFontMetrics fm = btn->fontMetrics(); 1131 QFontMetrics fm = btn->fontMetrics();
1211 QSize lsz = fm.size(ShowPrefix, btn->text()); 1132 QSize lsz = fm.size(ShowPrefix, btn->text());
1212 QSize sz = isRadio ? exclusiveIndicatorSize() 1133 QSize sz = isRadio ? exclusiveIndicatorSize()
1213 : indicatorSize(); 1134 : indicatorSize();
1214 1135
1136/*
1215 if(btn->hasFocus()){ 1137 if(btn->hasFocus()){
1216 QRect r = QRect(0, 0, btn->width(), btn->height()); 1138 QRect r = QRect(0, 0, btn->width(), btn->height());
1217 p.setPen(btn->colorGroup().button().dark(140)); 1139 p.setPen(btn->colorGroup().button().dark(140));
1218 p.drawLine(r.x()+1, r.y(), r.right()-1, r.y()); 1140 p.drawLine(r.x()+1, r.y(), r.right()-1, r.y());
1219 p.drawLine(r.x(), r.y()+1, r.x(), r.bottom()-1); 1141 p.drawLine(r.x(), r.y()+1, r.x(), r.bottom()-1);
1220 p.drawLine(r.right(), r.y()+1, r.right(), r.bottom()-1); 1142 p.drawLine(r.right(), r.y()+1, r.right(), r.bottom()-1);
1221 p.drawLine(r.x()+1, r.bottom(), r.right()-1, r.bottom()); 1143 p.drawLine(r.x()+1, r.bottom(), r.right()-1, r.bottom());
1222 } 1144 }
1223 int x = 0; 1145*/
1146 int x = 0;
1224 int y = (btn->height()-lsz.height()+fm.height()-sz.height())/2; 1147 int y = (btn->height()-lsz.height()+fm.height()-sz.height())/2;
1225 if(isRadio) 1148 if(isRadio)
1226 drawExclusiveIndicator(&p, x, y, sz.width(), sz.height(), 1149 drawExclusiveIndicator(&p, x, y, sz.width(), sz.height(),
1227 btn->colorGroup(), btn->isOn(), 1150 btn->colorGroup(), btn->isOn(),
1228 btn->isDown(), btn->isEnabled()); 1151 btn->isDown(), btn->isEnabled());
1229 else 1152 else
1230 drawIndicator(&p, x, y, sz.width(), sz.height(), 1153 drawIndicator(&p, x, y, sz.width(), sz.height(),
1231 btn->colorGroup(), btn->state(), btn->isDown(), 1154 btn->colorGroup(), btn->state(), btn->isDown(),
1232 btn->isEnabled()); 1155 btn->isEnabled());
1233 x = sz.width() + 6; 1156 x = sz.width() + 6;
1234 y = 0; 1157 y = 0;
1235 drawItem(&p, sz.width()+6+1, 0, btn->width()-(sz.width()+6+1), 1158 drawItem(&p, sz.width()+6+1, 0, btn->width()-(sz.width()+6+1),
1236 btn->height(), AlignLeft|AlignVCenter|ShowPrefix, 1159 btn->height(), AlignLeft|AlignVCenter|ShowPrefix,
1237 btn->colorGroup(), btn->isEnabled(), 1160 btn->colorGroup(), btn->isEnabled(),
1238 btn->pixmap(), btn->text()); 1161 btn->pixmap(), btn->text());
1239 p.end(); 1162 p.end();
1240 return(true); 1163 return(true);
1241 } 1164 }
1242 // for hover, just redraw the indicator (not the text)
1243 else if((ev->type() == QEvent::Enter && btn->isEnabled()) ||
1244 (ev->type() == QEvent::Leave && btn == highlightWidget)){
1245 QButton *btn = (QButton *)obj;
1246 bool isRadio = obj->inherits("QRadioButton");
1247
1248 if(ev->type() == QEvent::Enter)
1249 highlightWidget = btn;
1250 else
1251 highlightWidget = NULL;
1252 QFontMetrics fm = btn->fontMetrics();
1253 QSize lsz = fm.size(ShowPrefix, btn->text());
1254 QSize sz = isRadio ? exclusiveIndicatorSize()
1255 : indicatorSize();
1256 int x = 0;
1257 int y = (btn->height()-lsz.height()+fm.height()-sz.height())/2;
1258 //if(btn->autoMask())
1259 // btn->erase(x+1, y+1, sz.width()-2, sz.height()-2);
1260 QPainter p;
1261 p.begin(btn);
1262 if(isRadio)
1263 drawExclusiveIndicator(&p, x, y, sz.width(), sz.height(),
1264 btn->colorGroup(), btn->isOn(),
1265 btn->isDown(), btn->isEnabled());
1266 else
1267 drawIndicator(&p, x, y, sz.width(), sz.height(),
1268 btn->colorGroup(), btn->state(), btn->isDown(),
1269 btn->isEnabled());
1270 p.end();
1271 }
1272 } 1165 }
1273 else if(obj->inherits("QHeader")){ 1166 else if(obj->inherits("QHeader")){
1274 QHeader *hw = (QHeader *)obj; 1167 QHeader *hw = (QHeader *)obj;
1275 if(ev->type() == QEvent::Enter){ 1168 if(ev->type() == QEvent::Enter){
1276 currentHeader = hw; 1169 currentHeader = hw;
1277 headerHoverID = -1; 1170 headerHoverID = -1;
1278 } 1171 }
1279 else if(ev->type() == QEvent::Leave){ 1172 else if(ev->type() == QEvent::Leave){
1280 currentHeader = NULL; 1173 currentHeader = NULL;
1281 if(headerHoverID != -1){ 1174 if(headerHoverID != -1){
1282 hw->repaint(hw->sectionPos(headerHoverID), 0, 1175 hw->repaint(hw->sectionPos(headerHoverID), 0,
1283 hw->sectionSize(headerHoverID), hw->height()); 1176 hw->sectionSize(headerHoverID), hw->height());
1284 } 1177 }
1285 headerHoverID = -1; 1178 headerHoverID = -1;
1286 } 1179 }
1287 else if(ev->type() == QEvent::MouseMove){ 1180 else if(ev->type() == QEvent::MouseMove){
1288 QMouseEvent *me = (QMouseEvent *)ev; 1181 QMouseEvent *me = (QMouseEvent *)ev;
1289 int oldHeader = headerHoverID; 1182 int oldHeader = headerHoverID;
1290 headerHoverID = hw->sectionAt(me->x()); 1183 headerHoverID = hw->sectionAt(me->x());
1291 if(oldHeader != headerHoverID){ 1184 if(oldHeader != headerHoverID){
1292 // reset old header 1185 // reset old header
1293 if(oldHeader != -1){ 1186 if(oldHeader != -1){
1294 hw->repaint(hw->sectionPos(oldHeader), 0, 1187 hw->repaint(hw->sectionPos(oldHeader), 0,
1295 hw->sectionSize(oldHeader), hw->height()); 1188 hw->sectionSize(oldHeader), hw->height());
@@ -1332,50 +1225,53 @@ void LiquidStyle::drawButton(QPainter *p, int x, int y, int w, int h,
1332void LiquidStyle::drawToolButton(QPainter *p, int x, int y, int w, int h, 1225void LiquidStyle::drawToolButton(QPainter *p, int x, int y, int w, int h,
1333 const QColorGroup &g, bool sunken, 1226 const QColorGroup &g, bool sunken,
1334 const QBrush *) 1227 const QBrush *)
1335{ 1228{
1336 if(p->device()->devType() != QInternal::Widget){ 1229 if(p->device()->devType() != QInternal::Widget){
1337 // drawing into a temp pixmap, don't use mask 1230 // drawing into a temp pixmap, don't use mask
1338 QColor c = sunken ? g.button() : g.background(); 1231 QColor c = sunken ? g.button() : g.background();
1339 p->setPen(c.dark(130)); 1232 p->setPen(c.dark(130));
1340 p->drawRect(x, y, w, h); 1233 p->drawRect(x, y, w, h);
1341 p->setPen(c.light(105)); 1234 p->setPen(c.light(105));
1342 p->drawRect(x+1, y+1, w-2, h-2); 1235 p->drawRect(x+1, y+1, w-2, h-2);
1343 1236
1344 1237
1345 // fill 1238 // fill
1346 QPixmap *pix = bevelFillDict.find(c.rgb()); 1239 QPixmap *pix = bevelFillDict.find(c.rgb());
1347 if(!pix){ 1240 if(!pix){
1348 int h, s, v; 1241 int h, s, v;
1349 c.hsv(&h, &s, &v); 1242 c.hsv(&h, &s, &v);
1350 pix = new QPixmap(*bevelFillPix); 1243 pix = new QPixmap(*bevelFillPix);
1351 adjustHSV(*pix, h, s, v); 1244 adjustHSV(*pix, h, s, v);
1352 bevelFillDict.insert(c.rgb(), pix); 1245 bevelFillDict.insert(c.rgb(), pix);
1353 } 1246 }
1354 1247
1355 p->drawTiledPixmap(x+2, y+2, w-4, h-4, *pix); 1248 p->drawTiledPixmap(x+2, y+2, w-4, h-4, *pix);
1249 qDebug ( "DRAW TOOLBUTTON IN PIXMAP" );
1356 } 1250 }
1357 else{ 1251 else{
1252 qDebug ( "DRAW TOOLBUTTON sunken=%d/high=%p/device=%p", sunken, highlightWidget,p->device() );
1253
1358 drawClearBevel(p, x, y, w, h, sunken ? g.button() : 1254 drawClearBevel(p, x, y, w, h, sunken ? g.button() :
1359 highlightWidget == p->device() ? g.button().light(110) : 1255 highlightWidget == p->device() ? g.button().light(110) :
1360 g.background(), g.background()); 1256 g.background(), g.background());
1361 } 1257 }
1362} 1258}
1363 1259
1364void LiquidStyle::drawPushButton(QPushButton *btn, QPainter *p) 1260void LiquidStyle::drawPushButton(QPushButton *btn, QPainter *p)
1365{ 1261{
1366 QRect r = btn->rect(); 1262 QRect r = btn->rect();
1367 bool sunken = btn->isOn() || btn->isDown(); 1263 bool sunken = btn->isOn() || btn->isDown();
1368 QColorGroup g = btn->colorGroup(); 1264 QColorGroup g = btn->colorGroup();
1369 1265
1370 1266
1371 //int dw = buttonDefaultIndicatorWidth(); 1267 //int dw = buttonDefaultIndicatorWidth();
1372 if(btn->hasFocus() || btn->isDefault()){ 1268 if(btn->hasFocus() || btn->isDefault()){
1373 QColor c = btn->hasFocus() ? g.button().light(110) : g.background(); 1269 QColor c = btn->hasFocus() ? g.button().light(110) : g.background();
1374 QPixmap *pix = bevelFillDict.find(c.rgb()); 1270 QPixmap *pix = bevelFillDict.find(c.rgb());
1375 if(!pix){ 1271 if(!pix){
1376 int h, s, v; 1272 int h, s, v;
1377 c.hsv(&h, &s, &v); 1273 c.hsv(&h, &s, &v);
1378 pix = new QPixmap(*bevelFillPix); 1274 pix = new QPixmap(*bevelFillPix);
1379 adjustHSV(*pix, h, s, v); 1275 adjustHSV(*pix, h, s, v);
1380 bevelFillDict.insert(c.rgb(), pix); 1276 bevelFillDict.insert(c.rgb(), pix);
1381 } 1277 }
@@ -1490,59 +1386,72 @@ void LiquidStyle::drawBevelButton(QPainter *p, int x, int y, int w, int h,
1490 const QColorGroup &g, bool sunken, 1386 const QColorGroup &g, bool sunken,
1491 const QBrush */*fill*/) 1387 const QBrush */*fill*/)
1492{ 1388{
1493 if(currentHeader && p->device() == currentHeader){ 1389 if(currentHeader && p->device() == currentHeader){
1494 int id = currentHeader->sectionAt(x); 1390 int id = currentHeader->sectionAt(x);
1495 bool isHeaderHover = id != -1 && id == headerHoverID; 1391 bool isHeaderHover = id != -1 && id == headerHoverID;
1496 drawClearBevel(p, x, y, w, h, sunken ? 1392 drawClearBevel(p, x, y, w, h, sunken ?
1497 g.button() : isHeaderHover ? g.button().light(110) : 1393 g.button() : isHeaderHover ? g.button().light(110) :
1498 g.background(), g.background()); 1394 g.background(), g.background());
1499 } 1395 }
1500 else 1396 else
1501 drawClearBevel(p, x, y, w, h, sunken ? g.button() : g.background(), 1397 drawClearBevel(p, x, y, w, h, sunken ? g.button() : g.background(),
1502 g.background()); 1398 g.background());
1503} 1399}
1504 1400
1505QRect LiquidStyle::buttonRect(int x, int y, int w, int h) 1401QRect LiquidStyle::buttonRect(int x, int y, int w, int h)
1506{ 1402{
1507 return(QRect(x+5, y+5, w-10, h-10)); 1403 return(QRect(x+5, y+5, w-10, h-10));
1508} 1404}
1509 1405
1510void LiquidStyle::drawComboButton(QPainter *painter, int x, int y, int w, int h, 1406void LiquidStyle::drawComboButton(QPainter *painter, int x, int y, int w, int h,
1511 const QColorGroup &g, bool sunken, 1407 const QColorGroup &g, bool sunken,
1512 bool edit, bool, const QBrush *) 1408 bool edit, bool, const QBrush *)
1513{ 1409{
1514 bool isHover = highlightWidget == painter->device(); 1410 bool isActive = false;
1411 if (( painter->device()->devType() == QInternal::Widget ) &&
1412 (
1413 ( qApp-> focusWidget ( ) == painter-> device ( )) ||
1414 (
1415 edit &&
1416 ((QWidget *) painter-> device ( ))-> inherits ( "QComboBox" ) &&
1417 ( qApp-> focusWidget ( ) == ((QComboBox *) painter->device())->lineEdit ( ))
1418 )
1419 )
1420 ) {
1421 isActive = true;
1422 }
1423
1515 bool isMasked = false; 1424 bool isMasked = false;
1516 if(painter->device()->devType() == QInternal::Widget) 1425 if(painter->device()->devType() == QInternal::Widget)
1517 isMasked = ((QWidget*)painter->device())->autoMask(); 1426 isMasked = ((QWidget*)painter->device())->autoMask();
1518 // TODO: Do custom code, don't just call drawRoundButton into a pixmap 1427 // TODO: Do custom code, don't just call drawRoundButton into a pixmap
1519 QPixmap tmpPix(w, h); 1428 QPixmap tmpPix(w, h);
1520 QPainter p(&tmpPix); 1429 QPainter p(&tmpPix);
1521 1430
1522 drawRoundButton(&p, g.button(), g.background(), 0, 0, w, h, false, 1431 drawRoundButton(&p, g.button(), g.background(), 0, 0, w, h, false,
1523 sunken, false, isMasked); 1432 sunken, false, isMasked);
1524 if(!isHover){ 1433 if(!isActive){
1525 p.setClipRect(0, 0, w-17, h); 1434 p.setClipRect(0, 0, w-17, h);
1526 drawRoundButton(&p, g.background(), g.background(), 0, 0, w, h, false, 1435 drawRoundButton(&p, g.background(), g.background(), 0, 0, w, h, false,
1527 sunken, false, isMasked); 1436 sunken, false, isMasked);
1528 } 1437 }
1529 p.end(); 1438 p.end();
1530 int x2 = x+w-1; 1439 int x2 = x+w-1;
1531 int y2 = y+h-1; 1440 int y2 = y+h-1;
1532 int bx2 = btnMaskBmp.width()-1; 1441 int bx2 = btnMaskBmp.width()-1;
1533 int by2 = btnMaskBmp.height()-1; 1442 int by2 = btnMaskBmp.height()-1;
1534 QBitmap btnMask(w, h); 1443 QBitmap btnMask(w, h);
1535 QBitmap *mask = isMasked ? &htmlBtnMaskBmp : &btnMaskBmp; 1444 QBitmap *mask = isMasked ? &htmlBtnMaskBmp : &btnMaskBmp;
1536 p.begin(&btnMask); 1445 p.begin(&btnMask);
1537 p.fillRect(0, 0, w, h, Qt::color0); 1446 p.fillRect(0, 0, w, h, Qt::color0);
1538 p.drawPixmap(0, 0, *mask, 0, 0, 10, 10); // tl 1447 p.drawPixmap(0, 0, *mask, 0, 0, 10, 10); // tl
1539 p.drawPixmap(x2-9, 0, *mask, bx2-9, 0, 10, 10); // tr 1448 p.drawPixmap(x2-9, 0, *mask, bx2-9, 0, 10, 10); // tr
1540 p.drawPixmap(0, y2-9, *mask, 0, by2-9, 10, 10); // bl 1449 p.drawPixmap(0, y2-9, *mask, 0, by2-9, 10, 10); // bl
1541 p.drawPixmap(x2-9, y2-9, *mask, bx2-9, by2-9, 10, 10); // br 1450 p.drawPixmap(x2-9, y2-9, *mask, bx2-9, by2-9, 10, 10); // br
1542 // fills 1451 // fills
1543 p.fillRect(10, 0, w-20, 10, Qt::color1); // top 1452 p.fillRect(10, 0, w-20, 10, Qt::color1); // top
1544 p.fillRect(10, y2-9, w-20, 10, Qt::color1); // bottom 1453 p.fillRect(10, y2-9, w-20, 10, Qt::color1); // bottom
1545 p.fillRect(0, 10, w, h-20, Qt::color1); // middle 1454 p.fillRect(0, 10, w, h-20, Qt::color1); // middle
1546 p.end(); 1455 p.end();
1547 tmpPix.setMask(btnMask); 1456 tmpPix.setMask(btnMask);
1548 1457
@@ -1552,58 +1461,59 @@ void LiquidStyle::drawComboButton(QPainter *painter, int x, int y, int w, int h,
1552 painter->drawLine(x2-16, y+1, x2-16, y2-1); 1461 painter->drawLine(x2-16, y+1, x2-16, y2-1);
1553 1462
1554 if(edit){ 1463 if(edit){
1555 painter->setPen(g.mid()); 1464 painter->setPen(g.mid());
1556 painter->drawRect(x+8, y+2, w-25, h-4); 1465 painter->drawRect(x+8, y+2, w-25, h-4);
1557 } 1466 }
1558 int arrow_h = h / 3; 1467 int arrow_h = h / 3;
1559 int arrow_w = arrow_h; 1468 int arrow_w = arrow_h;
1560 int arrow_x = w - arrow_w - 6; 1469 int arrow_x = w - arrow_w - 6;
1561 int arrow_y = (h - arrow_h) / 2; 1470 int arrow_y = (h - arrow_h) / 2;
1562 drawArrow(painter, DownArrow, false, arrow_x, arrow_y, arrow_w, arrow_h, g, true); 1471 drawArrow(painter, DownArrow, false, arrow_x, arrow_y, arrow_w, arrow_h, g, true);
1563} 1472}
1564 1473
1565void LiquidStyle::drawComboButtonMask(QPainter *p, int x, int y, int w, int h) 1474void LiquidStyle::drawComboButtonMask(QPainter *p, int x, int y, int w, int h)
1566{ 1475{
1567 drawButtonMask(p, x, y, w, h); 1476 drawButtonMask(p, x, y, w, h);
1568} 1477}
1569 1478
1570QRect LiquidStyle::comboButtonRect(int x, int y, int w, int h) 1479QRect LiquidStyle::comboButtonRect(int x, int y, int w, int h)
1571{ 1480{
1572 //return(QRect(x+3, y+3, w - (h / 3) - 13, h-6)); 1481 //return(QRect(x+3, y+3, w - (h / 3) - 13, h-6));
1573 return(QRect(x+9, y+3, w - (h / 3) - 20, h-6)); 1482 return(QRect(x+9, y+3, w - (h / 3) - 20, h-6));
1574} 1483}
1575 1484
1576QRect LiquidStyle::comboButtonFocusRect(int x, int y, int w, int h) 1485QRect LiquidStyle::comboButtonFocusRect(int /*x*/, int /*y*/, int /*w*/, int /*h*/)
1577{ 1486{
1578 return(QRect(x+5, y+3, w-(h/3)-13, h-5)); 1487 return QRect ( );
1488
1489// return(QRect(x+5, y+3, w-(h/3)-13, h-5));
1579} 1490}
1580 1491
1581void LiquidStyle::drawScrollBarControls(QPainter *p, const QScrollBar *sb, 1492void LiquidStyle::drawScrollBarControls(QPainter *p, const QScrollBar *sb,
1582 int sliderStart, uint controls, 1493 int sliderStart, uint controls,
1583 uint activeControl) 1494 uint activeControl)
1584{ 1495{
1585 bool isHover = highlightWidget == p->device();
1586 int sliderMin, sliderMax, sliderLength, buttonDim; 1496 int sliderMin, sliderMax, sliderLength, buttonDim;
1587 scrollBarMetrics( sb, sliderMin, sliderMax, sliderLength, buttonDim ); 1497 scrollBarMetrics( sb, sliderMin, sliderMax, sliderLength, buttonDim );
1588 1498
1589 if (sliderStart > sliderMax) 1499 if (sliderStart > sliderMax)
1590 sliderStart = sliderMax; 1500 sliderStart = sliderMax;
1591 1501
1592 bool horiz = sb->orientation() == QScrollBar::Horizontal; 1502 bool horiz = sb->orientation() == QScrollBar::Horizontal;
1593 QColorGroup g = sb->colorGroup(); 1503 QColorGroup g = sb->colorGroup();
1594 QRect addB, subHC, subB; 1504 QRect addB, subHC, subB;
1595 QRect addPageR, subPageR, sliderR; 1505 QRect addPageR, subPageR, sliderR;
1596 int addX, addY, subX, subY; 1506 int addX, addY, subX, subY;
1597 int len = horiz ? sb->width() : sb->height(); 1507 int len = horiz ? sb->width() : sb->height();
1598 int extent = horiz ? sb->height() : sb->width(); 1508 int extent = horiz ? sb->height() : sb->width();
1599 1509
1600 // a few apps (ie: KSpread), are broken and use a hardcoded scrollbar 1510 // a few apps (ie: KSpread), are broken and use a hardcoded scrollbar
1601 // extent of 16. Luckily, most apps (ie: Kate), seem fixed by now. 1511 // extent of 16. Luckily, most apps (ie: Kate), seem fixed by now.
1602 bool brokenApp; 1512 bool brokenApp;
1603 if(extent == 16) 1513 if(extent == 16)
1604 brokenApp = true; 1514 brokenApp = true;
1605 else 1515 else
1606 brokenApp = false; 1516 brokenApp = false;
1607 1517
1608 if (horiz) { 1518 if (horiz) {
1609 subY = addY = ( extent - buttonDim ) / 2; 1519 subY = addY = ( extent - buttonDim ) / 2;
@@ -1650,140 +1560,123 @@ void LiquidStyle::drawScrollBarControls(QPainter *p, const QScrollBar *sb,
1650 QRect bgR(0, subB.bottom()+1, sb->width(), (len-(buttonDim*2))+1); 1560 QRect bgR(0, subB.bottom()+1, sb->width(), (len-(buttonDim*2))+1);
1651 if(sliderR.height() >= 8){ 1561 if(sliderR.height() >= 8){
1652 painter.drawPixmap(bgR.x()+1, bgR.y(), *vsbSliderFillPix, 0, 0, 1562 painter.drawPixmap(bgR.x()+1, bgR.y(), *vsbSliderFillPix, 0, 0,
1653 13, 8); 1563 13, 8);
1654 painter.drawPixmap(bgR.x()+1, bgR.y(), *getPixmap(VSBSliderTopBg)); 1564 painter.drawPixmap(bgR.x()+1, bgR.y(), *getPixmap(VSBSliderTopBg));
1655 painter.drawTiledPixmap(bgR.x()+1, bgR.y()+8, 13, 1565 painter.drawTiledPixmap(bgR.x()+1, bgR.y()+8, 13,
1656 bgR.height()-16, *getPixmap(VSBSliderMidBg)); 1566 bgR.height()-16, *getPixmap(VSBSliderMidBg));
1657 painter.drawPixmap(bgR.x()+1, bgR.bottom()-8, *vsbSliderFillPix, 1567 painter.drawPixmap(bgR.x()+1, bgR.bottom()-8, *vsbSliderFillPix,
1658 0, 0, 13, 8); 1568 0, 0, 13, 8);
1659 painter.drawPixmap(bgR.x()+1, bgR.bottom()-8, *getPixmap(VSBSliderBtmBg)); 1569 painter.drawPixmap(bgR.x()+1, bgR.bottom()-8, *getPixmap(VSBSliderBtmBg));
1660 } 1570 }
1661 else{ 1571 else{
1662 painter.drawTiledPixmap(bgR.x()+1, bgR.y(), 13, bgR.height(), 1572 painter.drawTiledPixmap(bgR.x()+1, bgR.y(), 13, bgR.height(),
1663 *getPixmap(VSBSliderMidBg)); 1573 *getPixmap(VSBSliderMidBg));
1664 painter.setPen(g.background().dark(210)); 1574 painter.setPen(g.background().dark(210));
1665 painter.drawRect(bgR.x()+1, bgR.y(), 13, bgR.height()-1); 1575 painter.drawRect(bgR.x()+1, bgR.y(), 13, bgR.height()-1);
1666 painter.setPen(g.mid()); 1576 painter.setPen(g.mid());
1667 painter.drawPoint(bgR.x()+1, bgR.y()); 1577 painter.drawPoint(bgR.x()+1, bgR.y());
1668 painter.drawPoint(bgR.x()+13, bgR.y()); 1578 painter.drawPoint(bgR.x()+13, bgR.y());
1669 painter.drawPoint(bgR.x()+1, bgR.bottom()-1); 1579 painter.drawPoint(bgR.x()+1, bgR.bottom()-1);
1670 painter.drawPoint(bgR.x()+13, bgR.bottom()-1); 1580 painter.drawPoint(bgR.x()+13, bgR.bottom()-1);
1671 } 1581 }
1672 if(controls & Slider){ 1582 if(controls & Slider){
1673 if(sliderR.height() >= 16){ 1583 if(sliderR.height() >= 16){
1674 painter.drawPixmap(sliderR.x()+1, sliderR.y(), 1584 painter.drawPixmap(sliderR.x()+1, sliderR.y(), *getPixmap(VSBSliderTop));
1675 isHover ? *getPixmap(VSBSliderTopHover):
1676 *getPixmap(VSBSliderTop));
1677 painter.drawTiledPixmap(sliderR.x()+1, sliderR.y()+8, 13, 1585 painter.drawTiledPixmap(sliderR.x()+1, sliderR.y()+8, 13,
1678 sliderR.height()-16, isHover ? 1586 sliderR.height()-16, *getPixmap(VSBSliderMid));
1679 *getPixmap(VSBSliderMidHover) : 1587 painter.drawPixmap(sliderR.x()+1, sliderR.bottom()-8, *getPixmap(VSBSliderBtm));
1680 *getPixmap(VSBSliderMid));
1681 painter.drawPixmap(sliderR.x()+1, sliderR.bottom()-8,
1682 isHover ? *getPixmap(VSBSliderBtmHover) :
1683 *getPixmap(VSBSliderBtm));
1684 } 1588 }
1685 else if(sliderR.height() >= 8){ 1589 else if(sliderR.height() >= 8){
1686 int m = sliderR.height()/2; 1590 int m = sliderR.height()/2;
1687 painter.drawPixmap(sliderR.x()+1, sliderR.y(), 1591 painter.drawPixmap(sliderR.x()+1, sliderR.y(), *getPixmap(VSBSliderTop), 0, 0, 13, m);
1688 isHover ? *getPixmap(VSBSliderTopHover): 1592 painter.drawPixmap(sliderR.x()+1, sliderR.y()+m, *getPixmap(VSBSliderBtm), 0, 8-m, 13, m);
1689 *getPixmap(VSBSliderTop), 0, 0, 13, m);
1690 painter.drawPixmap(sliderR.x()+1, sliderR.y()+m,
1691 isHover ? *getPixmap(VSBSliderBtmHover):
1692 *getPixmap(VSBSliderBtm), 0, 8-m, 13, m);
1693 } 1593 }
1694 else{ 1594 else{
1695 painter.setPen(g.button().dark(210)); 1595 painter.setPen(g.button().dark(210));
1696 drawRoundRect(&painter, sliderR.x()+1, sliderR.y(), 1596 drawRoundRect(&painter, sliderR.x()+1, sliderR.y(),
1697 13, sliderR.height()); 1597 13, sliderR.height());
1698 painter.drawTiledPixmap(sliderR.x()+2, sliderR.y()+1, 1598 painter.drawTiledPixmap(sliderR.x()+2, sliderR.y()+1,
1699 11, sliderR.height()-2, 1599 11, sliderR.height()-2,
1700 isHover ? *getPixmap(VSBSliderMidHover) :
1701 *getPixmap(VSBSliderMid), 1, 0); 1600 *getPixmap(VSBSliderMid), 1, 0);
1702 } 1601 }
1703 } 1602 }
1704 painter.setPen(g.mid()); 1603 painter.setPen(g.mid());
1705 painter.drawLine(bgR.x(), bgR.y(), bgR.x(), bgR.bottom()); 1604 painter.drawLine(bgR.x(), bgR.y(), bgR.x(), bgR.bottom());
1706 painter.drawLine(bgR.right(), bgR.y(), bgR.right(), bgR.bottom()); 1605 painter.drawLine(bgR.right(), bgR.y(), bgR.right(), bgR.bottom());
1707 if(brokenApp && (controls & Slider)){ 1606 if(brokenApp && (controls & Slider)){
1708 painter.setPen(g.background()); 1607 painter.setPen(g.background());
1709 painter.drawLine(bgR.right()-1, bgR.y(), bgR.right()-1, 1608 painter.drawLine(bgR.right()-1, bgR.y(), bgR.right()-1,
1710 bgR.bottom()); 1609 bgR.bottom());
1711 } 1610 }
1712 painter.end(); 1611 painter.end();
1713 } 1612 }
1714 else{ 1613 else{
1715 painter.begin(&sbBuffer); 1614 painter.begin(&sbBuffer);
1716 QRect bgR(subB.right()+1, 0, (len-(buttonDim*2))+1, sb->height()); 1615 QRect bgR(subB.right()+1, 0, (len-(buttonDim*2))+1, sb->height());
1717 if(sliderR.width() >= 8){ 1616 if(sliderR.width() >= 8){
1718 painter.drawPixmap(bgR.x(), bgR.y()+1, *vsbSliderFillPix, 0, 0, 1617 painter.drawPixmap(bgR.x(), bgR.y()+1, *vsbSliderFillPix, 0, 0,
1719 8, 13); 1618 8, 13);
1720 painter.drawPixmap(bgR.x(), bgR.y()+1, *getPixmap(HSBSliderTopBg)); 1619 painter.drawPixmap(bgR.x(), bgR.y()+1, *getPixmap(HSBSliderTopBg));
1721 painter.drawTiledPixmap(bgR.x()+8, bgR.y()+1, bgR.width()-16, 1620 painter.drawTiledPixmap(bgR.x()+8, bgR.y()+1, bgR.width()-16,
1722 13, *getPixmap(HSBSliderMidBg)); 1621 13, *getPixmap(HSBSliderMidBg));
1723 painter.drawPixmap(bgR.right()-8, bgR.y()+1, *vsbSliderFillPix, 1622 painter.drawPixmap(bgR.right()-8, bgR.y()+1, *vsbSliderFillPix,
1724 0, 0, 8, 13); 1623 0, 0, 8, 13);
1725 painter.drawPixmap(bgR.right()-8, bgR.y()+1, *getPixmap(HSBSliderBtmBg)); 1624 painter.drawPixmap(bgR.right()-8, bgR.y()+1, *getPixmap(HSBSliderBtmBg));
1726 } 1625 }
1727 else{ 1626 else{
1728 painter.drawTiledPixmap(bgR.x(), bgR.y()+1, bgR.width(), 13, 1627 painter.drawTiledPixmap(bgR.x(), bgR.y()+1, bgR.width(), 13,
1729 *getPixmap(HSBSliderMidBg)); 1628 *getPixmap(HSBSliderMidBg));
1730 painter.setPen(g.background().dark(210)); 1629 painter.setPen(g.background().dark(210));
1731 painter.drawRect(bgR.x(), bgR.y()+1, bgR.width()-1, 13); 1630 painter.drawRect(bgR.x(), bgR.y()+1, bgR.width()-1, 13);
1732 painter.setPen(g.mid()); 1631 painter.setPen(g.mid());
1733 painter.drawPoint(bgR.x(), bgR.y()+1); 1632 painter.drawPoint(bgR.x(), bgR.y()+1);
1734 painter.drawPoint(bgR.x(), bgR.bottom()-1); 1633 painter.drawPoint(bgR.x(), bgR.bottom()-1);
1735 painter.drawPoint(bgR.right()-1, bgR.y()+1); 1634 painter.drawPoint(bgR.right()-1, bgR.y()+1);
1736 painter.drawPoint(bgR.right()-1, bgR.bottom()-1); 1635 painter.drawPoint(bgR.right()-1, bgR.bottom()-1);
1737 } 1636 }
1738 if(controls & Slider){ 1637 if(controls & Slider){
1739 if(sliderR.width() >= 16){ 1638 if(sliderR.width() >= 16){
1740 painter.drawPixmap(sliderR.x(), sliderR.y()+1, 1639 painter.drawPixmap(sliderR.x(), sliderR.y()+1,
1741 isHover ? *getPixmap(HSBSliderTopHover) :
1742 *getPixmap(HSBSliderTop)); 1640 *getPixmap(HSBSliderTop));
1743 painter.drawTiledPixmap(sliderR.x()+8, sliderR.y()+1, sliderR.width()-16, 1641 painter.drawTiledPixmap(sliderR.x()+8, sliderR.y()+1, sliderR.width()-16,
1744 13, isHover ? *getPixmap(HSBSliderMidHover) : 1642 13, *getPixmap(HSBSliderMid));
1745 *getPixmap(HSBSliderMid)); 1643 painter.drawPixmap(sliderR.right()-8, sliderR.y()+1,
1746 painter.drawPixmap(sliderR.right()-8, sliderR.y()+1, isHover ?
1747 *getPixmap(HSBSliderBtmHover) :
1748 *getPixmap(HSBSliderBtm)); 1644 *getPixmap(HSBSliderBtm));
1749 } 1645 }
1750 else if(sliderR.width() >= 8){ 1646 else if(sliderR.width() >= 8){
1751 int m = sliderR.width()/2; 1647 int m = sliderR.width()/2;
1752 painter.drawPixmap(sliderR.x(), sliderR.y()+1, 1648 painter.drawPixmap(sliderR.x(), sliderR.y()+1,
1753 isHover ? *getPixmap(HSBSliderTopHover) :
1754 *getPixmap(HSBSliderTop), 0, 0, m, 13); 1649 *getPixmap(HSBSliderTop), 0, 0, m, 13);
1755 painter.drawPixmap(sliderR.right()-8, sliderR.y()+1, isHover ? 1650 painter.drawPixmap(sliderR.right()-8, sliderR.y()+1,
1756 *getPixmap(HSBSliderBtmHover) :
1757 *getPixmap(HSBSliderBtm), 8-m, 0, m, 13); 1651 *getPixmap(HSBSliderBtm), 8-m, 0, m, 13);
1758 } 1652 }
1759 else{ 1653 else{
1760 painter.setPen(g.button().dark(210)); 1654 painter.setPen(g.button().dark(210));
1761 drawRoundRect(&painter, sliderR.x(), sliderR.y()+1, 1655 drawRoundRect(&painter, sliderR.x(), sliderR.y()+1,
1762 sliderR.width(), 13); 1656 sliderR.width(), 13);
1763 painter.drawTiledPixmap(sliderR.x()+1, sliderR.y()+2, 1657 painter.drawTiledPixmap(sliderR.x()+1, sliderR.y()+2,
1764 sliderR.width()-2, 11, isHover ? 1658 sliderR.width()-2, 11,
1765 *getPixmap(HSBSliderMidHover) :
1766 *getPixmap(HSBSliderMid), 0, 1); 1659 *getPixmap(HSBSliderMid), 0, 1);
1767 } 1660 }
1768 } 1661 }
1769 painter.setPen(g.mid()); 1662 painter.setPen(g.mid());
1770 painter.drawLine(bgR.x(), bgR.y(), bgR.right(), bgR.y()); 1663 painter.drawLine(bgR.x(), bgR.y(), bgR.right(), bgR.y());
1771 painter.drawLine(bgR.x(), bgR.bottom(), bgR.right(), bgR.bottom()); 1664 painter.drawLine(bgR.x(), bgR.bottom(), bgR.right(), bgR.bottom());
1772 if(brokenApp && (controls & Slider)){ 1665 if(brokenApp && (controls & Slider)){
1773 painter.setPen(g.background()); 1666 painter.setPen(g.background());
1774 painter.drawLine(bgR.x(), bgR.bottom()-1, bgR.right(), 1667 painter.drawLine(bgR.x(), bgR.bottom()-1, bgR.right(),
1775 bgR.bottom()-1); 1668 bgR.bottom()-1);
1776 } 1669 }
1777 painter.end(); 1670 painter.end();
1778 } 1671 }
1779 1672
1780 if ( controls & AddLine ) { 1673 if ( controls & AddLine ) {
1781 drawSBButton(p, addB, g, activeControl == AddLine); 1674 drawSBButton(p, addB, g, activeControl == AddLine);
1782 drawArrow( p, horiz ? RightArrow : DownArrow, 1675 drawArrow( p, horiz ? RightArrow : DownArrow,
1783 false, addB.x()+4, addB.y()+4, 1676 false, addB.x()+4, addB.y()+4,
1784 addB.width()-8, addB.height()-8, g, !maxed); 1677 addB.width()-8, addB.height()-8, g, !maxed);
1785 } 1678 }
1786 if ( controls & SubLine ) { 1679 if ( controls & SubLine ) {
1787 // drawSBButton(p, subB, g, activeControl == SubLine); 1680 // drawSBButton(p, subB, g, activeControl == SubLine);
1788 // drawArrow( p, horiz ? LeftArrow : UpArrow, 1681 // drawArrow( p, horiz ? LeftArrow : UpArrow,
1789 // false, subB.x()+4, subB.y()+4, 1682 // false, subB.x()+4, subB.y()+4,
@@ -1920,123 +1813,123 @@ QStyle::ScrollControl LiquidStyle::scrollBarPointOver(const QScrollBar *sb,
1920 if ( pos < sliderStart ) 1813 if ( pos < sliderStart )
1921 return SubPage; 1814 return SubPage;
1922 if ( pos < sliderStart + sliderLength ) 1815 if ( pos < sliderStart + sliderLength )
1923 return Slider; 1816 return Slider;
1924 if ( pos < sliderMax + sliderLength) 1817 if ( pos < sliderMax + sliderLength)
1925 return AddPage; 1818 return AddPage;
1926 if(pos > sliderMax + sliderLength + 16) 1819 if(pos > sliderMax + sliderLength + 16)
1927 return AddLine; 1820 return AddLine;
1928 1821
1929 return SubLine; 1822 return SubLine;
1930} 1823}
1931 1824
1932#define QCOORDARRLEN(x) sizeof(x)/(sizeof(QCOORD)*2) 1825#define QCOORDARRLEN(x) sizeof(x)/(sizeof(QCOORD)*2)
1933 1826
1934 1827
1935QSize LiquidStyle::exclusiveIndicatorSize() const 1828QSize LiquidStyle::exclusiveIndicatorSize() const
1936{ 1829{
1937 return(QSize(16, 16)); 1830 return(QSize(16, 16));
1938} 1831}
1939 1832
1940void LiquidStyle::drawExclusiveIndicator(QPainter *p, int x, int y, int /*w*/, 1833void LiquidStyle::drawExclusiveIndicator(QPainter *p, int x, int y, int /*w*/,
1941 int /*h*/, const QColorGroup &/*g*/, bool on, 1834 int /*h*/, const QColorGroup &/*g*/, bool on,
1942 bool down, bool) 1835 bool down, bool)
1943{ 1836{
1944 bool isHover = highlightWidget == p->device(); 1837 bool isActive = ( p->device()->devType() == QInternal::Widget ) && ( qApp-> focusWidget ( ) == p-> device ( ));
1945 bool isMasked = p->device() && p->device()->devType() == QInternal::Widget 1838 bool isMasked = p->device() && p->device()->devType() == QInternal::Widget
1946 && ((QWidget*)p->device())->autoMask(); 1839 && ((QWidget*)p->device())->autoMask();
1947 1840
1948 if(isMasked){ 1841 if(isMasked){
1949 if(on || down){ 1842 if(on || down){
1950 p->drawPixmap(x, y, isHover ? *getPixmap(HTMLRadioDownHover) : 1843 p->drawPixmap(x, y, isActive ? *getPixmap(HTMLRadioDownHover) :
1951 *getPixmap(HTMLRadioDown)); 1844 *getPixmap(HTMLRadioDown));
1952 } 1845 }
1953 else 1846 else
1954 p->drawPixmap(x, y, isHover ? *getPixmap(HTMLRadioHover) : 1847 p->drawPixmap(x, y, isActive ? *getPixmap(HTMLRadioHover) :
1955 *getPixmap(HTMLRadio)); 1848 *getPixmap(HTMLRadio));
1956 1849
1957 } 1850 }
1958 else{ 1851 else{
1959 if(on || down){ 1852 if(on || down){
1960 p->drawPixmap(x, y, isHover ? *getPixmap(RadioOnHover) : 1853 p->drawPixmap(x, y, isActive ? *getPixmap(RadioOnHover) :
1961 *getPixmap(RadioOn)); 1854 *getPixmap(RadioOn));
1962 } 1855 }
1963 else 1856 else
1964 p->drawPixmap(x, y, isHover ? *getPixmap(RadioOffHover) : 1857 p->drawPixmap(x, y, isActive ? *getPixmap(RadioOffHover) :
1965 *getPixmap(RadioOff)); 1858 *getPixmap(RadioOff));
1966 } 1859 }
1967} 1860}
1968 1861
1969void LiquidStyle::drawExclusiveIndicatorMask(QPainter *p, int x, int y, int w, 1862void LiquidStyle::drawExclusiveIndicatorMask(QPainter *p, int x, int y, int w,
1970 int h, bool) 1863 int h, bool)
1971{ 1864{
1972 p->fillRect(x, y, w, h, Qt::color0); 1865 p->fillRect(x, y, w, h, Qt::color0);
1973 p->setPen(Qt::color1); 1866 p->setPen(Qt::color1);
1974 p->drawPixmap(x, y, *getPixmap(RadioOn)->mask()); 1867 p->drawPixmap(x, y, *getPixmap(RadioOn)->mask());
1975} 1868}
1976 1869
1977 1870
1978QSize LiquidStyle::indicatorSize() const 1871QSize LiquidStyle::indicatorSize() const
1979{ 1872{
1980 return(QSize(20, 22)); 1873 return(QSize(20, 22));
1981} 1874}
1982 1875
1983void LiquidStyle::drawIndicator(QPainter *p, int x, int y, int /*w*/, int /*h*/, 1876void LiquidStyle::drawIndicator(QPainter *p, int x, int y, int /*w*/, int /*h*/,
1984 const QColorGroup &/*g*/, int state, bool /*down*/, bool) 1877 const QColorGroup &/*g*/, int state, bool /*down*/, bool)
1985{ 1878{
1986 bool isHover = highlightWidget == p->device(); 1879 bool isActive = ( p->device()->devType() == QInternal::Widget ) && ( qApp-> focusWidget ( ) == p-> device ( ));
1987 bool isMasked = p->device() && p->device()->devType() == QInternal::Widget 1880 bool isMasked = p->device() && p->device()->devType() == QInternal::Widget
1988 && ((QWidget*)p->device())->autoMask(); 1881 && ((QWidget*)p->device())->autoMask();
1989 if(isMasked){ 1882 if(isMasked){
1990 if(state != QButton::Off){ 1883 if(state != QButton::Off){
1991 p->drawPixmap(x, y, isHover ? *getPixmap(HTMLCBDownHover) : 1884 p->drawPixmap(x, y, isActive ? *getPixmap(HTMLCBDownHover) :
1992 *getPixmap(HTMLCBDown)); 1885 *getPixmap(HTMLCBDown));
1993 } 1886 }
1994 else 1887 else
1995 p->drawPixmap(x, y, isHover ? *getPixmap(HTMLCBHover) : 1888 p->drawPixmap(x, y, isActive ? *getPixmap(HTMLCBHover) :
1996 *getPixmap(HTMLCB)); 1889 *getPixmap(HTMLCB));
1997 1890
1998 } 1891 }
1999 else{ 1892 else{
2000 if(state != QButton::Off){ 1893 if(state != QButton::Off){
2001 p->drawPixmap(x, y, isHover ? *getPixmap(CBDownHover) : 1894 p->drawPixmap(x, y, isActive ? *getPixmap(CBDownHover) :
2002 *getPixmap(CBDown)); 1895 *getPixmap(CBDown));
2003 /* Todo - tristate 1896 /* Todo - tristate
2004 if(state == QButton::On){ 1897 if(state == QButton::On){
2005 p->setPen(Qt::black); 1898 p->setPen(Qt::black);
2006 p->drawPixmap(3, 3, xBmp); 1899 p->drawPixmap(3, 3, xBmp);
2007 } 1900 }
2008 else{ 1901 else{
2009 p->setPen(g.dark()); 1902 p->setPen(g.dark());
2010 p->drawRect(x+2, y+2, w-4, h-4); 1903 p->drawRect(x+2, y+2, w-4, h-4);
2011 p->setPen(Qt::black); 1904 p->setPen(Qt::black);
2012 p->drawLine(x+3, (y+h)/2-2, x+w-4, (y+h)/2-2); 1905 p->drawLine(x+3, (y+h)/2-2, x+w-4, (y+h)/2-2);
2013 p->drawLine(x+3, (y+h)/2, x+w-4, (y+h)/2); 1906 p->drawLine(x+3, (y+h)/2, x+w-4, (y+h)/2);
2014 p->drawLine(x+3, (y+h)/2+2, x+w-4, (y+h)/2+2); 1907 p->drawLine(x+3, (y+h)/2+2, x+w-4, (y+h)/2+2);
2015 }*/ 1908 }*/
2016 } 1909 }
2017 else 1910 else
2018 p->drawPixmap(x, y, isHover ? *getPixmap(CBHover) : *getPixmap(CB)); 1911 p->drawPixmap(x, y, isActive ? *getPixmap(CBHover) : *getPixmap(CB));
2019 } 1912 }
2020} 1913}
2021 1914
2022void LiquidStyle::drawIndicatorMask(QPainter *p, int x, int y, int /*w*/, int /*h*/, 1915void LiquidStyle::drawIndicatorMask(QPainter *p, int x, int y, int /*w*/, int /*h*/,
2023 int /*state*/) 1916 int /*state*/)
2024{ 1917{
2025 // needed for some reason by KHtml, even tho it's all filled ;P 1918 // needed for some reason by KHtml, even tho it's all filled ;P
2026 p->drawPixmap(x, y, *getPixmap(HTMLCB)->mask()); 1919 p->drawPixmap(x, y, *getPixmap(HTMLCB)->mask());
2027 1920
2028} 1921}
2029 1922
2030void LiquidStyle::drawSlider(QPainter *p, int x, int y, int w, int h, 1923void LiquidStyle::drawSlider(QPainter *p, int x, int y, int w, int h,
2031 const QColorGroup &/*g*/, Orientation orient, 1924 const QColorGroup &/*g*/, Orientation orient,
2032 bool, bool) 1925 bool, bool)
2033{ 1926{
2034 QWidget *parent = (QWidget *)p->device(); 1927 QWidget *parent = (QWidget *)p->device();
2035 p->setBrushOrigin(parent->pos()); 1928 p->setBrushOrigin(parent->pos());
2036 parent->erase(x, y, w, h); 1929 parent->erase(x, y, w, h);
2037 p->drawPixmap(x, y, orient == Qt::Horizontal ? *getPixmap(HSlider) : 1930 p->drawPixmap(x, y, orient == Qt::Horizontal ? *getPixmap(HSlider) :
2038 *getPixmap(VSlider)); 1931 *getPixmap(VSlider));
2039} 1932}
2040 1933
2041void LiquidStyle::drawSliderMask(QPainter *p, int x, int y, int /*w*/, int /*h*/, 1934void LiquidStyle::drawSliderMask(QPainter *p, int x, int y, int /*w*/, int /*h*/,
2042 Orientation orient, bool, bool) 1935 Orientation orient, bool, bool)
@@ -2339,49 +2232,49 @@ int LiquidStyle::popupMenuItemHeight(bool /*checkable*/, QMenuItem *mi,
2339 if (mi->pixmap()) 2232 if (mi->pixmap())
2340 h = mi->pixmap()->height(); 2233 h = mi->pixmap()->height();
2341 2234
2342 if (mi->iconSet()) 2235 if (mi->iconSet())
2343 h = QMAX(mi->iconSet()-> 2236 h = QMAX(mi->iconSet()->
2344 pixmap(QIconSet::Small, QIconSet::Normal).height(), h); 2237 pixmap(QIconSet::Small, QIconSet::Normal).height(), h);
2345 2238
2346 h = QMAX(fm.height() + 4, h); 2239 h = QMAX(fm.height() + 4, h);
2347 2240
2348 // we want a minimum size of 18 2241 // we want a minimum size of 18
2349 h = QMAX(h, 18); 2242 h = QMAX(h, 18);
2350 2243
2351 return h; 2244 return h;
2352} 2245}
2353 2246
2354 2247
2355void LiquidStyle::drawFocusRect(QPainter *p, const QRect &r, 2248void LiquidStyle::drawFocusRect(QPainter *p, const QRect &r,
2356 const QColorGroup &g, const QColor *c, 2249 const QColorGroup &g, const QColor *c,
2357 bool atBorder) 2250 bool atBorder)
2358{ 2251{
2359 // are we painting a widget? 2252 // are we painting a widget?
2360 if(p->device()->devType() == QInternal::Widget){ 2253 if(p->device()->devType() == QInternal::Widget){
2361 // if so does it use a special focus rectangle? 2254 // if so does it use a special focus rectangle?
2362 QWidget *w = (QWidget *)p->device(); 2255 QWidget *w = (QWidget *)p->device();
2363 if(w->inherits("QPushButton") || w->inherits("QSlider")){ 2256 if(w->inherits("QPushButton") || w->inherits("QSlider") || w->inherits("QComboBox") || w->inherits("QToolButton" )){
2364 return; 2257 return;
2365 } 2258 }
2366 else{ 2259 else{
2367 QWindowsStyle::drawFocusRect(p, r, g, c, atBorder); 2260 QWindowsStyle::drawFocusRect(p, r, g, c, atBorder);
2368 } 2261 }
2369 } 2262 }
2370 else 2263 else
2371 QWindowsStyle::drawFocusRect(p, r, g, c, atBorder); 2264 QWindowsStyle::drawFocusRect(p, r, g, c, atBorder);
2372 2265
2373} 2266}
2374 2267
2375void LiquidStyle::polishPopupMenu(QPopupMenu *mnu) 2268void LiquidStyle::polishPopupMenu(QPopupMenu *mnu)
2376{ 2269{
2377 mnu->installEventFilter(menuHandler); 2270 mnu->installEventFilter(menuHandler);
2378 QWindowsStyle::polishPopupMenu(mnu); 2271 QWindowsStyle::polishPopupMenu(mnu);
2379} 2272}
2380 2273
2381void LiquidStyle::drawTab(QPainter *p, const QTabBar *tabBar, QTab *tab, 2274void LiquidStyle::drawTab(QPainter *p, const QTabBar *tabBar, QTab *tab,
2382 bool selected) 2275 bool selected)
2383{ 2276{
2384 if(tabBar->shape() != QTabBar::RoundedAbove){ 2277 if(tabBar->shape() != QTabBar::RoundedAbove){
2385 QWindowsStyle::drawTab(p, tabBar, tab, selected); 2278 QWindowsStyle::drawTab(p, tabBar, tab, selected);
2386 return; 2279 return;
2387 } 2280 }
@@ -2692,130 +2585,26 @@ void LiquidStyle::drawSliderGroove (QPainter * p, int x, int y, int w, int h,
2692 2585
2693} 2586}
2694 2587
2695void LiquidStyle::drawSliderGrooveMask (QPainter * p, int x, int y, int w, 2588void LiquidStyle::drawSliderGrooveMask (QPainter * p, int x, int y, int w,
2696 int h, QCOORD, Orientation orient) 2589 int h, QCOORD, Orientation orient)
2697{ 2590{
2698 p->fillRect(x, y, w, h, Qt::color0); 2591 p->fillRect(x, y, w, h, Qt::color0);
2699 p->setPen(Qt::color1); 2592 p->setPen(Qt::color1);
2700 if(orient == Qt::Horizontal){ 2593 if(orient == Qt::Horizontal){
2701 int x2 = x+w-1; 2594 int x2 = x+w-1;
2702 y+=2; 2595 y+=2;
2703 p->drawLine(x+1, y, x2-1, y); 2596 p->drawLine(x+1, y, x2-1, y);
2704 p->fillRect(x, y+1, w, 4, Qt::color1); 2597 p->fillRect(x, y+1, w, 4, Qt::color1);
2705 p->drawLine(x+1, y+5, x2-1, y+5); 2598 p->drawLine(x+1, y+5, x2-1, y+5);
2706 } 2599 }
2707 else{ 2600 else{
2708 int y2 = y+h-1; 2601 int y2 = y+h-1;
2709 x+=2; 2602 x+=2;
2710 p->drawLine(x, y+1, x, y2-1); 2603 p->drawLine(x, y+1, x, y2-1);
2711 p->fillRect(x+1, y, 4, h, Qt::color1); 2604 p->fillRect(x+1, y, 4, h, Qt::color1);
2712 p->drawLine(x+5, y+1, x+5, y2-1); 2605 p->drawLine(x+5, y+1, x+5, y2-1);
2713 } 2606 }
2714} 2607}
2715 2608
2716// I'm debating if to use QValueList or QList here. I like QValueList better,
2717// but QList handles pointers which is good for a lot of empty icons...
2718
2719void LiquidStyle::loadCustomButtons()
2720{
2721 return; // TODO
2722 customBtnColorList.clear();
2723 customBtnIconList.clear();
2724 customBtnLabelList.clear();
2725
2726// KConfig *config = KGlobal::config();
2727// QString oldGrp = config->group();
2728// config->setGroup("MosfetButtons");
2729
2730 QStrList iconList, colorList; //temp, we store QPixmaps and QColors
2731 iconList.setAutoDelete(true);
2732 colorList.setAutoDelete(true);
2733// config->readListEntry("Labels", customBtnLabelList);
2734// config->readListEntry("Icons", iconList);
2735// config->readListEntry("Colors", colorList);
2736
2737 const char *labelStr = customBtnLabelList.first();
2738 const char *colorStr = colorList.first();
2739 const char *iconStr = iconList.first();
2740
2741// KIconLoader *ldr = KGlobal::iconLoader();
2742 while(labelStr != NULL){
2743 QColor *c = new QColor;
2744 c->setNamedColor(QString(colorStr));
2745 customBtnColorList.append(c);
2746
2747 QString tmpStr(iconStr);
2748 if(!tmpStr.isEmpty()){
2749 QPixmap *pixmap =
2750 new QPixmap();//ldr->loadIcon(tmpStr, KIcon::Small));
2751 if(pixmap->isNull()){
2752 delete pixmap;
2753 customBtnIconList.append(NULL);
2754 }
2755 else
2756 customBtnIconList.append(pixmap);
2757 }
2758 else
2759 customBtnIconList.append(NULL);
2760
2761 labelStr = customBtnLabelList.next();
2762 colorStr = colorList.next();
2763 iconStr = iconList.next();
2764 }
2765}
2766
2767void LiquidStyle::applyCustomAttributes(QPushButton *btn)
2768{
2769 return; // TODO
2770 QString str = btn->text();
2771 if(str.isEmpty())
2772 return;
2773 while(str.contains('&') != 0)
2774 str = str.remove(str.find('&'), 1);
2775
2776 const char *s;
2777 int idx = 0;
2778 for(s = customBtnLabelList.first(); s != NULL;
2779 ++idx, s = customBtnLabelList.next()){
2780 if(qstricmp(s, str.latin1()) == 0){
2781 QPalette pal = btn->palette();
2782 pal.setColor(QColorGroup::Button,
2783 *customBtnColorList.at(idx));
2784 btn->setPalette(pal);
2785 /*
2786 if(customBtnIconList.at(idx) != NULL){
2787 QPixmap *pix = customBtnIconList.at(idx);
2788 btn->setIconSet(QIconSet(*pix));
2789 }*/
2790 break;
2791 }
2792 }
2793}
2794
2795void LiquidStyle::unapplyCustomAttributes(QPushButton *btn)
2796{
2797 return; // TODO
2798 QString str = btn->text();
2799 if(str.isEmpty())
2800 return;
2801 while(str.contains('&') != 0)
2802 str = str.remove(str.find('&'), 1);
2803
2804 const char *s;
2805 for(s = customBtnLabelList.first(); s != NULL; s = customBtnLabelList.next()){
2806 if(qstricmp(s, str.latin1()) == 0){
2807 btn->setPalette(QApplication::palette());
2808 btn->setIconSet(QIconSet());
2809 break;
2810 }
2811 }
2812}
2813
2814// #include "liquid.moc"
2815
2816
2817
2818
2819
2820 2609
2821/* vim: set noet sw=8 ts=8: */ 2610/* vim: set noet sw=8 ts=8: */