From b39e52e428798e3aa9c1082309fa503ff5df22ab Mon Sep 17 00:00:00 2001 From: David Kaspar Date: Tue, 4 Mar 2014 13:27:45 +0100 Subject: [PATCH] Qnx: Adding BlackBerryPotentialKit Kit Selection wizard page has a new section which leads to BlackBerry Setup option page in case there is no valid and active BlackBerry API Level available. To minimize impact on non-BlackBerry developers, the section does not appear when there is no BlackBerry API Level registered. Change-Id: I9d853e1827481a3673da0ab28dfe6434f598f0a1 Reviewed-by: Mehdi Fekari Reviewed-by: Nicolas Arnaud-Cormos Reviewed-by: Rafael Roquetto Reviewed-by: Daniel Teske --- src/plugins/qnx/blackberrypotentialkit.cpp | 119 +++++++++++++++++++++ src/plugins/qnx/blackberrypotentialkit.h | 62 +++++++++++ src/plugins/qnx/qnx.pro | 6 +- src/plugins/qnx/qnx.qbs | 2 + src/plugins/qnx/qnxplugin.cpp | 2 + 5 files changed, 189 insertions(+), 2 deletions(-) create mode 100644 src/plugins/qnx/blackberrypotentialkit.cpp create mode 100644 src/plugins/qnx/blackberrypotentialkit.h diff --git a/src/plugins/qnx/blackberrypotentialkit.cpp b/src/plugins/qnx/blackberrypotentialkit.cpp new file mode 100644 index 00000000000..1d612ef33f2 --- /dev/null +++ b/src/plugins/qnx/blackberrypotentialkit.cpp @@ -0,0 +1,119 @@ +/************************************************************************** +** +** Copyright (C) 2014 BlackBerry Limited. All rights reserved. +** +** Contact: BlackBerry (qt@blackberry.com) +** +** This file is part of Qt Creator. +** +** 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 Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/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 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +****************************************************************************/ + +#include "blackberrypotentialkit.h" + +#include "blackberryconfigurationmanager.h" +#include "blackberryapilevelconfiguration.h" +#include "qnxconstants.h" + +#include + +#include +#include +#include +#include + +using namespace Qnx::Internal; + +QString BlackBerryPotentialKit::displayName() const +{ + return tr("Configure BlackBerry..."); +} + +void BlackBerryPotentialKit::executeFromMenu() +{ + openSettings(); +} + +QWidget *BlackBerryPotentialKit::createWidget(QWidget *parent) const +{ + return shouldShow() ? new BlackBerryPotentialKitWidget(parent) : 0; +} + +bool BlackBerryPotentialKit::isEnabled() const +{ + return shouldShow(); +} + +bool BlackBerryPotentialKit::shouldShow() +{ + QList configs = + BlackBerryConfigurationManager::instance().apiLevels(); + if (configs.isEmpty()) + return false; // do not display when we do not have any BlackBerry API Level registered + foreach (BlackBerryApiLevelConfiguration *config, configs) { + if (config->isValid() && config->isActive()) + return false; // do not display when there is at least one valid and active API Level + } + return true; +} + +void BlackBerryPotentialKit::openSettings() +{ + Core::ICore::showOptionsDialog(Qnx::Constants::QNX_BB_CATEGORY, + Qnx::Constants::QNX_BB_SETUP_ID); +} + +BlackBerryPotentialKitWidget::BlackBerryPotentialKitWidget(QWidget *parent) + : Utils::DetailsWidget(parent) +{ + setSummaryText(tr("BlackBerry has not been configured. Create BlackBerry kits.")); + setIcon(QIcon(QLatin1String(":/projectexplorer/images/compile_warning.png"))); + QWidget *mainWidget = new QWidget(this); + setWidget(mainWidget); + + QGridLayout *layout = new QGridLayout(mainWidget); + layout->setMargin(0); + QLabel *label = new QLabel; + label->setText(tr("Qt Creator needs additional settings to enable BlackBerry support." + " You can configure those settings in the Options dialog.")); + label->setWordWrap(true); + layout->addWidget(label, 0, 0, 1, 2); + + QPushButton *openOptions = new QPushButton; + openOptions->setText(Core::ICore::msgShowOptionsDialog()); + openOptions->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); + layout->addWidget(openOptions, 1, 1); + + connect(openOptions, SIGNAL(clicked()), this, SLOT(openOptions())); + connect(&BlackBerryConfigurationManager::instance(), SIGNAL(settingsChanged()), + this, SLOT(recheck())); +} + +void BlackBerryPotentialKitWidget::openOptions() +{ + BlackBerryPotentialKit::openSettings(); +} + +void BlackBerryPotentialKitWidget::recheck() +{ + setVisible(BlackBerryPotentialKit::shouldShow()); +} diff --git a/src/plugins/qnx/blackberrypotentialkit.h b/src/plugins/qnx/blackberrypotentialkit.h new file mode 100644 index 00000000000..7722f98b7f4 --- /dev/null +++ b/src/plugins/qnx/blackberrypotentialkit.h @@ -0,0 +1,62 @@ +/************************************************************************** +** +** Copyright (C) 2014 BlackBerry Limited. All rights reserved. +** +** Contact: BlackBerry (qt@blackberry.com) +** +** This file is part of Qt Creator. +** +** 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 Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/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 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +****************************************************************************/ + +#ifndef BLACKBERRYPOTENTIALKIT_H +#define BLACKBERRYPOTENTIALKIT_H + +#include +#include + +class BlackBerryPotentialKit : public ProjectExplorer::IPotentialKit +{ + Q_OBJECT +public: + QString displayName() const; + void executeFromMenu(); + QWidget *createWidget(QWidget *parent) const; + bool isEnabled() const; + + static bool shouldShow(); + static void openSettings(); +}; + +class BlackBerryPotentialKitWidget : public Utils::DetailsWidget +{ + Q_OBJECT +public: + explicit BlackBerryPotentialKitWidget(QWidget *parent); + +public slots: + void openOptions(); + void recheck(); + +}; + +#endif // BLACKBERRYPOTENTIALKIT_H diff --git a/src/plugins/qnx/qnx.pro b/src/plugins/qnx/qnx.pro index 849f0d4df5e..3f288baae23 100644 --- a/src/plugins/qnx/qnx.pro +++ b/src/plugins/qnx/qnx.pro @@ -103,7 +103,8 @@ SOURCES += qnxplugin.cpp \ blackberrysetuppage.cpp \ blackberrysetupwidget.cpp \ blackberryruntimeconfiguration.cpp \ - blackberryapilevelconfiguration.cpp + blackberryapilevelconfiguration.cpp \ + blackberrypotentialkit.cpp HEADERS += qnxplugin.h\ qnxconstants.h \ @@ -206,7 +207,8 @@ HEADERS += qnxplugin.h\ blackberrysetuppage.h \ blackberrysetupwidget.h \ blackberryruntimeconfiguration.h \ - blackberryapilevelconfiguration.h + blackberryapilevelconfiguration.h \ + blackberrypotentialkit.h FORMS += \ blackberrydeviceconfigurationwizardsetuppage.ui \ diff --git a/src/plugins/qnx/qnx.qbs b/src/plugins/qnx/qnx.qbs index 38eafb03576..601898b2f11 100644 --- a/src/plugins/qnx/qnx.qbs +++ b/src/plugins/qnx/qnx.qbs @@ -134,6 +134,8 @@ QtcPlugin { "blackberryqtversion.h", "blackberryqtversionfactory.cpp", "blackberryqtversionfactory.h", + "blackberrypotentialkit.cpp", + "blackberrypotentialkit.h", "blackberryprocessparser.cpp", "blackberryprocessparser.h", "blackberryrunconfiguration.cpp", diff --git a/src/plugins/qnx/qnxplugin.cpp b/src/plugins/qnx/qnxplugin.cpp index 84e911335e0..c20ab2ba54d 100644 --- a/src/plugins/qnx/qnxplugin.cpp +++ b/src/plugins/qnx/qnxplugin.cpp @@ -58,6 +58,7 @@ #include "cascadesimport/cascadesimportwizard.h" #include "qnxtoolchain.h" #include "qnxattachdebugsupport.h" +#include "blackberrypotentialkit.h" #include #include @@ -104,6 +105,7 @@ bool QNXPlugin::initialize(const QStringList &arguments, QString *errorString) addAutoReleasedObject(new BlackBerryKeysPage); addAutoReleasedObject(new BlackBerryCheckDeviceStatusStepFactory); addAutoReleasedObject(new CascadesImportWizard); + addAutoReleasedObject(new BlackBerryPotentialKit); BlackBerryDeviceConnectionManager::instance()->initialize(); // Handles QNX