Adding QPlatformTheme support for Blackberry devices.

Starting off simple with fonts that follow the Playbook guidelines.

Change-Id: If772f9a20c5e7566543be6bba47b49cdf3bf1524
Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com>
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
This commit is contained in:
Sean Harmer 2012-04-24 11:17:18 +01:00 committed by Qt by Nokia
parent b09d601261
commit b16a307dbc
7 changed files with 306 additions and 2 deletions

View File

@ -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
}

View File

@ -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)

View File

@ -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:

View File

@ -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 <QFont>
#include <qpa/qplatformfontdatabase.h>
#include <QDebug>
QT_BEGIN_NAMESPACE
QHash<QPlatformTheme::Font, QFont *> 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<QPlatformTheme::Font, QFont *> 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

View File

@ -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 <QtCore/qhash.h>
#include <qpa/qplatformtheme.h>
class QPlatformFontDatabase;
QT_BEGIN_NAMESPACE
QHash<QPlatformTheme::Font, QFont *> qt_qnx_createRoleFonts(QPlatformFontDatabase *fontDatabase);
QT_END_NAMESPACE
#endif // QQNXSYSTEMSETTINGS_H

View File

@ -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

View File

@ -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 <qpa/qplatformtheme.h>
#include <QtGui/qfont.h>
#include <QtCore/qhash.h>
#include <QtCore/qstring.h>
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<QPlatformTheme::Font, QFont*> m_fonts;
};
QT_END_NAMESPACE
#endif // QQNXTHEME_H