summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/styles/phase/phasestyle.cpp6
-rw-r--r--noncore/styles/phase/phasestyle.h1
2 files changed, 7 insertions, 0 deletions
diff --git a/noncore/styles/phase/phasestyle.cpp b/noncore/styles/phase/phasestyle.cpp
index 139505f..ba8c460 100644
--- a/noncore/styles/phase/phasestyle.cpp
+++ b/noncore/styles/phase/phasestyle.cpp
@@ -501,512 +501,518 @@ void PhaseStyle::drawExclusiveIndicator(QPainter* painter, int x, int y, int w,
501 501
502 if(on) { 502 if(on) {
503 painter->setBrush(group.brush(QColorGroup::Highlight)); 503 painter->setBrush(group.brush(QColorGroup::Highlight));
504 painter->drawEllipse(x+3,y+3,w-6,h-6); 504 painter->drawEllipse(x+3,y+3,w-6,h-6);
505 } 505 }
506 506
507 painter->restore(); 507 painter->restore();
508} 508}
509 509
510 510
511/* 511/*
512 * Does not get called in QWS as it seems 512 * Does not get called in QWS as it seems
513 */ 513 */
514void PhaseStyle::drawExclusiveIndicatorMask(QPainter *painter, int x, int y, int w, 514void PhaseStyle::drawExclusiveIndicatorMask(QPainter *painter, int x, int y, int w,
515 int h, bool /*on*/ ) { 515 int h, bool /*on*/ ) {
516 return; 516 return;
517 517
518 518
519 519
520 if (0 != w%2) --w; 520 if (0 != w%2) --w;
521 if (0 != h%2) --h; 521 if (0 != h%2) --h;
522 522
523 QRect r(x, y, w, h ); 523 QRect r(x, y, w, h );
524 int x2 = r.right(); 524 int x2 = r.right();
525 int y2 = r.bottom(); 525 int y2 = r.bottom();
526 int cx = (x + x2) / 2; 526 int cx = (x + x2) / 2;
527 int cy = (y + y2) / 2; 527 int cy = (y + y2) / 2;
528 QPointArray parray; 528 QPointArray parray;
529 529
530 530
531 painter->setBrush(Qt::color1); 531 painter->setBrush(Qt::color1);
532 painter->setPen(Qt::color1); 532 painter->setPen(Qt::color1);
533 parray.putPoints(0, 8, 533 parray.putPoints(0, 8,
534 x,cy+1, x,cy, cx,y, cx+1,y, 534 x,cy+1, x,cy, cx,y, cx+1,y,
535 x2,cy, x2,cy+1, cx+1,y2, cx,y2); 535 x2,cy, x2,cy+1, cx+1,y2, cx,y2);
536 painter->drawPolygon(parray, 0, 8); 536 painter->drawPolygon(parray, 0, 8);
537} 537}
538 538
539int PhaseStyle::defaultFrameWidth()const { 539int PhaseStyle::defaultFrameWidth()const {
540 return 1; 540 return 1;
541} 541}
542 542
543int PhaseStyle::popupMenuItemHeight ( bool , 543int PhaseStyle::popupMenuItemHeight ( bool ,
544 QMenuItem * mi, 544 QMenuItem * mi,
545 const QFontMetrics & fm ) { 545 const QFontMetrics & fm ) {
546 int h = 0; 546 int h = 0;
547 if (mi->custom() ) { 547 if (mi->custom() ) {
548 h = mi->custom()->sizeHint().height(); 548 h = mi->custom()->sizeHint().height();
549 if (!mi->custom()->fullSpan() ) 549 if (!mi->custom()->fullSpan() )
550 h += ITEMVMARGIN*2 + ITEMFRAME*2; 550 h += ITEMVMARGIN*2 + ITEMFRAME*2;
551 }else if (mi->isSeparator() ) { 551 }else if (mi->isSeparator() ) {
552 h = 1; 552 h = 1;
553 }else { 553 }else {
554 if ( mi->pixmap() ) { 554 if ( mi->pixmap() ) {
555 h = QMAX(h, mi->pixmap()->height() + ITEMFRAME*2); 555 h = QMAX(h, mi->pixmap()->height() + ITEMFRAME*2);
556 }else { 556 }else {
557 h = QMAX(h, MINICONSIZE+ITEMFRAME*2 ); 557 h = QMAX(h, MINICONSIZE+ITEMFRAME*2 );
558 h = QMAX(h, fm.height() 558 h = QMAX(h, fm.height()
559 + ITEMVMARGIN*2 + ITEMFRAME*2 ); 559 + ITEMVMARGIN*2 + ITEMFRAME*2 );
560 } 560 }
561 if ( mi->iconSet() ) 561 if ( mi->iconSet() )
562 h = QMAX(h, mi->iconSet()-> 562 h = QMAX(h, mi->iconSet()->
563 pixmap(QIconSet::Small, QIconSet::Normal ).height() 563 pixmap(QIconSet::Small, QIconSet::Normal ).height()
564 + ITEMFRAME*2 ); 564 + ITEMFRAME*2 );
565 } 565 }
566 566
567 567
568 return h; 568 return h;
569} 569}
570 570
571int PhaseStyle::extraPopupMenuItemWidth(bool checkable, int maxpmw, 571int PhaseStyle::extraPopupMenuItemWidth(bool checkable, int maxpmw,
572 QMenuItem* mi, const QFontMetrics& ) { 572 QMenuItem* mi, const QFontMetrics& ) {
573 int w = 0; 573 int w = 0;
574 if (mi->isSeparator() ) 574 if (mi->isSeparator() )
575 return 3; 575 return 3;
576 576
577 else if ( mi->pixmap() ) 577 else if ( mi->pixmap() )
578 w = mi->pixmap()->width(); 578 w = mi->pixmap()->width();
579 579
580 if (!mi->text().isNull() && 580 if (!mi->text().isNull() &&
581 mi->text().find('\t' ) >= 0 ) 581 mi->text().find('\t' ) >= 0 )
582 w += 12; 582 w += 12;
583 else if ( mi->popup() ) 583 else if ( mi->popup() )
584 w += 2*ARROWMARGIN; 584 w += 2*ARROWMARGIN;
585 585
586 if ( maxpmw ) 586 if ( maxpmw )
587 w += maxpmw +4; 587 w += maxpmw +4;
588 588
589 589
590 if ( maxpmw > 0 || checkable ) 590 if ( maxpmw > 0 || checkable )
591 w += ITEMHMARGIN*2+8; 591 w += ITEMHMARGIN*2+8;
592 592
593 w += RIGHTBORDER; 593 w += RIGHTBORDER;
594 return w; 594 return w;
595} 595}
596 596
597QSize PhaseStyle::indicatorSize()const { 597QSize PhaseStyle::indicatorSize()const {
598 return QSize( 11, 11 ); 598 return QSize( 11, 11 );
599} 599}
600 600
601QSize PhaseStyle::exclusiveIndicatorSize()const { 601QSize PhaseStyle::exclusiveIndicatorSize()const {
602 return QSize( 11, 11 ); 602 return QSize( 11, 11 );
603} 603}
604 604
605void PhaseStyle::getButtonShift( int &x, int &y ) { 605void PhaseStyle::getButtonShift( int &x, int &y ) {
606 x++; 606 x++;
607 y++; 607 y++;
608} 608}
609 609
610void PhaseStyle::drawPopupMenuItem ( QPainter * p, bool checkable, 610void PhaseStyle::drawPopupMenuItem ( QPainter * p, bool checkable,
611 int maxpmw,int tabwidth, 611 int maxpmw,int tabwidth,
612 QMenuItem * mi, const QPalette & pal, 612 QMenuItem * mi, const QPalette & pal,
613 bool act, bool enabled, int x, 613 bool act, bool enabled, int x,
614 int y, int w, int h ) { 614 int y, int w, int h ) {
615 if ( !mi ) 615 if ( !mi )
616 return; 616 return;
617 617
618 QRect rect(x, y, w, h ); 618 QRect rect(x, y, w, h );
619 int x2, y2; 619 int x2, y2;
620 x2 = rect.right(); 620 x2 = rect.right();
621 y2 = rect.bottom(); 621 y2 = rect.bottom();
622 const QColorGroup& g = pal.active(); 622 const QColorGroup& g = pal.active();
623 QColorGroup itemg = !enabled ? pal.disabled() : pal.active(); 623 QColorGroup itemg = !enabled ? pal.disabled() : pal.active();
624 624
625 if ( checkable || maxpmw ) maxpmw = QMAX(maxpmw, 20); 625 if ( checkable || maxpmw ) maxpmw = QMAX(maxpmw, 20);
626 626
627 if (act && enabled ) 627 if (act && enabled )
628 p->fillRect(x, y, w, h, g.highlight() ); 628 p->fillRect(x, y, w, h, g.highlight() );
629 else 629 else
630 p->fillRect(x, y, w, h, g.background() ); 630 p->fillRect(x, y, w, h, g.background() );
631 631
632 // draw seperator 632 // draw seperator
633 if (mi->isSeparator() ) { 633 if (mi->isSeparator() ) {
634 p->setPen( g.dark() ); 634 p->setPen( g.dark() );
635 p->drawLine( x+8, y+1, x+w-8, y+1 ); 635 p->drawLine( x+8, y+1, x+w-8, y+1 );
636 636
637 p->setPen( g.mid() ); 637 p->setPen( g.mid() );
638 p->drawLine( x+8, y, x+w-8, y ); 638 p->drawLine( x+8, y, x+w-8, y );
639 p->drawPoint(x+w,y+1); 639 p->drawPoint(x+w,y+1);
640 640
641 p->setPen( g.midlight() ); 641 p->setPen( g.midlight() );
642 p->drawLine( x+8, y-1, x+w-8, y-1 ); 642 p->drawLine( x+8, y-1, x+w-8, y-1 );
643 p->drawPoint(x+8, y ); 643 p->drawPoint(x+8, y );
644 return; 644 return;
645 } 645 }
646 646
647 // draw icon 647 // draw icon
648 QIconSet::Mode mode; 648 QIconSet::Mode mode;
649 if ( mi->iconSet() && !mi->isChecked() ) { 649 if ( mi->iconSet() && !mi->isChecked() ) {
650 if ( act ) 650 if ( act )
651 mode = enabled ? QIconSet::Active : QIconSet::Disabled; 651 mode = enabled ? QIconSet::Active : QIconSet::Disabled;
652 else 652 else
653 mode = enabled ? QIconSet::Normal : QIconSet::Disabled; 653 mode = enabled ? QIconSet::Normal : QIconSet::Disabled;
654 QPixmap pixmap = mi->iconSet()->pixmap(QIconSet::Small, mode ); 654 QPixmap pixmap = mi->iconSet()->pixmap(QIconSet::Small, mode );
655 QRect pmrect(0, 0, pixmap.width(), pixmap.height() ); 655 QRect pmrect(0, 0, pixmap.width(), pixmap.height() );
656 QRect cr(x, y, maxpmw, h ); 656 QRect cr(x, y, maxpmw, h );
657 pmrect.moveCenter( cr.center() ); 657 pmrect.moveCenter( cr.center() );
658 p->drawPixmap(pmrect.topLeft(), pixmap); 658 p->drawPixmap(pmrect.topLeft(), pixmap);
659 } 659 }
660 660
661 // draw check 661 // draw check
662 if(mi->isChecked() ) { 662 if(mi->isChecked() ) {
663 drawCheckMark(p, x, y, maxpmw, h, itemg, act, !enabled ); 663 drawCheckMark(p, x, y, maxpmw, h, itemg, act, !enabled );
664 } 664 }
665 665
666 666
667 // draw text 667 // draw text
668 int xm = maxpmw + 2; 668 int xm = maxpmw + 2;
669 int xp = x + xm; 669 int xp = x + xm;
670 int tw = w -xm - 2; 670 int tw = w -xm - 2;
671 671
672 p->setPen( enabled ? ( act ? g.highlightedText() : g.buttonText() ) : 672 p->setPen( enabled ? ( act ? g.highlightedText() : g.buttonText() ) :
673 g.mid() ); 673 g.mid() );
674 674
675 675
676 if ( mi->custom() ) { 676 if ( mi->custom() ) {
677 p->save(); 677 p->save();
678 mi->custom()->paint(p, g, act, enabled, 678 mi->custom()->paint(p, g, act, enabled,
679 xp, y+1, tw, h-2 ); 679 xp, y+1, tw, h-2 );
680 p->restore(); 680 p->restore();
681 }else { // draw label 681 }else { // draw label
682 QString text = mi->text(); 682 QString text = mi->text();
683 if (!text.isNull() ) { 683 if (!text.isNull() ) {
684 int t = text.find('\t'); 684 int t = text.find('\t');
685 const int tflags = AlignVCenter | DontClip | 685 const int tflags = AlignVCenter | DontClip |
686 ShowPrefix | SingleLine | 686 ShowPrefix | SingleLine |
687 AlignLeft; 687 AlignLeft;
688 688
689 if (t >= 0) { 689 if (t >= 0) {
690 int tabx = x + w - tabwidth - RIGHTBORDER - 690 int tabx = x + w - tabwidth - RIGHTBORDER -
691 ITEMHMARGIN - ITEMFRAME; 691 ITEMHMARGIN - ITEMFRAME;
692 p->drawText(tabx, y+ITEMVMARGIN, tabwidth, 692 p->drawText(tabx, y+ITEMVMARGIN, tabwidth,
693 h-2*ITEMVMARGIN, tflags, 693 h-2*ITEMVMARGIN, tflags,
694 text.mid(t+1) ); 694 text.mid(t+1) );
695 text = text.left(t ); 695 text = text.left(t );
696 } 696 }
697 697
698 // draw left label 698 // draw left label
699 p->drawText(xp, y+ITEMVMARGIN, 699 p->drawText(xp, y+ITEMVMARGIN,
700 tw, h-2*ITEMVMARGIN, 700 tw, h-2*ITEMVMARGIN,
701 tflags, text, t); 701 tflags, text, t);
702 }else if ( mi->pixmap() ) { // pixmap as label 702 }else if ( mi->pixmap() ) { // pixmap as label
703 QPixmap pixmap = *mi->pixmap(); 703 QPixmap pixmap = *mi->pixmap();
704 if ( pixmap.depth() == 1 ) 704 if ( pixmap.depth() == 1 )
705 p->setBackgroundMode( OpaqueMode ); 705 p->setBackgroundMode( OpaqueMode );
706 706
707 int dx = ((w-pixmap.width() ) /2 ) + 707 int dx = ((w-pixmap.width() ) /2 ) +
708 ((w - pixmap.width()) %2 ); 708 ((w - pixmap.width()) %2 );
709 p->drawPixmap(x+dx, y+ITEMFRAME, pixmap ); 709 p->drawPixmap(x+dx, y+ITEMFRAME, pixmap );
710 710
711 if ( pixmap.depth() == 1 ) 711 if ( pixmap.depth() == 1 )
712 p->setBackgroundMode( TransparentMode ); 712 p->setBackgroundMode( TransparentMode );
713 } 713 }
714 } 714 }
715 715
716 if ( mi->popup() ) { // draw submenu arrow 716 if ( mi->popup() ) { // draw submenu arrow
717 int dim = (h-2*ITEMFRAME) / 2; 717 int dim = (h-2*ITEMFRAME) / 2;
718 drawArrow( p, RightArrow, false, 718 drawArrow( p, RightArrow, false,
719 x+w-ARROWMARGIN-ITEMFRAME-dim, 719 x+w-ARROWMARGIN-ITEMFRAME-dim,
720 y+h/2-dim/2, dim, dim, g, enabled ); 720 y+h/2-dim/2, dim, dim, g, enabled );
721 } 721 }
722} 722}
723 723
724 724
725QRect PhaseStyle::comboButtonRect ( int x, int y, int w, int h ) { 725QRect PhaseStyle::comboButtonRect ( int x, int y, int w, int h ) {
726 return QRect(x+2, y+2, w-4-17, h-5 ); 726 return QRect(x+2, y+2, w-4-17, h-5 );
727} 727}
728 728
729void PhaseStyle::drawComboButton( QPainter * p, int x, int y, 729void PhaseStyle::drawComboButton( QPainter * p, int x, int y,
730 int w, int h, 730 int w, int h,
731 const QColorGroup & g, 731 const QColorGroup & g,
732 bool sunken, 732 bool sunken,
733 bool editable, 733 bool editable,
734 bool, 734 bool,
735 const QBrush *) { 735 const QBrush *) {
736 drawButton(p, x, y, w, h, g, 736 drawButton(p, x, y, w, h, g,
737 sunken, &g.brush(QColorGroup::Button )); 737 sunken, &g.brush(QColorGroup::Button ));
738 738
739 for ( int n = 0; n < 2; ++n ) 739 for ( int n = 0; n < 2; ++n )
740 kColorBitmaps(p, g, w-16+(6*n), y+(h/2)-2, 740 kColorBitmaps(p, g, w-16+(6*n), y+(h/2)-2,
741 0, &doodad_mid, &doodad_light, 0, 0, 0 ); 741 0, &doodad_mid, &doodad_light, 0, 0, 0 );
742 742
743 743
744 if (editable ) { 744 if (editable ) {
745 const int x2 = x+w-1; const int y2 = y+h-1; 745 const int x2 = x+w-1; const int y2 = y+h-1;
746 p->setPen(g.dark()); 746 p->setPen(g.dark());
747 p->drawLine(x2+1, y, x2+1, y2); 747 p->drawLine(x2+1, y, x2+1, y2);
748 p->setPen(g.midlight()); 748 p->setPen(g.midlight());
749 p->drawLine(x2+2, y, x2+2, y2-1); 749 p->drawLine(x2+2, y, x2+2, y2-1);
750 p->setPen(g.button()); 750 p->setPen(g.button());
751 p->drawPoint(x2+2, y2); 751 p->drawPoint(x2+2, y2);
752 } 752 }
753 753
754 p->setPen(g.buttonText() ); 754 p->setPen(g.buttonText() );
755} 755}
756 756
757void PhaseStyle::tabbarMetrics( const QTabBar* t, int &hframe, int &vframe, int& ov ) {
758 QCommonStyle::tabbarMetrics( t, hframe, vframe, ov );
759 hframe -= 2;
760 vframe += 1;
761}
762
757 763
758void PhaseStyle::drawTab(QPainter* painter, const QTabBar* bar, QTab* tab, 764void PhaseStyle::drawTab(QPainter* painter, const QTabBar* bar, QTab* tab,
759 bool selected ) { 765 bool selected ) {
760 bool edge = false; 766 bool edge = false;
761 int x, y, w, h; 767 int x, y, w, h;
762 QRect r = tab->rect(); 768 QRect r = tab->rect();
763 r.rect(&x,&y,&w,&h); 769 r.rect(&x,&y,&w,&h);
764 const int x2 = x+w-1; 770 const int x2 = x+w-1;
765 const int y2 = y+h-1; 771 const int y2 = y+h-1;
766 const QColorGroup &group = bar->colorGroup(); 772 const QColorGroup &group = bar->colorGroup();
767 773
768 774
769 painter->save(); 775 painter->save();
770 776
771 // what position is the tab? 777 // what position is the tab?
772 if ((bar->count() == 1 )) 778 if ((bar->count() == 1 ))
773 edge = true; 779 edge = true;
774 else 780 else
775 edge = false; 781 edge = false;
776 782
777 switch (QTabBar::Shape(bar->shape())) { 783 switch (QTabBar::Shape(bar->shape())) {
778 case QTabBar::RoundedAbove: 784 case QTabBar::RoundedAbove:
779 case QTabBar::TriangularAbove: { 785 case QTabBar::TriangularAbove: {
780 if (!selected) { // shorten 786 if (!selected) { // shorten
781 y += 2; h -= 2; 787 y += 2; h -= 2;
782 } 788 }
783 if (selected) { 789 if (selected) {
784 painter->setPen(Qt::NoPen); 790 painter->setPen(Qt::NoPen);
785 painter->fillRect(x+1, y+1, w-1, h-1, 791 painter->fillRect(x+1, y+1, w-1, h-1,
786 group.brush(QColorGroup::Background)); 792 group.brush(QColorGroup::Background));
787 } else 793 } else
788 drawPhaseGradient(painter, QRect(x+1, y+1, w-1, h-2), 794 drawPhaseGradient(painter, QRect(x+1, y+1, w-1, h-2),
789 group.background().dark(contrast) ); 795 group.background().dark(contrast) );
790 796
791 797
792 // draw tab 798 // draw tab
793 painter->setPen(group.dark()); 799 painter->setPen(group.dark());
794 painter->drawLine(x, y, x, y2-2); 800 painter->drawLine(x, y, x, y2-2);
795 painter->drawLine(x+1, y, x2, y); 801 painter->drawLine(x+1, y, x2, y);
796 painter->drawLine(x2, y+1, x2, y2-2); 802 painter->drawLine(x2, y+1, x2, y2-2);
797 803
798 painter->setPen(group.mid()); 804 painter->setPen(group.mid());
799 painter->drawLine(x2-1, y+2, x2-1, y2-2); 805 painter->drawLine(x2-1, y+2, x2-1, y2-2);
800 806
801 painter->setPen(group.midlight()); 807 painter->setPen(group.midlight());
802 painter->drawLine(x+1, y+1, x2-2, y+1); 808 painter->drawLine(x+1, y+1, x2-2, y+1);
803 if ((selected) || edge) painter->drawLine(x+1, y+2, x+1, y2-2); 809 if ((selected) || edge) painter->drawLine(x+1, y+2, x+1, y2-2);
804 810
805 // finish off bottom 811 // finish off bottom
806 if (selected) { 812 if (selected) {
807 painter->setPen(group.dark()); 813 painter->setPen(group.dark());
808 painter->drawPoint(x, y2-1); 814 painter->drawPoint(x, y2-1);
809 painter->drawPoint(x2, y2-1); 815 painter->drawPoint(x2, y2-1);
810 816
811 painter->setPen(group.midlight()); 817 painter->setPen(group.midlight());
812 painter->drawPoint(x, y2); 818 painter->drawPoint(x, y2);
813 painter->drawLine(x+1, y2-1, x+1, y2); 819 painter->drawLine(x+1, y2-1, x+1, y2);
814 painter->drawPoint(x2, y2); 820 painter->drawPoint(x2, y2);
815 821
816 painter->setPen(group.mid()); 822 painter->setPen(group.mid());
817 painter->drawPoint(x2-1, y2-1); 823 painter->drawPoint(x2-1, y2-1);
818 824
819 if (edge) { 825 if (edge) {
820 painter->setPen(group.dark()); 826 painter->setPen(group.dark());
821 painter->drawLine(x, y2-1, x, y2); 827 painter->drawLine(x, y2-1, x, y2);
822 painter->setPen(group.midlight()); 828 painter->setPen(group.midlight());
823 painter->drawPoint(x+1, y2); 829 painter->drawPoint(x+1, y2);
824 } 830 }
825 } else { 831 } else {
826 painter->setPen(group.dark()); 832 painter->setPen(group.dark());
827 painter->drawLine(x, y2-1, x2, y2-1); 833 painter->drawLine(x, y2-1, x2, y2-1);
828 834
829 painter->setPen(group.midlight()); 835 painter->setPen(group.midlight());
830 painter->drawLine(x, y2, x2, y2); 836 painter->drawLine(x, y2, x2, y2);
831 837
832 if (edge) { 838 if (edge) {
833 painter->setPen(group.dark()); 839 painter->setPen(group.dark());
834 painter->drawLine(x, y2-1, x, y2); 840 painter->drawLine(x, y2-1, x, y2);
835 } 841 }
836 } 842 }
837 break; 843 break;
838 } 844 }
839 case QTabBar::RoundedBelow: 845 case QTabBar::RoundedBelow:
840 case QTabBar::TriangularBelow: { 846 case QTabBar::TriangularBelow: {
841 painter->setBrush( group.background().dark(contrast)); 847 painter->setBrush( group.background().dark(contrast));
842 painter->setPen(Qt::NoPen); 848 painter->setPen(Qt::NoPen);
843 painter->fillRect(x+1, y+1, w-1, h-1, painter->brush()); 849 painter->fillRect(x+1, y+1, w-1, h-1, painter->brush());
844 850
845 // draw tab 851 // draw tab
846 painter->setPen(group.dark()); 852 painter->setPen(group.dark());
847 painter->drawLine(x, y+1, x, y2); 853 painter->drawLine(x, y+1, x, y2);
848 painter->drawLine(x+1, y2, x2, y2); 854 painter->drawLine(x+1, y2, x2, y2);
849 painter->drawLine(x2, y+1, x2, y2-1); 855 painter->drawLine(x2, y+1, x2, y2-1);
850 856
851 painter->setPen(group.mid()); 857 painter->setPen(group.mid());
852 painter->drawLine(x2-1, y+1, x2-1, y2-1); 858 painter->drawLine(x2-1, y+1, x2-1, y2-1);
853 painter->drawLine(x+2, y2-1, x2-1, y2-1); 859 painter->drawLine(x+2, y2-1, x2-1, y2-1);
854 painter->drawPoint(x, y); 860 painter->drawPoint(x, y);
855 painter->drawPoint(x2, y); 861 painter->drawPoint(x2, y);
856 862
857 if ((selected) || edge) { 863 if ((selected) || edge) {
858 painter->setPen(group.midlight()); 864 painter->setPen(group.midlight());
859 painter->drawLine(x+1, y+1, x+1, y2-2); 865 painter->drawLine(x+1, y+1, x+1, y2-2);
860 } 866 }
861 867
862 // finish off top 868 // finish off top
863 if (selected) { 869 if (selected) {
864 if (edge) { 870 if (edge) {
865 painter->setPen(group.dark()); 871 painter->setPen(group.dark());
866 painter->drawPoint(x, y); 872 painter->drawPoint(x, y);
867 painter->setPen(group.midlight()); 873 painter->setPen(group.midlight());
868 painter->drawPoint(x+1, y); 874 painter->drawPoint(x+1, y);
869 } 875 }
870 } else { 876 } else {
871 painter->setPen(group.dark()); 877 painter->setPen(group.dark());
872 painter->drawLine(x, y+1, x2, y+1); 878 painter->drawLine(x, y+1, x2, y+1);
873 879
874 painter->setPen(group.mid()); 880 painter->setPen(group.mid());
875 painter->drawLine(x, y, x2, y); 881 painter->drawLine(x, y, x2, y);
876 882
877 if (edge) { 883 if (edge) {
878 painter->setPen(group.dark()); 884 painter->setPen(group.dark());
879 painter->drawPoint(x, y); 885 painter->drawPoint(x, y);
880 } 886 }
881 } 887 }
882 break; 888 break;
883 } 889 }
884 } 890 }
885 891
886 painter->restore(); 892 painter->restore();
887} 893}
888 894
889void PhaseStyle::drawTabMask( QPainter* p, const QTabBar*, QTab* tab, 895void PhaseStyle::drawTabMask( QPainter* p, const QTabBar*, QTab* tab,
890 bool ) { 896 bool ) {
891 p->fillRect(tab->rect(), Qt::color1); 897 p->fillRect(tab->rect(), Qt::color1);
892} 898}
893 899
894void PhaseStyle::drawToolButton(QPainter * p, int x, int y, 900void PhaseStyle::drawToolButton(QPainter * p, int x, int y,
895 int w, int h, const QColorGroup & g, 901 int w, int h, const QColorGroup & g,
896 bool sunken, 902 bool sunken,
897 const QBrush * fill ) { 903 const QBrush * fill ) {
898 QRect r(x, y, w, h ); 904 QRect r(x, y, w, h );
899 p->fillRect(r, g.background()); 905 p->fillRect(r, g.background());
900 906
901 drawPanel(p, x, y, w, h, g, sunken, 1, 907 drawPanel(p, x, y, w, h, g, sunken, 1,
902 fill ? fill : &g.brush(QColorGroup::Button) ); 908 fill ? fill : &g.brush(QColorGroup::Button) );
903 909
904 910
905 p->setPen(g.text() ); 911 p->setPen(g.text() );
906} 912}
907 913
908 914
909/* 915/*
910 * LGPLv2 Copyright (C) 2001 Rik Hemsley (rikkus) <rik@kde.org> 916 * LGPLv2 Copyright (C) 2001 Rik Hemsley (rikkus) <rik@kde.org>
911 * 917 *
912 * ../web/webstyle.cpp 918 * ../web/webstyle.cpp
913 */ 919 */
914void PhaseStyle::scrollBarMetrics(const QScrollBar* sb, int& sliderMin, 920void PhaseStyle::scrollBarMetrics(const QScrollBar* sb, int& sliderMin,
915 int& sliderMax, int &sliderLength, 921 int& sliderMax, int &sliderLength,
916 int& buttonDim ) { 922 int& buttonDim ) {
917 int maxlen; 923 int maxlen;
918 bool horizontal = sb->orientation() == QScrollBar::Horizontal; 924 bool horizontal = sb->orientation() == QScrollBar::Horizontal;
919 int len = (horizontal) ? sb->width() : sb->height(); 925 int len = (horizontal) ? sb->width() : sb->height();
920 int extent = (horizontal) ? sb->height() : sb->width(); 926 int extent = (horizontal) ? sb->height() : sb->width();
921 927
922 if (len > (extent - 1) * 2) 928 if (len > (extent - 1) * 2)
923 buttonDim = extent; 929 buttonDim = extent;
924 else 930 else
925 buttonDim = len / 2 - 1; 931 buttonDim = len / 2 - 1;
926 932
927 if (horizontal) 933 if (horizontal)
928 sliderMin = buttonDim * 2; 934 sliderMin = buttonDim * 2;
929 else 935 else
930 sliderMin = 1; 936 sliderMin = 1;
931 937
932 maxlen = len - buttonDim * 2 - 1; 938 maxlen = len - buttonDim * 2 - 1;
933 int div = QMAX(1, (sb->maxValue() - sb->minValue() + sb->pageStep() ) ); 939 int div = QMAX(1, (sb->maxValue() - sb->minValue() + sb->pageStep() ) );
934 940
935 sliderLength = 941 sliderLength =
936 (sb->pageStep() * maxlen) / div; 942 (sb->pageStep() * maxlen) / div;
937 943
938 if (sliderLength < SCROLLBAR_EXTENT) 944 if (sliderLength < SCROLLBAR_EXTENT)
939 sliderLength = SCROLLBAR_EXTENT; 945 sliderLength = SCROLLBAR_EXTENT;
940 946
941 if (sliderLength > maxlen) 947 if (sliderLength > maxlen)
942 sliderLength = maxlen; 948 sliderLength = maxlen;
943 949
944 sliderMax = sliderMin + maxlen - sliderLength; 950 sliderMax = sliderMin + maxlen - sliderLength;
945} 951}
946 952
947void PhaseStyle::drawScrollBarControls( QPainter* p, const QScrollBar *sb, 953void PhaseStyle::drawScrollBarControls( QPainter* p, const QScrollBar *sb,
948 int sliderStart, uint controls, 954 int sliderStart, uint controls,
949 uint activeControl) { 955 uint activeControl) {
950 const bool horizontal = (sb->orientation() == Qt::Horizontal ); 956 const bool horizontal = (sb->orientation() == Qt::Horizontal );
951 int sliderMin, sliderMax, sliderLength, buttonDim; 957 int sliderMin, sliderMax, sliderLength, buttonDim;
952 const QColorGroup& g = sb->colorGroup(); 958 const QColorGroup& g = sb->colorGroup();
953 QRect sub, add, subPage, addPage, slider; 959 QRect sub, add, subPage, addPage, slider;
954 int x, y, x2, y2; 960 int x, y, x2, y2;
955 961
956 scrollBarMetrics( sb, sliderMin, sliderMax, sliderLength, buttonDim ); 962 scrollBarMetrics( sb, sliderMin, sliderMax, sliderLength, buttonDim );
957 963
958 /* lets get the positions */ 964 /* lets get the positions */
959 scrollBarItemPositions(sb, horizontal, sliderStart, 965 scrollBarItemPositions(sb, horizontal, sliderStart,
960 sliderMax, sliderLength, buttonDim, 966 sliderMax, sliderLength, buttonDim,
961 sub, add, subPage, addPage, 967 sub, add, subPage, addPage,
962 slider ); 968 slider );
963 969
964 970
965 /* sanity */ 971 /* sanity */
966 if ( sliderStart > sliderMax ) 972 if ( sliderStart > sliderMax )
967 sliderStart = sliderMax; 973 sliderStart = sliderMax;
968 974
969 // addline 975 // addline
970 if ( controls & AddLine && add.isValid() ) { 976 if ( controls & AddLine && add.isValid() ) {
971 x = add.x(); y = add.y(); 977 x = add.x(); y = add.y();
972 x2 = add.width(); y2 = add.height(); 978 x2 = add.width(); y2 = add.height();
973 const bool down = (activeControl & AddLine ); 979 const bool down = (activeControl & AddLine );
974 drawBevelButton(p, x, y, x2, y2, g, down, 980 drawBevelButton(p, x, y, x2, y2, g, down,
975 &g.brush(QColorGroup::Button)); 981 &g.brush(QColorGroup::Button));
976 982
977 Qt::ArrowType arrow = horizontal ? RightArrow : DownArrow; 983 Qt::ArrowType arrow = horizontal ? RightArrow : DownArrow;
978 if (down ) { 984 if (down ) {
979 switch (arrow ) { 985 switch (arrow ) {
980 case DownArrow: y++; break; 986 case DownArrow: y++; break;
981 case RightArrow: x++; break; 987 case RightArrow: x++; break;
982 default: break; 988 default: break;
983 } 989 }
984 } 990 }
985 drawArrow( p, arrow, down, x, y, x2, y2, g, true ); 991 drawArrow( p, arrow, down, x, y, x2, y2, g, true );
986 } 992 }
987 993
988 if ( controls & SubLine && sub.isValid() ) { 994 if ( controls & SubLine && sub.isValid() ) {
989 x = sub.x(); y = sub.y(); 995 x = sub.x(); y = sub.y();
990 x2 = sub.width(); y2 = sub.height(); 996 x2 = sub.width(); y2 = sub.height();
991 const bool down = (activeControl & SubLine ); 997 const bool down = (activeControl & SubLine );
992 drawBevelButton(p, x, y, x2, y2, g, down, 998 drawBevelButton(p, x, y, x2, y2, g, down,
993 &g.brush(QColorGroup::Button)); 999 &g.brush(QColorGroup::Button));
994 1000
995 Qt::ArrowType arrow = horizontal ? LeftArrow : UpArrow; 1001 Qt::ArrowType arrow = horizontal ? LeftArrow : UpArrow;
996 if (down ) { 1002 if (down ) {
997 switch (arrow ) { 1003 switch (arrow ) {
998 case UpArrow: y--; break; 1004 case UpArrow: y--; break;
999 case LeftArrow: x--; break; 1005 case LeftArrow: x--; break;
1000 default: break; 1006 default: break;
1001 } 1007 }
1002 } 1008 }
1003 drawArrow( p, arrow, down, x, y, x2, y2, g, true ); 1009 drawArrow( p, arrow, down, x, y, x2, y2, g, true );
1004 } 1010 }
1005 1011
1006 if ( controls & AddPage && addPage.isValid() ) { 1012 if ( controls & AddPage && addPage.isValid() ) {
1007 x = addPage.x(); y = addPage.y(); 1013 x = addPage.x(); y = addPage.y();
1008 x2 = addPage.right(); y2 = addPage.bottom(); 1014 x2 = addPage.right(); y2 = addPage.bottom();
1009 1015
1010 p->fillRect(addPage, g.mid()); 1016 p->fillRect(addPage, g.mid());
1011 p->setPen(g.dark()); 1017 p->setPen(g.dark());
1012 if (horizontal) { // vertical 1018 if (horizontal) { // vertical
diff --git a/noncore/styles/phase/phasestyle.h b/noncore/styles/phase/phasestyle.h
index ab593e6..cbaa534 100644
--- a/noncore/styles/phase/phasestyle.h
+++ b/noncore/styles/phase/phasestyle.h
@@ -1,166 +1,167 @@
1////////////////////////////////////////////////////////////////////////////// 1//////////////////////////////////////////////////////////////////////////////
2// phasestyle.h 2// phasestyle.h
3// ------------------- 3// -------------------
4// A style for KDE 4// A style for KDE
5// ------------------- 5// -------------------
6// Copyright (c) 2004 David Johnson <david@usermode.org> 6// Copyright (c) 2004 David Johnson <david@usermode.org>
7// 7//
8// Permission is hereby granted, free of charge, to any person obtaining a copy 8// Permission is hereby granted, free of charge, to any person obtaining a copy
9// of this software and associated documentation files (the "Software"), to 9// of this software and associated documentation files (the "Software"), to
10// deal in the Software without restriction, including without limitation the 10// deal in the Software without restriction, including without limitation the
11// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 11// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
12// sell copies of the Software, and to permit persons to whom the Software is 12// sell copies of the Software, and to permit persons to whom the Software is
13// furnished to do so, subject to the following conditions: 13// furnished to do so, subject to the following conditions:
14// 14//
15// The above copyright notice and this permission notice shall be included in 15// The above copyright notice and this permission notice shall be included in
16// all copies or substantial portions of the Software. 16// all copies or substantial portions of the Software.
17// 17//
18// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 22// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
23// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 23// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
24// IN THE SOFTWARE. 24// IN THE SOFTWARE.
25////////////////////////////////////////////////////////////////////////////// 25//////////////////////////////////////////////////////////////////////////////
26 26
27#ifndef PHASESTYLE_H 27#ifndef PHASESTYLE_H
28#define PHASESTYLE_H 28#define PHASESTYLE_H
29 29
30#include <qstyle.h> 30#include <qstyle.h>
31#include <qwindowsstyle.h> 31#include <qwindowsstyle.h>
32#include <qcolor.h> 32#include <qcolor.h>
33 33
34class KPixmap; 34class KPixmap;
35 35
36class PhaseStyle : public QWindowsStyle 36class PhaseStyle : public QWindowsStyle
37{ 37{
38 Q_OBJECT 38 Q_OBJECT
39public: 39public:
40 PhaseStyle(); 40 PhaseStyle();
41 virtual ~PhaseStyle(); 41 virtual ~PhaseStyle();
42 42
43 void polish( QWidget * ); 43 void polish( QWidget * );
44 void polish( QPalette& ); 44 void polish( QPalette& );
45 void polish( QApplication* ); 45 void polish( QApplication* );
46 46
47 47
48 void drawCheckMark ( QPainter * p, int x, int y, int w, 48 void drawCheckMark ( QPainter * p, int x, int y, int w,
49 int h, const QColorGroup & g, 49 int h, const QColorGroup & g,
50 bool act, bool dis ); 50 bool act, bool dis );
51 void drawArrow(QPainter *p, Qt::ArrowType type, bool down, 51 void drawArrow(QPainter *p, Qt::ArrowType type, bool down,
52 int x, int y, int w, int h, const QColorGroup &g, 52 int x, int y, int w, int h, const QColorGroup &g,
53 bool enabled=true, const QBrush *fill = 0); 53 bool enabled=true, const QBrush *fill = 0);
54 54
55 void drawPushButton(QPushButton* btn, QPainter* p ); 55 void drawPushButton(QPushButton* btn, QPainter* p );
56 void drawPushButtonLabel(QPushButton* btn, QPainter* p ); 56 void drawPushButtonLabel(QPushButton* btn, QPainter* p );
57 void drawPanel(QPainter* p, int , int, int, int, 57 void drawPanel(QPainter* p, int , int, int, int,
58 const QColorGroup&, bool sunken = false, 58 const QColorGroup&, bool sunken = false,
59 int lineWidth = 1, const QBrush *b = 0l ); 59 int lineWidth = 1, const QBrush *b = 0l );
60 void drawButton( QPainter*, int x, int y, int w, int h, 60 void drawButton( QPainter*, int x, int y, int w, int h,
61 const QColorGroup&, bool sunken = false, 61 const QColorGroup&, bool sunken = false,
62 const QBrush* fill = 0); 62 const QBrush* fill = 0);
63 void drawBevelButton(QPainter*, int, int, int, int, 63 void drawBevelButton(QPainter*, int, int, int, int,
64 const QColorGroup&, bool sunken = false, 64 const QColorGroup&, bool sunken = false,
65 const QBrush* fill = 0 ); 65 const QBrush* fill = 0 );
66 void drawFocusRect( QPainter* p, const QRect& r, 66 void drawFocusRect( QPainter* p, const QRect& r,
67 const QColorGroup&, const QColor* = 0, 67 const QColorGroup&, const QColor* = 0,
68 bool atBorder = false ); 68 bool atBorder = false );
69 void drawButtonMask( QPainter* p, int x, int y, 69 void drawButtonMask( QPainter* p, int x, int y,
70 int w, int h ); 70 int w, int h );
71 71
72 72
73 /* Menu Stuff */ 73 /* Menu Stuff */
74 void drawSeperator( QPainter* p, int x, int y, int w, 74 void drawSeperator( QPainter* p, int x, int y, int w,
75 int h, const QColorGroup& group, bool sunken = true, 75 int h, const QColorGroup& group, bool sunken = true,
76 int lineWidth = 1, int midLineWidtth = 0 ); 76 int lineWidth = 1, int midLineWidtth = 0 );
77 void drawMenuBarItem(QPainter* p, int x, int y, int w, int h, 77 void drawMenuBarItem(QPainter* p, int x, int y, int w, int h,
78 QMenuItem *mi, QColorGroup& g, bool enabled, 78 QMenuItem *mi, QColorGroup& g, bool enabled,
79 bool act); 79 bool act);
80 80
81 /* RadioButton, CheckBox... */ 81 /* RadioButton, CheckBox... */
82 void drawIndicator(QPainter* p, int x, int y, int w, int h, 82 void drawIndicator(QPainter* p, int x, int y, int w, int h,
83 const QColorGroup &g, int state, bool down = FALSE, 83 const QColorGroup &g, int state, bool down = FALSE,
84 bool enabled = TRUE ); 84 bool enabled = TRUE );
85 void drawExclusiveIndicator( QPainter*, int, int, int, int, 85 void drawExclusiveIndicator( QPainter*, int, int, int, int,
86 const QColorGroup&, bool on, 86 const QColorGroup&, bool on,
87 bool down = false,bool enabled = true ); 87 bool down = false,bool enabled = true );
88 void drawExclusiveIndicatorMask (QPainter*, int, int, int, int, bool ); 88 void drawExclusiveIndicatorMask (QPainter*, int, int, int, int, bool );
89 89
90 /* spacing,dimensions */ 90 /* spacing,dimensions */
91 int defaultFrameWidth () const; 91 int defaultFrameWidth () const;
92 int popupMenuItemHeight ( bool checkable, 92 int popupMenuItemHeight ( bool checkable,
93 QMenuItem * mi, 93 QMenuItem * mi,
94 const QFontMetrics & fm ); 94 const QFontMetrics & fm );
95 int extraPopupMenuItemWidth(bool checkable, int maxpmw, 95 int extraPopupMenuItemWidth(bool checkable, int maxpmw,
96 QMenuItem* mi, const QFontMetrics& fm ); 96 QMenuItem* mi, const QFontMetrics& fm );
97 97
98 QSize indicatorSize()const; 98 QSize indicatorSize()const;
99 QSize exclusiveIndicatorSize()const; 99 QSize exclusiveIndicatorSize()const;
100 void getButtonShift( int &x, int &y ); 100 void getButtonShift( int &x, int &y );
101 101
102 /* popup drawing */ 102 /* popup drawing */
103 void drawPopupMenuItem ( QPainter * p, bool checkable, int maxpmw, 103 void drawPopupMenuItem ( QPainter * p, bool checkable, int maxpmw,
104 int tab, QMenuItem * mi, 104 int tab, QMenuItem * mi,
105 const QPalette & pal, bool act, 105 const QPalette & pal, bool act,
106 bool enabled, int x, int y, 106 bool enabled, int x, int y,
107 int w, int h ); 107 int w, int h );
108 108
109 /* combo box */ 109 /* combo box */
110 QRect comboButtonRect ( int x, int y, int w, int h ); 110 QRect comboButtonRect ( int x, int y, int w, int h );
111 void drawComboButton( QPainter * p, int x, int y, 111 void drawComboButton( QPainter * p, int x, int y,
112 int w, int h, 112 int w, int h,
113 const QColorGroup & g, 113 const QColorGroup & g,
114 bool sunken = FALSE, 114 bool sunken = FALSE,
115 bool editable = FALSE, 115 bool editable = FALSE,
116 bool enabled = TRUE, 116 bool enabled = TRUE,
117 const QBrush * fill = 0 ); 117 const QBrush * fill = 0 );
118 118
119 /* tabbar */ 119 /* tabbar */
120 void drawTab(QPainter*, const QTabBar*, QTab*, 120 void drawTab(QPainter*, const QTabBar*, QTab*,
121 bool selected ); 121 bool selected );
122 void drawTabMask( QPainter*, const QTabBar*, QTab*, 122 void drawTabMask( QPainter*, const QTabBar*, QTab*,
123 bool ); 123 bool );
124 void tabbarMetrics( const QTabBar* t, int &hframe, int &vframe, int &overlap);
124 125
125 /* tool button */ 126 /* tool button */
126 void drawToolButton ( QPainter * p, int x, int y, 127 void drawToolButton ( QPainter * p, int x, int y,
127 int w, int h, 128 int w, int h,
128 const QColorGroup & g, 129 const QColorGroup & g,
129 bool sunken = FALSE, 130 bool sunken = FALSE,
130 const QBrush * fill = 0 ); 131 const QBrush * fill = 0 );
131 132
132 /* scrollbar */ 133 /* scrollbar */
133 void drawScrollBarControls ( QPainter *, const QScrollBar *, 134 void drawScrollBarControls ( QPainter *, const QScrollBar *,
134 int sliderStart, uint controls, 135 int sliderStart, uint controls,
135 uint activeControl ); 136 uint activeControl );
136 void scrollBarMetrics( const QScrollBar*, int&, int&, int&, int& ); 137 void scrollBarMetrics( const QScrollBar*, int&, int&, int&, int& );
137 QStyle::ScrollControl scrollBarPointOver( const QScrollBar*, int sliderStart, 138 QStyle::ScrollControl scrollBarPointOver( const QScrollBar*, int sliderStart,
138 const QPoint& ); 139 const QPoint& );
139 140
140 /* slider drawing */ 141 /* slider drawing */
141 void drawSlider ( QPainter * p, int x, int y, int w, int h, 142 void drawSlider ( QPainter * p, int x, int y, int w, int h,
142 const QColorGroup & g, Orientation, 143 const QColorGroup & g, Orientation,
143 bool tickAbove, bool tickBelow ); 144 bool tickAbove, bool tickBelow );
144 145
145 void drawSliderGroove ( QPainter * p, int x, int y, int w, 146 void drawSliderGroove ( QPainter * p, int x, int y, int w,
146 int h, const QColorGroup & g, 147 int h, const QColorGroup & g,
147 QCOORD c, Orientation ); 148 QCOORD c, Orientation );
148private: 149private:
149 void drawPhaseGradient(QPainter* p, 150 void drawPhaseGradient(QPainter* p,
150 const QRect& rec, 151 const QRect& rec,
151 const QColor& col )const; 152 const QColor& col )const;
152 static void scrollBarItemPositions( const QScrollBar *, 153 static void scrollBarItemPositions( const QScrollBar *,
153 const bool horizontal, 154 const bool horizontal,
154 int sliderStart, 155 int sliderStart,
155 int sliderMax, 156 int sliderMax,
156 int sliderLength, 157 int sliderLength,
157 int buttomDim, 158 int buttomDim,
158 QRect& sub, 159 QRect& sub,
159 QRect& add, 160 QRect& add,
160 QRect& subPage, 161 QRect& subPage,
161 QRect& addPage, 162 QRect& addPage,
162 QRect& slider ); 163 QRect& slider );
163}; 164};
164 165
165 166
166#endif 167#endif