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:
parent
b09d601261
commit
b16a307dbc
@ -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
|
||||
}
|
||||
|
@ -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)
|
||||
|
@ -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:
|
||||
|
83
src/plugins/platforms/qnx/qqnxsystemsettings.cpp
Normal file
83
src/plugins/platforms/qnx/qqnxsystemsettings.cpp
Normal 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
|
56
src/plugins/platforms/qnx/qqnxsystemsettings.h
Normal file
56
src/plugins/platforms/qnx/qqnxsystemsettings.h
Normal 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
|
65
src/plugins/platforms/qnx/qqnxtheme.cpp
Normal file
65
src/plugins/platforms/qnx/qqnxtheme.cpp
Normal 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
|
73
src/plugins/platforms/qnx/qqnxtheme.h
Normal file
73
src/plugins/platforms/qnx/qqnxtheme.h
Normal 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
|
Loading…
Reference in New Issue
Block a user