kdefx Library API Documentation

kstyle.h

00001 /*
00002  * $Id: kstyle.h,v 1.11 2002/10/26 08:59:39 gallium Exp $
00003  * 
00004  * KStyle
00005  * Copyright (C) 2001-2002 Karol Szwed <gallium@kde.org>
00006  * 
00007  * QWindowsStyle CC_ListView and style images were kindly donated by TrollTech,
00008  * Copyright (C) 1998-2000 TrollTech AS.
00009  * 
00010  * Many thanks to Bradley T. Hughes for the 3 button scrollbar code.
00011  *
00012  * This library is free software; you can redistribute it and/or
00013  * modify it under the terms of the GNU Library General Public
00014  * License version 2 as published by the Free Software Foundation.
00015  *
00016  * This library is distributed in the hope that it will be useful,
00017  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00018  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00019  * Library General Public License for more details.
00020  *
00021  * You should have received a copy of the GNU Library General Public License
00022  * along with this library; see the file COPYING.LIB.  If not, write to
00023  * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
00024  * Boston, MA 02111-1307, USA.
00025  */
00026 
00027 #ifndef __KSTYLE_H
00028 #define __KSTYLE_H
00029 
00030 // W A R N I N G
00031 // -------------
00032 // This API is still subject to change.
00033 // I will remove this warning when I feel the API is sufficiently flexible.
00034 
00035 #include <qcommonstyle.h>
00036 
00037 class TransparencyHandler;
00038 class KPixmap;
00039 
00040 class KStylePrivate;
00056 class KStyle: public QCommonStyle
00057 {
00058     Q_OBJECT
00059 
00060     public:
00061 
00078         typedef uint KStyleFlags;
00079         enum KStyleOption {
00080             Default               =     0x00000000,     // All options disabled.
00081             AllowMenuTransparency =     0x00000001,
00082             FilledFrameWorkaround =     0x00000002
00083         };
00084 
00106         enum KStyleScrollBarType {
00107             WindowsStyleScrollBar  =    0x00000000,
00108             PlatinumStyleScrollBar =    0x00000001,
00109             ThreeButtonScrollBar   =    0x00000002,
00110             NextStyleScrollBar     =    0x00000004
00111         };
00112 
00130         KStyle( KStyleFlags flags = KStyle::Default, 
00131                 KStyleScrollBarType sbtype = KStyle::WindowsStyleScrollBar );
00132 
00136         ~KStyle();
00137 
00141         static QString defaultStyle();
00142 
00152         void setScrollBarType(KStyleScrollBarType sbtype);
00153 
00159         KStyleFlags styleFlags() const;
00160 
00161         // ---------------------------------------------------------------------------
00162 
00174         virtual void renderMenuBlendPixmap( KPixmap& pix, const QColorGroup& cg, 
00175                                             const QPopupMenu* popup ) const;
00176 
00220         enum KStylePrimitive {
00221             KPE_DockWindowHandle,
00222             KPE_ToolBarHandle,
00223             KPE_GeneralHandle,
00224 
00225             KPE_SliderGroove,
00226             KPE_SliderHandle,
00227 
00228             KPE_ListViewExpander,
00229             KPE_ListViewBranch
00230         };
00231 
00241         virtual void drawKStylePrimitive( KStylePrimitive kpe,
00242                     QPainter* p,
00243                     const QWidget* widget,
00244                     const QRect &r,
00245                     const QColorGroup &cg,
00246                     SFlags flags = Style_Default,
00247                     const QStyleOption& = QStyleOption::Default ) const;
00248 
00249 
00250         enum KStylePixelMetric {
00251             KPM_MenuItemSeparatorHeight     = 0x00000001,
00252             KPM_MenuItemHMargin             = 0x00000002,
00253             KPM_MenuItemVMargin             = 0x00000004,
00254             KPM_MenuItemHFrame              = 0x00000008,
00255             KPM_MenuItemVFrame              = 0x00000010,
00256             KPM_MenuItemCheckMarkHMargin    = 0x00000020,
00257             KPM_MenuItemArrowHMargin        = 0x00000040,
00258             KPM_MenuItemTabSpacing          = 0x00000080,
00259 
00260             KPM_ListViewBranchThickness     = 0x00000100
00261         };
00262 
00263         int kPixelMetric( KStylePixelMetric kpm, const QWidget* widget = 0 ) const;
00264 
00265         // ---------------------------------------------------------------------------
00266 
00267         void polish( QWidget* widget );
00268         void unPolish( QWidget* widget );
00269         void polishPopupMenu( QPopupMenu* );
00270 
00271         void drawPrimitive( PrimitiveElement pe,
00272                     QPainter* p,
00273                     const QRect &r,
00274                     const QColorGroup &cg,
00275                     SFlags flags = Style_Default,
00276                     const QStyleOption& = QStyleOption::Default ) const;
00277 
00278         void drawControl( ControlElement element,
00279                     QPainter* p,
00280                     const QWidget* widget,
00281                     const QRect &r,
00282                     const QColorGroup &cg,
00283                     SFlags flags = Style_Default,
00284                     const QStyleOption& = QStyleOption::Default ) const;
00285 
00286         void drawComplexControl( ComplexControl control,
00287                     QPainter *p,
00288                     const QWidget* widget,
00289                     const QRect &r,
00290                     const QColorGroup &cg,
00291                     SFlags flags = Style_Default,
00292                     SCFlags controls = SC_All,
00293                     SCFlags active = SC_None,
00294                     const QStyleOption& = QStyleOption::Default ) const;
00295 
00296         SubControl querySubControl( ComplexControl control,
00297                     const QWidget* widget,
00298                     const QPoint &pos,
00299                     const QStyleOption& = QStyleOption::Default ) const;
00300 
00301         QRect querySubControlMetrics( ComplexControl control,
00302                     const QWidget* widget,
00303                     SubControl sc,
00304                     const QStyleOption& = QStyleOption::Default ) const;
00305 
00306         int pixelMetric( PixelMetric m, 
00307                     const QWidget* widget = 0 ) const;
00308 
00309         QRect subRect( SubRect r, 
00310                     const QWidget* widget ) const;
00311 
00312         QPixmap stylePixmap( StylePixmap stylepixmap,
00313                     const QWidget* widget = 0,
00314                     const QStyleOption& = QStyleOption::Default ) const;
00315 
00316         int styleHint( StyleHint sh, 
00317                     const QWidget* w = 0,
00318                     const QStyleOption &opt = QStyleOption::Default,
00319                     QStyleHintReturn* shr = 0 ) const;
00320 
00321     protected:
00322         bool eventFilter( QObject* object, QEvent* event );
00323 
00324     private:
00325         // Disable copy constructor and = operator
00326         KStyle( const KStyle & );
00327         KStyle& operator=( const KStyle & );
00328 
00329     protected:
00330         virtual void virtual_hook( int id, void* data );
00331     private:
00332         KStylePrivate *d;
00333 };
00334 
00335 
00336 // vim: set noet ts=4 sw=4:
00337 #endif
00338 
KDE Logo
This file is part of the documentation for kdelibs Version 3.1.0.
Documentation copyright © 1996-2002 the KDE developers.
Generated on Wed Oct 8 12:20:30 2003 by doxygen 1.2.18 written by Dimitri van Heesch, © 1997-2001