summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms
diff options
context:
space:
mode:
authorSean Harmer <sean.harmer.qnx@kdab.com>2012-04-24 11:17:18 +0100
committerQt by Nokia <qt-info@nokia.com>2012-05-19 01:45:04 +0200
commitb16a307dbce0bbc5f8de18d9e55dc27cef285135 (patch)
tree6d043240f9b8d122fc9ecc506b6d0e7e7e7a5bca /src/plugins/platforms
parentb09d601261244395450557187adeed6717f25155 (diff)
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>
Diffstat (limited to 'src/plugins/platforms')
-rw-r--r--src/plugins/platforms/qnx/qnx.pro8
-rw-r--r--src/plugins/platforms/qnx/qqnxintegration.cpp18
-rw-r--r--src/plugins/platforms/qnx/qqnxintegration.h5
-rw-r--r--src/plugins/platforms/qnx/qqnxsystemsettings.cpp83
-rw-r--r--src/plugins/platforms/qnx/qqnxsystemsettings.h56
-rw-r--r--src/plugins/platforms/qnx/qqnxtheme.cpp65
-rw-r--r--src/plugins/platforms/qnx/qqnxtheme.h73
7 files changed, 306 insertions, 2 deletions
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 <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
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 <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
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 <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