Remove BlackBerry PlayBook support.
Reasons: - the PlayBook NDK is old and its compiler does not keep up with newest C++11 improvements inside Qt code. - the PlayBook NDK diverges considerably from the standard BB10 NDK, making it non-trivial to keep a common codebase. - It's a defunct platform. - Maintenance time is limited. [ChangeLog][Platform Specific Changes] Removed BlackBerry PlayBook support. Change-Id: Ia338aff55f4e4b747ebdecb0e1463a369a656c03 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Bernd Weimer <bernd.weimer@pelagicore.com> Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
This commit is contained in:
parent
d3893d8054
commit
7e2ef1fd21
@ -1,8 +0,0 @@
|
|||||||
#
|
|
||||||
# qmake configuration for the Blackberry Playbook armle-v7
|
|
||||||
#
|
|
||||||
|
|
||||||
include(../../blackberry-armle-v7-qcc/qmake.conf)
|
|
||||||
|
|
||||||
DEFINES += Q_OS_BLACKBERRY_TABLET
|
|
||||||
CONFIG += blackberry-playbook
|
|
@ -1,34 +0,0 @@
|
|||||||
/****************************************************************************
|
|
||||||
**
|
|
||||||
** Copyright (C) 2013 Klarälvdalens Datakonsult AB <info@kdab.com>
|
|
||||||
** Contact: http://www.qt.io/licensing/
|
|
||||||
**
|
|
||||||
** This file is part of the QtCore module of the Qt Toolkit.
|
|
||||||
**
|
|
||||||
** $QT_BEGIN_LICENSE:LGPL21$
|
|
||||||
** 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 The Qt Company. For licensing terms
|
|
||||||
** and conditions see http://www.qt.io/terms-conditions. For further
|
|
||||||
** information use the contact form at http://www.qt.io/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 or version 3 as published by the Free
|
|
||||||
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
|
|
||||||
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
|
|
||||||
** following information to ensure the GNU Lesser General Public License
|
|
||||||
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
|
|
||||||
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
|
||||||
**
|
|
||||||
** As a special exception, The Qt Company gives you certain additional
|
|
||||||
** rights. These rights are described in The Qt Company LGPL Exception
|
|
||||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
|
||||||
**
|
|
||||||
** $QT_END_LICENSE$
|
|
||||||
**
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
#include "../../blackberry-armle-v7-qcc/qplatformdefs.h"
|
|
@ -1,8 +0,0 @@
|
|||||||
#
|
|
||||||
# qmake configuration for the Blackberry Playbook x86
|
|
||||||
#
|
|
||||||
|
|
||||||
include(../../blackberry-x86-qcc/qmake.conf)
|
|
||||||
|
|
||||||
DEFINES += Q_OS_BLACKBERRY_TABLET
|
|
||||||
CONFIG += blackberry-playbook
|
|
@ -1,34 +0,0 @@
|
|||||||
/****************************************************************************
|
|
||||||
**
|
|
||||||
** Copyright (C) 2013 Klarälvdalens Datakonsult AB <info@kdab.com>
|
|
||||||
** Contact: http://www.qt.io/licensing/
|
|
||||||
**
|
|
||||||
** This file is part of the QtCore module of the Qt Toolkit.
|
|
||||||
**
|
|
||||||
** $QT_BEGIN_LICENSE:LGPL21$
|
|
||||||
** 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 The Qt Company. For licensing terms
|
|
||||||
** and conditions see http://www.qt.io/terms-conditions. For further
|
|
||||||
** information use the contact form at http://www.qt.io/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 or version 3 as published by the Free
|
|
||||||
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
|
|
||||||
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
|
|
||||||
** following information to ensure the GNU Lesser General Public License
|
|
||||||
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
|
|
||||||
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
|
||||||
**
|
|
||||||
** As a special exception, The Qt Company gives you certain additional
|
|
||||||
** rights. These rights are described in The Qt Company LGPL Exception
|
|
||||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
|
||||||
**
|
|
||||||
** $QT_END_LICENSE$
|
|
||||||
**
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
#include "../../blackberry-x86-qcc/qplatformdefs.h"
|
|
@ -175,7 +175,7 @@ blackberry {
|
|||||||
kernel/qeventdispatcher_blackberry_p.h
|
kernel/qeventdispatcher_blackberry_p.h
|
||||||
}
|
}
|
||||||
|
|
||||||
qqnx_pps:!blackberry-playbook {
|
qqnx_pps {
|
||||||
LIBS_PRIVATE += -lpps
|
LIBS_PRIVATE += -lpps
|
||||||
SOURCES += \
|
SOURCES += \
|
||||||
kernel/qppsattribute.cpp \
|
kernel/qppsattribute.cpp \
|
||||||
|
@ -205,13 +205,6 @@ QT_BEGIN_NAMESPACE
|
|||||||
#ifdef Q_OS_BLACKBERRY
|
#ifdef Q_OS_BLACKBERRY
|
||||||
static const char cellularStatusFile[] = "/pps/services/radioctrl/modem0/status_public";
|
static const char cellularStatusFile[] = "/pps/services/radioctrl/modem0/status_public";
|
||||||
|
|
||||||
#ifdef Q_OS_BLACKBERRY_TABLET
|
|
||||||
static bool pps_decoder_is_integer(pps_decoder_t *decoder, const char *name)
|
|
||||||
{
|
|
||||||
return (pps_decoder_type(decoder, name) == PPS_TYPE_NUMBER);
|
|
||||||
}
|
|
||||||
#endif // Q_OS_BLACKBERRY_TABLET
|
|
||||||
|
|
||||||
static QNetworkConfiguration::BearerType cellularStatus()
|
static QNetworkConfiguration::BearerType cellularStatus()
|
||||||
{
|
{
|
||||||
QNetworkConfiguration::BearerType ret = QNetworkConfiguration::BearerUnknown;
|
QNetworkConfiguration::BearerType ret = QNetworkConfiguration::BearerUnknown;
|
||||||
|
@ -2668,7 +2668,6 @@ QList<QByteArray> QSslSocketPrivate::unixRootCertDirectories()
|
|||||||
<< "/usr/local/ssl/" // Normal OpenSSL Tarball
|
<< "/usr/local/ssl/" // Normal OpenSSL Tarball
|
||||||
<< "/var/ssl/certs/" // AIX
|
<< "/var/ssl/certs/" // AIX
|
||||||
<< "/usr/local/ssl/certs/" // Solaris
|
<< "/usr/local/ssl/certs/" // Solaris
|
||||||
<< "/var/certmgr/web/user_trusted/" // BlackBerry Playbook
|
|
||||||
<< "/etc/openssl/certs/" // BlackBerry
|
<< "/etc/openssl/certs/" // BlackBerry
|
||||||
<< "/opt/openssl/certs/"; // HP-UX
|
<< "/opt/openssl/certs/"; // HP-UX
|
||||||
}
|
}
|
||||||
|
@ -105,17 +105,13 @@ CONFIG(blackberry) {
|
|||||||
LIBS += -lbps
|
LIBS += -lbps
|
||||||
}
|
}
|
||||||
|
|
||||||
CONFIG(blackberry-playbook) {
|
CONFIG(blackberry) {
|
||||||
SOURCES += qqnxfiledialoghelper_playbook.cpp
|
SOURCES += qqnxfiledialoghelper_bb10.cpp \
|
||||||
} else {
|
qqnxfilepicker.cpp \
|
||||||
CONFIG(blackberry) {
|
qqnxnavigatorcover.cpp
|
||||||
SOURCES += qqnxfiledialoghelper_bb10.cpp \
|
|
||||||
qqnxfilepicker.cpp \
|
|
||||||
qqnxnavigatorcover.cpp
|
|
||||||
|
|
||||||
HEADERS += qqnxfilepicker.h \
|
HEADERS += qqnxfilepicker.h \
|
||||||
qqnxnavigatorcover.h
|
qqnxnavigatorcover.h
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CONFIG(qqnx_pps) {
|
CONFIG(qqnx_pps) {
|
||||||
|
@ -119,24 +119,6 @@ void QQnxBpsEventFilter::unregisterForScreenEvents(QQnxScreen *screen)
|
|||||||
qWarning("QQNX: failed to unregister for screen events on screen %p", screen->nativeContext());
|
qWarning("QQNX: failed to unregister for screen events on screen %p", screen->nativeContext());
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(Q_OS_BLACKBERRY_TABLET)
|
|
||||||
void QQnxBpsEventFilter::registerForDialogEvents(QQnxFileDialogHelper *dialog)
|
|
||||||
{
|
|
||||||
if (dialog_request_events(0) != BPS_SUCCESS)
|
|
||||||
qWarning("QQNX: failed to register for dialog events");
|
|
||||||
dialog_instance_t nativeDialog = dialog->nativeDialog();
|
|
||||||
if (!m_dialogMapper.contains(nativeDialog))
|
|
||||||
m_dialogMapper.insert(nativeDialog, dialog);
|
|
||||||
}
|
|
||||||
|
|
||||||
void QQnxBpsEventFilter::unregisterForDialogEvents(QQnxFileDialogHelper *dialog)
|
|
||||||
{
|
|
||||||
int count = m_dialogMapper.remove(dialog->nativeDialog());
|
|
||||||
if (count == 0)
|
|
||||||
qWarning("QQNX: attempting to unregister dialog that was not registered");
|
|
||||||
}
|
|
||||||
#endif // Q_OS_BLACKBERRY_TABLET
|
|
||||||
|
|
||||||
bool QQnxBpsEventFilter::nativeEventFilter(const QByteArray &eventType, void *message, long *result)
|
bool QQnxBpsEventFilter::nativeEventFilter(const QByteArray &eventType, void *message, long *result)
|
||||||
{
|
{
|
||||||
Q_UNUSED(eventType);
|
Q_UNUSED(eventType);
|
||||||
@ -155,15 +137,6 @@ bool QQnxBpsEventFilter::nativeEventFilter(const QByteArray &eventType, void *me
|
|||||||
return m_screenEventHandler->handleEvent(screenEvent);
|
return m_screenEventHandler->handleEvent(screenEvent);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(Q_OS_BLACKBERRY_TABLET)
|
|
||||||
if (eventDomain == dialog_get_domain()) {
|
|
||||||
dialog_instance_t nativeDialog = dialog_event_get_dialog_instance(event);
|
|
||||||
QQnxFileDialogHelper *dialog = m_dialogMapper.value(nativeDialog, 0);
|
|
||||||
if (dialog)
|
|
||||||
return dialog->handleEvent(event);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (eventDomain == navigator_get_domain())
|
if (eventDomain == navigator_get_domain())
|
||||||
return handleNavigatorEvent(event);
|
return handleNavigatorEvent(event);
|
||||||
|
|
||||||
@ -218,14 +191,8 @@ bool QQnxBpsEventFilter::handleNavigatorEvent(bps_event_t *event)
|
|||||||
break;
|
break;
|
||||||
case NAVIGATOR_WINDOW_THUMBNAIL:
|
case NAVIGATOR_WINDOW_THUMBNAIL:
|
||||||
m_navigatorEventHandler->handleWindowGroupStateChanged(id, Qt::WindowMinimized);
|
m_navigatorEventHandler->handleWindowGroupStateChanged(id, Qt::WindowMinimized);
|
||||||
#if defined(Q_OS_BLACKBERRY_TABLET)
|
|
||||||
m_navigatorEventHandler->handleWindowGroupActivated(id);
|
|
||||||
#endif
|
|
||||||
break;
|
break;
|
||||||
case NAVIGATOR_WINDOW_INVISIBLE:
|
case NAVIGATOR_WINDOW_INVISIBLE:
|
||||||
#if defined(Q_OS_BLACKBERRY_TABLET)
|
|
||||||
m_navigatorEventHandler->handleWindowGroupDeactivated(id);
|
|
||||||
#endif
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -65,11 +65,6 @@ public:
|
|||||||
void registerForScreenEvents(QQnxScreen *screen);
|
void registerForScreenEvents(QQnxScreen *screen);
|
||||||
void unregisterForScreenEvents(QQnxScreen *screen);
|
void unregisterForScreenEvents(QQnxScreen *screen);
|
||||||
|
|
||||||
#ifdef Q_OS_BLACKBERRY_TABLET
|
|
||||||
void registerForDialogEvents(QQnxFileDialogHelper *dialog);
|
|
||||||
void unregisterForDialogEvents(QQnxFileDialogHelper *dialog);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool nativeEventFilter(const QByteArray &eventType, void *message, long *result) Q_DECL_OVERRIDE;
|
bool nativeEventFilter(const QByteArray &eventType, void *message, long *result) Q_DECL_OVERRIDE;
|
||||||
|
|
||||||
|
@ -41,13 +41,7 @@ QT_BEGIN_NAMESPACE
|
|||||||
|
|
||||||
class QQnxIntegration;
|
class QQnxIntegration;
|
||||||
|
|
||||||
#if defined(Q_OS_BLACKBERRY_TABLET)
|
|
||||||
#include <bps/dialog.h>
|
|
||||||
#define NativeDialogPtr dialog_instance_t
|
|
||||||
#else
|
|
||||||
class QQnxFilePicker;
|
class QQnxFilePicker;
|
||||||
#define NativeDialogPtr QQnxFilePicker *
|
|
||||||
#endif
|
|
||||||
|
|
||||||
class QQnxFileDialogHelper : public QPlatformFileDialogHelper
|
class QQnxFileDialogHelper : public QPlatformFileDialogHelper
|
||||||
{
|
{
|
||||||
@ -56,10 +50,6 @@ public:
|
|||||||
explicit QQnxFileDialogHelper(const QQnxIntegration *);
|
explicit QQnxFileDialogHelper(const QQnxIntegration *);
|
||||||
~QQnxFileDialogHelper();
|
~QQnxFileDialogHelper();
|
||||||
|
|
||||||
#if defined(Q_OS_BLACKBERRY_TABLET)
|
|
||||||
bool handleEvent(bps_event_t *event);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void exec();
|
void exec();
|
||||||
|
|
||||||
bool show(Qt::WindowFlags flags, Qt::WindowModality modality, QWindow *parent);
|
bool show(Qt::WindowFlags flags, Qt::WindowModality modality, QWindow *parent);
|
||||||
@ -74,29 +64,22 @@ public:
|
|||||||
void selectNameFilter(const QString &filter);
|
void selectNameFilter(const QString &filter);
|
||||||
QString selectedNameFilter() const;
|
QString selectedNameFilter() const;
|
||||||
|
|
||||||
NativeDialogPtr nativeDialog() const { return m_dialog; }
|
QQnxFilePicker *nativeDialog() const { return m_dialog; }
|
||||||
|
|
||||||
Q_SIGNALS:
|
Q_SIGNALS:
|
||||||
void dialogClosed();
|
void dialogClosed();
|
||||||
|
|
||||||
private Q_SLOTS:
|
private Q_SLOTS:
|
||||||
#if !defined(Q_OS_BLACKBERRY_TABLET)
|
|
||||||
void emitSignals();
|
void emitSignals();
|
||||||
#endif
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void setNameFilter(const QString &filter);
|
void setNameFilter(const QString &filter);
|
||||||
void setNameFilters(const QStringList &filters);
|
void setNameFilters(const QStringList &filters);
|
||||||
|
|
||||||
const QQnxIntegration *m_integration;
|
const QQnxIntegration *m_integration;
|
||||||
NativeDialogPtr m_dialog;
|
QQnxFilePicker *m_dialog;
|
||||||
QFileDialogOptions::AcceptMode m_acceptMode;
|
QFileDialogOptions::AcceptMode m_acceptMode;
|
||||||
QString m_selectedFilter;
|
QString m_selectedFilter;
|
||||||
|
|
||||||
#if defined(Q_OS_BLACKBERRY_TABLET)
|
|
||||||
QPlatformDialogHelper::DialogCode m_result;
|
|
||||||
QList<QUrl> m_paths;
|
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
|
@ -1,312 +0,0 @@
|
|||||||
/***************************************************************************
|
|
||||||
**
|
|
||||||
** Copyright (C) 2012 Research In Motion
|
|
||||||
** Contact: http://www.qt.io/licensing/
|
|
||||||
**
|
|
||||||
** This file is part of the plugins of the Qt Toolkit.
|
|
||||||
**
|
|
||||||
** $QT_BEGIN_LICENSE:LGPL21$
|
|
||||||
** 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 The Qt Company. For licensing terms
|
|
||||||
** and conditions see http://www.qt.io/terms-conditions. For further
|
|
||||||
** information use the contact form at http://www.qt.io/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 or version 3 as published by the Free
|
|
||||||
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
|
|
||||||
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
|
|
||||||
** following information to ensure the GNU Lesser General Public License
|
|
||||||
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
|
|
||||||
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
|
||||||
**
|
|
||||||
** As a special exception, The Qt Company gives you certain additional
|
|
||||||
** rights. These rights are described in The Qt Company LGPL Exception
|
|
||||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
|
||||||
**
|
|
||||||
** $QT_END_LICENSE$
|
|
||||||
**
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
#include "qqnxfiledialoghelper.h"
|
|
||||||
|
|
||||||
#include "qqnxbpseventfilter.h"
|
|
||||||
#include "qqnxscreen.h"
|
|
||||||
#include "qqnxintegration.h"
|
|
||||||
|
|
||||||
#include <QDebug>
|
|
||||||
#include <QEventLoop>
|
|
||||||
#include <QScreen>
|
|
||||||
#include <QTimer>
|
|
||||||
#include <QWindow>
|
|
||||||
|
|
||||||
#if defined(QQNXFILEDIALOGHELPER_DEBUG)
|
|
||||||
#define qFileDialogHelperDebug qDebug
|
|
||||||
#else
|
|
||||||
#define qFileDialogHelperDebug QT_NO_QDEBUG_MACRO
|
|
||||||
#endif
|
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
|
||||||
|
|
||||||
QQnxFileDialogHelper::QQnxFileDialogHelper(const QQnxIntegration *integration)
|
|
||||||
: QPlatformFileDialogHelper(),
|
|
||||||
m_integration(integration),
|
|
||||||
m_dialog(0),
|
|
||||||
m_acceptMode(QFileDialogOptions::AcceptOpen),
|
|
||||||
m_selectedFilter(),
|
|
||||||
m_result(QPlatformDialogHelper::Rejected),
|
|
||||||
m_paths()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
QQnxFileDialogHelper::~QQnxFileDialogHelper()
|
|
||||||
{
|
|
||||||
if (m_dialog)
|
|
||||||
dialog_destroy(m_dialog);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool QQnxFileDialogHelper::handleEvent(bps_event_t *event)
|
|
||||||
{
|
|
||||||
qFileDialogHelperDebug() << Q_FUNC_INFO;
|
|
||||||
|
|
||||||
// Check dialog event response type (OK vs CANCEL)
|
|
||||||
// CANCEL => index = 0
|
|
||||||
// OK => index = 1
|
|
||||||
int index = dialog_event_get_selected_index(event);
|
|
||||||
qFileDialogHelperDebug() << "Index =" << index;
|
|
||||||
if (index == 1) {
|
|
||||||
m_result = QPlatformDialogHelper::Accepted;
|
|
||||||
|
|
||||||
if (m_acceptMode == QFileDialogOptions::AcceptOpen) {
|
|
||||||
// File open dialog
|
|
||||||
|
|
||||||
// ###TODO Check that this actually gets multiple paths and cleans up properly
|
|
||||||
char **filePaths = 0;
|
|
||||||
int pathCount = 0;
|
|
||||||
int result = dialog_event_get_filebrowse_filepaths(event, &filePaths, &pathCount);
|
|
||||||
if (result != BPS_SUCCESS) {
|
|
||||||
qWarning() << "Could not get paths from native file dialog";
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int i = 0; i < pathCount; ++i) {
|
|
||||||
QString path = QFile::decodeName(filePaths[i]);
|
|
||||||
m_paths.append(QUrl::fromLocalFile(path));
|
|
||||||
qFileDialogHelperDebug() << "path =" << path;
|
|
||||||
}
|
|
||||||
|
|
||||||
bps_free(filePaths);
|
|
||||||
} else {
|
|
||||||
// File save dialog
|
|
||||||
const char *filePath = dialog_event_get_filesave_filepath(event);
|
|
||||||
QString path = QFile::decodeName(filePath);
|
|
||||||
qFileDialogHelperDebug() << "path =" << path;
|
|
||||||
m_paths.append(QUrl::fromLocalFile(path));
|
|
||||||
}
|
|
||||||
} else { // Cancel
|
|
||||||
m_result = QPlatformDialogHelper::Rejected;
|
|
||||||
}
|
|
||||||
|
|
||||||
Q_EMIT dialogClosed();
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void QQnxFileDialogHelper::exec()
|
|
||||||
{
|
|
||||||
qFileDialogHelperDebug() << Q_FUNC_INFO;
|
|
||||||
|
|
||||||
// Clear any previous results
|
|
||||||
m_paths.clear();
|
|
||||||
|
|
||||||
QEventLoop loop;
|
|
||||||
connect(this, SIGNAL(dialogClosed()), &loop, SLOT(quit()));
|
|
||||||
loop.exec();
|
|
||||||
|
|
||||||
if (m_result == QPlatformDialogHelper::Accepted)
|
|
||||||
Q_EMIT accept();
|
|
||||||
else
|
|
||||||
Q_EMIT reject();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool QQnxFileDialogHelper::show(Qt::WindowFlags flags, Qt::WindowModality modality, QWindow *parent)
|
|
||||||
{
|
|
||||||
Q_UNUSED(flags);
|
|
||||||
qFileDialogHelperDebug() << Q_FUNC_INFO;
|
|
||||||
|
|
||||||
QQnxBpsEventFilter *eventFilter = m_integration->bpsEventFilter();
|
|
||||||
// We *really* need the bps event filter ;)
|
|
||||||
if (!eventFilter)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
// Native dialogs can only handle application modal use cases so far
|
|
||||||
if (modality != Qt::ApplicationModal)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
// Tear down any existing dialog and start again as dialog mode may have changed
|
|
||||||
if (m_dialog) {
|
|
||||||
dialog_destroy(m_dialog);
|
|
||||||
m_dialog = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create dialog
|
|
||||||
const QSharedPointer<QFileDialogOptions> &opts = options();
|
|
||||||
if (opts->acceptMode() == QFileDialogOptions::AcceptOpen) {
|
|
||||||
if (dialog_create_filebrowse(&m_dialog) != BPS_SUCCESS) {
|
|
||||||
qWarning("dialog_create_filebrowse failed");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Select one or many files?
|
|
||||||
bool multiSelect = (opts->fileMode() == QFileDialogOptions::ExistingFiles);
|
|
||||||
dialog_set_filebrowse_multiselect(m_dialog, multiSelect);
|
|
||||||
|
|
||||||
// Set the actual list of extensions
|
|
||||||
if (!opts->nameFilters().isEmpty()) {
|
|
||||||
qFileDialogHelperDebug() << "nameFilters =" << opts->nameFilters();
|
|
||||||
setNameFilter(opts->nameFilters().first());
|
|
||||||
} else {
|
|
||||||
QString defaultNameFilter = QStringLiteral("*.*");
|
|
||||||
setNameFilter(defaultNameFilter);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (dialog_create_filesave(&m_dialog) != BPS_SUCCESS) {
|
|
||||||
qWarning("dialog_create_filesave failed");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Maybe pre-select a filename
|
|
||||||
if (!opts->initiallySelectedFiles().isEmpty()) {
|
|
||||||
QString fileName = opts->initiallySelectedFiles().first().toLocalFile();
|
|
||||||
dialog_set_filesave_filename(m_dialog, QFile::encodeName(fileName).constData());
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add OK and Cancel buttons. We add the buttons in the order "CANCEL" followed by "OK
|
|
||||||
// such that they have indices matching the buttons on the file open dialog which
|
|
||||||
// is automatically populated with buttons.
|
|
||||||
if (dialog_add_button(m_dialog, tr("CANCEL").toLocal8Bit().constData(), true, 0, true) != BPS_SUCCESS) {
|
|
||||||
qWarning("dialog_add_button failed");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (dialog_add_button(m_dialog, tr("OK").toLocal8Bit().constData(), true, 0, true) != BPS_SUCCESS) {
|
|
||||||
qWarning("dialog_add_button failed");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Cache the accept mode so we know which functions to use to get the results back
|
|
||||||
m_acceptMode = opts->acceptMode();
|
|
||||||
|
|
||||||
// Set the libscreen window group and common properties
|
|
||||||
|
|
||||||
QQnxScreen *nativeScreen = parent ? static_cast<QQnxScreen *>(parent->screen()->handle()) :
|
|
||||||
m_integration->primaryDisplay();
|
|
||||||
Q_ASSERT(nativeScreen);
|
|
||||||
dialog_set_group_id(m_dialog, nativeScreen->windowGroupName());
|
|
||||||
dialog_set_title_text(m_dialog, opts->windowTitle().toLocal8Bit().constData());
|
|
||||||
|
|
||||||
// Register ourselves for dialog domain events from bps
|
|
||||||
eventFilter->registerForDialogEvents(this);
|
|
||||||
|
|
||||||
// Show the dialog
|
|
||||||
dialog_show(m_dialog);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void QQnxFileDialogHelper::hide()
|
|
||||||
{
|
|
||||||
qFileDialogHelperDebug() << Q_FUNC_INFO;
|
|
||||||
if (!m_dialog)
|
|
||||||
return;
|
|
||||||
dialog_cancel(m_dialog);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool QQnxFileDialogHelper::defaultNameFilterDisables() const
|
|
||||||
{
|
|
||||||
qFileDialogHelperDebug() << Q_FUNC_INFO;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
void QQnxFileDialogHelper::setDirectory(const QUrl &directory)
|
|
||||||
{
|
|
||||||
qFileDialogHelperDebug() << Q_FUNC_INFO << "directory =" << directory;
|
|
||||||
// No native API for setting the directory(!). The best we can do is to
|
|
||||||
// set it as the file name but even then only with a file save dialog.
|
|
||||||
if (m_dialog && m_acceptMode == QFileDialogOptions::AcceptSave)
|
|
||||||
dialog_set_filesave_filename(m_dialog, QFile::encodeName(directory.toLocalFile()).constData());
|
|
||||||
}
|
|
||||||
|
|
||||||
QUrl QQnxFileDialogHelper::directory() const
|
|
||||||
{
|
|
||||||
qFileDialogHelperDebug() << Q_FUNC_INFO;
|
|
||||||
return m_paths.first();
|
|
||||||
}
|
|
||||||
|
|
||||||
void QQnxFileDialogHelper::selectFile(const QUrl &fileName)
|
|
||||||
{
|
|
||||||
qFileDialogHelperDebug() << Q_FUNC_INFO << "filename =" << fileName;
|
|
||||||
if (m_dialog && m_acceptMode == QFileDialogOptions::AcceptSave)
|
|
||||||
dialog_set_filesave_filename(m_dialog, QFile::encodeName(fileName.toLocalFile()).constData());
|
|
||||||
}
|
|
||||||
|
|
||||||
QList<QUrl> QQnxFileDialogHelper::selectedFiles() const
|
|
||||||
{
|
|
||||||
qFileDialogHelperDebug() << Q_FUNC_INFO;
|
|
||||||
return m_paths;
|
|
||||||
}
|
|
||||||
|
|
||||||
void QQnxFileDialogHelper::setFilter()
|
|
||||||
{
|
|
||||||
// No native api to support setting a filter from QDir::Filters
|
|
||||||
qFileDialogHelperDebug() << Q_FUNC_INFO;
|
|
||||||
}
|
|
||||||
|
|
||||||
void QQnxFileDialogHelper::selectNameFilter(const QString &filter)
|
|
||||||
{
|
|
||||||
qFileDialogHelperDebug() << Q_FUNC_INFO << "filter =" << filter;
|
|
||||||
setNameFilter(filter);
|
|
||||||
}
|
|
||||||
|
|
||||||
QString QQnxFileDialogHelper::selectedNameFilter() const
|
|
||||||
{
|
|
||||||
// For now there is no way for the user to change the selected filter
|
|
||||||
// so this just reflects what the developer has set programmatically.
|
|
||||||
qFileDialogHelperDebug() << Q_FUNC_INFO;
|
|
||||||
return m_selectedFilter;
|
|
||||||
}
|
|
||||||
|
|
||||||
void QQnxFileDialogHelper::setNameFilter(const QString &filter)
|
|
||||||
{
|
|
||||||
qFileDialogHelperDebug() << Q_FUNC_INFO << "filter =" << filter;
|
|
||||||
setNameFilters(QPlatformFileDialogHelper::cleanFilterList(filter));
|
|
||||||
}
|
|
||||||
|
|
||||||
void QQnxFileDialogHelper::setNameFilters(const QStringList &filters)
|
|
||||||
{
|
|
||||||
qFileDialogHelperDebug() << Q_FUNC_INFO << "filters =" << filters;
|
|
||||||
|
|
||||||
Q_ASSERT(!filters.isEmpty());
|
|
||||||
|
|
||||||
char **globs = new char*[filters.size()];
|
|
||||||
for (int i = 0; i < filters.size(); ++i) {
|
|
||||||
QByteArray glob = filters.at(i).toLocal8Bit();
|
|
||||||
globs[i] = new char[glob.length()];
|
|
||||||
strcpy(globs[i], glob.constData());
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set the filters
|
|
||||||
dialog_set_filebrowse_filter(m_dialog, const_cast<const char**>(globs), filters.size());
|
|
||||||
m_selectedFilter = filters.first();
|
|
||||||
|
|
||||||
// Cleanup
|
|
||||||
for (int i = 0; i < filters.size(); ++i)
|
|
||||||
delete[] globs[i];
|
|
||||||
delete[] globs;
|
|
||||||
}
|
|
||||||
|
|
||||||
QT_END_NAMESPACE
|
|
@ -127,13 +127,7 @@ void QQnxFilePicker::open()
|
|||||||
map[QStringLiteral("Filter")] = m_filters.join(QLatin1Char(';'));
|
map[QStringLiteral("Filter")] = m_filters.join(QLatin1Char(';'));
|
||||||
|
|
||||||
QByteArray ppsData;
|
QByteArray ppsData;
|
||||||
#if defined(Q_OS_BLACKBERRY_TABLET)
|
|
||||||
QJsonDocument document;
|
|
||||||
document.setObject(QJsonObject::fromVariantMap(map));
|
|
||||||
ppsData = document.toJson(QJsonDocument::Compact);
|
|
||||||
#else
|
|
||||||
ppsData = QPpsObject::encode(map);
|
ppsData = QPpsObject::encode(map);
|
||||||
#endif
|
|
||||||
|
|
||||||
errorCode = navigator_invoke_invocation_set_data(m_invocationHandle, ppsData.constData(), ppsData.size());
|
errorCode = navigator_invoke_invocation_set_data(m_invocationHandle, ppsData.constData(), ppsData.size());
|
||||||
if (errorCode != BPS_SUCCESS) {
|
if (errorCode != BPS_SUCCESS) {
|
||||||
|
@ -585,7 +585,7 @@ void QQnxScreen::addWindow(QQnxWindow *window)
|
|||||||
m_childWindows.push_back(window);
|
m_childWindows.push_back(window);
|
||||||
updateHierarchy();
|
updateHierarchy();
|
||||||
} else {
|
} else {
|
||||||
#if defined(Q_OS_BLACKBERRY) && !defined(Q_OS_BLACKBERRY_TABLET)
|
#if defined(Q_OS_BLACKBERRY)
|
||||||
m_coverWindow = window;
|
m_coverWindow = window;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -38,7 +38,7 @@
|
|||||||
#include <bps/event.h>
|
#include <bps/event.h>
|
||||||
#include <bps/locale.h>
|
#include <bps/locale.h>
|
||||||
#include <bps/virtualkeyboard.h>
|
#include <bps/virtualkeyboard.h>
|
||||||
#if defined(Q_OS_BLACKBERRY) && !defined(Q_OS_BLACKBERRY_TABLET)
|
#if defined(Q_OS_BLACKBERRY)
|
||||||
#include <bbndk.h>
|
#include <bbndk.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -118,21 +118,17 @@ virtualkeyboard_layout_t QQnxVirtualKeyboardBps::keyboardLayout() const
|
|||||||
return VIRTUALKEYBOARD_LAYOUT_WEB;
|
return VIRTUALKEYBOARD_LAYOUT_WEB;
|
||||||
case NumPunc:
|
case NumPunc:
|
||||||
return VIRTUALKEYBOARD_LAYOUT_NUM_PUNC;
|
return VIRTUALKEYBOARD_LAYOUT_NUM_PUNC;
|
||||||
#ifndef Q_OS_BLACKBERRY_TABLET
|
|
||||||
case Number:
|
case Number:
|
||||||
return VIRTUALKEYBOARD_LAYOUT_NUMBER;
|
return VIRTUALKEYBOARD_LAYOUT_NUMBER;
|
||||||
#endif
|
|
||||||
case Symbol:
|
case Symbol:
|
||||||
return VIRTUALKEYBOARD_LAYOUT_SYMBOL;
|
return VIRTUALKEYBOARD_LAYOUT_SYMBOL;
|
||||||
case Phone:
|
case Phone:
|
||||||
return VIRTUALKEYBOARD_LAYOUT_PHONE;
|
return VIRTUALKEYBOARD_LAYOUT_PHONE;
|
||||||
case Pin:
|
case Pin:
|
||||||
return VIRTUALKEYBOARD_LAYOUT_PIN;
|
return VIRTUALKEYBOARD_LAYOUT_PIN;
|
||||||
#ifndef Q_OS_BLACKBERRY_TABLET
|
|
||||||
case Password:
|
case Password:
|
||||||
return VIRTUALKEYBOARD_LAYOUT_PASSWORD;
|
return VIRTUALKEYBOARD_LAYOUT_PASSWORD;
|
||||||
#endif
|
#if defined(Q_OS_BLACKBERRY)
|
||||||
#if defined(Q_OS_BLACKBERRY) && !defined(Q_OS_BLACKBERRY_TABLET)
|
|
||||||
#if BBNDK_VERSION_AT_LEAST(10, 2, 1)
|
#if BBNDK_VERSION_AT_LEAST(10, 2, 1)
|
||||||
case Alphanumeric:
|
case Alphanumeric:
|
||||||
return VIRTUALKEYBOARD_LAYOUT_ALPHANUMERIC;
|
return VIRTUALKEYBOARD_LAYOUT_ALPHANUMERIC;
|
||||||
|
@ -48,9 +48,7 @@
|
|||||||
#include <QtCore/QDebug>
|
#include <QtCore/QDebug>
|
||||||
|
|
||||||
#if defined(Q_OS_BLACKBERRY)
|
#if defined(Q_OS_BLACKBERRY)
|
||||||
#if !defined(Q_OS_BLACKBERRY_TABLET)
|
|
||||||
#include "qqnxnavigatorcover.h"
|
#include "qqnxnavigatorcover.h"
|
||||||
#endif
|
|
||||||
#include <sys/pps.h>
|
#include <sys/pps.h>
|
||||||
#include <bps/navigator.h>
|
#include <bps/navigator.h>
|
||||||
#endif
|
#endif
|
||||||
@ -635,7 +633,7 @@ QQnxWindow *QQnxWindow::findWindow(screen_window_t windowHandle)
|
|||||||
|
|
||||||
void QQnxWindow::minimize()
|
void QQnxWindow::minimize()
|
||||||
{
|
{
|
||||||
#if defined(Q_OS_BLACKBERRY) && !defined(Q_OS_BLACKBERRY_TABLET)
|
#if defined(Q_OS_BLACKBERRY)
|
||||||
qWindowDebug() << Q_FUNC_INFO;
|
qWindowDebug() << Q_FUNC_INFO;
|
||||||
|
|
||||||
pps_encoder_t encoder;
|
pps_encoder_t encoder;
|
||||||
@ -689,7 +687,7 @@ void QQnxWindow::initWindow()
|
|||||||
setScreen(platformScreen);
|
setScreen(platformScreen);
|
||||||
|
|
||||||
if (window()->type() == Qt::CoverWindow) {
|
if (window()->type() == Qt::CoverWindow) {
|
||||||
#if defined(Q_OS_BLACKBERRY) && !defined(Q_OS_BLACKBERRY_TABLET)
|
#if defined(Q_OS_BLACKBERRY)
|
||||||
if (platformScreen->rootWindow()) {
|
if (platformScreen->rootWindow()) {
|
||||||
screen_set_window_property_pv(m_screen->rootWindow()->nativeHandle(),
|
screen_set_window_property_pv(m_screen->rootWindow()->nativeHandle(),
|
||||||
SCREEN_PROPERTY_ALTERNATE_WINDOW, (void**)&m_window);
|
SCREEN_PROPERTY_ALTERNATE_WINDOW, (void**)&m_window);
|
||||||
|
@ -1498,8 +1498,7 @@ void tst_QWidget::mapFromAndTo()
|
|||||||
subWindow2->setGeometry(75, 75, 100, 100);
|
subWindow2->setGeometry(75, 75, 100, 100);
|
||||||
subSubWindow->setGeometry(10, 10, 10, 10);
|
subSubWindow->setGeometry(10, 10, 10, 10);
|
||||||
|
|
||||||
#if !defined(Q_OS_WINCE) && !defined(Q_OS_QNX) \
|
#if !defined(Q_OS_WINCE) && !defined(Q_OS_QNX) || defined(Q_OS_BLACKBERRY)
|
||||||
|| (defined(Q_OS_BLACKBERRY) && !defined(Q_OS_BLACKBERRY_TABLET))
|
|
||||||
//update visibility
|
//update visibility
|
||||||
if (windowMinimized) {
|
if (windowMinimized) {
|
||||||
if (!windowHidden) {
|
if (!windowHidden) {
|
||||||
@ -7342,7 +7341,7 @@ void tst_QWidget::updateWhileMinimized()
|
|||||||
{
|
{
|
||||||
if (m_platform == QStringLiteral("wayland"))
|
if (m_platform == QStringLiteral("wayland"))
|
||||||
QSKIP("Wayland: This fails. Figure out why.");
|
QSKIP("Wayland: This fails. Figure out why.");
|
||||||
#if defined(Q_OS_QNX) && (!defined(Q_OS_BLACKBERRY) || defined(Q_OS_BLACKBERRY_TABLET))
|
#if defined(Q_OS_QNX) && !defined(Q_OS_BLACKBERRY)
|
||||||
QSKIP("Platform does not support showMinimized()");
|
QSKIP("Platform does not support showMinimized()");
|
||||||
#endif
|
#endif
|
||||||
UpdateWidget widget;
|
UpdateWidget widget;
|
||||||
@ -7897,7 +7896,7 @@ void tst_QWidget::doubleRepaint()
|
|||||||
// Minmize: Should not trigger a repaint.
|
// Minmize: Should not trigger a repaint.
|
||||||
widget.showMinimized();
|
widget.showMinimized();
|
||||||
QTest::qWait(10);
|
QTest::qWait(10);
|
||||||
#if defined(Q_OS_QNX) && (!defined(Q_OS_BLACKBERRY) || defined(Q_OS_BLACKBERRY_TABLET))
|
#if defined(Q_OS_QNX) && !defined(Q_OS_BLACKBERRY)
|
||||||
QEXPECT_FAIL("", "Platform does not support showMinimized()", Continue);
|
QEXPECT_FAIL("", "Platform does not support showMinimized()", Continue);
|
||||||
#endif
|
#endif
|
||||||
QCOMPARE(widget.numPaintEvents, 0);
|
QCOMPARE(widget.numPaintEvents, 0);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user