00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 #ifndef __KSTYLE_H
00028 #define __KSTYLE_H
00029 
00030 
00031 
00032 
00033 
00034 
00035 #include <qcommonstyle.h>
00036 
00037 class KPixmap;
00038 
00039 class KStylePrivate;
00055 class KStyle: public QCommonStyle
00056 {
00057     Q_OBJECT
00058 
00059     public:
00060 
00077         typedef uint KStyleFlags;
00078         enum KStyleOption {
00079             Default           =     0x00000000, 
00080             AllowMenuTransparency =     0x00000001, 
00081             FilledFrameWorkaround =     0x00000002  
00082         };
00083 
00107         enum KStyleScrollBarType {
00108             WindowsStyleScrollBar  =    0x00000000, 
00109             PlatinumStyleScrollBar =    0x00000001, 
00110             ThreeButtonScrollBar   =    0x00000002, 
00111             NextStyleScrollBar     =    0x00000004  
00112         };
00113 
00133         KStyle( KStyleFlags flags = KStyle::Default, 
00134             KStyleScrollBarType sbtype = KStyle::WindowsStyleScrollBar );
00135 
00139         ~KStyle();
00140 
00144         static QString defaultStyle();
00145 
00157         void setScrollBarType(KStyleScrollBarType sbtype);
00158 
00164         KStyleFlags styleFlags() const;
00165 
00166         
00167 
00179         virtual void renderMenuBlendPixmap( KPixmap& pix, const QColorGroup& cg, 
00180                             const QPopupMenu* popup ) const;
00181 
00225         enum KStylePrimitive {
00226             KPE_DockWindowHandle,
00227             KPE_ToolBarHandle,
00228             KPE_GeneralHandle,
00229 
00230             KPE_SliderGroove,
00231             KPE_SliderHandle,
00232 
00233             KPE_ListViewExpander,
00234             KPE_ListViewBranch
00235         };
00236 
00246         virtual void drawKStylePrimitive( KStylePrimitive kpe,
00247                     QPainter* p,
00248                     const QWidget* widget,
00249                     const QRect &r,
00250                     const QColorGroup &cg,
00251                     SFlags flags = Style_Default,
00252                     const QStyleOption& = QStyleOption::Default ) const;
00253 
00254 
00255         enum KStylePixelMetric {
00256             KPM_MenuItemSeparatorHeight     = 0x00000001,
00257             KPM_MenuItemHMargin         = 0x00000002,
00258             KPM_MenuItemVMargin         = 0x00000004,
00259             KPM_MenuItemHFrame          = 0x00000008,
00260             KPM_MenuItemVFrame          = 0x00000010,
00261             KPM_MenuItemCheckMarkHMargin            = 0x00000020,
00262             KPM_MenuItemArrowHMargin        = 0x00000040,
00263             KPM_MenuItemTabSpacing          = 0x00000080,
00264             KPM_ListViewBranchThickness     = 0x00000100
00265         };
00266 
00267         int kPixelMetric( KStylePixelMetric kpm, const QWidget* widget = 0 ) const;
00268 
00269         
00270 
00271         void polish( QWidget* widget );
00272         void unPolish( QWidget* widget );
00273         void polishPopupMenu( QPopupMenu* );
00274 
00275         void drawPrimitive( PrimitiveElement pe,
00276                     QPainter* p,
00277                     const QRect &r,
00278                     const QColorGroup &cg,
00279                     SFlags flags = Style_Default,
00280                     const QStyleOption& = QStyleOption::Default ) const;
00281 
00282         void drawControl( ControlElement element,
00283                     QPainter* p,
00284                     const QWidget* widget,
00285                     const QRect &r,
00286                     const QColorGroup &cg,
00287                     SFlags flags = Style_Default,
00288                     const QStyleOption& = QStyleOption::Default ) const;
00289 
00290         void drawComplexControl( ComplexControl control,
00291                     QPainter *p,
00292                     const QWidget* widget,
00293                     const QRect &r,
00294                     const QColorGroup &cg,
00295                     SFlags flags = Style_Default,
00296                     SCFlags controls = SC_All,
00297                     SCFlags active = SC_None,
00298                     const QStyleOption& = QStyleOption::Default ) const;
00299 
00300         SubControl querySubControl( ComplexControl control,
00301                     const QWidget* widget,
00302                     const QPoint &pos,
00303                     const QStyleOption& = QStyleOption::Default ) const;
00304 
00305         QRect querySubControlMetrics( ComplexControl control,
00306                     const QWidget* widget,
00307                     SubControl sc,
00308                     const QStyleOption& = QStyleOption::Default ) const;
00309 
00310         int pixelMetric( PixelMetric m, 
00311                     const QWidget* widget = 0 ) const;
00312 
00313         QRect subRect( SubRect r, 
00314                     const QWidget* widget ) const;
00315 
00316         QPixmap stylePixmap( StylePixmap stylepixmap,
00317                     const QWidget* widget = 0,
00318                     const QStyleOption& = QStyleOption::Default ) const;
00319 
00320         int styleHint( StyleHint sh, 
00321                     const QWidget* w = 0,
00322                     const QStyleOption &opt = QStyleOption::Default,
00323                     QStyleHintReturn* shr = 0 ) const;
00324 
00325     protected:
00326         bool eventFilter( QObject* object, QEvent* event );
00327 
00328     private:
00329         
00330         KStyle( const KStyle & );
00331         KStyle& operator=( const KStyle & );
00332 
00333     protected:
00334         virtual void virtual_hook( int id, void* data );
00335     private:
00336         KStylePrivate *d;
00337 };
00338 
00339 
00340 
00341 #endif
00342