-rw-r--r-- | noncore/decorations/flat/flat.cpp | 4 | ||||
-rw-r--r-- | noncore/decorations/flat/flat.h | 1 | ||||
-rw-r--r-- | noncore/decorations/liquid/liquid.cpp | 4 | ||||
-rw-r--r-- | noncore/decorations/liquid/liquid.h | 2 | ||||
-rw-r--r-- | noncore/decorations/polished/polished.cpp | 4 | ||||
-rw-r--r-- | noncore/decorations/polished/polished.h | 2 | ||||
-rw-r--r-- | noncore/styles/flat/flat.cpp | 2 | ||||
-rw-r--r-- | noncore/styles/flat/flat.h | 1 | ||||
-rw-r--r-- | noncore/styles/fresh/fresh.cpp | 4 | ||||
-rw-r--r-- | noncore/styles/fresh/fresh.h | 1 | ||||
-rw-r--r-- | noncore/styles/liquid/plugin.cpp | 4 | ||||
-rw-r--r-- | noncore/styles/liquid/plugin.h | 1 | ||||
-rw-r--r-- | noncore/styles/metal/plugin.cpp | 4 | ||||
-rw-r--r-- | noncore/styles/metal/plugin.h | 2 | ||||
-rw-r--r-- | noncore/styles/theme/plugin.cpp | 4 | ||||
-rw-r--r-- | noncore/styles/theme/plugin.h | 1 | ||||
-rw-r--r-- | noncore/todayplugins/fortune/fortunepluginimpl.h | 1 | ||||
-rw-r--r-- | noncore/todayplugins/stockticker/stocktickerlib/stocktickerpluginimpl.h | 1 | ||||
-rw-r--r-- | noncore/todayplugins/weather/weatherpluginimpl.h | 1 |
19 files changed, 22 insertions, 22 deletions
diff --git a/noncore/decorations/flat/flat.cpp b/noncore/decorations/flat/flat.cpp index b6a81a3..a2f12be 100644 --- a/noncore/decorations/flat/flat.cpp +++ b/noncore/decorations/flat/flat.cpp @@ -1,360 +1,362 @@ /********************************************************************** ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** ** This file is part of the Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ** See http://www.trolltech.com/gpl/ for GPL licensing information. ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ #include "flat.h" #include <qpainter.h> #include <qapplication.h> /* XPM */ static const char * ok_xpm[] = { "32 32 3 1", " c None", ". c #000000", "+ c #FFFFFF", " ", " ", " ++++++++ ", " ++++++++++++ ", " +++++ +++++ ", " +++ +++ ", " +++ +++ ", " +++ +++ ", " +++ +++ ", " ++ ++ ", " ++ +++++ ++ ++ ++ ", " ++ ++++++++ ++ +++ ++ ", " +++ +++ +++ ++ +++ +++ ", " ++ +++ ++ ++ +++ ++ ", " ++ ++ ++ ++ ++ ++ ", " ++ ++ ++ +++++ ++ ", " ++ ++ ++ ++++ ++ ", " ++ ++ ++ ++ ++ ++ ", " ++ +++ ++ ++ +++ ++ ", " +++ +++ +++ ++ +++ +++ ", " ++ ++++++++ ++ ++ ++ ", " ++ +++++ ++ ++ ++ ", " ++ ++ ", " +++ +++ ", " +++ +++ ", " +++ +++ ", " +++ +++ ", " +++++ +++++ ", " ++++++++++++ ", " ++++++++ ", " ", " "}; /* XPM */ static const char * close_xpm[] = { "32 32 3 1", " c None", ". c #000000", "+ c #FFFFFF", " ", " ", " ++++++++ ", " ++++++++++++ ", " +++++ +++++ ", " +++ +++ ", " +++ +++ ", " +++ +++ ", " +++ +++ ", " ++ ++ ++ ++ ", " ++ +++ +++ ++ ", " ++ +++ +++ ++ ", " +++ +++ +++ +++ ", " ++ +++ +++ ++ ", " ++ ++++++ ++ ", " ++ ++++ ++ ", " ++ ++++ ++ ", " ++ ++++++ ++ ", " ++ +++ +++ ++ ", " +++ +++ +++ +++ ", " ++ +++ +++ ++ ", " ++ +++ +++ ++ ", " ++ ++ ++ ++ ", " +++ +++ ", " +++ +++ ", " +++ +++ ", " +++ +++ ", " +++++ +++++ ", " ++++++++++++ ", " ++++++++ ", " ", " "}; /* XPM */ static const char * help_xpm[] = { "32 32 3 1", " c None", ". c #000000", "+ c #FFFFFF", " ", " ", " ++++++++ ", " ++++++++++++ ", " +++++ +++++ ", " +++ +++ ", " +++ +++ ", " +++ +++ ", " +++ +++++ +++ ", " ++ ++++++++ ++ ", " ++ ++++ ++++ ++ ", " ++ +++ +++ ++ ", " +++ +++ +++ +++ ", " ++ ++++ ++ ", " ++ +++++ ++ ", " ++ +++++ ++ ", " ++ ++++ ++ ", " ++ ++++ ++ ", " ++ +++ ++ ", " +++ +++ +++ ", " ++ ++ ", " ++ ++ ", " ++ +++ ++ ", " +++ +++ +++ ", " +++ +++ ", " +++ +++ ", " +++ +++ ", " +++++ +++++ ", " ++++++++++++ ", " ++++++++ ", " ", " "}; /* XPM */ static const char * maximize_xpm[] = { "32 32 3 1", " c None", ". c #000000", "+ c #FFFFFF", " ", " ", " ++++++++ ", " ++++++++++++ ", " +++++ +++++ ", " +++ +++ ", " +++ +++ ", " +++ +++ ", " +++ ++++++++++++++ +++ ", " ++ ++++++++++++++ ++ ", " ++ ++++++++++++++ ++ ", " ++ +++ +++ ++ ", " +++ +++ +++ +++ ", " ++ +++ +++ ++ ", " ++ +++ +++ ++ ", " ++ +++ +++ ++ ", " ++ +++ +++ ++ ", " ++ +++ +++ ++ ", " ++ +++ +++ ++ ", " +++ +++ +++ +++ ", " ++ +++ +++ ++ ", " ++ ++++++++++++++ ++ ", " ++ ++++++++++++++ ++ ", " +++ ++++++++++++++ +++ ", " +++ +++ ", " +++ +++ ", " +++ +++ ", " +++++ +++++ ", " ++++++++++++ ", " ++++++++ ", " ", " "}; static QImage scaleButton( const QImage &img, int height ) { if ( img.height() != height ) { return img.smoothScale( img.width()*height/img.height(), height ); } else { return img; } } static void colorize( QImage &img, const QColor &c, bool rev ) { for ( int i = 0; i < img.numColors(); i++ ) { bool sc = (img.color(i) & 0xff000000); if ( rev ) sc = !sc; img.setColor(i, sc ? c.rgb() : 0x00000000 ); } } -FlatDecoration::FlatDecoration() : ref(0), buttonCache(16) +FlatDecoration::FlatDecoration() : buttonCache(16) { buttonCache.setAutoDelete(TRUE); } FlatDecoration::~FlatDecoration() { } int FlatDecoration::metric( Metric m, const WindowData *wd ) const { switch ( m ) { case TopBorder: return 1; break; case LeftBorder: case RightBorder: return 2; case BottomBorder: return 4; case TitleHeight: if ( QApplication::desktop()->height() > 320 ) return 20; else return 18; case OKWidth: case CloseWidth: case HelpWidth: case MaximizeWidth: return metric(TitleHeight,wd); break; default: return WindowDecorationInterface::metric( m, wd ); break; } return 0; } void FlatDecoration::drawArea( Area a, QPainter *p, const WindowData *wd ) const { int th = metric( TitleHeight, wd ); QRect r = wd->rect; switch ( a ) { case Border: { const QColorGroup &cg = wd->palette.active(); if ( wd->flags & WindowData::Active ) { p->setBrush( cg.color(QColorGroup::Highlight) ); } else { p->setBrush( cg.color(QColorGroup::Background) ); } p->setPen( cg.foreground() ); int lb = metric(LeftBorder,wd); int rb = metric(RightBorder,wd); int tb = metric(TopBorder,wd); int bb = metric(BottomBorder,wd); p->drawRect( r.x()-lb, r.y()-tb-th, r.width()+lb+rb, r.height()+th+tb+bb ); } break; case Title: if ( r.height() < 2 ) { WindowDecorationInterface::drawArea( a, p, wd ); } else { const QColorGroup &cg = wd->palette.active(); QColor c; if ( wd->flags & WindowData::Active ) c = cg.color(QColorGroup::Highlight); else c = cg.color(QColorGroup::Background); p->fillRect( QRect(r.x(),r.y()-th,r.width(),th), c ); } break; case TitleText: p->drawText( r.left()+3+metric(HelpWidth,wd), r.top()-th, r.width()-metric(HelpWidth,wd)-metric(CloseWidth,wd), th, Qt::AlignVCenter, wd->caption ); break; default: FlatDecoration::drawArea( a, p, wd ); break; } } void FlatDecoration::drawButton( Button b, QPainter *p, const WindowData *wd, int x, int y, int w, int h, QWSButton::State state ) const { QColor c; const QColorGroup &cg = wd->palette.active(); if ( wd->flags & WindowDecorationInterface::WindowData::Active ) c = cg.color(QColorGroup::HighlightedText); else c = cg.color(QColorGroup::Foreground); bool r = (state & QWSButton::MouseOver) && (state & QWSButton::Clicked); int th = metric(TitleHeight, wd); QString key( "%1-%2-%3-%4" ); key = key.arg(b).arg(th).arg(c.name()).arg(r ? "1" : "0"); QImage *img = buttonCache.find( key ); if ( !img ) { QImage tmp; switch ( b ) { case OK: tmp = QImage( ok_xpm ); break; case Close: tmp = QImage( close_xpm ); break; case Help: tmp = QImage( help_xpm ); break; case Maximize: tmp = QImage( maximize_xpm ); break; } colorize( tmp, c, r ); img = new QImage( scaleButton(tmp,th) ); FlatDecoration *that = (FlatDecoration *)this; that->buttonCache.insert( key, img, 1 ); } p->drawImage( x, y, *img ); } QRegion FlatDecoration::mask( const WindowData *wd ) const { return WindowDecorationInterface::mask( wd ); } QString FlatDecoration::name() const { return qApp->translate( "Decoration", "Flat" ); } QPixmap FlatDecoration::icon() const { return QPixmap(); } QRESULT FlatDecoration::queryInterface( const QUuid &uuid, QUnknownInterface **iface ) { *iface = 0; if ( uuid == IID_QUnknown ) *iface = this; else if ( uuid == IID_WindowDecoration ) *iface = this; + else + return QS_FALSE; if ( *iface ) (*iface)->addRef(); return QS_OK; } Q_EXPORT_INTERFACE() { Q_CREATE_INSTANCE( FlatDecoration ) } diff --git a/noncore/decorations/flat/flat.h b/noncore/decorations/flat/flat.h index 3d8a18b..96ceb1f 100644 --- a/noncore/decorations/flat/flat.h +++ b/noncore/decorations/flat/flat.h @@ -1,49 +1,48 @@ /********************************************************************** ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** ** This file is part of the Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ** See http://www.trolltech.com/gpl/ for GPL licensing information. ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ #ifndef FLAT_H #define FLAT_H #include <qtopia/windowdecorationinterface.h> #include <qcache.h> #include <qimage.h> class FlatDecoration : public WindowDecorationInterface { public: FlatDecoration(); virtual ~FlatDecoration(); virtual int metric( Metric m, const WindowData * ) const; virtual void drawArea( Area a, QPainter *, const WindowData * ) const; virtual void drawButton( Button b, QPainter *, const WindowData *, int x, int y, int w, int h, QWSButton::State ) const; virtual QRegion mask( const WindowData * ) const; virtual QString name() const; virtual QPixmap icon() const; QRESULT queryInterface( const QUuid&, QUnknownInterface** ); Q_REFCOUNT private: - ulong ref; QCache<QImage> buttonCache; }; #endif diff --git a/noncore/decorations/liquid/liquid.cpp b/noncore/decorations/liquid/liquid.cpp index 75b1fc9..ef2ac3c 100644 --- a/noncore/decorations/liquid/liquid.cpp +++ b/noncore/decorations/liquid/liquid.cpp @@ -1,136 +1,138 @@ #include "liquid.h" #include <qapplication.h> #include <qpainter.h> #include <qpalette.h> #include <qdrawutil.h> -LiquidDecoInterface::LiquidDecoInterface ( ) : ref ( 0 ) +LiquidDecoInterface::LiquidDecoInterface ( ) { } LiquidDecoInterface::~LiquidDecoInterface ( ) { } QString LiquidDecoInterface::name ( ) const { return qApp-> translate ( "Decoration", "Liquid" ); } QPixmap LiquidDecoInterface::icon ( ) const { return QPixmap ( ); } void LiquidDecoInterface::drawArea( Area a, QPainter *p, const WindowData *wd ) const { QRect r = wd-> rect; int th = metric ( TitleHeight, wd ); switch ( a ) { case WindowDecorationInterface::Border: { const QColorGroup &cg = wd-> palette. active ( ); qDrawWinPanel ( p, r. x ( ) - metric ( LeftBorder, wd ), r. y ( ) - th - metric ( TopBorder, wd ), r. width ( ) + metric ( LeftBorder, wd ) + metric ( RightBorder, wd ), r. height ( ) + th + metric ( TopBorder,wd) + metric ( BottomBorder, wd ), cg, false, &cg. brush ( QColorGroup::Background )); break; } case WindowDecorationInterface::Title: { const QColorGroup &cg = wd-> palette. active ( ); QBrush titleBrush; QPen titleLines1, titleLines2; titleBrush = cg. brush (( wd-> flags & WindowData::Active ) ? QColorGroup::Highlight : QColorGroup::Background ); titleLines1 = titleBrush. color ( ). dark ( 105 ); titleLines2 = titleBrush. color ( ). dark ( 103 ); p-> fillRect ( r. x ( ), r. y ( ) - th, r. width ( ), th, titleBrush ); for ( int i = r.y()-th; i < r.y(); i += 4 ) { p-> setPen ( titleLines1 ); p-> drawLine ( r. left ( ), i, r. right ( ), i ); p-> setPen ( titleLines2 ); p-> drawLine ( r. left ( ), i+1, r. right ( ), i+1 ); } break; } case WindowDecorationInterface::TitleText: { QColor textcol = wd-> palette. active ( ). color (( wd-> flags & WindowData::Active ) ? QColorGroup::HighlightedText : QColorGroup::Text ); QColor shadecol = ( qGray ( textcol. rgb ( ) ) > 128 ) ? textcol. dark ( 230 ) : textcol.light( 300 ); if ( textcol == shadecol ) { if ( qGray ( shadecol. rgb ( ) ) < 128 ) shadecol = QColor ( 225, 225, 225 ); else shadecol = QColor ( 30, 30, 30 ); } QColor fillcol = wd-> palette. active ( ). color (( wd-> flags & WindowData::Active ) ? QColorGroup::Highlight : QColorGroup::Background ); QColor bordercol = fillcol. dark ( 110 ); fillcol = fillcol. light ( 110 ); QRect tr ( r.x ( ) + 3 + metric ( HelpWidth, wd ), r. top ( ) - th, r. width ( ) - metric ( OKWidth, wd ) - metric ( CloseWidth, wd ), th ); QFont f = p-> font ( ); f. setWeight ( QFont::Bold ); p-> setFont ( f ); QRect br = p-> boundingRect ( tr, QPainter::AlignCenter, wd-> caption ); int trh2 = tr. height ( ) / 2; int align = QPainter::AlignCenter; if ( br. width ( ) + 2 * trh2 > tr. width ( ) ) { br. setLeft ( tr. left ( ) + trh2 ); br. setWidth ( tr. width ( ) - 2 * trh2 ); align = QPainter::AlignLeft | QPainter::AlignVCenter; } p-> setBrush ( fillcol ); p-> setPen ( bordercol /*Qt::NoPen*/ ); p-> drawChord ( br. left ( ) - trh2, tr. top ( ), 2 * trh2, tr. height ( ), 90*16, 180*16 ); p-> drawChord ( br. right ( ) + 1 - trh2, tr. top ( ), 2 * trh2, tr. height ( ), 90*16, -180*16 ); p-> fillRect ( br.left() - 1, tr. top ( ), br. width ( ) + 2, tr. height ( ), fillcol); p-> setPen ( shadecol ); p-> drawText ( br, align, wd-> caption ); p-> setPen ( textcol ); br. moveBy ( -1, -1 ); p-> drawText ( br, align, wd-> caption ); break; } default: { WindowDecorationInterface::drawArea ( a, p, wd ); break; } } } QRESULT LiquidDecoInterface::queryInterface ( const QUuid &uuid, QUnknownInterface **iface ) { *iface = 0; if ( uuid == IID_QUnknown ) *iface = this; else if ( uuid == IID_WindowDecoration ) *iface = this; + else + return QS_FALSE; if ( *iface ) (*iface)-> addRef ( ); return QS_OK; } Q_EXPORT_INTERFACE() { Q_CREATE_INSTANCE( LiquidDecoInterface ) } diff --git a/noncore/decorations/liquid/liquid.h b/noncore/decorations/liquid/liquid.h index ec55132..bbe433e 100644 --- a/noncore/decorations/liquid/liquid.h +++ b/noncore/decorations/liquid/liquid.h @@ -1,25 +1,23 @@ #ifndef __OPIE_LIQUIDDECO_PLUGIN_H__ #define __OPIE_LIQUIDDECO_PLUGIN_H__ #include <qpe/windowdecorationinterface.h> class LiquidSettings; class LiquidDecoInterface : public WindowDecorationInterface { public: LiquidDecoInterface ( ); virtual ~LiquidDecoInterface ( ); QRESULT queryInterface ( const QUuid &, QUnknownInterface ** ); Q_REFCOUNT virtual void drawArea( Area a, QPainter *, const WindowData * ) const; virtual QString name ( ) const; virtual QPixmap icon ( ) const; -private: - ulong ref; }; #endif diff --git a/noncore/decorations/polished/polished.cpp b/noncore/decorations/polished/polished.cpp index 30f1a84..43179be 100644 --- a/noncore/decorations/polished/polished.cpp +++ b/noncore/decorations/polished/polished.cpp @@ -1,171 +1,173 @@ /********************************************************************** ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** ** This file is part of the Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ** See http://www.trolltech.com/gpl/ for GPL licensing information. ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ #include "polished.h" #include <qpainter.h> #include <qapplication.h> -PolishedDecoration::PolishedDecoration() : ref(0) +PolishedDecoration::PolishedDecoration() { } PolishedDecoration::~PolishedDecoration() { } int PolishedDecoration::metric( Metric m, const WindowData *wd ) const { switch ( m ) { case TopBorder: return 1; break; case LeftBorder: case RightBorder: return 2; case BottomBorder: return 6; case TitleHeight: if ( QApplication::desktop()->height() > 320 ) return 20; else return 18; default: return WindowDecorationInterface::metric( m, wd ); break; } return 0; } void PolishedDecoration::drawArea( Area a, QPainter *p, const WindowData *wd ) const { int th = metric( TitleHeight, wd ); QRect r = wd->rect; switch ( a ) { case Border: { const QColorGroup &cg = wd->palette.active(); QColor c; if ( wd->flags & WindowData::Active ) { c = cg.color(QColorGroup::Highlight); } else { c = cg.color(QColorGroup::Background); } drawBlend( p, QRect(r.x(),r.bottom()+1,r.width(),metric(BottomBorder,wd)), c.dark(180), c.light() ); int lb = metric(LeftBorder,wd); int rb = metric(RightBorder,wd); int tb = metric(TopBorder,wd); int bb = metric(BottomBorder,wd); p->fillRect( r.x()-lb, r.y()-th-tb, lb, r.height()+th+tb+bb, c.dark(180) ); p->fillRect( r.right()+1, r.y()-th-tb, rb, r.height()+th+tb+bb, c.dark(180) ); p->fillRect( r.left(), r.y()-th-tb, r.width(), tb, c.dark(180) ); } break; case Title: if ( r.height() < 2 ) { WindowDecorationInterface::drawArea( a, p, wd ); } else { const QColorGroup &cg = wd->palette.active(); QColor c1, c2; if ( wd->flags & WindowData::Active ) { c1 = cg.color(QColorGroup::Highlight).light(); c2 = cg.color(QColorGroup::Highlight).dark(180); } else { c1 = cg.color(QColorGroup::Background); c2 = cg.color(QColorGroup::Background).dark(180); } drawBlend( p, QRect(r.x(),r.y()-th,r.width(),th), c2, c1 ); } break; case TitleText: p->drawText( r.left()+5+metric(HelpWidth,wd), r.top()-th, r.width(), th, Qt::AlignVCenter, wd->caption ); break; default: PolishedDecoration::drawArea( a, p, wd ); break; } } void PolishedDecoration::drawButton( Button b, QPainter *p, const WindowData *wd, int x, int y, int w, int h, QWSButton::State state ) const { WindowDecorationInterface::drawButton( b, p, wd, x, y, w, h, state ); } QRegion PolishedDecoration::mask( const WindowData *wd ) const { return WindowDecorationInterface::mask( wd ); } QString PolishedDecoration::name() const { return qApp->translate( "Decoration", "Polished" ); } QPixmap PolishedDecoration::icon() const { return QPixmap(); } void PolishedDecoration::drawBlend( QPainter *p, const QRect &r, const QColor &c1, const QColor &c2 ) const { int h1, h2, s1, s2, v1, v2; c1.hsv( &h1, &s1, &v1 ); c2.hsv( &h2, &s2, &v2 ); int split = r.height()/3; for ( int j = 0; j < split; j++ ) { p->setPen( QColor( h1 + ((h2-h1)*(j+split))/(2*split-1), s1 + ((s2-s1)*(j+split))/(2*split-1), v1 + ((v2-v1)*(j+split))/(2*split-1), QColor::Hsv ) ); p->drawLine( r.x(), r.y()+j, r.right(), r.y()+j ); } for ( int j = 0; j < r.height()-split; j++ ) { p->setPen( QColor( h1 + ((h2-h1)*j)/(r.height()-split-1), s1 + ((s2-s1)*j)/(r.height()-split-1), v1 + ((v2-v1)*j)/(r.height()-split-1), QColor::Hsv ) ); p->drawLine( r.x(), r.bottom()-j, r.right(), r.bottom()-j ); } } QRESULT PolishedDecoration::queryInterface( const QUuid &uuid, QUnknownInterface **iface ) { *iface = 0; if ( uuid == IID_QUnknown ) *iface = this; else if ( uuid == IID_WindowDecoration ) *iface = this; + else + return QS_FALSE; if ( *iface ) (*iface)->addRef(); return QS_OK; } Q_EXPORT_INTERFACE() { Q_CREATE_INSTANCE( PolishedDecoration ) } diff --git a/noncore/decorations/polished/polished.h b/noncore/decorations/polished/polished.h index e5c19c0..d661427 100644 --- a/noncore/decorations/polished/polished.h +++ b/noncore/decorations/polished/polished.h @@ -1,49 +1,47 @@ /********************************************************************** ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** ** This file is part of the Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ** See http://www.trolltech.com/gpl/ for GPL licensing information. ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ #ifndef POLISHED_H #define POLISHED_H #include <qtopia/windowdecorationinterface.h> class PolishedDecoration : public WindowDecorationInterface { public: PolishedDecoration(); virtual ~PolishedDecoration(); virtual int metric( Metric m, const WindowData * ) const; virtual void drawArea( Area a, QPainter *, const WindowData * ) const; virtual void drawButton( Button b, QPainter *, const WindowData *, int x, int y, int w, int h, QWSButton::State ) const; virtual QRegion mask( const WindowData * ) const; virtual QString name() const; virtual QPixmap icon() const; QRESULT queryInterface( const QUuid&, QUnknownInterface** ); Q_REFCOUNT protected: void PolishedDecoration::drawBlend( QPainter *, const QRect &r, const QColor &c1, const QColor&c2 ) const; -private: - ulong ref; }; #endif diff --git a/noncore/styles/flat/flat.cpp b/noncore/styles/flat/flat.cpp index 24366f6..f3bacf9 100644 --- a/noncore/styles/flat/flat.cpp +++ b/noncore/styles/flat/flat.cpp @@ -1,1102 +1,1102 @@ /********************************************************************** ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** ** This file is part of the Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ** See http://www.trolltech.com/gpl/ for GPL licensing information. ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ #include <qtopia/qpeapplication.h> #include <qpushbutton.h> #include <qtoolbutton.h> #include <qpainter.h> #include <qfontmetrics.h> #include <qpalette.h> #include <qdrawutil.h> #include <qscrollbar.h> #include <qbutton.h> #include <qframe.h> #include <qtabbar.h> #include <qspinbox.h> #include <qlineedit.h> #include <qmap.h> #define INCLUDE_MENUITEM_DEF #include <qmenudata.h> #include <qpopupmenu.h> #include "flat.h" #define QCOORDARRLEN(x) sizeof(x)/(sizeof(QCOORD)*2) class SpinBoxHack : public QSpinBox { public: void setFlatButtons( bool f ) { upButton()->setFlat( f ); downButton()->setFlat( f ); } }; class FlatStylePrivate : public QObject { Q_OBJECT public: FlatStylePrivate() : QObject() {} bool eventFilter( QObject *o, QEvent *e ) { if ( e->type() == QEvent::ParentPaletteChange ) { if ( o->inherits( "QMenuBar" ) ) { QWidget *w = (QWidget *)o; if ( w->parentWidget() ) { QPalette p = w->parentWidget()->palette(); QColorGroup a = p.active(); a.setColor( QColorGroup::Light, a.foreground() ); a.setColor( QColorGroup::Dark, a.foreground() ); p.setActive( a ); p.setInactive( a ); w->setPalette( p ); } } else if ( o->inherits( "QHeader" ) ) { QWidget *w = (QWidget *)o; if ( w->parentWidget() ) { QPalette p = w->parentWidget()->palette(); QColorGroup a = p.active(); a.setColor( QColorGroup::Light, a.button() ); p.setActive( a ); p.setInactive( a ); w->setPalette( p ); } } } return FALSE; } QMap<QFrame *,int> frameStyles; }; FlatStyle::FlatStyle() : revItem(FALSE), fillBtnBorder(FALSE) { setButtonMargin(3); setScrollBarExtent(13,13); setButtonDefaultIndicatorWidth(0); d = new FlatStylePrivate; } FlatStyle::~FlatStyle() { delete d; } int FlatStyle::buttonMargin() const { return 3; } QSize FlatStyle::scrollBarExtent() const { return QSize(13,13); } void FlatStyle::polish ( QPalette & ) { } void FlatStyle::polish( QWidget *w ) { if ( w->inherits( "QFrame" ) ) { QFrame *f = (QFrame *)w; if ( f->frameShape() == QFrame::HLine || f->frameShape() == QFrame::VLine ) f->setFrameShadow( QFrame::Plain ); else if ( f->frameShape() != QFrame::NoFrame ) f->setFrameShape( QFrame::StyledPanel ); f->setLineWidth( 1 ); } if ( w->inherits( "QSpinBox" ) ) ((SpinBoxHack*)w)->setFlatButtons( TRUE ); if ( w->inherits( "QMenuBar" ) ) { // make selected item look flat QPalette p = w->palette(); QColorGroup a = p.active(); a.setColor( QColorGroup::Light, a.foreground() ); a.setColor( QColorGroup::Dark, a.foreground() ); p.setActive( a ); p.setInactive( a ); w->setPalette( p ); w->installEventFilter( d ); } else if ( w->inherits( "QHeader" ) ) { // make headers look flat QPalette p = w->palette(); QColorGroup a = p.active(); a.setColor( QColorGroup::Light, a.button() ); p.setActive( a ); p.setInactive( a ); w->setPalette( p ); w->installEventFilter( d ); } } void FlatStyle::unPolish( QWidget *w ) { if ( w->inherits("QFrame") ) { QFrame *f = (QFrame *)w; if ( f->frameShape() == QFrame::HLine || f->frameShape() == QFrame::VLine ) { f->setFrameShadow( QFrame::Sunken ); } else if ( f->frameShape() != QFrame::NoFrame ) { f->setFrameShape( QFrame::StyledPanel ); f->setLineWidth( 2 ); } } if ( w->inherits("QSpinBox") ) ((SpinBoxHack*)w)->setFlatButtons( FALSE ); if ( w->inherits("QMenuBar") || w->inherits("QHeader") ) { w->unsetPalette(); w->removeEventFilter( d ); } } int FlatStyle::defaultFrameWidth() const { return 2; } void FlatStyle::drawItem( QPainter *p, int x, int y, int w, int h, int flags, const QColorGroup &g, bool enabled, const QPixmap *pixmap, const QString& text, int len, const QColor* penColor ) { QColor pc( penColor ? *penColor : g.foreground() ); QColorGroup cg( g ); if ( !enabled ) cg.setColor( QColorGroup::Light, cg.background() ); if ( revItem ) { pc = cg.button(); revItem = FALSE; } QWindowsStyle::drawItem( p, x, y, w, h, flags, cg, enabled, pixmap, text, len, &pc ); } void FlatStyle::drawPanel ( QPainter * p, int x, int y, int w, int h, const QColorGroup &g, bool /*sunken*/, int lineWidth, const QBrush * fill ) { if ( fill ) p->setBrush( *fill ); p->setPen( QPen(g.foreground(), lineWidth) ); p->drawRect( x, y, w, h ); } void FlatStyle::drawButton( QPainter *p, int x, int y, int w, int h, const QColorGroup &cg, bool /*sunken*/, const QBrush* fill ) { QPen oldPen = p->pen(); int x2 = x+w-1; int y2 = y+h-1; if ( fillBtnBorder && btnBg != cg.color(QColorGroup::Button) ) { p->setPen( btnBg ); p->drawLine( x, y, x2, y ); p->drawLine( x, y2, x2, y2 ); p->drawLine( x, y+1, x, y2-1 ); p->drawLine( x2, y+1, x2, y2-1 ); p->fillRect( x+1, y+1, 3, 3, btnBg ); p->fillRect( x+1, y2-3, 3, 3, btnBg ); p->fillRect( x2-3, y2-3, 3, 3, btnBg ); p->fillRect( x2-3, y+1, 3, 3, btnBg ); p->fillRect( x+2, y+2, w-4, h-4, fill?(*fill):cg.brush(QColorGroup::Button) ); } else { p->fillRect( x+1, y+1, w-2, h-2, fill?(*fill):cg.brush(QColorGroup::Button) ); } if ( h >= 10 ) { x++; y++; x2--; y2--; w -= 2; h -= 2; } p->setPen( cg.foreground() ); if ( h < 10 ) { p->setBrush( NoBrush ); p->drawRect( x, y, w, h ); } else { p->drawLine( x+3, y, x2-3, y ); p->drawLine( x+3, y2, x2-3, y2 ); p->drawLine( x, y+3, x, y2-3 ); p->drawLine( x2, y+3, x2, y2-3 ); p->drawLine( x+1, y+1, x+2, y+1 ); p->drawPoint( x+1, y+2 ); p->drawLine( x2-2, y+1, x2-1, y+1 ); p->drawPoint( x2-1, y+2 ); p->drawLine( x+1, y2-1, x+2, y2-1 ); p->drawPoint( x+1, y2-2 ); p->drawLine( x2-2, y2-1, x2-1, y2-1 ); p->drawPoint( x2-1, y2-2 ); } p->setPen( oldPen ); } void FlatStyle::drawButtonMask ( QPainter * p, int x, int y, int w, int h ) { x++; y++; x-=2; y-=2; p->fillRect( x, y, w, h, color1 ); } void FlatStyle::drawBevelButton( QPainter *p, int x, int y, int w, int h, const QColorGroup &g, bool /*sunken*/, const QBrush* fill ) { p->fillRect( x+1, y+1, w-2, h-2, fill?(*fill):g.brush(QColorGroup::Button) ); p->setPen( g.foreground() ); p->setBrush( NoBrush ); p->drawRect( x, y, w, h ); } void FlatStyle::drawToolButton( QPainter *p, int x, int y, int w, int h, const QColorGroup &g, bool sunken, const QBrush* fill ) { if ( p->device()->devType() == QInternal::Widget ) { QWidget *w = (QWidget *)p->device(); if ( w->isA("QToolButton") ) { QToolButton *btn = (QToolButton *)w; if ( btn->parentWidget() ) { btnBg = btn->parentWidget()->backgroundColor(); fillBtnBorder = TRUE; } } } QBrush fb( fill ? *fill : g.button() ); if ( sunken && fb == g.brush( QColorGroup::Button ) ) { fb = g.buttonText(); revItem = TRUE; // ugh } drawButton( p, x, y, w, h, g, sunken, &fb ); fillBtnBorder = FALSE; } void FlatStyle::drawPushButton( QPushButton *btn, QPainter *p ) { QColorGroup g = btn->colorGroup(); int x1, y1, x2, y2; btn->rect().coords( &x1, &y1, &x2, &y2 ); // get coordinates p->setPen( g.foreground() ); p->setBrush( QBrush(g.button(),NoBrush) ); // int diw = buttonDefaultIndicatorWidth(); /* if ( btn->isDefault() || btn->autoDefault() ) { if ( btn->isDefault() ) { p->setPen( g.shadow() ); p->drawRect( x1, y1, x2-x1+1, y2-y1+1 ); } x1 += diw; y1 += diw; x2 -= diw; y2 -= diw; } */ if ( btn->parentWidget() ) { btnBg = btn->parentWidget()->backgroundColor(); fillBtnBorder = TRUE; } bool clearButton = TRUE; if ( btn->isDown() ) { drawButton( p, x1, y1, x2-x1+1, y2-y1+1, g, TRUE, &g.brush( QColorGroup::Text ) ); } else { if ( btn->isToggleButton() && btn->isOn() && btn->isEnabled() ) { QBrush fill(g.light(), Dense4Pattern ); drawButton( p, x1, y1, x2-x1+1, y2-y1+1, g, TRUE, &fill ); clearButton = FALSE; } else { if ( !btn->isFlat() ) drawButton( p, x1, y1, x2-x1+1, y2-y1+1, g, btn->isOn(), &g.brush( QColorGroup::Button ) ); } } /* if ( clearButton ) { if (btn->isDown()) p->setBrushOrigin(p->brushOrigin() + QPoint(1,1)); p->fillRect( x1+2, y1+2, x2-x1-3, y2-y1-3, g.brush( QColorGroup::Button ) ); if (btn->isDown()) p->setBrushOrigin(p->brushOrigin() - QPoint(1,1)); } */ fillBtnBorder = FALSE; if ( p->brush().style() != NoBrush ) p->setBrush( NoBrush ); } void FlatStyle::drawPushButtonLabel( QPushButton *btn, QPainter *p ) { QRect r = pushButtonContentsRect( btn ); int x, y, w, h; r.rect( &x, &y, &w, &h ); QColorGroup cg = btn->colorGroup(); if ( btn->isToggleButton() && btn->isOn() && btn->isEnabled() && !btn->isDown() ) cg.setColor( QColorGroup::ButtonText, btn->colorGroup().text() ); else if ( btn->isDown() || btn->isOn() ) cg.setColor( QColorGroup::ButtonText, btn->colorGroup().button() ); if ( btn->isMenuButton() ) { int dx = menuButtonIndicatorWidth( btn->height() ); drawArrow( p, DownArrow, FALSE, x+w-dx, y+2, dx-4, h-4, cg, btn->isEnabled() ); w -= dx; } if ( btn->iconSet() && !btn->iconSet()->isNull() ) { QIconSet::Mode mode = btn->isEnabled() ? QIconSet::Normal : QIconSet::Disabled; if ( mode == QIconSet::Normal && btn->hasFocus() ) mode = QIconSet::Active; QPixmap pixmap = btn->iconSet()->pixmap( QIconSet::Small, mode ); int pixw = pixmap.width(); int pixh = pixmap.height(); p->drawPixmap( x+2, y+h/2-pixh/2, pixmap ); x += pixw + 4; w -= pixw + 4; } drawItem( p, x, y, w, h, AlignCenter | ShowPrefix, cg, btn->isEnabled(), btn->pixmap(), btn->text(), -1, &cg.buttonText() ); } QRect FlatStyle::comboButtonRect( int x, int y, int w, int h) { return QRect(x+2, y+2, w-4-13, h-4); } QRect FlatStyle::comboButtonFocusRect( int x, int y, int w, int h) { return QRect(x+2, y+2, w-4-14, h-4); } void FlatStyle::drawComboButton( QPainter *p, int x, int y, int w, int h, const QColorGroup &g, bool sunken, bool /*editable*/, bool enabled, const QBrush * /*fill*/ ) { x++; y++; w-=2; h-=2; p->setPen( g.foreground() ); p->setBrush( QBrush(NoBrush) ); p->drawRect( x, y, w, h ); p->setPen( g.background() ); p->drawRect( x+1, y+1, w-14, h-2 ); p->fillRect( x+2, y+2, w-16, h-4, g.brush( QColorGroup::Base ) ); QColorGroup cg( g ); if ( sunken ) { cg.setColor( QColorGroup::ButtonText, g.button() ); cg.setColor( QColorGroup::Button, g.buttonText() ); } drawArrow( p, QStyle::DownArrow, FALSE, x+w-13, y+1, 12, h-2, cg, enabled, &cg.brush( QColorGroup::Button ) ); } void FlatStyle::drawExclusiveIndicator ( QPainter * p, int x, int y, int w, int h, const QColorGroup &cg, bool on, bool down, bool enabled ) { static const QCOORD pts1[] = { // dark lines 1,9, 1,8, 0,7, 0,4, 1,3, 1,2, 2,1, 3,1, 4,0, 7,0, 8,1, 9,1 }; static const QCOORD pts4[] = { // white lines 2,10, 3,10, 4,11, 7,11, 8,10, 9,10, 10,9, 10,8, 11,7, 11,4, 10,3, 10,2 }; static const QCOORD pts5[] = { // inner fill 4,2, 7,2, 9,4, 9,7, 7,9, 4,9, 2,7, 2,4 }; p->eraseRect( x, y, w, h ); QPointArray a( QCOORDARRLEN(pts1), pts4 ); a.translate( x, y ); p->setPen( cg.foreground() ); p->drawPolyline( a ); a.setPoints( QCOORDARRLEN(pts4), pts1 ); a.translate( x, y ); p->setPen( cg.foreground() ); p->drawPolyline( a ); a.setPoints( QCOORDARRLEN(pts5), pts5 ); a.translate( x, y ); QColor fillColor = ( down || !enabled ) ? cg.button() : cg.base(); p->setPen( fillColor ); p->setBrush( fillColor ) ; p->drawPolygon( a ); if ( on ) { p->setPen( NoPen ); p->setBrush( cg.text() ); p->drawRect( x+5, y+4, 2, 4 ); p->drawRect( x+4, y+5, 4, 2 ); } } void FlatStyle::drawIndicator ( QPainter * p, int x, int y, int w, int h, const QColorGroup &cg, int state, bool down, bool enabled ) { QColorGroup mycg( cg ); mycg.setBrush( QColorGroup::Button, QBrush() ); QBrush fill; drawButton( p, x, y, w, h, mycg, TRUE, 0 ); if ( down ) fill = cg.brush( QColorGroup::Button ); else fill = cg.brush( enabled ? QColorGroup::Base : QColorGroup::Background ); mycg.setBrush( QColorGroup::Button, fill ); p->fillRect( x+1, y+1, w-2, h-2, fill ); if ( state != QButton::Off ) { QPointArray a( 7*2 ); int i, xx, yy; xx = x+3; yy = y+5; for ( i=0; i<3; i++ ) { a.setPoint( 2*i, xx, yy ); a.setPoint( 2*i+1, xx, yy+2 ); xx++; yy++; } yy -= 2; for ( i=3; i<7; i++ ) { a.setPoint( 2*i, xx, yy ); a.setPoint( 2*i+1, xx, yy+2 ); xx++; yy--; } if ( state == QButton::NoChange ) { p->setPen( mycg.dark() ); } else { p->setPen( mycg.text() ); } p->drawLineSegments( a ); } } #define HORIZONTAL (sb->orientation() == QScrollBar::Horizontal) #define VERTICAL !HORIZONTAL #define MOTIF_BORDER 2 #define SLIDER_MIN 9 // ### motif says 6 but that's too small /*! \reimp */ void FlatStyle::scrollBarMetrics( const QScrollBar* sb, int &sliderMin, int &sliderMax, int &sliderLength, int& buttonDim ) { int maxLength; int length = HORIZONTAL ? sb->width() : sb->height(); int extent = HORIZONTAL ? sb->height() : sb->width(); if ( length > (extent - 1)*2 ) buttonDim = extent; else buttonDim = length/2 - 1; sliderMin = 0; maxLength = length - buttonDim*2 + 2; if ( sb->maxValue() == sb->minValue() ) { sliderLength = maxLength; } else { sliderLength = (sb->pageStep()*maxLength)/ (sb->maxValue()-sb->minValue()+sb->pageStep()); uint range = sb->maxValue()-sb->minValue(); if ( sliderLength < SLIDER_MIN || range > INT_MAX/2 ) sliderLength = SLIDER_MIN; if ( sliderLength > maxLength ) sliderLength = maxLength; } sliderMax = sliderMin + maxLength - sliderLength; } /*!\reimp */ QStyle::ScrollControl FlatStyle::scrollBarPointOver( const QScrollBar* sb, int sliderStart, const QPoint& p ) { if ( !sb->rect().contains( p ) ) return NoScroll; int sliderMin, sliderMax, sliderLength, buttonDim, pos; scrollBarMetrics( sb, sliderMin, sliderMax, sliderLength, buttonDim ); if (sb->orientation() == QScrollBar::Horizontal) pos = p.x(); else pos = p.y(); if (pos < sliderStart) return SubPage; if (pos < sliderStart + sliderLength) return Slider; if (pos < sliderMax + sliderLength) return AddPage; if (pos < sliderMax + sliderLength + buttonDim) return SubLine; return AddLine; } /*! \reimp */ void FlatStyle::drawScrollBarControls( QPainter* p, const QScrollBar* sb, int sliderStart, uint controls, uint activeControl ) { #define ADD_LINE_ACTIVE ( activeControl == AddLine ) #define SUB_LINE_ACTIVE ( activeControl == SubLine ) QColorGroup g = sb->colorGroup(); int sliderMin, sliderMax, sliderLength, buttonDim; scrollBarMetrics( sb, sliderMin, sliderMax, sliderLength, buttonDim ); if ( controls == (AddLine | SubLine | AddPage | SubPage | Slider | First | Last ) ) { p->setPen( g.foreground() ); p->setBrush( g.brush( QColorGroup::Mid ) ); p->drawRect( 0, 0, sb->width(), sb->height() ); } if (sliderStart > sliderMax) { // sanity check sliderStart = sliderMax; } int dimB = buttonDim; QRect addB; QRect subB; QRect addPageR; QRect subPageR; QRect sliderR; int addX, addY, subX, subY; int length = HORIZONTAL ? sb->width() : sb->height(); int extent = HORIZONTAL ? sb->height() : sb->width(); if ( HORIZONTAL ) { subY = addY = ( extent - dimB ) / 2; subX = length - dimB - dimB + 1; addX = length - dimB; } else { subX = addX = ( extent - dimB ) / 2; subY = length - dimB - dimB + 1; addY = length - dimB; } int sliderEnd = sliderStart + sliderLength; int sliderW = extent; if ( HORIZONTAL ) { subB.setRect( subX,subY,dimB,dimB ); addB.setRect( addX,addY,dimB,dimB ); subPageR.setRect( 0, 0, sliderStart+1, sliderW ); addPageR.setRect( sliderEnd-1, 0, subX - sliderEnd+2, sliderW ); sliderR .setRect( sliderStart, 0, sliderLength, sliderW ); } else { subB.setRect( subX,subY,dimB,dimB ); addB.setRect( addX,addY,dimB,dimB ); subPageR.setRect( 0, 0, sliderW, sliderStart+1 ); addPageR.setRect( 0, sliderEnd-1, sliderW, subY - sliderEnd+2 ); sliderR .setRect( 0, sliderStart, sliderW, sliderLength ); } bool maxedOut = (sb->maxValue() == sb->minValue()); p->setPen( g.foreground() ); if ( controls & AddLine ) { p->setBrush( ADD_LINE_ACTIVE ? g.foreground() : g.button() ); p->drawRect( addB.x(), addB.y(), addB.width(), addB.height() ); p->setPen( ADD_LINE_ACTIVE ? g.button() : g.foreground() ); QColorGroup cg( g ); if ( maxedOut ) cg.setColor( QColorGroup::ButtonText, g.mid() ); else if ( ADD_LINE_ACTIVE ) cg.setColor( QColorGroup::ButtonText, g.button() ); int xo = VERTICAL ? 1 : 0; drawArrow( p, VERTICAL ? DownArrow : RightArrow, FALSE, addB.x()+2+xo, addB.y()+2, addB.width()-4-xo, addB.height()-4, cg, TRUE, &p->brush() ); } if ( controls & SubLine ) { p->setBrush( SUB_LINE_ACTIVE ? g.foreground() : g.button() ); p->drawRect( subB.x(), subB.y(), subB.width(), subB.height() ); p->setPen( SUB_LINE_ACTIVE ? g.button() : g.foreground() ); QColorGroup cg( g ); if ( maxedOut ) cg.setColor( QColorGroup::ButtonText, g.mid() ); else if ( SUB_LINE_ACTIVE ) cg.setColor( QColorGroup::ButtonText, g.button() ); int xo = VERTICAL ? 1 : 0; drawArrow( p, VERTICAL ? UpArrow : LeftArrow, FALSE, subB.x()+2+xo, subB.y()+2, subB.width()-4-xo, subB.height()-4, cg, TRUE, &p->brush() ); } p->setPen( g.foreground() ); p->setBrush( g.brush( QColorGroup::Mid ) ); if ( controls & SubPage ) p->drawRect( subPageR.x(), subPageR.y(), subPageR.width(), subPageR.height() ); if ( controls & AddPage && addPageR.y() < addPageR.bottom() && addPageR.x() < addPageR.right() ) p->drawRect( addPageR.x(), addPageR.y(), addPageR.width(), addPageR.height() ); if ( controls & Slider ) { QPoint bo = p->brushOrigin(); p->setBrushOrigin(sliderR.topLeft()); p->setPen( g.foreground() ); p->setBrush( g.button() ); p->drawRect( sliderR.x(), sliderR.y(), sliderR.width(), sliderR.height() ); p->setBrushOrigin(bo); QColorGroup cg( g ); if ( maxedOut ) cg.setColor( QColorGroup::ButtonText, g.mid() ); drawRiffles( p, sliderR.x(), sliderR.y(), sliderR.width(), sliderR.height(), cg, HORIZONTAL ); } // ### perhaps this should not be able to accept focus if maxedOut? if ( sb->hasFocus() && (controls & Slider) ) p->drawWinFocusRect( sliderR.x()+2, sliderR.y()+2, sliderR.width()-5, sliderR.height()-5, sb->backgroundColor() ); } void FlatStyle::drawRiffles( QPainter* p, int x, int y, int w, int h, const QColorGroup &g, bool horizontal ) { if (!horizontal) { if (h > 20) { y += (h-20)/2 ; h = 20; } if (h > 12) { int n = 3; int my = y+h/2-2; int i ; p->setPen(g.buttonText()); for (i=0; i<n; i++) { p->drawLine(x+4, my+3*i, x+w-5, my+3*i); } } } else { if (w > 20) { x += (w-20)/2 ; w = 20; } if (w > 12) { int n = 3; int mx = x+w/2-4; int i ; p->setPen(g.buttonText()); for (i=0; i<n; i++) { p->drawLine(mx+3*i, y+4, mx + 3*i, y+h-5); } } } } int FlatStyle::sliderLength() const { return 12; } void FlatStyle::drawSlider( QPainter *p, int x, int y, int w, int h, const QColorGroup &g, Orientation o, bool tickAbove, bool tickBelow ) { int a = tickAbove ? 3 : 0; int b = tickBelow ? 3 : 0; p->setPen( g.foreground() ); p->setBrush( g.button() ); if ( o == Horizontal ) { p->drawRect( x, y+a, w, h-a-b ); int xp = x + w/2; p->drawLine( xp-1, y+a+3, xp-1, y+h-b-4 ); p->drawLine( xp, y+a+3, xp, y+h-b-4 ); } else { p->drawRect( x+a, y, w-a-b, h ); int yp = y + h/2; p->drawLine( x+a+3, yp-1, x+w-b-4, yp-1 ); p->drawLine( x+a+3, yp, x+w-b-4, yp ); } } void FlatStyle::drawSliderMask ( QPainter * p, int x, int y, int w, int h, Orientation o, bool tickAbove, bool tickBelow ) { int a = tickAbove ? 3 : 0; int b = tickBelow ? 3 : 0; if ( o == Horizontal ) p->fillRect( x, y+a, w, h-a-b, color1 ); else p->fillRect( x+a, y, w-a-b, h, color1 ); } /*!\reimp */ void FlatStyle::drawSliderGrooveMask( QPainter *p, int x, int y, int w, int h, const QColorGroup& , QCOORD c, Orientation orient ) { if ( orient == Horizontal ) p->fillRect( x, y + c - 2, w, 4, color1 ); else p->fillRect( x + c - 2, y, 4, h, color1 ); } void FlatStyle::drawSliderGroove( QPainter *p, int x, int y, int w, int h, const QColorGroup &g, QCOORD c, Orientation orient ) { if ( orient == Horizontal ) p->fillRect( x, y + c - 2, w, 4, g.foreground() ); else p->fillRect( x + c - 2, y, 4, h, g.foreground() ); } void FlatStyle::drawTab( QPainter *p, const QTabBar *tb, QTab *t, bool selected ) { QRect r( t->rect() ); if ( tb->shape() == QTabBar::RoundedAbove ) { p->setPen( tb->colorGroup().foreground() ); p->drawLine( r.left(), r.bottom(), r.right(), r.bottom() ); if ( r.left() == 0 ) p->drawPoint( tb->rect().bottomLeft() ); else p->drawLine( r.left(), r.bottom(), r.right(), r.bottom() ); if ( selected ) { p->setPen( tb->colorGroup().background() ); p->drawLine( r.left()+2, r.top()+1, r.right()-2, r.top()+1 ); p->fillRect( QRect( r.left()+1, r.top()+2, r.width()-2, r.height()-2), tb->colorGroup().brush( QColorGroup::Background )); } else { r.setRect( r.left() + 2, r.top() + 2, r.width() - 4, r.height() - 2 ); p->setPen( tb->colorGroup().button() ); p->drawLine( r.left()+2, r.top()+1, r.right()-2, r.top()+1 ); p->fillRect( QRect( r.left()+1, r.top()+2, r.width()-2, r.height()-3), tb->colorGroup().brush( QColorGroup::Button )); } p->setPen( tb->colorGroup().foreground() ); p->drawLine( r.left(), r.bottom()-1, r.left(), r.top() + 2 ); p->drawPoint( r.left()+1, r.top() + 1 ); p->drawLine( r.left()+2, r.top(), r.right() - 2, r.top() ); p->drawPoint( r.right() - 1, r.top() + 1 ); p->drawLine( r.right(), r.top() + 2, r.right(), r.bottom() - 1); } else if ( tb->shape() == QTabBar::RoundedBelow ) { if ( selected ) { p->setPen( tb->colorGroup().background() ); p->drawLine( r.left()+2, r.bottom()-1, r.right()-2, r.bottom()-1 ); p->fillRect( QRect( r.left()+1, r.top(), r.width()-2, r.height()-2), tb->palette().normal().brush( QColorGroup::Background )); } else { p->setPen( tb->colorGroup().foreground() ); p->drawLine( r.left(), r.top(), r.right(), r.top() ); r.setRect( r.left() + 2, r.top(), r.width() - 4, r.height() - 2 ); p->setPen( tb->colorGroup().button() ); p->drawLine( r.left()+2, r.bottom()-1, r.right()-2, r.bottom()-1 ); p->fillRect( QRect( r.left()+1, r.top()+1, r.width()-2, r.height()-3), tb->palette().normal().brush( QColorGroup::Button )); } p->setPen( tb->colorGroup().foreground() ); p->drawLine( r.right(), r.top(), r.right(), r.bottom() - 2 ); p->drawPoint( r.right() - 1, r.bottom() - 1 ); p->drawLine( r.right() - 2, r.bottom(), r.left() + 2, r.bottom() ); p->drawLine( r.left(), r.top()+1, r.left(), r.bottom() - 2 ); p->drawPoint( r.left() + 1, r.bottom() - 1 ); if ( r.left() == 0 ) p->drawPoint( tb->rect().topLeft() ); } else { QCommonStyle::drawTab( p, tb, t, selected ); } } static const int motifItemFrame = 0; // menu item frame width static const int motifSepHeight = 2; // separator item height static const int motifItemHMargin = 1; // menu item hor text margin static const int motifItemVMargin = 2; // menu item ver text margin static const int motifArrowHMargin = 0; // arrow horizontal margin static const int motifTabSpacing = 12; // space between text and tab static const int motifCheckMarkHMargin = 1; // horiz. margins of check mark static const int windowsRightBorder = 8; // right border on windows static const int windowsCheckMarkWidth = 2; // checkmarks width on windows void FlatStyle::polishPopupMenu ( QPopupMenu *m ) { QWindowsStyle::polishPopupMenu( m ); m->setLineWidth( 1 ); } /*! \reimp */ int FlatStyle::extraPopupMenuItemWidth( bool checkable, int maxpmw, QMenuItem* mi, const QFontMetrics& /*fm*/ ) { #ifndef QT_NO_MENUDATA int w = 2*motifItemHMargin + 2*motifItemFrame; // a little bit of border can never harm if ( mi->isSeparator() ) return 10; // arbitrary else if ( mi->pixmap() ) w += mi->pixmap()->width(); // pixmap only if ( !mi->text().isNull() ) { if ( mi->text().find('\t') >= 0 ) // string contains tab w += motifTabSpacing; } if ( maxpmw ) { // we have iconsets w += maxpmw; w += 6; // add a little extra border around the iconset } if ( checkable && maxpmw < windowsCheckMarkWidth ) { w += windowsCheckMarkWidth - maxpmw; // space for the checkmarks } if ( maxpmw > 0 || checkable ) // we have a check-column ( iconsets or checkmarks) w += motifCheckMarkHMargin; // add space to separate the columns w += windowsRightBorder; // windows has a strange wide border on the right side return w; #endif } /*! \reimp */ int FlatStyle::popupMenuItemHeight( bool /*checkable*/, QMenuItem* mi, const QFontMetrics& fm ) { #ifndef QT_NO_MENUDATA int h = 0; if ( mi->isSeparator() ) // separator height h = motifSepHeight; else if ( mi->pixmap() ) // pixmap height h = mi->pixmap()->height() + 2*motifItemFrame; else // text height h = fm.height() + 2*motifItemVMargin + 2*motifItemFrame - 1; if ( !mi->isSeparator() && mi->iconSet() != 0 ) { h = QMAX( h, mi->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).height() + 2*motifItemFrame ); } if ( mi->custom() ) h = QMAX( h, mi->custom()->sizeHint().height() + 2*motifItemVMargin + 2*motifItemFrame ) - 1; return h; #endif } void FlatStyle::drawPopupMenuItem( QPainter* p, bool checkable, int maxpmw, int tab, QMenuItem* mi, const QPalette& pal, bool act, bool enabled, int x, int y, int w, int h) { #ifndef QT_NO_MENUDATA const QColorGroup & g = pal.active(); bool dis = !enabled; QColorGroup itemg = dis ? pal.disabled() : pal.active(); if ( checkable ) maxpmw = QMAX( maxpmw, 8 ); // space for the checkmarks int checkcol = maxpmw; if ( mi && mi->isSeparator() ) { // draw separator p->setPen( g.dark() ); p->drawLine( x, y, x+w, y ); return; } QBrush fill = act? g.brush( QColorGroup::Highlight ) : g.brush( QColorGroup::Button ); p->fillRect( x, y, w, h, fill); if ( !mi ) return; if ( mi->isChecked() ) { if ( act && !dis ) { qDrawShadePanel( p, x, y, checkcol, h, g, TRUE, 1, &g.brush( QColorGroup::Button ) ); } else { qDrawShadePanel( p, x, y, checkcol, h, g, TRUE, 1, &g.brush( QColorGroup::Midlight ) ); } } else if ( !act ) { p->fillRect(x, y, checkcol , h, g.brush( QColorGroup::Button )); } if ( mi->iconSet() ) { // draw iconset QIconSet::Mode mode = dis ? QIconSet::Disabled : QIconSet::Normal; if (act && !dis ) mode = QIconSet::Active; QPixmap pixmap = mi->iconSet()->pixmap( QIconSet::Small, mode ); int pixw = pixmap.width(); int pixh = pixmap.height(); if ( act && !dis ) { if ( !mi->isChecked() ) qDrawShadePanel( p, x, y, checkcol, h, g, FALSE, 1, &g.brush( QColorGroup::Button ) ); } QRect cr( x, y, checkcol, h ); QRect pmr( 0, 0, pixw, pixh ); pmr.moveCenter( cr.center() ); p->setPen( itemg.text() ); p->drawPixmap( pmr.topLeft(), pixmap ); QBrush fill = act? g.brush( QColorGroup::Highlight ) : g.brush( QColorGroup::Button ); p->fillRect( x+checkcol + 1, y, w - checkcol - 1, h, fill); } else if ( checkable ) { // just "checking"... int mw = checkcol + motifItemFrame; int mh = h - 2*motifItemFrame; if ( mi->isChecked() ) { drawCheckMark( p, x + motifItemFrame + 2, y+motifItemFrame, mw, mh, itemg, act, dis ); } } p->setPen( act ? g.highlightedText() : g.buttonText() ); QColor discol; if ( dis ) { discol = itemg.text(); p->setPen( discol ); } int xm = motifItemFrame + checkcol + motifItemHMargin; if ( mi->custom() ) { int m = motifItemVMargin; p->save(); if ( dis && !act ) { p->setPen( g.light() ); mi->custom()->paint( p, itemg, act, enabled, x+xm+1, y+m+1, w-xm-tab+1, h-2*m ); p->setPen( discol ); } mi->custom()->paint( p, itemg, act, enabled, x+xm, y+m, w-xm-tab+1, h-2*m ); p->restore(); } QString s = mi->text(); if ( !s.isNull() ) { // draw text int t = s.find( '\t' ); int m = motifItemVMargin; const int text_flags = AlignVCenter|ShowPrefix | DontClip | SingleLine; if ( t >= 0 ) { // draw tab text if ( dis && !act ) { p->setPen( g.light() ); p->drawText( x+w-tab-windowsRightBorder-motifItemHMargin-motifItemFrame+1, y+m+1, tab, h-2*m, text_flags, s.mid( t+1 )); p->setPen( discol ); } p->drawText( x+w-tab-windowsRightBorder-motifItemHMargin-motifItemFrame, y+m, tab, h-2*m, text_flags, s.mid( t+1 ) ); } if ( dis && !act ) p->setPen( discol ); p->drawText( x+xm, y+m, w-xm-tab+1, h-2*m, text_flags, s, t ); } else if ( mi->pixmap() ) { // draw pixmap QPixmap *pixmap = mi->pixmap(); if ( pixmap->depth() == 1 ) p->setBackgroundMode( OpaqueMode ); p->drawPixmap( x+xm, y+motifItemFrame, *pixmap ); if ( pixmap->depth() == 1 ) p->setBackgroundMode( TransparentMode ); } if ( mi->popup() ) { // draw sub menu arrow int dim = (h-2*motifItemFrame) / 2; if ( act ) { if ( !dis ) discol = white; QColorGroup g2( discol, g.highlight(), white, white, dis ? discol : white, discol, white ); drawArrow( p, RightArrow, FALSE, x+w - motifArrowHMargin - motifItemFrame - dim, y+h/2-dim/2, dim, dim, g2, TRUE ); } else { drawArrow( p, RightArrow, FALSE, x+w - motifArrowHMargin - motifItemFrame - dim, y+h/2-dim/2, dim, dim, g, mi->isEnabled() ); } } #endif } void FlatStyle::getButtonShift( int &x, int &y ) { x = 0; y = 0; } //=========================================================================== FlatStyleImpl::FlatStyleImpl() - : flat(0), ref(0) + : flat(0) { } FlatStyleImpl::~FlatStyleImpl() { // We do not delete the style because Qt does that when a new style // is set. } QStyle *FlatStyleImpl::style() { if ( !flat ) flat = new FlatStyle(); return flat; } QString FlatStyleImpl::name() const { return qApp->translate("FlatStyle", "Flat", "Name of the style Flat"); } QRESULT FlatStyleImpl::queryInterface( const QUuid &uuid, QUnknownInterface **iface ) { *iface = 0; if ( uuid == IID_QUnknown ) *iface = this; else if ( uuid == IID_Style ) *iface = this; else return QS_FALSE; (*iface)->addRef(); return QS_OK; } Q_EXPORT_INTERFACE() { Q_CREATE_INSTANCE( FlatStyleImpl ) } #include "flat.moc" diff --git a/noncore/styles/flat/flat.h b/noncore/styles/flat/flat.h index ebea95b..4591852 100644 --- a/noncore/styles/flat/flat.h +++ b/noncore/styles/flat/flat.h @@ -1,118 +1,117 @@ /********************************************************************** ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** ** This file is part of the Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ** See http://www.trolltech.com/gpl/ for GPL licensing information. ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ #ifndef FLATSTYLE_H #define FLATSTYLE_H #include <qcolor.h> #include <qwindowsstyle.h> #include <qpe/styleinterface.h> class FlatStylePrivate; class FlatStyle : public QWindowsStyle { public: FlatStyle(); virtual ~FlatStyle(); virtual void polish( QPalette &p ); virtual void polish( QWidget *w ); virtual void unPolish( QWidget *w ); int defaultFrameWidth () const; void drawItem( QPainter *p, int x, int y, int w, int h, int flags, const QColorGroup &g, bool enabled, const QPixmap *pixmap, const QString& text, int len, const QColor* penColor ); void drawPanel ( QPainter * p, int x, int y, int w, int h, const QColorGroup &, bool sunken=FALSE, int lineWidth = 1, const QBrush * fill = 0 ); void drawButton( QPainter *p, int x, int y, int w, int h, const QColorGroup &g, bool sunken, const QBrush* fill ); void drawButtonMask ( QPainter * p, int x, int y, int w, int h ); void drawBevelButton( QPainter *p, int x, int y, int w, int h, const QColorGroup &g, bool sunken=FALSE, const QBrush* fill=0 ); void drawToolButton( QPainter *p, int x, int y, int w, int h, const QColorGroup &g, bool sunken=FALSE, const QBrush* fill=0 ); void drawPushButton( QPushButton *btn, QPainter *p ); void drawPushButtonLabel( QPushButton *btn, QPainter *p ); QRect comboButtonRect( int x, int y, int w, int h); QRect comboButtonFocusRect( int x, int y, int w, int h); void drawComboButton( QPainter *p, int x, int y, int w, int h, const QColorGroup &g, bool sunken, bool, bool enabled, const QBrush *fill ); void drawExclusiveIndicator ( QPainter * p, int x, int y, int w, int h, const QColorGroup & g, bool on, bool down = FALSE, bool enabled = TRUE ); void drawIndicator ( QPainter * p, int x, int y, int w, int h, const QColorGroup & g, int state, bool down = FALSE, bool enabled = TRUE ); void scrollBarMetrics( const QScrollBar*, int&, int&, int&, int&); void drawScrollBarControls( QPainter*, const QScrollBar*, int sliderStart, uint controls, uint activeControl ); ScrollControl scrollBarPointOver( const QScrollBar* sb, int sliderStart, const QPoint& p ); void drawRiffles( QPainter* p, int x, int y, int w, int h, const QColorGroup &g, bool horizontal ); int sliderLength() const; void drawSlider( QPainter *p, int x, int y, int w, int h, const QColorGroup &g, Orientation, bool tickAbove, bool tickBelow ); void drawSliderMask( QPainter *p, int x, int y, int w, int h, Orientation, bool tickAbove, bool tickBelow ); void drawSliderGrooveMask( QPainter *p, int x, int y, int w, int h, const QColorGroup& , QCOORD c, Orientation orient ); void drawSliderGroove ( QPainter * p, int x, int y, int w, int h, const QColorGroup & g, QCOORD c, Orientation ); void drawTab( QPainter *, const QTabBar *, QTab *, bool selected ); void polishPopupMenu ( QPopupMenu * ); int extraPopupMenuItemWidth( bool checkable, int maxpmw, QMenuItem*, const QFontMetrics& ); int popupMenuItemHeight( bool checkable, QMenuItem*, const QFontMetrics& ); void drawPopupMenuItem( QPainter* p, bool checkable, int maxpmw, int tab, QMenuItem* mi, const QPalette& pal, bool act, bool enabled, int x, int y, int w, int h); int buttonMargin() const; QSize scrollBarExtent() const; void getButtonShift( int &x, int &y ); private: FlatStylePrivate *d; bool revItem; bool fillBtnBorder; QColor btnBg; // Disabled copy constructor and operator= #if defined(Q_DISABLE_COPY) FlatStyle( const FlatStyle & ); FlatStyle& operator=( const FlatStyle & ); #endif }; class FlatStyleImpl : public StyleInterface { public: FlatStyleImpl(); virtual ~FlatStyleImpl(); QRESULT queryInterface( const QUuid&, QUnknownInterface** ); Q_REFCOUNT virtual QStyle *style(); virtual QString name() const; private: FlatStyle *flat; - ulong ref; }; #endif // FLATSTYLE_H diff --git a/noncore/styles/fresh/fresh.cpp b/noncore/styles/fresh/fresh.cpp index 0730329..831b620 100644 --- a/noncore/styles/fresh/fresh.cpp +++ b/noncore/styles/fresh/fresh.cpp @@ -1,846 +1,848 @@ /********************************************************************** ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** ** This file is part of the Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ** See http://www.trolltech.com/gpl/ for GPL licensing information. ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ #include "fresh.h" #include <qpe/qpeapplication.h> #include <qpushbutton.h> #include <qpainter.h> #include <qfontmetrics.h> #include <qpalette.h> #include <qdrawutil.h> #include <qscrollbar.h> #include <qbutton.h> #include <qframe.h> #include <qtabbar.h> #define INCLUDE_MENUITEM_DEF #include <qmenudata.h> #define QCOORDARRLEN(x) sizeof(x)/(sizeof(QCOORD)*2) FreshStyle::FreshStyle() { setButtonMargin(2); setScrollBarExtent(13,13); } FreshStyle::~FreshStyle() { } int FreshStyle::buttonMargin() const { return 2; } QSize FreshStyle::scrollBarExtent() const { return QSize(13,13); } void FreshStyle::polish ( QPalette & ) { } void FreshStyle::polish( QWidget *w ) { if ( w->inherits( "QListBox" ) || w->inherits( "QListView" ) || w->inherits( "QPopupMenu" ) || w->inherits( "QSpinBox" ) ) { QFrame *f = (QFrame *)w; f->setFrameShape( QFrame::StyledPanel ); f->setLineWidth( 1 ); } } void FreshStyle::unPolish( QWidget *w ) { if ( w->inherits( "QListBox" ) || w->inherits( "QListView" ) || w->inherits( "QPopupMenu" ) || w->inherits( "QSpinBox" ) ) { QFrame *f = (QFrame *)w; f->setFrameShape( QFrame::StyledPanel ); f->setLineWidth( 2 ); } } int FreshStyle::defaultFrameWidth() const { return 1; } void FreshStyle::drawPanel ( QPainter * p, int x, int y, int w, int h, const QColorGroup &g, bool sunken, int lineWidth, const QBrush * fill ) { qDrawShadePanel( p, QRect(x, y, w, h), g, sunken, lineWidth, fill ); } void FreshStyle::drawButton( QPainter *p, int x, int y, int w, int h, const QColorGroup &cg, bool sunken, const QBrush* fill ) { QPen oldPen = p->pen(); int off = sunken ? 1 : 0; p->fillRect( x+1+off, y+1+off, w-3, h-3, fill?(*fill):cg.brush(QColorGroup::Button) ); int x2 = x+w-1; int y2 = y+h-1; if ( sunken ) p->setPen( cg.dark() ); else p->setPen( cg.light() ); p->drawLine( x, y, x, y2-1 ); p->drawLine( x, y, x2, y ); if ( sunken ) { p->setPen( white ); p->drawLine( x+1, y+1, x+1, y2-2 ); p->drawLine( x+1, y+1, x2-2, y+1 ); } if ( sunken ) p->setPen( cg.light() ); else p->setPen( cg.dark() ); p->drawLine( x2, y+1, x2, y2 ); p->drawLine( x, y2, x2, y2 ); if ( !sunken ) { p->setPen( white ); p->drawLine( x2-1, y+1, x2-1, y2-1 ); p->drawLine( x+1, y2-1, x2-1, y2-1 ); } p->setPen( oldPen ); } void FreshStyle::drawButtonMask ( QPainter * p, int x, int y, int w, int h ) { p->fillRect( x, y, w, h, color1 ); } void FreshStyle::drawBevelButton( QPainter *p, int x, int y, int w, int h, const QColorGroup &g, bool sunken, const QBrush* fill ) { drawButton( p, x, y, w, h, g, sunken, fill ); } QRect FreshStyle::comboButtonRect( int x, int y, int w, int h) { return QRect(x+1, y+1, w-2-14, h-2); } QRect FreshStyle::comboButtonFocusRect( int x, int y, int w, int h) { return QRect(x+2, y+2, w-4-14, h-4); } void FreshStyle::drawComboButton( QPainter *p, int x, int y, int w, int h, const QColorGroup &g, bool sunken, bool /*editable*/, bool enabled, const QBrush *fill ) { drawBevelButton( p, x, y, w, h, g, FALSE, fill ); drawBevelButton( p, x+w-14, y, 14, h, g, sunken, fill ); drawArrow( p, QStyle::DownArrow, sunken, x+w-14+ 2, y+ 2, 14- 4, h- 4, g, enabled, &g.brush( QColorGroup::Button ) ); } void FreshStyle::drawExclusiveIndicator ( QPainter * p, int x, int y, int w, int h, const QColorGroup &cg, bool on, bool down, bool enabled ) { static const QCOORD pts1[] = { // dark lines 1,9, 1,8, 0,7, 0,4, 1,3, 1,2, 2,1, 3,1, 4,0, 7,0, 8,1, 9,1 }; static const QCOORD pts4[] = { // white lines 2,10, 3,10, 4,11, 7,11, 8,10, 9,10, 10,9, 10,8, 11,7, 11,4, 10,3, 10,2 }; static const QCOORD pts5[] = { // inner fill 4,2, 7,2, 9,4, 9,7, 7,9, 4,9, 2,7, 2,4 }; p->eraseRect( x, y, w, h ); QPointArray a( QCOORDARRLEN(pts1), pts4 ); a.translate( x, y ); p->setPen( cg.dark() ); p->drawPolyline( a ); a.setPoints( QCOORDARRLEN(pts4), pts1 ); a.translate( x, y ); p->setPen( cg.light() ); p->drawPolyline( a ); a.setPoints( QCOORDARRLEN(pts5), pts5 ); a.translate( x, y ); QColor fillColor = ( down || !enabled ) ? cg.button() : cg.base(); p->setPen( fillColor ); p->setBrush( fillColor ) ; p->drawPolygon( a ); if ( on ) { p->setPen( NoPen ); p->setBrush( cg.text() ); p->drawRect( x+5, y+4, 2, 4 ); p->drawRect( x+4, y+5, 4, 2 ); } } void FreshStyle::drawIndicator ( QPainter * p, int x, int y, int w, int h, const QColorGroup &cg, int state, bool down, bool enabled ) { QColorGroup mycg( cg ); mycg.setBrush( QColorGroup::Button, QBrush() ); QBrush fill; drawButton( p, x, y, w, h, mycg, TRUE, 0 ); if ( down ) fill = cg.brush( QColorGroup::Button ); else fill = cg.brush( enabled ? QColorGroup::Base : QColorGroup::Background ); mycg.setBrush( QColorGroup::Button, fill ); p->fillRect( x+1, y+1, w-2, h-2, fill ); if ( state != QButton::Off ) { QPointArray a( 7*2 ); int i, xx, yy; xx = x+3; yy = y+5; for ( i=0; i<3; i++ ) { a.setPoint( 2*i, xx, yy ); a.setPoint( 2*i+1, xx, yy+2 ); xx++; yy++; } yy -= 2; for ( i=3; i<7; i++ ) { a.setPoint( 2*i, xx, yy ); a.setPoint( 2*i+1, xx, yy+2 ); xx++; yy--; } if ( state == QButton::NoChange ) { p->setPen( mycg.dark() ); } else { p->setPen( mycg.text() ); } p->drawLineSegments( a ); } } #define HORIZONTAL (sb->orientation() == QScrollBar::Horizontal) #define VERTICAL !HORIZONTAL #define MOTIF_BORDER 2 #define SLIDER_MIN 9 // ### motif says 6 but that's too small /*! \reimp */ void FreshStyle::scrollBarMetrics( const QScrollBar* sb, int &sliderMin, int &sliderMax, int &sliderLength, int& buttonDim ) { int maxLength; int length = HORIZONTAL ? sb->width() : sb->height(); int extent = HORIZONTAL ? sb->height() : sb->width(); if ( length > (extent - 1)*2 ) buttonDim = extent; else buttonDim = length/2 - 1; sliderMin = 0; maxLength = length - buttonDim*2; if ( sb->maxValue() == sb->minValue() ) { sliderLength = maxLength; } else { sliderLength = (sb->pageStep()*maxLength)/ (sb->maxValue()-sb->minValue()+sb->pageStep()); uint range = sb->maxValue()-sb->minValue(); if ( sliderLength < SLIDER_MIN || range > INT_MAX/2 ) sliderLength = SLIDER_MIN; if ( sliderLength > maxLength ) sliderLength = maxLength; } sliderMax = sliderMin + maxLength - sliderLength; } /*!\reimp */ QStyle::ScrollControl FreshStyle::scrollBarPointOver( const QScrollBar* sb, int sliderStart, const QPoint& p ) { if ( !sb->rect().contains( p ) ) return NoScroll; int sliderMin, sliderMax, sliderLength, buttonDim, pos; scrollBarMetrics( sb, sliderMin, sliderMax, sliderLength, buttonDim ); if (sb->orientation() == QScrollBar::Horizontal) pos = p.x(); else pos = p.y(); if (pos < sliderStart) return SubPage; if (pos < sliderStart + sliderLength) return Slider; if (pos < sliderMax + sliderLength) return AddPage; if (pos < sliderMax + sliderLength + buttonDim) return SubLine; return AddLine; } /*! \reimp */ void FreshStyle::drawScrollBarControls( QPainter* p, const QScrollBar* sb, int sliderStart, uint controls, uint activeControl ) { #define ADD_LINE_ACTIVE ( activeControl == AddLine ) #define SUB_LINE_ACTIVE ( activeControl == SubLine ) QColorGroup g = sb->colorGroup(); int sliderMin, sliderMax, sliderLength, buttonDim; scrollBarMetrics( sb, sliderMin, sliderMax, sliderLength, buttonDim ); if ( controls == (AddLine | SubLine | AddPage | SubPage | Slider | First | Last ) ) p->fillRect( 0, 0, sb->width(), sb->height(), g.brush( QColorGroup::Mid )); if (sliderStart > sliderMax) { // sanity check sliderStart = sliderMax; } int dimB = buttonDim; QRect addB; QRect subB; QRect addPageR; QRect subPageR; QRect sliderR; int addX, addY, subX, subY; int length = HORIZONTAL ? sb->width() : sb->height(); int extent = HORIZONTAL ? sb->height() : sb->width(); if ( HORIZONTAL ) { subY = addY = ( extent - dimB ) / 2; subX = length - dimB - dimB; addX = length - dimB; } else { subX = addX = ( extent - dimB ) / 2; subY = length - dimB - dimB; addY = length - dimB; } int sliderEnd = sliderStart + sliderLength; int sliderW = extent; if ( HORIZONTAL ) { subB.setRect( subX,subY+1,dimB,dimB-1 ); addB.setRect( addX,addY+1,dimB,dimB-1 ); subPageR.setRect( 0, 0, sliderStart+1, sliderW ); addPageR.setRect( sliderEnd-1, 0, subX - sliderEnd+1, sliderW ); sliderR .setRect( sliderStart, 1, sliderLength, sliderW-1 ); } else { subB.setRect( subX+1,subY,dimB-1,dimB ); addB.setRect( addX+1,addY,dimB-1,dimB ); subPageR.setRect( 0, 0, sliderW, sliderStart+1 ); addPageR.setRect( 0, sliderEnd-1, sliderW, subY - sliderEnd+1 ); sliderR .setRect( 1, sliderStart, sliderW-1, sliderLength ); } bool maxedOut = (sb->maxValue() == sb->minValue()); if ( controls & AddLine ) { drawBevelButton( p, addB.x(), addB.y(), addB.width(), addB.height(), g, ADD_LINE_ACTIVE); p->setPen(g.shadow()); drawArrow( p, VERTICAL ? DownArrow : RightArrow, FALSE, addB.x()+2, addB.y()+2, addB.width()-4, addB.height()-4, g, !maxedOut, &g.brush( QColorGroup::Button )); } if ( controls & SubLine ) { drawBevelButton( p, subB.x(), subB.y(), subB.width(), subB.height(), g, SUB_LINE_ACTIVE ); p->setPen(g.shadow()); drawArrow( p, VERTICAL ? UpArrow : LeftArrow, FALSE, subB.x()+2, subB.y()+2, subB.width()-4, subB.height()-4, g, !maxedOut, &g.brush( QColorGroup::Button )); } if ( controls & SubPage ) p->fillRect( subPageR.x(), subPageR.y(), subPageR.width(), subPageR.height(), g.brush( QColorGroup::Mid )); if ( controls & AddPage ) p->fillRect( addPageR.x(), addPageR.y(), addPageR.width(), addPageR.height(), g.brush( QColorGroup::Mid )); if ( controls & Slider ) { QPoint bo = p->brushOrigin(); p->setBrushOrigin(sliderR.topLeft()); drawBevelButton( p, sliderR.x(), sliderR.y(), sliderR.width(), sliderR.height(), g, FALSE, &g.brush( QColorGroup::Button ) ); p->setBrushOrigin(bo); drawRiffles( p, sliderR.x(), sliderR.y(), sliderR.width(), sliderR.height(), g, HORIZONTAL ); } // ### perhaps this should not be able to accept focus if maxedOut? if ( sb->hasFocus() && (controls & Slider) ) p->drawWinFocusRect( sliderR.x()+2, sliderR.y()+2, sliderR.width()-5, sliderR.height()-5, sb->backgroundColor() ); } void FreshStyle::drawRiffles( QPainter* p, int x, int y, int w, int h, const QColorGroup &g, bool horizontal ) { return; if (!horizontal) { if (h > 20) { y += (h-20)/2 ; h = 20; } if (h > 12) { int n = 3; int my = y+h/2-4; int i ; p->setPen(g.light()); for (i=0; i<n; i++) { p->drawLine(x+2, my+3*i, x+w-4, my+3*i); } p->setPen(g.dark()); my++; for (i=0; i<n; i++) { p->drawLine(x+2, my+3*i, x+w-4, my+3*i); } } } else { if (w > 20) { x += (w-20)/2 ; w = 20; } if (w > 12) { int n = 3; int mx = x+w/2-4; int i ; p->setPen(g.light()); for (i=0; i<n; i++) { p->drawLine(mx+3*i, y+2, mx + 3*i, y+h-4); } p->setPen(g.dark()); mx++; for (i=0; i<n; i++) { p->drawLine(mx+3*i, y+2, mx + 3*i, y+h-4); } } } } int FreshStyle::sliderLength() const { return 12; } void FreshStyle::drawSlider( QPainter *p, int x, int y, int w, int h, const QColorGroup &g, Orientation o, bool tickAbove, bool tickBelow ) { int a = tickAbove ? 3 : 0; int b = tickBelow ? 3 : 0; if ( o == Horizontal ) { drawBevelButton( p, x, y+a, w, h-a-b, g, FALSE, &g.brush( QColorGroup::Button ) ); int xp = x + w/2; qDrawShadeLine( p, xp, y+a+2, xp, y+h-b-3, g ); } else { drawBevelButton( p, x+a, y, w-a-b, h, g, FALSE, &g.brush( QColorGroup::Button ) ); int yp = y + h/2; qDrawShadeLine( p, x+a+2, yp, x+w-b-3, yp, g ); } } void FreshStyle::drawSliderMask ( QPainter * p, int x, int y, int w, int h, Orientation o, bool tickAbove, bool tickBelow ) { int a = tickAbove ? 3 : 0; int b = tickBelow ? 3 : 0; if ( o == Horizontal ) p->fillRect( x, y+a, w, h-a-b, color1 ); else p->fillRect( x+a, y, w-a-b, h, color1 ); } /*!\reimp */ void FreshStyle::drawSliderGrooveMask( QPainter *p, int x, int y, int w, int h, const QColorGroup& , QCOORD c, Orientation orient ) { if ( orient == Horizontal ) p->fillRect( x, y + c - 2, w, 4, color1 ); else p->fillRect( x + c - 2, y, 4, h, color1 ); } void FreshStyle::drawTab( QPainter *p, const QTabBar *tb, QTab *t, bool selected ) { QRect r( t->rect() ); if ( tb->shape() == QTabBar::RoundedAbove ) { p->setPen( tb->colorGroup().light() ); p->drawLine( r.left(), r.bottom(), r.right(), r.bottom() ); if ( r.left() == 0 ) p->drawPoint( tb->rect().bottomLeft() ); else { p->setPen( tb->colorGroup().light() ); p->drawLine( r.left(), r.bottom(), r.right(), r.bottom() ); } if ( selected ) { p->setPen( tb->colorGroup().background() ); p->drawLine( r.left()+2, r.top()+1, r.right()-2, r.top()+1 ); p->fillRect( QRect( r.left()+1, r.top()+2, r.width()-2, r.height()-2), tb->colorGroup().brush( QColorGroup::Background )); } else { r.setRect( r.left() + 2, r.top() + 2, r.width() - 4, r.height() - 2 ); p->setPen( tb->colorGroup().button() ); p->drawLine( r.left()+2, r.top()+1, r.right()-2, r.top()+1 ); p->fillRect( QRect( r.left()+1, r.top()+2, r.width()-2, r.height()-3), tb->colorGroup().brush( QColorGroup::Button )); //do shading; will not work for pixmap brushes QColor bg = tb->colorGroup().button(); // int h,s,v; // bg.hsv( &h, &s, &v ); int n = r.height()/2; int dark = 100; for ( int i = 1; i < n; i++ ) { dark = (dark * (100+(i*15)/n) )/100; p->setPen( bg.dark( dark ) ); int y = r.bottom()-n+i; int x1 = r.left()+1; int x2 = r.right()-1; p->drawLine( x1, y, x2, y ); } } p->setPen( tb->colorGroup().light() ); p->drawLine( r.left(), r.bottom()-1, r.left(), r.top() + 2 ); p->drawPoint( r.left()+1, r.top() + 1 ); p->drawLine( r.left()+2, r.top(), r.right() - 2, r.top() ); p->setPen( tb->colorGroup().dark() ); p->drawPoint( r.right() - 1, r.top() + 1 ); p->drawLine( r.right(), r.top() + 2, r.right(), r.bottom() - 1); } else if ( tb->shape() == QTabBar::RoundedBelow ) { if ( selected ) { p->setPen( tb->colorGroup().background() ); p->drawLine( r.left()+2, r.bottom()-1, r.right()-2, r.bottom()-1 ); p->fillRect( QRect( r.left()+1, r.top(), r.width()-2, r.height()-2), tb->palette().normal().brush( QColorGroup::Background )); } else { p->setPen( tb->colorGroup().dark() ); p->drawLine( r.left(), r.top(), r.right(), r.top() ); r.setRect( r.left() + 2, r.top(), r.width() - 4, r.height() - 2 ); p->setPen( tb->colorGroup().button() ); p->drawLine( r.left()+2, r.bottom()-1, r.right()-2, r.bottom()-1 ); p->fillRect( QRect( r.left()+1, r.top()+1, r.width()-2, r.height()-3), tb->palette().normal().brush( QColorGroup::Button )); } p->setPen( tb->colorGroup().dark() ); p->drawLine( r.right(), r.top(), r.right(), r.bottom() - 2 ); p->drawPoint( r.right() - 1, r.bottom() - 1 ); p->drawLine( r.right() - 2, r.bottom(), r.left() + 2, r.bottom() ); p->setPen( tb->colorGroup().light() ); p->drawLine( r.left(), r.top()+1, r.left(), r.bottom() - 2 ); p->drawPoint( r.left() + 1, r.bottom() - 1 ); if ( r.left() == 0 ) p->drawPoint( tb->rect().topLeft() ); } else { QCommonStyle::drawTab( p, tb, t, selected ); } } static const int motifItemFrame = 0; // menu item frame width static const int motifSepHeight = 2; // separator item height static const int motifItemHMargin = 1; // menu item hor text margin static const int motifItemVMargin = 2; // menu item ver text margin static const int motifArrowHMargin = 0; // arrow horizontal margin static const int motifTabSpacing = 12; // space between text and tab static const int motifCheckMarkHMargin = 1; // horiz. margins of check mark static const int windowsRightBorder = 8; // right border on windows static const int windowsCheckMarkWidth = 2; // checkmarks width on windows /*! \reimp */ int FreshStyle::extraPopupMenuItemWidth( bool checkable, int maxpmw, QMenuItem* mi, const QFontMetrics& /*fm*/ ) { #ifndef QT_NO_MENUDATA int w = 2*motifItemHMargin + 2*motifItemFrame; // a little bit of border can never harm if ( mi->isSeparator() ) return 10; // arbitrary else if ( mi->pixmap() ) w += mi->pixmap()->width(); // pixmap only if ( !mi->text().isNull() ) { if ( mi->text().find('\t') >= 0 ) // string contains tab w += motifTabSpacing; } if ( maxpmw ) { // we have iconsets w += maxpmw; w += 6; // add a little extra border around the iconset } if ( checkable && maxpmw < windowsCheckMarkWidth ) { w += windowsCheckMarkWidth - maxpmw; // space for the checkmarks } if ( maxpmw > 0 || checkable ) // we have a check-column ( iconsets or checkmarks) w += motifCheckMarkHMargin; // add space to separate the columns w += windowsRightBorder; // windows has a strange wide border on the right side return w; #endif } /*! \reimp */ int FreshStyle::popupMenuItemHeight( bool /*checkable*/, QMenuItem* mi, const QFontMetrics& fm ) { #ifndef QT_NO_MENUDATA int h = 0; if ( mi->isSeparator() ) // separator height h = motifSepHeight; else if ( mi->pixmap() ) // pixmap height h = mi->pixmap()->height() + 2*motifItemFrame; else // text height h = fm.height() + 2*motifItemVMargin + 2*motifItemFrame - 1; if ( !mi->isSeparator() && mi->iconSet() != 0 ) { h = QMAX( h, mi->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).height() + 2*motifItemFrame ); } if ( mi->custom() ) h = QMAX( h, mi->custom()->sizeHint().height() + 2*motifItemVMargin + 2*motifItemFrame ) - 1; return h; #endif } void FreshStyle::drawPopupMenuItem( QPainter* p, bool checkable, int maxpmw, int tab, QMenuItem* mi, const QPalette& pal, bool act, bool enabled, int x, int y, int w, int h) { #ifndef QT_NO_MENUDATA const QColorGroup & g = pal.active(); bool dis = !enabled; QColorGroup itemg = dis ? pal.disabled() : pal.active(); if ( checkable ) maxpmw = QMAX( maxpmw, 8 ); // space for the checkmarks int checkcol = maxpmw; if ( mi && mi->isSeparator() ) { // draw separator p->setPen( g.dark() ); p->drawLine( x, y, x+w, y ); p->setPen( g.light() ); p->drawLine( x, y+1, x+w, y+1 ); return; } QBrush fill = act? g.brush( QColorGroup::Highlight ) : g.brush( QColorGroup::Button ); p->fillRect( x, y, w, h, fill); if ( !mi ) return; if ( mi->isChecked() ) { if ( act && !dis ) { qDrawShadePanel( p, x, y, checkcol, h, g, TRUE, 1, &g.brush( QColorGroup::Button ) ); } else { qDrawShadePanel( p, x, y, checkcol, h, g, TRUE, 1, &g.brush( QColorGroup::Midlight ) ); } } else if ( !act ) { p->fillRect(x, y, checkcol , h, g.brush( QColorGroup::Button )); } if ( mi->iconSet() ) { // draw iconset QIconSet::Mode mode = dis ? QIconSet::Disabled : QIconSet::Normal; if (act && !dis ) mode = QIconSet::Active; QPixmap pixmap = mi->iconSet()->pixmap( QIconSet::Small, mode ); int pixw = pixmap.width(); int pixh = pixmap.height(); if ( act && !dis ) { if ( !mi->isChecked() ) qDrawShadePanel( p, x, y, checkcol, h, g, FALSE, 1, &g.brush( QColorGroup::Button ) ); } QRect cr( x, y, checkcol, h ); QRect pmr( 0, 0, pixw, pixh ); pmr.moveCenter( cr.center() ); p->setPen( itemg.text() ); p->drawPixmap( pmr.topLeft(), pixmap ); QBrush fill = act? g.brush( QColorGroup::Highlight ) : g.brush( QColorGroup::Button ); p->fillRect( x+checkcol + 1, y, w - checkcol - 1, h, fill); } else if ( checkable ) { // just "checking"... int mw = checkcol + motifItemFrame; int mh = h - 2*motifItemFrame; if ( mi->isChecked() ) { drawCheckMark( p, x + motifItemFrame + 2, y+motifItemFrame, mw, mh, itemg, act, dis ); } } p->setPen( act ? g.highlightedText() : g.buttonText() ); QColor discol; if ( dis ) { discol = itemg.text(); p->setPen( discol ); } int xm = motifItemFrame + checkcol + motifItemHMargin; if ( mi->custom() ) { int m = motifItemVMargin; p->save(); if ( dis && !act ) { p->setPen( g.light() ); mi->custom()->paint( p, itemg, act, enabled, x+xm+1, y+m+1, w-xm-tab+1, h-2*m ); p->setPen( discol ); } mi->custom()->paint( p, itemg, act, enabled, x+xm, y+m, w-xm-tab+1, h-2*m ); p->restore(); } QString s = mi->text(); if ( !s.isNull() ) { // draw text int t = s.find( '\t' ); int m = motifItemVMargin; const int text_flags = AlignVCenter|ShowPrefix | DontClip | SingleLine; if ( t >= 0 ) { // draw tab text if ( dis && !act ) { p->setPen( g.light() ); p->drawText( x+w-tab-windowsRightBorder-motifItemHMargin-motifItemFrame+1, y+m+1, tab, h-2*m, text_flags, s.mid( t+1 )); p->setPen( discol ); } p->drawText( x+w-tab-windowsRightBorder-motifItemHMargin-motifItemFrame, y+m, tab, h-2*m, text_flags, s.mid( t+1 ) ); } if ( dis && !act ) { p->setPen( g.light() ); p->drawText( x+xm+1, y+m+1, w-xm+1, h-2*m, text_flags, s, t ); p->setPen( discol ); } p->drawText( x+xm, y+m, w-xm-tab+1, h-2*m, text_flags, s, t ); } else if ( mi->pixmap() ) { // draw pixmap QPixmap *pixmap = mi->pixmap(); if ( pixmap->depth() == 1 ) p->setBackgroundMode( OpaqueMode ); p->drawPixmap( x+xm, y+motifItemFrame, *pixmap ); if ( pixmap->depth() == 1 ) p->setBackgroundMode( TransparentMode ); } if ( mi->popup() ) { // draw sub menu arrow int dim = (h-2*motifItemFrame) / 2; if ( act ) { if ( !dis ) discol = white; QColorGroup g2( discol, g.highlight(), white, white, dis ? discol : white, discol, white ); drawArrow( p, RightArrow, FALSE, x+w - motifArrowHMargin - motifItemFrame - dim, y+h/2-dim/2, dim, dim, g2, TRUE ); } else { drawArrow( p, RightArrow, FALSE, x+w - motifArrowHMargin - motifItemFrame - dim, y+h/2-dim/2, dim, dim, g, mi->isEnabled() ); } } #endif } //=========================================================================== FreshStyleImpl::FreshStyleImpl() - : fresh(0), ref(0) + : fresh(0) { } FreshStyleImpl::~FreshStyleImpl() { // We do not delete the style because Qt does that when a new style // is set. } QStyle *FreshStyleImpl::style() { if ( !fresh ) fresh = new FreshStyle(); return fresh; } QString FreshStyleImpl::name() const { return QString("Fresh"); } QRESULT FreshStyleImpl::queryInterface( const QUuid &uuid, QUnknownInterface **iface ) { *iface = 0; if ( uuid == IID_QUnknown ) *iface = this; else if ( uuid == IID_Style ) *iface = this; + else + return QS_FALSE; if ( *iface ) (*iface)->addRef(); return QS_OK; } Q_EXPORT_INTERFACE() { Q_CREATE_INSTANCE( FreshStyleImpl ) } diff --git a/noncore/styles/fresh/fresh.h b/noncore/styles/fresh/fresh.h index b4be7f3..a72a83f 100644 --- a/noncore/styles/fresh/fresh.h +++ b/noncore/styles/fresh/fresh.h @@ -1,100 +1,99 @@ /********************************************************************** ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** ** This file is part of the Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ** See http://www.trolltech.com/gpl/ for GPL licensing information. ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ #ifndef FRESHSTYLE_H #define FRESHSTYLE_H #include <qwindowsstyle.h> #include <qpe/styleinterface.h> class Q_EXPORT FreshStyle : public QWindowsStyle { public: FreshStyle(); virtual ~FreshStyle(); virtual void polish( QPalette &p ); virtual void polish( QWidget *w ); virtual void unPolish( QWidget *w ); int defaultFrameWidth () const; void drawPanel ( QPainter * p, int x, int y, int w, int h, const QColorGroup &, bool sunken=FALSE, int lineWidth = 1, const QBrush * fill = 0 ); void drawButton( QPainter *p, int x, int y, int w, int h, const QColorGroup &g, bool sunken, const QBrush* fill ); void drawButtonMask ( QPainter * p, int x, int y, int w, int h ); void drawBevelButton( QPainter *p, int x, int y, int w, int h, const QColorGroup &g, bool sunken=FALSE, const QBrush* fill=0 ); QRect comboButtonRect( int x, int y, int w, int h); QRect comboButtonFocusRect( int x, int y, int w, int h); void drawComboButton( QPainter *p, int x, int y, int w, int h, const QColorGroup &g, bool sunken, bool, bool enabled, const QBrush *fill ); void drawExclusiveIndicator ( QPainter * p, int x, int y, int w, int h, const QColorGroup & g, bool on, bool down = FALSE, bool enabled = TRUE ); void drawIndicator ( QPainter * p, int x, int y, int w, int h, const QColorGroup & g, int state, bool down = FALSE, bool enabled = TRUE ); void scrollBarMetrics( const QScrollBar*, int&, int&, int&, int&); void drawScrollBarControls( QPainter*, const QScrollBar*, int sliderStart, uint controls, uint activeControl ); ScrollControl scrollBarPointOver( const QScrollBar* sb, int sliderStart, const QPoint& p ); void drawRiffles( QPainter* p, int x, int y, int w, int h, const QColorGroup &g, bool horizontal ); int sliderLength() const; void drawSlider( QPainter *p, int x, int y, int w, int h, const QColorGroup &g, Orientation, bool tickAbove, bool tickBelow ); void drawSliderMask( QPainter *p, int x, int y, int w, int h, Orientation, bool tickAbove, bool tickBelow ); void drawSliderGrooveMask( QPainter *p, int x, int y, int w, int h, const QColorGroup& , QCOORD c, Orientation orient ); void drawTab( QPainter *, const QTabBar *, QTab *, bool selected ); int extraPopupMenuItemWidth( bool checkable, int maxpmw, QMenuItem*, const QFontMetrics& ); int popupMenuItemHeight( bool checkable, QMenuItem*, const QFontMetrics& ); void drawPopupMenuItem( QPainter* p, bool checkable, int maxpmw, int tab, QMenuItem* mi, const QPalette& pal, bool act, bool enabled, int x, int y, int w, int h); int buttonMargin() const; QSize scrollBarExtent() const; private: // Disabled copy constructor and operator= #if defined(Q_DISABLE_COPY) FreshStyle( const FreshStyle & ); FreshStyle& operator=( const FreshStyle & ); #endif }; class FreshStyleImpl : public StyleInterface { public: FreshStyleImpl(); virtual ~FreshStyleImpl(); QRESULT queryInterface( const QUuid&, QUnknownInterface** ); Q_REFCOUNT virtual QStyle *style(); virtual QString name() const; private: FreshStyle *fresh; - ulong ref; }; #endif // FRESHSTYLE_H diff --git a/noncore/styles/liquid/plugin.cpp b/noncore/styles/liquid/plugin.cpp index 6813fc5..fb322a9 100644 --- a/noncore/styles/liquid/plugin.cpp +++ b/noncore/styles/liquid/plugin.cpp @@ -1,79 +1,81 @@ #include <qapplication.h> #include "liquid.h" #include "liquidset.h" #include "plugin.h" -LiquidInterface::LiquidInterface ( ) : ref ( 0 ) +LiquidInterface::LiquidInterface ( ) { m_widget = 0; } LiquidInterface::~LiquidInterface ( ) { } QStyle *LiquidInterface::style ( ) { return new LiquidStyle ( ); } QString LiquidInterface::name ( ) const { return qApp-> translate ( "Styles", "Liquid" ); } QString LiquidInterface::description ( ) const { return qApp-> translate ( "Styles", "High Performance Liquid style by Mosfet" ); } bool LiquidInterface::hasSettings ( ) const { return true; } QWidget *LiquidInterface::create ( QWidget *parent, const char *name ) { m_widget = new LiquidSettings ( parent, name ? name : "LIQUID-SETTINGS" ); return m_widget; } bool LiquidInterface::accept ( ) { if ( !m_widget ) return false; return m_widget-> writeConfig ( ); } void LiquidInterface::reject ( ) { } QRESULT LiquidInterface::queryInterface ( const QUuid &uuid, QUnknownInterface **iface ) { *iface = 0; if ( uuid == IID_QUnknown ) *iface = this; else if ( uuid == IID_Style ) *iface = this; else if ( uuid == IID_StyleExtended ) *iface = this; + else + return QS_FALSE; if ( *iface ) (*iface)-> addRef ( ); return QS_OK; } Q_EXPORT_INTERFACE() { Q_CREATE_INSTANCE( LiquidInterface ) } diff --git a/noncore/styles/liquid/plugin.h b/noncore/styles/liquid/plugin.h index 6a9b7ac..9188a09 100644 --- a/noncore/styles/liquid/plugin.h +++ b/noncore/styles/liquid/plugin.h @@ -1,34 +1,33 @@ #ifndef __OPIE_LIQUID_PLUGIN_H__ #define __OPIE_LIQUID_PLUGIN_H__ #include <qpe/styleinterface.h> class LiquidSettings; class LiquidInterface : public StyleExtendedInterface { public: LiquidInterface ( ); virtual ~LiquidInterface ( ); QRESULT queryInterface ( const QUuid &, QUnknownInterface ** ); Q_REFCOUNT virtual QStyle *style ( ); virtual QString name ( ) const; virtual QString description ( ) const; virtual bool hasSettings ( ) const; virtual QWidget *create ( QWidget *parent, const char *name = 0 ); virtual bool accept ( ); virtual void reject ( ); private: LiquidSettings *m_widget; - ulong ref; }; #endif diff --git a/noncore/styles/metal/plugin.cpp b/noncore/styles/metal/plugin.cpp index 4c9f64d..2f0f530 100644 --- a/noncore/styles/metal/plugin.cpp +++ b/noncore/styles/metal/plugin.cpp @@ -1,45 +1,47 @@ #include <qapplication.h> #include "metal.h" #include "plugin.h" -MetalInterface::MetalInterface ( ) : ref ( 0 ) +MetalInterface::MetalInterface ( ) { } MetalInterface::~MetalInterface ( ) { } QStyle *MetalInterface::style ( ) { return new MetalStyle ( ); } QString MetalInterface::name ( ) const { return qApp-> translate ( "Styles", "Metal" ); } QRESULT MetalInterface::queryInterface ( const QUuid &uuid, QUnknownInterface **iface ) { *iface = 0; if ( uuid == IID_QUnknown ) *iface = this; else if ( uuid == IID_Style ) *iface = this; + else + return QS_FALSE; if ( *iface ) (*iface)-> addRef ( ); return QS_OK; } Q_EXPORT_INTERFACE() { Q_CREATE_INSTANCE( MetalInterface ) } diff --git a/noncore/styles/metal/plugin.h b/noncore/styles/metal/plugin.h index 545aea9..7a38d62 100644 --- a/noncore/styles/metal/plugin.h +++ b/noncore/styles/metal/plugin.h @@ -1,22 +1,20 @@ #ifndef __OPIE_METAL_PLUGIN_H__ #define __OPIE_METAL_PLUGIN_H__ #include <qpe/styleinterface.h> class MetalInterface : public StyleInterface { public: MetalInterface ( ); virtual ~MetalInterface ( ); QRESULT queryInterface ( const QUuid &, QUnknownInterface ** ); Q_REFCOUNT virtual QStyle *style ( ); virtual QString name ( ) const; -private: - ulong ref; }; #endif diff --git a/noncore/styles/theme/plugin.cpp b/noncore/styles/theme/plugin.cpp index 2560720..dca8685 100644 --- a/noncore/styles/theme/plugin.cpp +++ b/noncore/styles/theme/plugin.cpp @@ -1,81 +1,83 @@ #include <qapplication.h> #include "othemestyle.h" #include "themeset.h" #include "plugin.h" -ThemeInterface::ThemeInterface ( ) : ref ( 0 ) +ThemeInterface::ThemeInterface ( ) { m_widget = 0; } ThemeInterface::~ThemeInterface ( ) { } QStyle *ThemeInterface::style ( ) { return new OThemeStyle ( "" ); } QString ThemeInterface::name ( ) const { return qApp-> translate ( "Styles", "Themed style" ); } QString ThemeInterface::description ( ) const { return qApp-> translate ( "Styles", "KDE2 theme compatible style engine" ); } bool ThemeInterface::hasSettings ( ) const { return true; } QWidget *ThemeInterface::create ( QWidget *parent, const char *name ) { m_widget = new ThemeSettings ( parent, name ? name : "THEME-SETTINGS" ); return m_widget; } bool ThemeInterface::accept ( ) { if ( !m_widget ) return false; return m_widget-> writeConfig ( ); } void ThemeInterface::reject ( ) { } QRESULT ThemeInterface::queryInterface ( const QUuid &uuid, QUnknownInterface **iface ) { *iface = 0; if ( uuid == IID_QUnknown ) *iface = this; else if ( uuid == IID_Style ) *iface = this; else if ( uuid == IID_StyleExtended ) *iface = this; + else + return QS_FALSE; if ( *iface ) (*iface)-> addRef ( ); return QS_OK; } Q_EXPORT_INTERFACE() { Q_CREATE_INSTANCE( ThemeInterface ) } diff --git a/noncore/styles/theme/plugin.h b/noncore/styles/theme/plugin.h index 60cae97..c67f1e4 100644 --- a/noncore/styles/theme/plugin.h +++ b/noncore/styles/theme/plugin.h @@ -1,33 +1,32 @@ #ifndef __OPIE_THEME_PLUGIN_H__ #define __OPIE_THEME_PLUGIN_H__ #include <qpe/styleinterface.h> class ThemeSettings; class ThemeInterface : public StyleExtendedInterface { public: ThemeInterface ( ); virtual ~ThemeInterface ( ); QRESULT queryInterface ( const QUuid &, QUnknownInterface ** ); Q_REFCOUNT virtual QStyle *style ( ); virtual QString name ( ) const; virtual QString description ( ) const; virtual bool hasSettings ( ) const; virtual QWidget *create ( QWidget *parent, const char *name = 0 ); virtual bool accept ( ); virtual void reject ( ); private: ThemeSettings *m_widget; - ulong ref; }; #endif diff --git a/noncore/todayplugins/fortune/fortunepluginimpl.h b/noncore/todayplugins/fortune/fortunepluginimpl.h index 070f03e..8e380f5 100644 --- a/noncore/todayplugins/fortune/fortunepluginimpl.h +++ b/noncore/todayplugins/fortune/fortunepluginimpl.h @@ -1,41 +1,40 @@ /* * todopluginimpl.h * * copyright : (c) 2002 by Maximilian Reiß * email : harlekin@handhelds.org * */ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef FORTUNE_PLUGIN_IMPL_H #define FORTUNE_PLUGIN_IMPL_H #include <opie/todayplugininterface.h> class FortunePlugin; class FortunePluginImpl : public TodayPluginInterface { public: FortunePluginImpl(); virtual ~FortunePluginImpl(); QRESULT queryInterface( const QUuid &, QUnknownInterface** ); Q_REFCOUNT virtual TodayPluginObject *guiPart(); private: FortunePlugin *fortunePlugin; - ulong ref; }; #endif diff --git a/noncore/todayplugins/stockticker/stocktickerlib/stocktickerpluginimpl.h b/noncore/todayplugins/stockticker/stocktickerlib/stocktickerpluginimpl.h index 300c545..db5b8f9 100644 --- a/noncore/todayplugins/stockticker/stocktickerlib/stocktickerpluginimpl.h +++ b/noncore/todayplugins/stockticker/stocktickerlib/stocktickerpluginimpl.h @@ -1,40 +1,39 @@ /* * stocktickerpluginimpl.h * * copyright : (c) 2002 by L.J. Potter * email : llornkcor@handhelds.org * */ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef STOCKTICKER_PLUGIN_IMPL_H #define STOCKTICKER_PLUGIN_IMPL_H #include <opie/todayplugininterface.h> class StockTickerPlugin; class StockTickerPluginImpl : public TodayPluginInterface{ public: StockTickerPluginImpl(); virtual ~StockTickerPluginImpl(); QRESULT queryInterface( const QUuid &, QUnknownInterface** ); Q_REFCOUNT virtual TodayPluginObject *guiPart(); private: StockTickerPlugin *stocktickerPlugin; - ulong ref; }; #endif diff --git a/noncore/todayplugins/weather/weatherpluginimpl.h b/noncore/todayplugins/weather/weatherpluginimpl.h index aad8958..eaaae1d 100644 --- a/noncore/todayplugins/weather/weatherpluginimpl.h +++ b/noncore/todayplugins/weather/weatherpluginimpl.h @@ -1,52 +1,51 @@ /* This file is part of the OPIE Project =. .=l. Copyright (c) 2002 Dan Williams <williamsdr@acm.org> .>+-= _;:, .> :=|. This file is free software; you can .> <`_, > . <= redistribute it and/or modify it under :`=1 )Y*s>-.-- : the terms of the GNU General Public .="- .-=="i, .._ License as published by the Free Software - . .-<_> .<> Foundation; either version 2 of the License, ._= =} : or (at your option) any later version. .%`+i> _;_. .i_,=:_. -<s. This file is distributed in the hope that + . -:. = it will be useful, but WITHOUT ANY WARRANTY; : .. .:, . . . without even the implied warranty of =_ + =;=|` MERCHANTABILITY or FITNESS FOR A _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU General ..}^=.= = ; Public License for more details. ++= -. .` .: : = ...= . :.=- You should have received a copy of the GNU -. .:....=;==+<; General Public License along with this file; -_. . . )=. = see the file COPYING. If not, write to the -- :-=` Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef WEATHER_PLUGIN_IMPL_H #define WEATHER_PLUGIN_IMPL_H #include <opie/todayplugininterface.h> class WeatherPlugin; class WeatherPluginImpl : public TodayPluginInterface { public: WeatherPluginImpl(); virtual ~WeatherPluginImpl(); QRESULT queryInterface( const QUuid &, QUnknownInterface ** ); Q_REFCOUNT virtual TodayPluginObject *guiPart(); private: WeatherPlugin *weatherPlugin; - ulong ref; }; #endif |