diff options
author | Jørgen Lind <jorgen.lind@digia.com> | 2013-04-08 14:12:43 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-04-17 07:43:11 +0200 |
commit | 3ae271523ff7fb951df16cfccfaf84c0aa298e16 (patch) | |
tree | 446402cb007ac348c67ea35b44baedb4f8c3681e /src/gui | |
parent | d42e54c8626ee0d42d4df40e8f2a83df0698190a (diff) |
Move Fusion styles palette into QtGui
So that it can be used as the standard palette for QtGui
applications instead of the absolutely useless black palette.
Change-Id: Ie001439fcd8840a66275009c9f42cbf8bab4864a
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/kernel/kernel.pri | 1 | ||||
-rw-r--r-- | src/gui/kernel/qguiapplication.cpp | 3 | ||||
-rw-r--r-- | src/gui/kernel/qpalette.cpp | 34 | ||||
-rw-r--r-- | src/gui/kernel/qplatformtheme.cpp | 36 | ||||
-rw-r--r-- | src/gui/kernel/qplatformtheme.h | 10 | ||||
-rw-r--r-- | src/gui/kernel/qplatformtheme_p.h | 74 |
6 files changed, 156 insertions, 2 deletions
diff --git a/src/gui/kernel/kernel.pri b/src/gui/kernel/kernel.pri index eb87a8c31b..91374fe2dd 100644 --- a/src/gui/kernel/kernel.pri +++ b/src/gui/kernel/kernel.pri @@ -21,6 +21,7 @@ HEADERS += \ kernel/qplatformintegrationfactory_p.h \ kernel/qplatformintegrationplugin.h \ kernel/qplatformtheme.h\ + kernel/qplatformtheme_p.h \ kernel/qplatformthemefactory_p.h \ kernel/qplatformthemeplugin.h \ kernel/qplatformwindow.h \ diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp index 432929fec5..b05ba28e48 100644 --- a/src/gui/kernel/qguiapplication.cpp +++ b/src/gui/kernel/qguiapplication.cpp @@ -180,7 +180,7 @@ static void initPalette() if (const QPalette *themePalette = QGuiApplicationPrivate::platformTheme()->palette()) QGuiApplicationPrivate::app_pal = new QPalette(*themePalette); if (!QGuiApplicationPrivate::app_pal) - QGuiApplicationPrivate::app_pal = new QPalette(Qt::black); + QGuiApplicationPrivate::app_pal = new QPalette(Qt::gray); } static inline void clearPalette() @@ -1014,6 +1014,7 @@ void QGuiApplicationPrivate::init() // and QImage conversion functions qInitImageConversions(); + initPalette(); QFont::initialize(); #ifndef QT_NO_CURSOR diff --git a/src/gui/kernel/qpalette.cpp b/src/gui/kernel/qpalette.cpp index f15559981b..df3d4dfef0 100644 --- a/src/gui/kernel/qpalette.cpp +++ b/src/gui/kernel/qpalette.cpp @@ -1096,6 +1096,40 @@ void QPalette::setColorGroup(ColorGroup cg, const QBrush &foreground, const QBru setBrush(cg, ToolTipText, toolTipText); } +Q_GUI_EXPORT QPalette qt_fusionPalette() +{ + QColor backGround(239, 235, 231); + QColor light = backGround.lighter(150); + QColor mid(backGround.darker(130)); + QColor midLight = mid.lighter(110); + QColor base = Qt::white; + QColor disabledBase(backGround); + QColor dark = backGround.darker(150); + QColor darkDisabled = QColor(209, 200, 191).darker(110); + QColor text = Qt::black; + QColor hightlightedText = Qt::white; + QColor disabledText = QColor(190, 190, 190); + QColor button = backGround; + QColor shadow = dark.darker(135); + QColor disabledShadow = shadow.lighter(150); + + QPalette fusionPalette(Qt::black,backGround,light,dark,mid,text,base); + fusionPalette.setBrush(QPalette::Midlight, midLight); + fusionPalette.setBrush(QPalette::Button, button); + fusionPalette.setBrush(QPalette::Shadow, shadow); + fusionPalette.setBrush(QPalette::HighlightedText, hightlightedText); + + fusionPalette.setBrush(QPalette::Disabled, QPalette::Text, disabledText); + fusionPalette.setBrush(QPalette::Disabled, QPalette::Base, disabledBase); + fusionPalette.setBrush(QPalette::Disabled, QPalette::Dark, darkDisabled); + fusionPalette.setBrush(QPalette::Disabled, QPalette::Shadow, disabledShadow); + + fusionPalette.setBrush(QPalette::Active, QPalette::Highlight, QColor(48, 140, 198)); + fusionPalette.setBrush(QPalette::Inactive, QPalette::Highlight, QColor(145, 141, 126)); + fusionPalette.setBrush(QPalette::Disabled, QPalette::Highlight, QColor(145, 141, 126)); + return fusionPalette; +} + #ifndef QT_NO_DEBUG_STREAM QDebug operator<<(QDebug dbg, const QPalette &) { diff --git a/src/gui/kernel/qplatformtheme.cpp b/src/gui/kernel/qplatformtheme.cpp index 9f5c789a6e..b8bc72cf73 100644 --- a/src/gui/kernel/qplatformtheme.cpp +++ b/src/gui/kernel/qplatformtheme.cpp @@ -41,6 +41,8 @@ #include "qplatformtheme.h" +#include "qplatformtheme_p.h" + #include <QtCore/QVariant> #include <QtCore/QStringList> #include <QtCore/qfileinfo.h> @@ -137,6 +139,33 @@ QT_BEGIN_NAMESPACE \sa themeHint(), QStyle::pixelMetric() */ +QPlatformThemePrivate::QPlatformThemePrivate() + : systemPalette(0) +{ } + +QPlatformThemePrivate::~QPlatformThemePrivate() +{ + delete systemPalette; +} + +Q_GUI_EXPORT QPalette qt_fusionPalette(); + +void QPlatformThemePrivate::initializeSystemPalette() +{ + Q_ASSERT(!systemPalette); + systemPalette = new QPalette(qt_fusionPalette()); +} + +QPlatformTheme::QPlatformTheme() + : d_ptr(new QPlatformThemePrivate) +{ + +} + +QPlatformTheme::QPlatformTheme(QPlatformThemePrivate *priv) + : d_ptr(priv) +{ } + QPlatformTheme::~QPlatformTheme() { @@ -156,7 +185,12 @@ QPlatformDialogHelper *QPlatformTheme::createPlatformDialogHelper(DialogType typ const QPalette *QPlatformTheme::palette(Palette type) const { - Q_UNUSED(type) + Q_D(const QPlatformTheme); + if (type == QPlatformTheme::SystemPalette) { + if (!d->systemPalette) + const_cast<QPlatformTheme *>(this)->d_ptr->initializeSystemPalette(); + return d->systemPalette; + } return 0; } diff --git a/src/gui/kernel/qplatformtheme.h b/src/gui/kernel/qplatformtheme.h index 0e95321102..ee12792547 100644 --- a/src/gui/kernel/qplatformtheme.h +++ b/src/gui/kernel/qplatformtheme.h @@ -52,6 +52,7 @@ // #include <QtCore/QtGlobal> +#include <QtCore/QScopedPointer> QT_BEGIN_NAMESPACE @@ -63,6 +64,7 @@ class QPlatformMenu; class QPlatformMenuBar; class QPlatformDialogHelper; class QPlatformSystemTrayIcon; +class QPlatformThemePrivate; class QVariant; class QPalette; class QFont; @@ -72,6 +74,7 @@ class QFileInfo; class Q_GUI_EXPORT QPlatformTheme { + Q_DECLARE_PRIVATE(QPlatformTheme) public: enum ThemeHint { CursorFlashTime, @@ -249,6 +252,7 @@ public: AnimateToolBoxUiEffect = 0x40 }; + explicit QPlatformTheme(); virtual ~QPlatformTheme(); virtual QPlatformMenuItem* createPlatformMenuItem() const; @@ -274,6 +278,12 @@ public: virtual QIconEngine *createIconEngine(const QString &iconName) const; static QVariant defaultThemeHint(ThemeHint hint); + +protected: + explicit QPlatformTheme(QPlatformThemePrivate *priv); + QScopedPointer<QPlatformThemePrivate> d_ptr; +private: + Q_DISABLE_COPY(QPlatformTheme) }; QT_END_NAMESPACE diff --git a/src/gui/kernel/qplatformtheme_p.h b/src/gui/kernel/qplatformtheme_p.h new file mode 100644 index 0000000000..2b965819c6 --- /dev/null +++ b/src/gui/kernel/qplatformtheme_p.h @@ -0,0 +1,74 @@ +/**************************************************************************** +** +** Copyright (C) 2013 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 QPLATFORMTHEME_P_H +#define QPLATFORMTHEME_P_H + +// +// W A R N I N G +// ------------- +// +// This file is part of the QPA API and is not meant to be used +// in applications. Usage of this API may make your code +// source and binary incompatible with future versions of Qt. +// + +#include <QtCore/QtGlobal> + +QT_BEGIN_NAMESPACE + +class QPalette; + +class Q_GUI_EXPORT QPlatformThemePrivate +{ +public: + QPlatformThemePrivate(); + + virtual ~QPlatformThemePrivate(); + + void initializeSystemPalette(); + + QPalette *systemPalette; +}; + +QT_END_NAMESPACE + +#endif // QPLATFORMTHEME_P_H |