diff options
Diffstat (limited to 'Source/WebCore/platform/qt/RenderThemeQStyle.h')
-rw-r--r-- | Source/WebCore/platform/qt/RenderThemeQStyle.h | 158 |
1 files changed, 158 insertions, 0 deletions
diff --git a/Source/WebCore/platform/qt/RenderThemeQStyle.h b/Source/WebCore/platform/qt/RenderThemeQStyle.h new file mode 100644 index 000000000..08c18b971 --- /dev/null +++ b/Source/WebCore/platform/qt/RenderThemeQStyle.h @@ -0,0 +1,158 @@ +/* + * This file is part of the theme implementation for form controls in WebCore. + * + * Copyright (C) 2011-2012 Nokia Corporation and/or its subsidiary(-ies). + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + */ +#ifndef RenderThemeQStyle_h +#define RenderThemeQStyle_h + +#include "QStyleFacade.h" +#include "RenderThemeQt.h" + +namespace WebCore { + +class ScrollbarThemeQStyle; + +class Page; +class QStyleFacade; +struct QStyleFacadeOption; + +typedef QStyleFacade* (*QtStyleFactoryFunction)(Page*); + +class RenderThemeQStyle : public RenderThemeQt { +private: + friend class StylePainterQStyle; + + RenderThemeQStyle(Page*); + virtual ~RenderThemeQStyle(); + +public: + static PassRefPtr<RenderTheme> create(Page*); + + static void setStyleFactoryFunction(QtStyleFactoryFunction); + static QtStyleFactoryFunction styleFactory(); + + virtual void adjustSliderThumbSize(RenderStyle*, Element*) const; + + QStyleFacade* qStyle() { return m_qStyle.get(); } + +protected: + virtual void adjustButtonStyle(StyleResolver*, RenderStyle*, Element*) const; + virtual bool paintButton(RenderObject*, const PaintInfo&, const IntRect&); + + virtual bool paintTextField(RenderObject*, const PaintInfo&, const IntRect&); + + virtual bool paintTextArea(RenderObject*, const PaintInfo&, const IntRect&); + virtual void adjustTextAreaStyle(StyleResolver*, RenderStyle*, Element*) const; + + virtual bool paintMenuList(RenderObject*, const PaintInfo&, const IntRect&); + + virtual bool paintMenuListButton(RenderObject*, const PaintInfo&, const IntRect&); + virtual void adjustMenuListButtonStyle(StyleResolver*, RenderStyle*, Element*) const; + +#if ENABLE(PROGRESS_ELEMENT) + // Returns the duration of the animation for the progress bar. + virtual double animationDurationForProgressBar(RenderProgress*) const; + virtual bool paintProgressBar(RenderObject*, const PaintInfo&, const IntRect&); +#endif + + virtual bool paintSliderTrack(RenderObject*, const PaintInfo&, const IntRect&); + virtual void adjustSliderTrackStyle(StyleResolver*, RenderStyle*, Element*) const; + + virtual bool paintSliderThumb(RenderObject*, const PaintInfo&, const IntRect&); + virtual void adjustSliderThumbStyle(StyleResolver*, RenderStyle*, Element*) const; + + virtual bool paintSearchField(RenderObject*, const PaintInfo&, const IntRect&); + + virtual void adjustSearchFieldDecorationStyle(StyleResolver*, RenderStyle*, Element*) const; + virtual bool paintSearchFieldDecoration(RenderObject*, const PaintInfo&, const IntRect&); + + virtual void adjustSearchFieldResultsDecorationStyle(StyleResolver*, RenderStyle*, Element*) const; + virtual bool paintSearchFieldResultsDecoration(RenderObject*, const PaintInfo&, const IntRect&); + +#ifndef QT_NO_SPINBOX + virtual bool paintInnerSpinButton(RenderObject*, const PaintInfo&, const IntRect&); +#endif + +protected: + virtual void computeSizeBasedOnStyle(RenderStyle*) const; + + virtual QSharedPointer<StylePainter> getStylePainter(const PaintInfo&); + + virtual QRect inflateButtonRect(const QRect& originalRect) const; + + virtual void setPopupPadding(RenderStyle*) const; + + virtual QPalette colorPalette() const; + +private: + ControlPart initializeCommonQStyleOptions(QStyleFacadeOption&, RenderObject*) const; + + void setButtonPadding(RenderStyle*) const; + + void setPaletteFromPageClientIfExists(QPalette&) const; + +#ifdef Q_OS_MAC + int m_buttonFontPixelSize; +#endif + + OwnPtr<QStyleFacade> m_qStyle; +}; + +class StylePainterQStyle : public StylePainter { +public: + explicit StylePainterQStyle(RenderThemeQStyle*, const PaintInfo&, RenderObject*); + explicit StylePainterQStyle(ScrollbarThemeQStyle*, GraphicsContext*); + + bool isValid() const { return qStyle && qStyle->isValid() && StylePainter::isValid(); } + + QStyleFacade* qStyle; + QStyleFacadeOption styleOption; + ControlPart appearance; + + void paintButton(QStyleFacade::ButtonType type) + { qStyle->paintButton(painter, type, styleOption); } + void paintTextField() + { qStyle->paintTextField(painter, styleOption); } + void paintComboBox() + { qStyle->paintComboBox(painter, styleOption); } + void paintComboBoxArrow() + { qStyle->paintComboBoxArrow(painter, styleOption); } + void paintSliderTrack() + { qStyle->paintSliderTrack(painter, styleOption); } + void paintSliderThumb() + { qStyle->paintSliderThumb(painter, styleOption); } + void paintInnerSpinButton(bool spinBoxUp) + { qStyle->paintInnerSpinButton(painter, styleOption, spinBoxUp); } + void paintProgressBar(double progress, double animationProgress) + { qStyle->paintProgressBar(painter, styleOption, progress, animationProgress); } + void paintScrollCorner(const QRect& rect) + { qStyle->paintScrollCorner(painter, rect); } + void paintScrollBar() + { qStyle->paintScrollBar(painter, styleOption); } + +private: + void init(GraphicsContext*); + + Q_DISABLE_COPY(StylePainterQStyle) +}; + +} + +#endif // RenderThemeQStyle_h |