diff options
author | Rafael Roquetto <rafael.roquetto@kdab.com> | 2012-03-21 13:46:42 (GMT) |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-03-29 13:32:46 (GMT) |
commit | d4503b0cddb5b0060e25323438aced4bf48889c8 (patch) | |
tree | a9ce761759a2f280ab011dec952982ac1f926094 /src | |
parent | 2cfc2a2e9af97a2799e76868e4c6b302d55266e0 (diff) | |
download | Qt-d4503b0cddb5b0060e25323438aced4bf48889c8.zip Qt-d4503b0cddb5b0060e25323438aced4bf48889c8.tar.gz Qt-d4503b0cddb5b0060e25323438aced4bf48889c8.tar.bz2 |
Support QDesktopServices on BlackBerry platforms
Change-Id: I10506b83efda8efb12ccc531f60cd4cd9b4b5bc9
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
Diffstat (limited to 'src')
-rw-r--r-- | src/gui/util/qdesktopservices.cpp | 4 | ||||
-rw-r--r-- | src/gui/util/qdesktopservices_blackberry.cpp | 113 | ||||
-rw-r--r-- | src/plugins/platforms/blackberry/qbbintegration.cpp | 12 |
3 files changed, 128 insertions, 1 deletions
diff --git a/src/gui/util/qdesktopservices.cpp b/src/gui/util/qdesktopservices.cpp index 79405c6..6727747 100644 --- a/src/gui/util/qdesktopservices.cpp +++ b/src/gui/util/qdesktopservices.cpp @@ -45,7 +45,9 @@ #include <qdebug.h> -#if defined(Q_WS_QWS) || defined(Q_WS_QPA) +#if defined(Q_OS_BLACKBERRY) +#include "qdesktopservices_blackberry.cpp" +#elif defined(Q_WS_QWS) || defined(Q_WS_QPA) #include "qdesktopservices_qws.cpp" #elif defined(Q_WS_X11) #include "qdesktopservices_x11.cpp" diff --git a/src/gui/util/qdesktopservices_blackberry.cpp b/src/gui/util/qdesktopservices_blackberry.cpp new file mode 100644 index 0000000..e123b59 --- /dev/null +++ b/src/gui/util/qdesktopservices_blackberry.cpp @@ -0,0 +1,113 @@ +/**************************************************************************** +** +** Copyright (C) 2011 - 2012 Research In Motion +** +** Contact: Research In Motion <blackberry-qt@qnx.com> +** Contact: Klarälvdalens Datakonsult AB <info@kdab.com> +** +** This file is part of the QtCore module 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. +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QT_NO_DESKTOPSERVICES + +#include <qurl.h> +#include <bps/navigator.h> + +QT_BEGIN_NAMESPACE + +static bool navigatorInvoke(const QUrl &url) +{ + if (!url.isValid() || url.isRelative()) + return false; + + int ret = navigator_invoke(url.toString().toUtf8(), 0); + + return (ret == BPS_SUCCESS); +} + +static bool launchWebBrowser(const QUrl &url) +{ + return navigatorInvoke(url); +} + +static bool openDocument(const QUrl &file) +{ + return navigatorInvoke(file); +} + +QString QDesktopServices::storageLocation(StandardLocation type) +{ + if (type == QDesktopServices::TempLocation) + return QDir::tempPath(); + if (type == QDesktopServices::CacheLocation) + return QDir::homePath() + QLatin1String("/Cache"); + + QString path; + + const int index = QDir::homePath().lastIndexOf("/data"); + + const QString sharedRoot = QDir::homePath().replace(index, + QDir::homePath().length() - index, "/shared"); + + switch (type) { + case DataLocation: + case DesktopLocation: + case HomeLocation: + path = QDir::homePath(); + break; + case DocumentsLocation: + path = sharedRoot + QLatin1String("/documents"); + break; + case PicturesLocation: + path = sharedRoot + QLatin1String("/photos"); + break; + case MusicLocation: + path = sharedRoot + QLatin1String("/music"); + break; + case MoviesLocation: + path = sharedRoot + QLatin1String("/videos"); + break; + default: + break; + } + + return path; +} + +QString QDesktopServices::displayName(StandardLocation type) +{ + return storageLocation(type); +} + +QT_END_NAMESPACE + +#endif // QT_NO_DESKTOPSERVICES diff --git a/src/plugins/platforms/blackberry/qbbintegration.cpp b/src/plugins/platforms/blackberry/qbbintegration.cpp index 7cada16..a180ac9 100644 --- a/src/plugins/platforms/blackberry/qbbintegration.cpp +++ b/src/plugins/platforms/blackberry/qbbintegration.cpp @@ -63,6 +63,10 @@ #include <errno.h> +#if defined(Q_OS_BLACKBERRY) +#include <bps/navigator.h> +#endif + QT_BEGIN_NAMESPACE QBBIntegration::QBBIntegration() : @@ -109,6 +113,10 @@ QBBIntegration::QBBIntegration() : mLocaleThread->start(); #endif +#if defined(Q_OS_BLACKBERRY) + bps_initialize(); +#endif + // create/start the keyboard class. QBBVirtualKeyboard::instance(); @@ -144,6 +152,10 @@ QBBIntegration::~QBBIntegration() // cleanup global OpenGL resources QBBGLContext::shutdown(); +#if defined(Q_OS_BLACKBERRY) + bps_shutdown(); +#endif + #if defined(QBBINTEGRATION_DEBUG) qDebug() << "QBB: platform plugin shutdown end"; #endif |