From b16a307dbce0bbc5f8de18d9e55dc27cef285135 Mon Sep 17 00:00:00 2001 From: Sean Harmer Date: Tue, 24 Apr 2012 11:17:18 +0100 Subject: Adding QPlatformTheme support for Blackberry devices. Starting off simple with fonts that follow the Playbook guidelines. Change-Id: If772f9a20c5e7566543be6bba47b49cdf3bf1524 Reviewed-by: Kevin Krammer Reviewed-by: Giuseppe D'Angelo --- src/plugins/platforms/qnx/qnx.pro | 8 ++- src/plugins/platforms/qnx/qqnxintegration.cpp | 18 +++++ src/plugins/platforms/qnx/qqnxintegration.h | 5 ++ src/plugins/platforms/qnx/qqnxsystemsettings.cpp | 83 ++++++++++++++++++++++++ src/plugins/platforms/qnx/qqnxsystemsettings.h | 56 ++++++++++++++++ src/plugins/platforms/qnx/qqnxtheme.cpp | 65 +++++++++++++++++++ src/plugins/platforms/qnx/qqnxtheme.h | 73 +++++++++++++++++++++ 7 files changed, 306 insertions(+), 2 deletions(-) create mode 100644 src/plugins/platforms/qnx/qqnxsystemsettings.cpp create mode 100644 src/plugins/platforms/qnx/qqnxsystemsettings.h create mode 100644 src/plugins/platforms/qnx/qqnxtheme.cpp create mode 100644 src/plugins/platforms/qnx/qqnxtheme.h (limited to 'src/plugins') diff --git a/src/plugins/platforms/qnx/qnx.pro b/src/plugins/platforms/qnx/qnx.pro index 7ca9ddf63a..6cbc6c1f40 100644 --- a/src/plugins/platforms/qnx/qnx.pro +++ b/src/plugins/platforms/qnx/qnx.pro @@ -85,12 +85,16 @@ CONFIG(blackberry) { SOURCES += qqnxnavigatorbps.cpp \ qqnxeventdispatcher_blackberry.cpp \ qqnxbpseventfilter.cpp \ - qqnxvirtualkeyboardbps.cpp + qqnxvirtualkeyboardbps.cpp \ + qqnxtheme.cpp \ + qqnxsystemsettings.cpp HEADERS += qqnxnavigatorbps.h \ qqnxeventdispatcher_blackberry.h \ qqnxbpseventfilter.h \ - qqnxvirtualkeyboardbps.h + qqnxvirtualkeyboardbps.h \ + qqnxtheme.h \ + qqnxsystemsettings.h LIBS += -lbps } diff --git a/src/plugins/platforms/qnx/qqnxintegration.cpp b/src/plugins/platforms/qnx/qqnxintegration.cpp index dd1a6f8b7e..2f4e8cd19a 100644 --- a/src/plugins/platforms/qnx/qqnxintegration.cpp +++ b/src/plugins/platforms/qnx/qqnxintegration.cpp @@ -54,6 +54,7 @@ #if defined(Q_OS_BLACKBERRY) #include "qqnxbpseventfilter.h" #include "qqnxnavigatorbps.h" +#include "qqnxtheme.h" #include "qqnxvirtualkeyboardbps.h" #elif defined(QQNX_PPS) #include "qqnxnavigatorpps.h" @@ -383,6 +384,23 @@ QPlatformServices * QQnxIntegration::services() const return m_services; } +#if defined(Q_OS_BLACKBERRY) +QStringList QQnxIntegration::themeNames() const +{ + return QStringList(QQnxTheme::name()); +} + +QPlatformTheme *QQnxIntegration::createPlatformTheme(const QString &name) const +{ +#if defined(QQNXINTEGRATION_DEBUG) + qDebug() << Q_FUNC_INFO << "name =" << name; +#endif + if (name == QQnxTheme::name()) + return new QQnxTheme(m_fontDatabase); + return QPlatformIntegration::createPlatformTheme(name); +} +#endif + QWindow *QQnxIntegration::window(screen_window_t qnxWindow) { #if defined(QQNXINTEGRATION_DEBUG) diff --git a/src/plugins/platforms/qnx/qqnxintegration.h b/src/plugins/platforms/qnx/qqnxintegration.h index e0da8cc5f2..6820dc1e40 100644 --- a/src/plugins/platforms/qnx/qqnxintegration.h +++ b/src/plugins/platforms/qnx/qqnxintegration.h @@ -112,6 +112,11 @@ public: QPlatformServices *services() const; +#if defined(Q_OS_BLACKBERRY) + QStringList themeNames() const; + QPlatformTheme *createPlatformTheme(const QString &name) const; +#endif + static QWindow *window(screen_window_t qnxWindow); private: diff --git a/src/plugins/platforms/qnx/qqnxsystemsettings.cpp b/src/plugins/platforms/qnx/qqnxsystemsettings.cpp new file mode 100644 index 0000000000..ca09aa067f --- /dev/null +++ b/src/plugins/platforms/qnx/qqnxsystemsettings.cpp @@ -0,0 +1,83 @@ +/*************************************************************************** +** +** Copyright (C) 2012 Research In Motion +** Contact: http://www.qt-project.org/ +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** 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, Nokia gives you certain additional +** rights. These rights are described in the Nokia 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. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qqnxsystemsettings.h" + +#include +#include + +#include + +QT_BEGIN_NAMESPACE + +QHash qt_qnx_createRoleFonts(QPlatformFontDatabase *fontDatabase) +{ + qDebug() << Q_FUNC_INFO; + // See http://docs.blackberry.com/en/developers/deliverables/27299/Text_tablet_1526156_11.jsp + // which recommends using normal font size of 21 pixels and 36 pixels for titles (not covered + // by the theme system). + QFont baseFont = fontDatabase->defaultFont(); + baseFont.setPixelSize(21); + + QHash fonts; + fonts.insert(QPlatformTheme::SystemFont, new QFont(baseFont)); + fonts.insert(QPlatformTheme::PushButtonFont, new QFont(baseFont)); + fonts.insert(QPlatformTheme::ListViewFont, new QFont(baseFont)); + fonts.insert(QPlatformTheme::ListBoxFont, new QFont(baseFont)); + fonts.insert(QPlatformTheme::TitleBarFont, new QFont(baseFont)); + fonts.insert(QPlatformTheme::MenuFont, new QFont(baseFont)); + fonts.insert(QPlatformTheme::ComboMenuItemFont, new QFont(baseFont)); + fonts.insert(QPlatformTheme::HeaderViewFont, new QFont(baseFont)); + fonts.insert(QPlatformTheme::TipLabelFont, new QFont(baseFont)); + fonts.insert(QPlatformTheme::LabelFont, new QFont(baseFont)); + fonts.insert(QPlatformTheme::ToolButtonFont, new QFont(baseFont)); + fonts.insert(QPlatformTheme::MenuItemFont, new QFont(baseFont)); + fonts.insert(QPlatformTheme::ComboLineEditFont, new QFont(baseFont)); + + QFont smallFont(baseFont); + smallFont.setPixelSize(15); + fonts.insert(QPlatformTheme::SmallFont, new QFont(smallFont)); + fonts.insert(QPlatformTheme::MiniFont, new QFont(smallFont)); + + return fonts; +} + +QT_END_NAMESPACE diff --git a/src/plugins/platforms/qnx/qqnxsystemsettings.h b/src/plugins/platforms/qnx/qqnxsystemsettings.h new file mode 100644 index 0000000000..47cd38dbf3 --- /dev/null +++ b/src/plugins/platforms/qnx/qqnxsystemsettings.h @@ -0,0 +1,56 @@ +/*************************************************************************** +** +** Copyright (C) 2012 Research In Motion +** Contact: http://www.qt-project.org/ +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** 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, Nokia gives you certain additional +** rights. These rights are described in the Nokia 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. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QQNXSYSTEMSETTINGS_H +#define QQNXSYSTEMSETTINGS_H + +#include +#include + +class QPlatformFontDatabase; + +QT_BEGIN_NAMESPACE + +QHash qt_qnx_createRoleFonts(QPlatformFontDatabase *fontDatabase); + +QT_END_NAMESPACE + +#endif // QQNXSYSTEMSETTINGS_H diff --git a/src/plugins/platforms/qnx/qqnxtheme.cpp b/src/plugins/platforms/qnx/qqnxtheme.cpp new file mode 100644 index 0000000000..cd82e0c0c9 --- /dev/null +++ b/src/plugins/platforms/qnx/qqnxtheme.cpp @@ -0,0 +1,65 @@ +/*************************************************************************** +** +** Copyright (C) 2012 Research In Motion +** Contact: http://www.qt-project.org/ +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** 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, Nokia gives you certain additional +** rights. These rights are described in the Nokia 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. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qqnxtheme.h" + +#include "qqnxsystemsettings.h" + +QT_BEGIN_NAMESPACE + +QQnxTheme::QQnxTheme(QPlatformFontDatabase *fontDatabase) + : m_fontDatabase(fontDatabase) +{ +} + +QQnxTheme::~QQnxTheme() +{ + qDeleteAll(m_fonts); +} + +const QFont *QQnxTheme::font(Font type) const +{ + if (m_fonts.isEmpty() && m_fontDatabase) + m_fonts = qt_qnx_createRoleFonts(m_fontDatabase); + return m_fonts.value(type, 0); +} + +QT_END_NAMESPACE diff --git a/src/plugins/platforms/qnx/qqnxtheme.h b/src/plugins/platforms/qnx/qqnxtheme.h new file mode 100644 index 0000000000..dc9c7bef44 --- /dev/null +++ b/src/plugins/platforms/qnx/qqnxtheme.h @@ -0,0 +1,73 @@ +/*************************************************************************** +** +** Copyright (C) 2012 Research In Motion +** Contact: http://www.qt-project.org/ +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** 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, Nokia gives you certain additional +** rights. These rights are described in the Nokia 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. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QQNXTHEME_H +#define QQNXTHEME_H + +#include + +#include + +#include +#include + +QT_BEGIN_NAMESPACE + +class QPlatformFontDatabase; + +class QQnxTheme : public QPlatformTheme +{ +public: + QQnxTheme(QPlatformFontDatabase *fontDatabase); + ~QQnxTheme(); + + static QString name() { return QStringLiteral("blackberry"); } + + const QFont *font(Font type = SystemFont) const; + +private: + QPlatformFontDatabase *m_fontDatabase; + mutable QHash m_fonts; +}; + +QT_END_NAMESPACE + +#endif // QQNXTHEME_H -- cgit v1.2.3