summaryrefslogtreecommitdiffstats
path: root/src/gui
diff options
context:
space:
mode:
authorJørgen Lind <jorgen.lind@digia.com>2013-04-08 14:12:43 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-04-17 07:43:11 +0200
commit3ae271523ff7fb951df16cfccfaf84c0aa298e16 (patch)
tree446402cb007ac348c67ea35b44baedb4f8c3681e /src/gui
parentd42e54c8626ee0d42d4df40e8f2a83df0698190a (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.pri1
-rw-r--r--src/gui/kernel/qguiapplication.cpp3
-rw-r--r--src/gui/kernel/qpalette.cpp34
-rw-r--r--src/gui/kernel/qplatformtheme.cpp36
-rw-r--r--src/gui/kernel/qplatformtheme.h10
-rw-r--r--src/gui/kernel/qplatformtheme_p.h74
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