src/gui/styles/qstyleoption.h
changeset 0 1918ee327afb
child 3 41300fa6a67c
equal deleted inserted replaced
-1:000000000000 0:1918ee327afb
       
     1 /****************************************************************************
       
     2 **
       
     3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
       
     4 ** All rights reserved.
       
     5 ** Contact: Nokia Corporation (qt-info@nokia.com)
       
     6 **
       
     7 ** This file is part of the QtGui module of the Qt Toolkit.
       
     8 **
       
     9 ** $QT_BEGIN_LICENSE:LGPL$
       
    10 ** No Commercial Usage
       
    11 ** This file contains pre-release code and may not be distributed.
       
    12 ** You may use this file in accordance with the terms and conditions
       
    13 ** contained in the Technology Preview License Agreement accompanying
       
    14 ** this package.
       
    15 **
       
    16 ** GNU Lesser General Public License Usage
       
    17 ** Alternatively, this file may be used under the terms of the GNU Lesser
       
    18 ** General Public License version 2.1 as published by the Free Software
       
    19 ** Foundation and appearing in the file LICENSE.LGPL included in the
       
    20 ** packaging of this file.  Please review the following information to
       
    21 ** ensure the GNU Lesser General Public License version 2.1 requirements
       
    22 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
       
    23 **
       
    24 ** In addition, as a special exception, Nokia gives you certain additional
       
    25 ** rights.  These rights are described in the Nokia Qt LGPL Exception
       
    26 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
       
    27 **
       
    28 ** If you have questions regarding the use of this file, please contact
       
    29 ** Nokia at qt-info@nokia.com.
       
    30 **
       
    31 **
       
    32 **
       
    33 **
       
    34 **
       
    35 **
       
    36 **
       
    37 **
       
    38 ** $QT_END_LICENSE$
       
    39 **
       
    40 ****************************************************************************/
       
    41 
       
    42 #ifndef QSTYLEOPTION_H
       
    43 #define QSTYLEOPTION_H
       
    44 
       
    45 #include <QtCore/qvariant.h>
       
    46 #include <QtGui/qabstractspinbox.h>
       
    47 #include <QtGui/qicon.h>
       
    48 #include <QtGui/qmatrix.h>
       
    49 #include <QtGui/qslider.h>
       
    50 #include <QtGui/qstyle.h>
       
    51 #include <QtGui/qtabbar.h>
       
    52 #include <QtGui/qtabwidget.h>
       
    53 #include <QtGui/qrubberband.h>
       
    54 #include <QtGui/qframe.h>
       
    55 #ifndef QT_NO_ITEMVIEWS
       
    56 #   include <QtCore/qabstractitemmodel.h>
       
    57 #endif
       
    58 
       
    59 QT_BEGIN_HEADER
       
    60 
       
    61 QT_BEGIN_NAMESPACE
       
    62 
       
    63 QT_MODULE(Gui)
       
    64 
       
    65 class QDebug;
       
    66 
       
    67 class Q_GUI_EXPORT QStyleOption
       
    68 {
       
    69 public:
       
    70     enum OptionType {
       
    71                       SO_Default, SO_FocusRect, SO_Button, SO_Tab, SO_MenuItem,
       
    72                       SO_Frame, SO_ProgressBar, SO_ToolBox, SO_Header, SO_Q3DockWindow,
       
    73                       SO_DockWidget, SO_Q3ListViewItem, SO_ViewItem, SO_TabWidgetFrame,
       
    74                       SO_TabBarBase, SO_RubberBand, SO_ToolBar, SO_GraphicsItem,
       
    75 
       
    76                       SO_Complex = 0xf0000, SO_Slider, SO_SpinBox, SO_ToolButton, SO_ComboBox,
       
    77                       SO_Q3ListView, SO_TitleBar, SO_GroupBox, SO_SizeGrip,
       
    78 
       
    79                       SO_CustomBase = 0xf00,
       
    80                       SO_ComplexCustomBase = 0xf000000
       
    81                     };
       
    82 
       
    83     enum StyleOptionType { Type = SO_Default };
       
    84     enum StyleOptionVersion { Version = 1 };
       
    85 
       
    86     int version;
       
    87     int type;
       
    88     QStyle::State state;
       
    89     Qt::LayoutDirection direction;
       
    90     QRect rect;
       
    91     QFontMetrics fontMetrics;
       
    92     QPalette palette;
       
    93 
       
    94     QStyleOption(int version = QStyleOption::Version, int type = SO_Default);
       
    95     QStyleOption(const QStyleOption &other);
       
    96     ~QStyleOption();
       
    97 
       
    98     void init(const QWidget *w);
       
    99     inline void initFrom(const QWidget *w) { init(w); }
       
   100     QStyleOption &operator=(const QStyleOption &other);
       
   101 };
       
   102 
       
   103 class Q_GUI_EXPORT QStyleOptionFocusRect : public QStyleOption
       
   104 {
       
   105 public:
       
   106     enum StyleOptionType { Type = SO_FocusRect };
       
   107     enum StyleOptionVersion { Version = 1 };
       
   108 
       
   109     QColor backgroundColor;
       
   110 
       
   111     QStyleOptionFocusRect();
       
   112     QStyleOptionFocusRect(const QStyleOptionFocusRect &other) : QStyleOption(Version, Type) { *this = other; }
       
   113 
       
   114 protected:
       
   115     QStyleOptionFocusRect(int version);
       
   116 };
       
   117 
       
   118 class Q_GUI_EXPORT QStyleOptionFrame : public QStyleOption
       
   119 {
       
   120 public:
       
   121     enum StyleOptionType { Type = SO_Frame };
       
   122     enum StyleOptionVersion { Version = 1 };
       
   123 
       
   124     int lineWidth;
       
   125     int midLineWidth;
       
   126 
       
   127     QStyleOptionFrame();
       
   128     QStyleOptionFrame(const QStyleOptionFrame &other) : QStyleOption(Version, Type) { *this = other; }
       
   129 
       
   130 protected:
       
   131     QStyleOptionFrame(int version);
       
   132 };
       
   133 
       
   134 class Q_GUI_EXPORT QStyleOptionFrameV2 : public QStyleOptionFrame
       
   135 {
       
   136 public:
       
   137     enum StyleOptionVersion { Version = 2 };
       
   138     enum FrameFeature {
       
   139         None = 0x00,
       
   140         Flat = 0x01
       
   141     };
       
   142     Q_DECLARE_FLAGS(FrameFeatures, FrameFeature)
       
   143     FrameFeatures features;
       
   144 
       
   145     QStyleOptionFrameV2();
       
   146     QStyleOptionFrameV2(const QStyleOptionFrameV2 &other) : QStyleOptionFrame(Version) { *this = other; }
       
   147     QStyleOptionFrameV2(const QStyleOptionFrame &other);
       
   148     QStyleOptionFrameV2 &operator=(const QStyleOptionFrame &other);
       
   149 
       
   150 protected:
       
   151     QStyleOptionFrameV2(int version);
       
   152 };
       
   153 
       
   154 Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionFrameV2::FrameFeatures)
       
   155 
       
   156 
       
   157 class Q_GUI_EXPORT QStyleOptionFrameV3 : public QStyleOptionFrameV2
       
   158 {
       
   159 public:
       
   160     enum StyleOptionVersion { Version = 3 };
       
   161     QFrame::Shape frameShape : 4;
       
   162     uint unused : 28;
       
   163 
       
   164     QStyleOptionFrameV3();
       
   165     QStyleOptionFrameV3(const QStyleOptionFrameV3 &other) : QStyleOptionFrameV2(Version) { *this = other; }
       
   166     QStyleOptionFrameV3(const QStyleOptionFrame &other);
       
   167     QStyleOptionFrameV3 &operator=(const QStyleOptionFrame &other);
       
   168 
       
   169 protected:
       
   170     QStyleOptionFrameV3(int version);
       
   171 };
       
   172 
       
   173 
       
   174 #ifndef QT_NO_TABWIDGET
       
   175 class Q_GUI_EXPORT QStyleOptionTabWidgetFrame : public QStyleOption
       
   176 {
       
   177 public:
       
   178     enum StyleOptionType { Type = SO_TabWidgetFrame };
       
   179     enum StyleOptionVersion { Version = 1 };
       
   180 
       
   181     int lineWidth;
       
   182     int midLineWidth;
       
   183     QTabBar::Shape shape;
       
   184     QSize tabBarSize;
       
   185     QSize rightCornerWidgetSize;
       
   186     QSize leftCornerWidgetSize;
       
   187 
       
   188     QStyleOptionTabWidgetFrame();
       
   189     inline QStyleOptionTabWidgetFrame(const QStyleOptionTabWidgetFrame &other)
       
   190         : QStyleOption(Version, Type) { *this = other; }
       
   191 
       
   192 protected:
       
   193     QStyleOptionTabWidgetFrame(int version);
       
   194 };
       
   195 #endif
       
   196 
       
   197 #ifndef QT_NO_TABBAR
       
   198 class Q_GUI_EXPORT QStyleOptionTabBarBase : public QStyleOption
       
   199 {
       
   200 public:
       
   201     enum StyleOptionType { Type = SO_TabBarBase };
       
   202     enum StyleOptionVersion { Version = 1 };
       
   203 
       
   204     QTabBar::Shape shape;
       
   205     QRect tabBarRect;
       
   206     QRect selectedTabRect;
       
   207 
       
   208     QStyleOptionTabBarBase();
       
   209     QStyleOptionTabBarBase(const QStyleOptionTabBarBase &other) : QStyleOption(Version, Type) { *this = other; }
       
   210 
       
   211 protected:
       
   212     QStyleOptionTabBarBase(int version);
       
   213 };
       
   214 
       
   215 class Q_GUI_EXPORT QStyleOptionTabBarBaseV2 : public QStyleOptionTabBarBase
       
   216 {
       
   217 public:
       
   218     enum StyleOptionVersion { Version = 2 };
       
   219     bool documentMode;
       
   220     QStyleOptionTabBarBaseV2();
       
   221     QStyleOptionTabBarBaseV2(const QStyleOptionTabBarBaseV2 &other) : QStyleOptionTabBarBase(Version) { *this = other; }
       
   222     QStyleOptionTabBarBaseV2(const QStyleOptionTabBarBase &other);
       
   223     QStyleOptionTabBarBaseV2 &operator=(const QStyleOptionTabBarBase &other);
       
   224 
       
   225 protected:
       
   226     QStyleOptionTabBarBaseV2(int version);
       
   227 };
       
   228 
       
   229 #endif
       
   230 
       
   231 class Q_GUI_EXPORT QStyleOptionHeader : public QStyleOption
       
   232 {
       
   233 public:
       
   234     enum StyleOptionType { Type = SO_Header };
       
   235     enum StyleOptionVersion { Version = 1 };
       
   236 
       
   237     enum SectionPosition { Beginning, Middle, End, OnlyOneSection };
       
   238     enum SelectedPosition { NotAdjacent, NextIsSelected, PreviousIsSelected,
       
   239                             NextAndPreviousAreSelected };
       
   240     enum SortIndicator { None, SortUp, SortDown };
       
   241 
       
   242     int section;
       
   243     QString text;
       
   244     Qt::Alignment textAlignment;
       
   245     QIcon icon;
       
   246     Qt::Alignment iconAlignment;
       
   247     SectionPosition position;
       
   248     SelectedPosition selectedPosition;
       
   249     SortIndicator sortIndicator;
       
   250     Qt::Orientation orientation;
       
   251 
       
   252     QStyleOptionHeader();
       
   253     QStyleOptionHeader(const QStyleOptionHeader &other) : QStyleOption(Version, Type) { *this = other; }
       
   254 
       
   255 protected:
       
   256     QStyleOptionHeader(int version);
       
   257 };
       
   258 
       
   259 class Q_GUI_EXPORT QStyleOptionButton : public QStyleOption
       
   260 {
       
   261 public:
       
   262     enum StyleOptionType { Type = SO_Button };
       
   263     enum StyleOptionVersion { Version = 1 };
       
   264 
       
   265     enum ButtonFeature { None = 0x00, Flat = 0x01, HasMenu = 0x02, DefaultButton = 0x04,
       
   266                          AutoDefaultButton = 0x08, CommandLinkButton = 0x10  };
       
   267     Q_DECLARE_FLAGS(ButtonFeatures, ButtonFeature)
       
   268 
       
   269     ButtonFeatures features;
       
   270     QString text;
       
   271     QIcon icon;
       
   272     QSize iconSize;
       
   273 
       
   274     QStyleOptionButton();
       
   275     QStyleOptionButton(const QStyleOptionButton &other) : QStyleOption(Version, Type) { *this = other; }
       
   276 
       
   277 protected:
       
   278     QStyleOptionButton(int version);
       
   279 };
       
   280 
       
   281 Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionButton::ButtonFeatures)
       
   282 
       
   283 #ifndef QT_NO_TABBAR
       
   284 class Q_GUI_EXPORT QStyleOptionTab : public QStyleOption
       
   285 {
       
   286 public:
       
   287     enum StyleOptionType { Type = SO_Tab };
       
   288     enum StyleOptionVersion { Version = 1 };
       
   289 
       
   290     enum TabPosition { Beginning, Middle, End, OnlyOneTab };
       
   291     enum SelectedPosition { NotAdjacent, NextIsSelected, PreviousIsSelected };
       
   292     enum CornerWidget { NoCornerWidgets = 0x00, LeftCornerWidget = 0x01,
       
   293                         RightCornerWidget = 0x02 };
       
   294     Q_DECLARE_FLAGS(CornerWidgets, CornerWidget)
       
   295 
       
   296     QTabBar::Shape shape;
       
   297     QString text;
       
   298     QIcon icon;
       
   299     int row;
       
   300     TabPosition position;
       
   301     SelectedPosition selectedPosition;
       
   302     CornerWidgets cornerWidgets;
       
   303 
       
   304     QStyleOptionTab();
       
   305     QStyleOptionTab(const QStyleOptionTab &other) : QStyleOption(Version, Type) { *this = other; }
       
   306 
       
   307 protected:
       
   308     QStyleOptionTab(int version);
       
   309 };
       
   310 
       
   311 Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionTab::CornerWidgets)
       
   312 
       
   313 class Q_GUI_EXPORT QStyleOptionTabV2 : public QStyleOptionTab
       
   314 {
       
   315 public:
       
   316     enum StyleOptionVersion { Version = 2 };
       
   317     QSize iconSize;
       
   318     QStyleOptionTabV2();
       
   319     QStyleOptionTabV2(const QStyleOptionTabV2 &other) : QStyleOptionTab(Version) { *this = other; }
       
   320     QStyleOptionTabV2(const QStyleOptionTab &other);
       
   321     QStyleOptionTabV2 &operator=(const QStyleOptionTab &other);
       
   322 
       
   323 protected:
       
   324     QStyleOptionTabV2(int version);
       
   325 };
       
   326 
       
   327 class Q_GUI_EXPORT QStyleOptionTabV3 : public QStyleOptionTabV2
       
   328 {
       
   329 public:
       
   330     enum StyleOptionVersion { Version = 3 };
       
   331     bool documentMode;
       
   332     QSize leftButtonSize;
       
   333     QSize rightButtonSize;
       
   334     QStyleOptionTabV3();
       
   335     QStyleOptionTabV3(const QStyleOptionTabV3 &other) : QStyleOptionTabV2(Version) { *this = other; }
       
   336     QStyleOptionTabV3(const QStyleOptionTabV2 &other) : QStyleOptionTabV2(Version) { *this = other; }
       
   337     QStyleOptionTabV3(const QStyleOptionTab &other);
       
   338     QStyleOptionTabV3 &operator=(const QStyleOptionTab &other);
       
   339 
       
   340 protected:
       
   341     QStyleOptionTabV3(int version);
       
   342 };
       
   343 
       
   344 #endif
       
   345 
       
   346 
       
   347 #ifndef QT_NO_TOOLBAR
       
   348 
       
   349 class Q_GUI_EXPORT QStyleOptionToolBar : public QStyleOption
       
   350 {
       
   351 public:
       
   352     enum StyleOptionType { Type = SO_ToolBar };
       
   353     enum StyleOptionVersion { Version = 1 };
       
   354     enum ToolBarPosition { Beginning, Middle, End, OnlyOne };
       
   355     enum ToolBarFeature { None = 0x0, Movable = 0x1 };
       
   356     Q_DECLARE_FLAGS(ToolBarFeatures, ToolBarFeature)
       
   357     ToolBarPosition positionOfLine; // The toolbar line position
       
   358     ToolBarPosition positionWithinLine; // The position within a toolbar
       
   359     Qt::ToolBarArea toolBarArea; // The toolbar docking area
       
   360     ToolBarFeatures features;
       
   361     int lineWidth;
       
   362     int midLineWidth;
       
   363     QStyleOptionToolBar();
       
   364     QStyleOptionToolBar(const QStyleOptionToolBar &other) : QStyleOption(Version, Type) { *this = other; }
       
   365 
       
   366 protected:
       
   367     QStyleOptionToolBar(int version);
       
   368 };
       
   369 
       
   370 Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionToolBar::ToolBarFeatures)
       
   371 
       
   372 #endif
       
   373 
       
   374 
       
   375 
       
   376 class Q_GUI_EXPORT QStyleOptionProgressBar : public QStyleOption
       
   377 {
       
   378 public:
       
   379     enum StyleOptionType { Type = SO_ProgressBar };
       
   380     enum StyleOptionVersion { Version = 1 };
       
   381 
       
   382     int minimum;
       
   383     int maximum;
       
   384     int progress;
       
   385     QString text;
       
   386     Qt::Alignment textAlignment;
       
   387     bool textVisible;
       
   388 
       
   389     QStyleOptionProgressBar();
       
   390     QStyleOptionProgressBar(const QStyleOptionProgressBar &other) : QStyleOption(Version, Type) { *this = other; }
       
   391 
       
   392 protected:
       
   393     QStyleOptionProgressBar(int version);
       
   394 };
       
   395 
       
   396 // Adds style info for vertical progress bars
       
   397 class Q_GUI_EXPORT QStyleOptionProgressBarV2 : public QStyleOptionProgressBar
       
   398 {
       
   399 public:
       
   400     enum StyleOptionType { Type = SO_ProgressBar };
       
   401     enum StyleOptionVersion { Version = 2 };
       
   402     Qt::Orientation orientation;
       
   403     bool invertedAppearance;
       
   404     bool bottomToTop;
       
   405 
       
   406     QStyleOptionProgressBarV2();
       
   407     QStyleOptionProgressBarV2(const QStyleOptionProgressBar &other);
       
   408     QStyleOptionProgressBarV2(const QStyleOptionProgressBarV2 &other);
       
   409     QStyleOptionProgressBarV2 &operator=(const QStyleOptionProgressBar &other);
       
   410 
       
   411 protected:
       
   412     QStyleOptionProgressBarV2(int version);
       
   413 };
       
   414 
       
   415 class Q_GUI_EXPORT QStyleOptionMenuItem : public QStyleOption
       
   416 {
       
   417 public:
       
   418     enum StyleOptionType { Type = SO_MenuItem };
       
   419     enum StyleOptionVersion { Version = 1 };
       
   420 
       
   421     enum MenuItemType { Normal, DefaultItem, Separator, SubMenu, Scroller, TearOff, Margin,
       
   422                         EmptyArea };
       
   423     enum CheckType { NotCheckable, Exclusive, NonExclusive };
       
   424 
       
   425     MenuItemType menuItemType;
       
   426     CheckType checkType;
       
   427     bool checked;
       
   428     bool menuHasCheckableItems;
       
   429     QRect menuRect;
       
   430     QString text;
       
   431     QIcon icon;
       
   432     int maxIconWidth;
       
   433     int tabWidth;
       
   434     QFont font;
       
   435 
       
   436     QStyleOptionMenuItem();
       
   437     QStyleOptionMenuItem(const QStyleOptionMenuItem &other) : QStyleOption(Version, Type) { *this = other; }
       
   438 
       
   439 protected:
       
   440     QStyleOptionMenuItem(int version);
       
   441 };
       
   442 
       
   443 class Q_GUI_EXPORT QStyleOptionQ3ListViewItem : public QStyleOption
       
   444 {
       
   445 public:
       
   446     enum StyleOptionType { Type = SO_Q3ListViewItem };
       
   447     enum StyleOptionVersion { Version = 1 };
       
   448 
       
   449     enum Q3ListViewItemFeature { None = 0x00, Expandable = 0x01, MultiLine = 0x02, Visible = 0x04,
       
   450                                  ParentControl = 0x08 };
       
   451     Q_DECLARE_FLAGS(Q3ListViewItemFeatures, Q3ListViewItemFeature)
       
   452 
       
   453     Q3ListViewItemFeatures features;
       
   454     int height;
       
   455     int totalHeight;
       
   456     int itemY;
       
   457     int childCount;
       
   458 
       
   459     QStyleOptionQ3ListViewItem();
       
   460     QStyleOptionQ3ListViewItem(const QStyleOptionQ3ListViewItem &other) : QStyleOption(Version, Type) { *this = other; }
       
   461 
       
   462 protected:
       
   463     QStyleOptionQ3ListViewItem(int version);
       
   464 };
       
   465 
       
   466 Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionQ3ListViewItem::Q3ListViewItemFeatures)
       
   467 
       
   468 class Q_GUI_EXPORT QStyleOptionQ3DockWindow : public QStyleOption
       
   469 {
       
   470 public:
       
   471     enum StyleOptionType { Type = SO_Q3DockWindow };
       
   472     enum StyleOptionVersion { Version = 1 };
       
   473 
       
   474     bool docked;
       
   475     bool closeEnabled;
       
   476 
       
   477     QStyleOptionQ3DockWindow();
       
   478     QStyleOptionQ3DockWindow(const QStyleOptionQ3DockWindow &other) : QStyleOption(Version, Type) { *this = other; }
       
   479 
       
   480 protected:
       
   481     QStyleOptionQ3DockWindow(int version);
       
   482 };
       
   483 
       
   484 class Q_GUI_EXPORT QStyleOptionDockWidget : public QStyleOption
       
   485 {
       
   486 public:
       
   487     enum StyleOptionType { Type = SO_DockWidget };
       
   488     enum StyleOptionVersion { Version = 1 };
       
   489 
       
   490     QString title;
       
   491     bool closable;
       
   492     bool movable;
       
   493     bool floatable;
       
   494 
       
   495     QStyleOptionDockWidget();
       
   496     QStyleOptionDockWidget(const QStyleOptionDockWidget &other) : QStyleOption(Version, Type) { *this = other; }
       
   497 
       
   498 protected:
       
   499     QStyleOptionDockWidget(int version);
       
   500 };
       
   501 
       
   502 class Q_GUI_EXPORT QStyleOptionDockWidgetV2 : public QStyleOptionDockWidget
       
   503 {
       
   504 public:
       
   505     enum StyleOptionVersion { Version = 2 };
       
   506 
       
   507     bool verticalTitleBar;
       
   508 
       
   509     QStyleOptionDockWidgetV2();
       
   510     QStyleOptionDockWidgetV2(const QStyleOptionDockWidgetV2 &other)
       
   511         : QStyleOptionDockWidget(Version) { *this = other; }
       
   512     QStyleOptionDockWidgetV2(const QStyleOptionDockWidget &other);
       
   513     QStyleOptionDockWidgetV2 &operator = (const QStyleOptionDockWidget &other);
       
   514 
       
   515 protected:
       
   516     QStyleOptionDockWidgetV2(int version);
       
   517 };
       
   518 
       
   519 class Q_GUI_EXPORT QStyleOptionViewItem : public QStyleOption
       
   520 {
       
   521 public:
       
   522     enum StyleOptionType { Type = SO_ViewItem };
       
   523     enum StyleOptionVersion { Version = 1 };
       
   524 
       
   525     enum Position { Left, Right, Top, Bottom };
       
   526 
       
   527     Qt::Alignment displayAlignment;
       
   528     Qt::Alignment decorationAlignment;
       
   529     Qt::TextElideMode textElideMode;
       
   530     Position decorationPosition;
       
   531     QSize decorationSize;
       
   532     QFont font;
       
   533     bool showDecorationSelected;
       
   534 
       
   535     QStyleOptionViewItem();
       
   536     QStyleOptionViewItem(const QStyleOptionViewItem &other) : QStyleOption(Version, Type) { *this = other; }
       
   537 
       
   538 protected:
       
   539     QStyleOptionViewItem(int version);
       
   540 };
       
   541 
       
   542 class Q_GUI_EXPORT QStyleOptionViewItemV2 : public QStyleOptionViewItem
       
   543 {
       
   544 public:
       
   545     enum StyleOptionVersion { Version = 2 };
       
   546 
       
   547     enum ViewItemFeature {
       
   548         None = 0x00,
       
   549         WrapText = 0x01,
       
   550         Alternate = 0x02,
       
   551         HasCheckIndicator = 0x04,
       
   552         HasDisplay = 0x08,
       
   553         HasDecoration = 0x10
       
   554     };
       
   555     Q_DECLARE_FLAGS(ViewItemFeatures, ViewItemFeature)
       
   556 
       
   557     ViewItemFeatures features;
       
   558 
       
   559     QStyleOptionViewItemV2();
       
   560     QStyleOptionViewItemV2(const QStyleOptionViewItemV2 &other) : QStyleOptionViewItem(Version) { *this = other; }
       
   561     QStyleOptionViewItemV2(const QStyleOptionViewItem &other);
       
   562     QStyleOptionViewItemV2 &operator=(const QStyleOptionViewItem &other);
       
   563 
       
   564 protected:
       
   565     QStyleOptionViewItemV2(int version);
       
   566 };
       
   567 
       
   568 Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionViewItemV2::ViewItemFeatures)
       
   569 
       
   570 class Q_GUI_EXPORT QStyleOptionViewItemV3 : public QStyleOptionViewItemV2
       
   571 {
       
   572 public:
       
   573     enum StyleOptionVersion { Version = 3 };
       
   574 
       
   575     QLocale locale;
       
   576     const QWidget *widget;
       
   577 
       
   578     QStyleOptionViewItemV3();
       
   579     QStyleOptionViewItemV3(const QStyleOptionViewItemV3 &other)
       
   580         : QStyleOptionViewItemV2(Version) { *this = other; }
       
   581     QStyleOptionViewItemV3(const QStyleOptionViewItem &other);
       
   582     QStyleOptionViewItemV3 &operator = (const QStyleOptionViewItem &other);
       
   583 
       
   584 protected:
       
   585     QStyleOptionViewItemV3(int version);
       
   586 };
       
   587 
       
   588 #ifndef QT_NO_ITEMVIEWS
       
   589 class Q_GUI_EXPORT QStyleOptionViewItemV4 : public QStyleOptionViewItemV3
       
   590 {
       
   591 public:
       
   592     enum StyleOptionVersion { Version = 4 };
       
   593     enum ViewItemPosition { Invalid, Beginning, Middle, End, OnlyOne };
       
   594 
       
   595     QModelIndex index;
       
   596     Qt::CheckState checkState;
       
   597     QIcon icon;
       
   598     QString text;
       
   599     ViewItemPosition viewItemPosition;
       
   600     QBrush backgroundBrush;
       
   601 
       
   602     QStyleOptionViewItemV4();
       
   603     QStyleOptionViewItemV4(const QStyleOptionViewItemV4 &other)
       
   604         : QStyleOptionViewItemV3(Version) { *this = other; }
       
   605     QStyleOptionViewItemV4(const QStyleOptionViewItem &other);
       
   606     QStyleOptionViewItemV4 &operator = (const QStyleOptionViewItem &other);
       
   607 
       
   608 protected:
       
   609     QStyleOptionViewItemV4(int version);
       
   610 };
       
   611 #endif
       
   612 
       
   613 class Q_GUI_EXPORT QStyleOptionToolBox : public QStyleOption
       
   614 {
       
   615 public:
       
   616     enum StyleOptionType { Type = SO_ToolBox };
       
   617     enum StyleOptionVersion { Version = 1 };
       
   618 
       
   619     QString text;
       
   620     QIcon icon;
       
   621 
       
   622     QStyleOptionToolBox();
       
   623     QStyleOptionToolBox(const QStyleOptionToolBox &other) : QStyleOption(Version, Type) { *this = other; }
       
   624 
       
   625 protected:
       
   626     QStyleOptionToolBox(int version);
       
   627 };
       
   628 
       
   629 class Q_GUI_EXPORT QStyleOptionToolBoxV2 : public QStyleOptionToolBox
       
   630 {
       
   631 public:
       
   632     enum StyleOptionVersion { Version = 2 };
       
   633     enum TabPosition { Beginning, Middle, End, OnlyOneTab };
       
   634     enum SelectedPosition { NotAdjacent, NextIsSelected, PreviousIsSelected };
       
   635 
       
   636     TabPosition position;
       
   637     SelectedPosition selectedPosition;
       
   638 
       
   639     QStyleOptionToolBoxV2();
       
   640     QStyleOptionToolBoxV2(const QStyleOptionToolBoxV2 &other) : QStyleOptionToolBox(Version) { *this = other; }
       
   641     QStyleOptionToolBoxV2(const QStyleOptionToolBox &other);
       
   642     QStyleOptionToolBoxV2 &operator=(const QStyleOptionToolBox &other);
       
   643 
       
   644 protected:
       
   645     QStyleOptionToolBoxV2(int version);
       
   646 };
       
   647 
       
   648 #ifndef QT_NO_RUBBERBAND
       
   649 class Q_GUI_EXPORT QStyleOptionRubberBand : public QStyleOption
       
   650 {
       
   651 public:
       
   652     enum StyleOptionType { Type = SO_RubberBand };
       
   653     enum StyleOptionVersion { Version = 1 };
       
   654 
       
   655     QRubberBand::Shape shape;
       
   656     bool opaque;
       
   657 
       
   658     QStyleOptionRubberBand();
       
   659     QStyleOptionRubberBand(const QStyleOptionRubberBand &other) : QStyleOption(Version, Type) { *this = other; }
       
   660 
       
   661 protected:
       
   662     QStyleOptionRubberBand(int version);
       
   663 };
       
   664 #endif // QT_NO_RUBBERBAND
       
   665 
       
   666 // -------------------------- Complex style options -------------------------------
       
   667 class Q_GUI_EXPORT QStyleOptionComplex : public QStyleOption
       
   668 {
       
   669 public:
       
   670     enum StyleOptionType { Type = SO_Complex };
       
   671     enum StyleOptionVersion { Version = 1 };
       
   672 
       
   673     QStyle::SubControls subControls;
       
   674     QStyle::SubControls activeSubControls;
       
   675 
       
   676     QStyleOptionComplex(int version = QStyleOptionComplex::Version, int type = SO_Complex);
       
   677     QStyleOptionComplex(const QStyleOptionComplex &other) : QStyleOption(Version, Type) { *this = other; }
       
   678 };
       
   679 
       
   680 #ifndef QT_NO_SLIDER
       
   681 class Q_GUI_EXPORT QStyleOptionSlider : public QStyleOptionComplex
       
   682 {
       
   683 public:
       
   684     enum StyleOptionType { Type = SO_Slider };
       
   685     enum StyleOptionVersion { Version = 1 };
       
   686 
       
   687     Qt::Orientation orientation;
       
   688     int minimum;
       
   689     int maximum;
       
   690     QSlider::TickPosition tickPosition;
       
   691     int tickInterval;
       
   692     bool upsideDown;
       
   693     int sliderPosition;
       
   694     int sliderValue;
       
   695     int singleStep;
       
   696     int pageStep;
       
   697     qreal notchTarget;
       
   698     bool dialWrapping;
       
   699 
       
   700     QStyleOptionSlider();
       
   701     QStyleOptionSlider(const QStyleOptionSlider &other) : QStyleOptionComplex(Version, Type) { *this = other; }
       
   702 
       
   703 protected:
       
   704     QStyleOptionSlider(int version);
       
   705 };
       
   706 #endif // QT_NO_SLIDER
       
   707 
       
   708 #ifndef QT_NO_SPINBOX
       
   709 class Q_GUI_EXPORT QStyleOptionSpinBox : public QStyleOptionComplex
       
   710 {
       
   711 public:
       
   712     enum StyleOptionType { Type = SO_SpinBox };
       
   713     enum StyleOptionVersion { Version = 1 };
       
   714 
       
   715     QAbstractSpinBox::ButtonSymbols buttonSymbols;
       
   716     QAbstractSpinBox::StepEnabled stepEnabled;
       
   717     bool frame;
       
   718 
       
   719     QStyleOptionSpinBox();
       
   720     QStyleOptionSpinBox(const QStyleOptionSpinBox &other) : QStyleOptionComplex(Version, Type) { *this = other; }
       
   721 
       
   722 protected:
       
   723     QStyleOptionSpinBox(int version);
       
   724 };
       
   725 #endif // QT_NO_SPINBOX
       
   726 
       
   727 class Q_GUI_EXPORT QStyleOptionQ3ListView : public QStyleOptionComplex
       
   728 {
       
   729 public:
       
   730     enum StyleOptionType { Type = SO_Q3ListView };
       
   731     enum StyleOptionVersion { Version = 1 };
       
   732 
       
   733     QList<QStyleOptionQ3ListViewItem> items;
       
   734     QPalette viewportPalette;
       
   735     QPalette::ColorRole viewportBGRole;
       
   736     int sortColumn;
       
   737     int itemMargin;
       
   738     int treeStepSize;
       
   739     bool rootIsDecorated;
       
   740 
       
   741     QStyleOptionQ3ListView();
       
   742     QStyleOptionQ3ListView(const QStyleOptionQ3ListView &other) : QStyleOptionComplex(Version, Type) { *this = other; }
       
   743 
       
   744 protected:
       
   745     QStyleOptionQ3ListView(int version);
       
   746 };
       
   747 
       
   748 class Q_GUI_EXPORT QStyleOptionToolButton : public QStyleOptionComplex
       
   749 {
       
   750 public:
       
   751     enum StyleOptionType { Type = SO_ToolButton };
       
   752     enum StyleOptionVersion { Version = 1 };
       
   753 
       
   754     enum ToolButtonFeature { None = 0x00, Arrow = 0x01, Menu = 0x04, MenuButtonPopup = Menu, PopupDelay = 0x08,
       
   755                              HasMenu = 0x10 };
       
   756     Q_DECLARE_FLAGS(ToolButtonFeatures, ToolButtonFeature)
       
   757 
       
   758     ToolButtonFeatures features;
       
   759     QIcon icon;
       
   760     QSize iconSize;
       
   761     QString text;
       
   762     Qt::ArrowType arrowType;
       
   763     Qt::ToolButtonStyle toolButtonStyle;
       
   764     QPoint pos;
       
   765     QFont font;
       
   766 
       
   767     QStyleOptionToolButton();
       
   768     QStyleOptionToolButton(const QStyleOptionToolButton &other) : QStyleOptionComplex(Version, Type) { *this = other; }
       
   769 
       
   770 protected:
       
   771     QStyleOptionToolButton(int version);
       
   772 };
       
   773 
       
   774 Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionToolButton::ToolButtonFeatures)
       
   775 
       
   776 class Q_GUI_EXPORT QStyleOptionComboBox : public QStyleOptionComplex
       
   777 {
       
   778 public:
       
   779     enum StyleOptionType { Type = SO_ComboBox };
       
   780     enum StyleOptionVersion { Version = 1 };
       
   781 
       
   782     bool editable;
       
   783     QRect popupRect;
       
   784     bool frame;
       
   785     QString currentText;
       
   786     QIcon currentIcon;
       
   787     QSize iconSize;
       
   788 
       
   789     QStyleOptionComboBox();
       
   790     QStyleOptionComboBox(const QStyleOptionComboBox &other) : QStyleOptionComplex(Version, Type) { *this = other; }
       
   791 
       
   792 protected:
       
   793     QStyleOptionComboBox(int version);
       
   794 };
       
   795 
       
   796 class Q_GUI_EXPORT QStyleOptionTitleBar : public QStyleOptionComplex
       
   797 {
       
   798 public:
       
   799     enum StyleOptionType { Type = SO_TitleBar };
       
   800     enum StyleOptionVersion { Version = 1 };
       
   801 
       
   802     QString text;
       
   803     QIcon icon;
       
   804     int titleBarState;
       
   805     Qt::WindowFlags titleBarFlags;
       
   806 
       
   807     QStyleOptionTitleBar();
       
   808     QStyleOptionTitleBar(const QStyleOptionTitleBar &other) : QStyleOptionComplex(Version, Type) { *this = other; }
       
   809 
       
   810 protected:
       
   811     QStyleOptionTitleBar(int version);
       
   812 };
       
   813 
       
   814 class Q_GUI_EXPORT QStyleOptionGroupBox : public QStyleOptionComplex
       
   815 {
       
   816 public:
       
   817     enum StyleOptionType { Type = SO_GroupBox };
       
   818     enum StyleOptionVersion { Version = 1 };
       
   819 
       
   820     QStyleOptionFrameV2::FrameFeatures features;
       
   821     QString text;
       
   822     Qt::Alignment textAlignment;
       
   823     QColor textColor;
       
   824     int lineWidth;
       
   825     int midLineWidth;
       
   826 
       
   827     QStyleOptionGroupBox();
       
   828     QStyleOptionGroupBox(const QStyleOptionGroupBox &other) : QStyleOptionComplex(Version, Type) { *this = other; }
       
   829 protected:
       
   830     QStyleOptionGroupBox(int version);
       
   831 };
       
   832 
       
   833 class Q_GUI_EXPORT QStyleOptionSizeGrip : public QStyleOptionComplex
       
   834 {
       
   835 public:
       
   836     enum StyleOptionType { Type = SO_SizeGrip };
       
   837     enum StyleOptionVersion { Version = 1 };
       
   838 
       
   839     Qt::Corner corner;
       
   840 
       
   841     QStyleOptionSizeGrip();
       
   842     QStyleOptionSizeGrip(const QStyleOptionSizeGrip &other) : QStyleOptionComplex(Version, Type) { *this = other; }
       
   843 protected:
       
   844     QStyleOptionSizeGrip(int version);
       
   845 };
       
   846 
       
   847 class Q_GUI_EXPORT QStyleOptionGraphicsItem : public QStyleOption
       
   848 {
       
   849 public:
       
   850     enum StyleOptionType { Type = SO_GraphicsItem };
       
   851     enum StyleOptionVersion { Version = 1 };
       
   852 
       
   853     QRectF exposedRect;
       
   854     QMatrix matrix;
       
   855     qreal levelOfDetail;
       
   856 
       
   857     QStyleOptionGraphicsItem();
       
   858     QStyleOptionGraphicsItem(const QStyleOptionGraphicsItem &other) : QStyleOption(Version, Type) { *this = other; }
       
   859     static qreal levelOfDetailFromTransform(const QTransform &worldTransform);
       
   860 protected:
       
   861     QStyleOptionGraphicsItem(int version);
       
   862 };
       
   863 
       
   864 template <typename T>
       
   865 T qstyleoption_cast(const QStyleOption *opt)
       
   866 {
       
   867     if (opt && opt->version >= static_cast<T>(0)->Version && (opt->type == static_cast<T>(0)->Type
       
   868         || int(static_cast<T>(0)->Type) == QStyleOption::SO_Default
       
   869         || (int(static_cast<T>(0)->Type) == QStyleOption::SO_Complex
       
   870             && opt->type > QStyleOption::SO_Complex)))
       
   871         return static_cast<T>(opt);
       
   872     return 0;
       
   873 }
       
   874 
       
   875 template <typename T>
       
   876 T qstyleoption_cast(QStyleOption *opt)
       
   877 {
       
   878     if (opt && opt->version >= static_cast<T>(0)->Version && (opt->type == static_cast<T>(0)->Type
       
   879         || int(static_cast<T>(0)->Type) == QStyleOption::SO_Default
       
   880         || (int(static_cast<T>(0)->Type) == QStyleOption::SO_Complex
       
   881             && opt->type > QStyleOption::SO_Complex)))
       
   882         return static_cast<T>(opt);
       
   883     return 0;
       
   884 }
       
   885 
       
   886 // -------------------------- QStyleHintReturn -------------------------------
       
   887 class Q_GUI_EXPORT QStyleHintReturn {
       
   888 public:
       
   889     enum HintReturnType {
       
   890         SH_Default=0xf000, SH_Mask, SH_Variant
       
   891     };
       
   892 
       
   893     enum StyleOptionType { Type = SH_Default };
       
   894     enum StyleOptionVersion { Version = 1 };
       
   895 
       
   896     QStyleHintReturn(int version = QStyleOption::Version, int type = SH_Default);
       
   897     ~QStyleHintReturn();
       
   898 
       
   899     int version;
       
   900     int type;
       
   901 };
       
   902 
       
   903 class Q_GUI_EXPORT QStyleHintReturnMask : public QStyleHintReturn {
       
   904 public:
       
   905     enum StyleOptionType { Type = SH_Mask };
       
   906     enum StyleOptionVersion { Version = 1 };
       
   907 
       
   908     QStyleHintReturnMask();
       
   909 
       
   910     QRegion region;
       
   911 };
       
   912 
       
   913 class Q_GUI_EXPORT QStyleHintReturnVariant : public QStyleHintReturn {
       
   914 public:
       
   915     enum StyleOptionType { Type = SH_Variant };
       
   916     enum StyleOptionVersion { Version = 1 };
       
   917 
       
   918     QStyleHintReturnVariant();
       
   919 
       
   920     QVariant variant;
       
   921 };
       
   922 
       
   923 template <typename T>
       
   924 T qstyleoption_cast(const QStyleHintReturn *hint)
       
   925 {
       
   926     if (hint && hint->version <= static_cast<T>(0)->Version &&
       
   927         (hint->type == static_cast<T>(0)->Type || int(static_cast<T>(0)->Type) == QStyleHintReturn::SH_Default))
       
   928         return static_cast<T>(hint);
       
   929     return 0;
       
   930 }
       
   931 
       
   932 template <typename T>
       
   933 T qstyleoption_cast(QStyleHintReturn *hint)
       
   934 {
       
   935     if (hint && hint->version <= static_cast<T>(0)->Version &&
       
   936         (hint->type == static_cast<T>(0)->Type || int(static_cast<T>(0)->Type) == QStyleHintReturn::SH_Default))
       
   937         return static_cast<T>(hint);
       
   938     return 0;
       
   939 }
       
   940 
       
   941 #if !defined(QT_NO_DEBUG_STREAM) && !defined(QT_NO_DEBUG)
       
   942 Q_GUI_EXPORT QDebug operator<<(QDebug debug, const QStyleOption::OptionType &optionType);
       
   943 Q_GUI_EXPORT QDebug operator<<(QDebug debug, const QStyleOption &option);
       
   944 #endif
       
   945 
       
   946 QT_END_NAMESPACE
       
   947 
       
   948 QT_END_HEADER
       
   949 
       
   950 #endif // QSTYLEOPTION_H