From 4fb0e52515d3f65aa335b9d5df8349d33535d434 Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Tue, 20 Nov 2012 13:41:59 +0100 Subject: Made QWindowsCEStyle internal We will take this opportynity to remove various QStyle specializations from the public API in Qt5. This gives us much more freedom, for example changing the inheritance hierarchy, pluginizing etc. without worrying about BC. => Use QStyleFactory and/or QProxyStyle instead of creating an instance or inheriting QWindowsCEStyle directly. Change-Id: I6b3c0554e7a2a4a5f0027f4ea1342fd332af89ad Reviewed-by: Andreas Holzammer Reviewed-by: Janne Anttila --- src/widgets/styles/qstylefactory.cpp | 2 +- src/widgets/styles/qwindowscestyle.cpp | 4 +- src/widgets/styles/qwindowscestyle.h | 103 --------------------- src/widgets/styles/qwindowscestyle_p.h | 103 +++++++++------------ src/widgets/styles/qwindowscestyle_p_p.h | 118 ++++++++++++++++++++++++ src/widgets/styles/styles.pri | 3 +- tests/auto/widgets/styles/qstyle/tst_qstyle.cpp | 7 +- 7 files changed, 169 insertions(+), 171 deletions(-) delete mode 100644 src/widgets/styles/qwindowscestyle.h create mode 100644 src/widgets/styles/qwindowscestyle_p_p.h diff --git a/src/widgets/styles/qstylefactory.cpp b/src/widgets/styles/qstylefactory.cpp index a9db52327d..b338d312d2 100644 --- a/src/widgets/styles/qstylefactory.cpp +++ b/src/widgets/styles/qstylefactory.cpp @@ -59,7 +59,7 @@ #include "qwindowsvistastyle_p.h" #endif #ifndef QT_NO_STYLE_WINDOWSCE -#include "qwindowscestyle.h" +#include "qwindowscestyle_p.h" #endif #ifndef QT_NO_STYLE_WINDOWSMOBILE #include "qwindowsmobilestyle.h" diff --git a/src/widgets/styles/qwindowscestyle.cpp b/src/widgets/styles/qwindowscestyle.cpp index 8accf18da9..3260cfb83d 100644 --- a/src/widgets/styles/qwindowscestyle.cpp +++ b/src/widgets/styles/qwindowscestyle.cpp @@ -39,7 +39,7 @@ ** ****************************************************************************/ -#include "qwindowscestyle.h" +#include "qwindowscestyle_p.h" #if !defined(QT_NO_STYLE_WINDOWSCE) || defined(QT_PLUGIN) @@ -50,7 +50,7 @@ #include "qpaintengine.h" #include "qpainter.h" #include "qstyleoption.h" -#include "qwindowscestyle_p.h" +#include "qwindowscestyle_p_p.h" #include "qdebug.h" #include "qdrawutil.h" diff --git a/src/widgets/styles/qwindowscestyle.h b/src/widgets/styles/qwindowscestyle.h deleted file mode 100644 index 606cbafd48..0000000000 --- a/src/widgets/styles/qwindowscestyle.h +++ /dev/null @@ -1,103 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the QtGui module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Digia. For licensing terms and -** conditions see http://qt.digia.com/licensing. For further information -** use the contact form at http://qt.digia.com/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Digia gives you certain additional -** rights. These rights are described in the Digia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QWINDOWSCESTYLE_H -#define QWINDOWSCESTYLE_H - -#include - -QT_BEGIN_HEADER - -QT_BEGIN_NAMESPACE - - -#if !defined(QT_NO_STYLE_WINDOWSCE) - -class Q_WIDGETS_EXPORT QWindowsCEStyle : public QWindowsStyle -{ - Q_OBJECT -public: - QWindowsCEStyle(); - ~QWindowsCEStyle(); - - void drawPrimitive(PrimitiveElement element, const QStyleOption *option, - QPainter *painter, const QWidget *widget = 0) const; - - void drawControl(ControlElement element, const QStyleOption *option, - QPainter *painter, const QWidget *widget) const; - - void drawComplexControl(ComplexControl control, const QStyleOptionComplex *option, - QPainter *painter, const QWidget *widget) const; - - virtual void drawItemText(QPainter *painter, const QRect &rect, - int flags, const QPalette &pal, bool enabled, - const QString &text, QPalette::ColorRole textRole = QPalette::NoRole) const; - - QSize sizeFromContents(ContentsType type, const QStyleOption *option, - const QSize &size, const QWidget *widget) const; - - QRect subElementRect(SubElement element, const QStyleOption *option, const QWidget *widget) const; - QRect subControlRect(ComplexControl cc, const QStyleOptionComplex *opt, - SubControl sc, const QWidget *widget) const; - - SubControl hitTestComplexControl(ComplexControl control, const QStyleOptionComplex *option, - const QPoint &pos, const QWidget *widget = 0) const; - - QPixmap standardPixmap(StandardPixmap standardPixmap, const QStyleOption *opt, - const QWidget *widget = 0) const; - int pixelMetric(PixelMetric metric, const QStyleOption *option = 0, const QWidget *widget = 0) const; - - int styleHint(StyleHint hint, const QStyleOption *opt = 0, const QWidget *widget = 0, - QStyleHintReturn *returnData = 0) const; - - void polish(QWidget *widget); - void polish(QPalette &palette); - void polish(QApplication *app); - QPalette standardPalette() const; -}; - -#endif // QT_NO_STYLE_WINDOWSCE - -QT_END_NAMESPACE - -QT_END_HEADER - -#endif // QWINDOWSCESTYLE_H diff --git a/src/widgets/styles/qwindowscestyle_p.h b/src/widgets/styles/qwindowscestyle_p.h index 1db8582855..00dcfb1fc0 100644 --- a/src/widgets/styles/qwindowscestyle_p.h +++ b/src/widgets/styles/qwindowscestyle_p.h @@ -39,80 +39,65 @@ ** ****************************************************************************/ -#ifndef QWINDOWSCE_P_H -#define QWINDOWSCE_P_H - -#include "qwindowscestyle.h" -#include - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists for the convenience -// of qapplication_*.cpp, qwidget*.cpp and qfiledialog.cpp. This header -// file may change from version to version without notice, or even be removed. -// -// We mean it. -// +#ifndef QWINDOWSCESTYLE_P_H +#define QWINDOWSCESTYLE_P_H + +#include + +QT_BEGIN_HEADER QT_BEGIN_NAMESPACE -class QPainter; -class QPalette; -class QPoint; -class QColor; -class QBrush; -class QRect; - -// Private class -class QWindowsCEStylePrivate : public QWindowsStylePrivate -{ - Q_DECLARE_PUBLIC(QWindowsCEStyle) -public: - inline QWindowsCEStylePrivate() - { } - -static void drawWinCEButton(QPainter *p, int x, int y, int w, int h, - const QPalette &pal, bool sunken = false, - const QBrush *fill = 0); +#if !defined(QT_NO_STYLE_WINDOWSCE) -static void drawWinCEButton(QPainter *p, const QRect &r, - const QPalette &pal, bool sunken = false, - const QBrush *fill = 0); +class QWindowsCEStyle : public QWindowsStyle +{ + Q_OBJECT +public: + QWindowsCEStyle(); + ~QWindowsCEStyle(); -static void drawWinCEPanel(QPainter *p, int x, int y, int w, int h, - const QPalette &pal, bool sunken = false, - const QBrush *fill = 0); + void drawPrimitive(PrimitiveElement element, const QStyleOption *option, + QPainter *painter, const QWidget *widget = 0) const; -static void drawWinCEPanel(QPainter *p, const QRect &r, - const QPalette &pal, bool sunken = false, - const QBrush *fill = 0); + void drawControl(ControlElement element, const QStyleOption *option, + QPainter *painter, const QWidget *widget) const; -static void drawWinShades(QPainter *p, - int x, int y, int w, int h, - const QColor &c1, const QColor &c2, - const QColor &c3, const QColor &c4, - const QBrush *fill); + void drawComplexControl(ComplexControl control, const QStyleOptionComplex *option, + QPainter *painter, const QWidget *widget) const; -static void drawWinCEShades(QPainter *p, - int x, int y, int w, int h, - const QColor &c1, const QColor &c2, - const QColor &c3, const QColor &c4, - const QBrush *fill); + virtual void drawItemText(QPainter *painter, const QRect &rect, + int flags, const QPalette &pal, bool enabled, + const QString &text, QPalette::ColorRole textRole = QPalette::NoRole) const; -static void drawWinCEShadesSunken(QPainter *p, - int x, int y, int w, int h, - const QColor &c1, const QColor &c2, - const QColor &c3, const QColor &c4, - const QBrush *fill); + QSize sizeFromContents(ContentsType type, const QStyleOption *option, + const QSize &size, const QWidget *widget) const; + QRect subElementRect(SubElement element, const QStyleOption *option, const QWidget *widget) const; + QRect subControlRect(ComplexControl cc, const QStyleOptionComplex *opt, + SubControl sc, const QWidget *widget) const; + SubControl hitTestComplexControl(ComplexControl control, const QStyleOptionComplex *option, + const QPoint &pos, const QWidget *widget = 0) const; + QPixmap standardPixmap(StandardPixmap standardPixmap, const QStyleOption *opt, + const QWidget *widget = 0) const; + int pixelMetric(PixelMetric metric, const QStyleOption *option = 0, const QWidget *widget = 0) const; + int styleHint(StyleHint hint, const QStyleOption *opt = 0, const QWidget *widget = 0, + QStyleHintReturn *returnData = 0) const; + + void polish(QWidget *widget); + void polish(QPalette &palette); + void polish(QApplication *app); + QPalette standardPalette() const; }; +#endif // QT_NO_STYLE_WINDOWSCE + QT_END_NAMESPACE -#endif //QWINDOWSCE_P_H +QT_END_HEADER + +#endif // QWINDOWSCESTYLE_P_H diff --git a/src/widgets/styles/qwindowscestyle_p_p.h b/src/widgets/styles/qwindowscestyle_p_p.h new file mode 100644 index 0000000000..5f1e33016d --- /dev/null +++ b/src/widgets/styles/qwindowscestyle_p_p.h @@ -0,0 +1,118 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QWINDOWSCESTYLE_P_P_H +#define QWINDOWSCESTYLE_P_P_H + +#include "qwindowscestyle_p.h" +#include + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qapplication_*.cpp, qwidget*.cpp and qfiledialog.cpp. This header +// file may change from version to version without notice, or even be removed. +// +// We mean it. +// + +QT_BEGIN_NAMESPACE + +class QPainter; +class QPalette; +class QPoint; +class QColor; +class QBrush; +class QRect; + +// Private class +class QWindowsCEStylePrivate : public QWindowsStylePrivate +{ + Q_DECLARE_PUBLIC(QWindowsCEStyle) +public: + inline QWindowsCEStylePrivate() + { } + + +static void drawWinCEButton(QPainter *p, int x, int y, int w, int h, + const QPalette &pal, bool sunken = false, + const QBrush *fill = 0); + +static void drawWinCEButton(QPainter *p, const QRect &r, + const QPalette &pal, bool sunken = false, + const QBrush *fill = 0); + +static void drawWinCEPanel(QPainter *p, int x, int y, int w, int h, + const QPalette &pal, bool sunken = false, + const QBrush *fill = 0); + +static void drawWinCEPanel(QPainter *p, const QRect &r, + const QPalette &pal, bool sunken = false, + const QBrush *fill = 0); + +static void drawWinShades(QPainter *p, + int x, int y, int w, int h, + const QColor &c1, const QColor &c2, + const QColor &c3, const QColor &c4, + const QBrush *fill); + +static void drawWinCEShades(QPainter *p, + int x, int y, int w, int h, + const QColor &c1, const QColor &c2, + const QColor &c3, const QColor &c4, + const QBrush *fill); + +static void drawWinCEShadesSunken(QPainter *p, + int x, int y, int w, int h, + const QColor &c1, const QColor &c2, + const QColor &c3, const QColor &c4, + const QBrush *fill); + + + + +}; + +QT_END_NAMESPACE + +#endif //QWINDOWSCESTYLE_P_P_H diff --git a/src/widgets/styles/styles.pri b/src/widgets/styles/styles.pri index c68018f2a2..25744d2546 100644 --- a/src/widgets/styles/styles.pri +++ b/src/widgets/styles/styles.pri @@ -121,7 +121,8 @@ contains( styles, fusion ) { } contains( styles, windowsce ) { - HEADERS += styles/qwindowscestyle.h + HEADERS += styles/qwindowscestyle_p.h + HEADERS += styles/qwindowscestyle_p_p.h SOURCES += styles/qwindowscestyle.cpp } else { DEFINES += QT_NO_STYLE_WINDOWSCE diff --git a/tests/auto/widgets/styles/qstyle/tst_qstyle.cpp b/tests/auto/widgets/styles/qstyle/tst_qstyle.cpp index d4d26cc9cf..3864f22059 100644 --- a/tests/auto/widgets/styles/qstyle/tst_qstyle.cpp +++ b/tests/auto/widgets/styles/qstyle/tst_qstyle.cpp @@ -75,10 +75,6 @@ #include #endif -#ifdef Q_OS_WINCE -#include -#endif - #ifdef Q_OS_WINCE_WM #include #include @@ -541,8 +537,9 @@ void tst_QStyle::testMacStyle() // WindowsCEStyle style void tst_QStyle::testWindowsCEStyle() { - QWindowsCEStyle cstyle; + QStyle *cstyle = QStyleFactory::create("WindowsCE"); QVERIFY(testAllFunctions(&cstyle)); + delete cstyle; } #endif -- cgit v1.2.3