forked from qt-creator/qt-creator
Qnx: Support multiple BlackBerry target configurations
The new bbndk 10.2 is based on multiple targets (based on multiple bbnk-env scripts). There is no default/common bbnk-env.sh file anymore, and an NDK directory may contain various bbndk-env scripts (i.e targets). This patch makes the BlackBerryConfiguration based on the bbnk-env script path rather than on the NDK path. This will enable having multiple configurations per targets in the same NDK directory. N.B: NDKs 10.1 with one default bbnk-env file are still supported. Change-Id: Icec57c6e722caec7e5ff81e3a9ce4d2cf11f249a Reviewed-by: Tobias Hunger <tobias.hunger@digia.com> Reviewed-by: Nicolas Arnaud-Cormos <nicolas@kdab.com>
This commit is contained in:
committed by
Mehdi Fekari
parent
afcb9b2c41
commit
01ebbe19ba
@@ -54,12 +54,15 @@
|
|||||||
namespace Qnx {
|
namespace Qnx {
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
BlackBerryConfiguration::BlackBerryConfiguration(const QString &ndkPath, bool isAutoDetected, const QString &displayName)
|
BlackBerryConfiguration::BlackBerryConfiguration(const Utils::FileName &ndkEnvFile, bool isAutoDetected,
|
||||||
|
const QString &displayName)
|
||||||
{
|
{
|
||||||
m_ndkPath = ndkPath;
|
Q_ASSERT(!QFileInfo(ndkEnvFile.toString()).isDir());
|
||||||
|
m_ndkEnvFile = ndkEnvFile;
|
||||||
m_isAutoDetected = isAutoDetected;
|
m_isAutoDetected = isAutoDetected;
|
||||||
m_displayName = displayName.isEmpty() ? m_ndkPath.split(QDir::separator()).last() : displayName;
|
QString ndkPath = ndkEnvFile.parentDir().toString();
|
||||||
m_qnxEnv = QnxUtils::parseEnvironmentFile(QnxUtils::envFilePath(m_ndkPath));
|
m_displayName = displayName.isEmpty() ? ndkPath.split(QDir::separator()).last() : displayName;
|
||||||
|
m_qnxEnv = QnxUtils::parseEnvironmentFile(m_ndkEnvFile.toString());
|
||||||
|
|
||||||
QString ndkTarget = m_qnxEnv.value(QLatin1String("QNX_TARGET"));
|
QString ndkTarget = m_qnxEnv.value(QLatin1String("QNX_TARGET"));
|
||||||
QString sep = QString::fromLatin1("%1qnx6").arg(QDir::separator());
|
QString sep = QString::fromLatin1("%1qnx6").arg(QDir::separator());
|
||||||
@@ -94,7 +97,7 @@ BlackBerryConfiguration::BlackBerryConfiguration(const QString &ndkPath, bool is
|
|||||||
|
|
||||||
QString BlackBerryConfiguration::ndkPath() const
|
QString BlackBerryConfiguration::ndkPath() const
|
||||||
{
|
{
|
||||||
return m_ndkPath;
|
return m_ndkEnvFile.parentDir().toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
QString BlackBerryConfiguration::displayName() const
|
QString BlackBerryConfiguration::displayName() const
|
||||||
@@ -125,6 +128,11 @@ bool BlackBerryConfiguration::isValid() const
|
|||||||
|| m_deviceDebuger.isEmpty() || m_simulatorDebuger.isEmpty());
|
|| m_deviceDebuger.isEmpty() || m_simulatorDebuger.isEmpty());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Utils::FileName BlackBerryConfiguration::ndkEnvFile() const
|
||||||
|
{
|
||||||
|
return m_ndkEnvFile;
|
||||||
|
}
|
||||||
|
|
||||||
Utils::FileName BlackBerryConfiguration::qmake4BinaryFile() const
|
Utils::FileName BlackBerryConfiguration::qmake4BinaryFile() const
|
||||||
{
|
{
|
||||||
return m_qmake4BinaryFile;
|
return m_qmake4BinaryFile;
|
||||||
@@ -193,7 +201,7 @@ QtSupport::BaseQtVersion *BlackBerryConfiguration::createQtVersion(const Utils::
|
|||||||
return version;
|
return version;
|
||||||
}
|
}
|
||||||
|
|
||||||
version = new BlackBerryQtVersion(QnxUtils::cpudirToArch(cpuDir), qmakePath, m_isAutoDetected, QString(), m_ndkPath);
|
version = new BlackBerryQtVersion(QnxUtils::cpudirToArch(cpuDir), qmakePath, m_isAutoDetected, QString(), m_ndkEnvFile.toString());
|
||||||
if (!version) {
|
if (!version) {
|
||||||
if (!m_isAutoDetected)
|
if (!m_isAutoDetected)
|
||||||
QMessageBox::warning(0, QObject::tr("Invalid Qt Version"),
|
QMessageBox::warning(0, QObject::tr("Invalid Qt Version"),
|
||||||
@@ -288,7 +296,7 @@ bool BlackBerryConfiguration::activate()
|
|||||||
if (m_isAutoDetected)
|
if (m_isAutoDetected)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
QString errorMessage = QObject::tr("The following errors occurred while activating NDK: %1").arg(m_ndkPath);
|
QString errorMessage = QObject::tr("The following errors occurred while activating Target: %1").arg(m_targetName);
|
||||||
if (m_qmake4BinaryFile.isEmpty() && m_qmake4BinaryFile.isEmpty())
|
if (m_qmake4BinaryFile.isEmpty() && m_qmake4BinaryFile.isEmpty())
|
||||||
errorMessage += QLatin1Char('\n') + QObject::tr("- No Qt version found.");
|
errorMessage += QLatin1Char('\n') + QObject::tr("- No Qt version found.");
|
||||||
|
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ namespace Internal {
|
|||||||
class BlackBerryConfiguration
|
class BlackBerryConfiguration
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
BlackBerryConfiguration(const QString& ndkPath, bool isAutoDetected, const QString &displayName = QString());
|
BlackBerryConfiguration(const Utils::FileName &ndkEnvFile, bool isAutoDetected, const QString &displayName = QString());
|
||||||
bool activate();
|
bool activate();
|
||||||
void deactivate();
|
void deactivate();
|
||||||
QString ndkPath() const;
|
QString ndkPath() const;
|
||||||
@@ -59,6 +59,7 @@ public:
|
|||||||
bool isAutoDetected() const;
|
bool isAutoDetected() const;
|
||||||
bool isActive() const;
|
bool isActive() const;
|
||||||
bool isValid() const;
|
bool isValid() const;
|
||||||
|
Utils::FileName ndkEnvFile() const;
|
||||||
Utils::FileName qmake4BinaryFile() const;
|
Utils::FileName qmake4BinaryFile() const;
|
||||||
Utils::FileName qmake5BinaryFile() const;
|
Utils::FileName qmake5BinaryFile() const;
|
||||||
Utils::FileName gccCompiler() const;
|
Utils::FileName gccCompiler() const;
|
||||||
@@ -68,10 +69,10 @@ public:
|
|||||||
QMultiMap<QString, QString> qnxEnv() const;
|
QMultiMap<QString, QString> qnxEnv() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QString m_ndkPath;
|
|
||||||
QString m_displayName;
|
QString m_displayName;
|
||||||
QString m_targetName;
|
QString m_targetName;
|
||||||
bool m_isAutoDetected;
|
bool m_isAutoDetected;
|
||||||
|
Utils::FileName m_ndkEnvFile;
|
||||||
Utils::FileName m_qmake4BinaryFile;
|
Utils::FileName m_qmake4BinaryFile;
|
||||||
Utils::FileName m_qmake5BinaryFile;
|
Utils::FileName m_qmake5BinaryFile;
|
||||||
Utils::FileName m_gccCompiler;
|
Utils::FileName m_gccCompiler;
|
||||||
|
|||||||
@@ -49,13 +49,15 @@
|
|||||||
#include <qtsupport/qtkitinformation.h>
|
#include <qtsupport/qtkitinformation.h>
|
||||||
|
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
|
#include <QFileInfo>
|
||||||
|
|
||||||
namespace Qnx {
|
namespace Qnx {
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
const QLatin1String SettingsGroup("BlackBerryConfiguration");
|
const QLatin1String SettingsGroup("BlackBerryConfiguration");
|
||||||
const QLatin1String NDKLocationKey("NDKLocation");
|
const QLatin1String NDKLocationKey("NDKLocation"); // For 10.1 NDK support (< QTC 3.0)
|
||||||
|
const QLatin1String NDKEnvFileKey("NDKEnvFile");
|
||||||
const QLatin1String CertificateGroup("Certificates");
|
const QLatin1String CertificateGroup("Certificates");
|
||||||
const QLatin1String ManualNDKsGroup("ManualNDKs");
|
const QLatin1String ManualNDKsGroup("ManualNDKs");
|
||||||
}
|
}
|
||||||
@@ -102,7 +104,16 @@ void BlackBerryConfigurationManager::loadManualConfigurations()
|
|||||||
|
|
||||||
foreach (const QString &manualNdk, settings->childGroups()) {
|
foreach (const QString &manualNdk, settings->childGroups()) {
|
||||||
settings->beginGroup(manualNdk);
|
settings->beginGroup(manualNdk);
|
||||||
BlackBerryConfiguration *config = new BlackBerryConfiguration(settings->value(NDKLocationKey).toString(),
|
QString ndkEnvPath = settings->value(NDKEnvFileKey).toString();
|
||||||
|
// For 10.1 NDK support (< QTC 3.0):
|
||||||
|
// Since QTC 3.0 BBConfigurations are based on the bbndk-env file
|
||||||
|
// to support multiple targets per NDK
|
||||||
|
if (ndkEnvPath.isEmpty()) {
|
||||||
|
QString ndkPath = settings->value(NDKLocationKey).toString();
|
||||||
|
ndkEnvPath = QnxUtils::envFilePath(ndkPath);
|
||||||
|
}
|
||||||
|
|
||||||
|
BlackBerryConfiguration *config = new BlackBerryConfiguration(Utils::FileName::fromString(ndkEnvPath),
|
||||||
false);
|
false);
|
||||||
if (!addConfiguration(config))
|
if (!addConfiguration(config))
|
||||||
delete config;
|
delete config;
|
||||||
@@ -117,7 +128,9 @@ void BlackBerryConfigurationManager::loadManualConfigurations()
|
|||||||
void BlackBerryConfigurationManager::loadAutoDetectedConfigurations()
|
void BlackBerryConfigurationManager::loadAutoDetectedConfigurations()
|
||||||
{
|
{
|
||||||
foreach (const NdkInstallInformation &ndkInfo, QnxUtils::installedNdks()) {
|
foreach (const NdkInstallInformation &ndkInfo, QnxUtils::installedNdks()) {
|
||||||
BlackBerryConfiguration *config = new BlackBerryConfiguration(ndkInfo.path, true, ndkInfo.name);
|
QString envFilePath = QnxUtils::envFilePath(ndkInfo.path, ndkInfo.version);
|
||||||
|
BlackBerryConfiguration *config = new BlackBerryConfiguration(Utils::FileName::fromString(envFilePath),
|
||||||
|
true, ndkInfo.name);
|
||||||
if (!addConfiguration(config))
|
if (!addConfiguration(config))
|
||||||
delete config;
|
delete config;
|
||||||
}
|
}
|
||||||
@@ -157,7 +170,7 @@ void BlackBerryConfigurationManager::saveManualConfigurations()
|
|||||||
|
|
||||||
foreach (BlackBerryConfiguration *config, manualConfigurations()) {
|
foreach (BlackBerryConfiguration *config, manualConfigurations()) {
|
||||||
settings->beginGroup(config->displayName());
|
settings->beginGroup(config->displayName());
|
||||||
settings->setValue(NDKLocationKey, config->ndkPath());
|
settings->setValue(NDKEnvFileKey, config->ndkEnvFile().toString());
|
||||||
settings->endGroup();
|
settings->endGroup();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -243,10 +256,10 @@ QList<BlackBerryConfiguration *> BlackBerryConfigurationManager::manualConfigura
|
|||||||
return manuals;
|
return manuals;
|
||||||
}
|
}
|
||||||
|
|
||||||
BlackBerryConfiguration *BlackBerryConfigurationManager::configurationFromNdkPath(const QString &ndkPath) const
|
BlackBerryConfiguration *BlackBerryConfigurationManager::configurationFromEnvFile(const Utils::FileName &envFile) const
|
||||||
{
|
{
|
||||||
foreach (BlackBerryConfiguration *config, m_configs) {
|
foreach (BlackBerryConfiguration *config, m_configs) {
|
||||||
if (config->ndkPath() == ndkPath)
|
if (config->ndkEnvFile() == envFile)
|
||||||
return config;
|
return config;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ public:
|
|||||||
void removeConfiguration(BlackBerryConfiguration *config);
|
void removeConfiguration(BlackBerryConfiguration *config);
|
||||||
QList<BlackBerryConfiguration*> configurations() const;
|
QList<BlackBerryConfiguration*> configurations() const;
|
||||||
QList<BlackBerryConfiguration*> manualConfigurations() const;
|
QList<BlackBerryConfiguration*> manualConfigurations() const;
|
||||||
BlackBerryConfiguration *configurationFromNdkPath(const QString &ndkPath) const;
|
BlackBerryConfiguration *configurationFromEnvFile(const Utils::FileName &envFile) const;
|
||||||
|
|
||||||
QString barsignerCskPath() const;
|
QString barsignerCskPath() const;
|
||||||
QString barsignerDbPath() const;
|
QString barsignerDbPath() const;
|
||||||
|
|||||||
@@ -62,12 +62,11 @@ BlackBerryNDKSettingsWidget::BlackBerryNDKSettingsWidget(QWidget *parent) :
|
|||||||
|
|
||||||
m_ui->removeNdkButton->setEnabled(false);
|
m_ui->removeNdkButton->setEnabled(false);
|
||||||
|
|
||||||
initInfoTable();
|
|
||||||
initNdkList();
|
initNdkList();
|
||||||
|
|
||||||
connect(m_ui->wizardButton, SIGNAL(clicked()), this, SLOT(launchBlackBerrySetupWizard()));
|
connect(m_ui->wizardButton, SIGNAL(clicked()), this, SLOT(launchBlackBerrySetupWizard()));
|
||||||
connect(m_ui->addNdkButton, SIGNAL(clicked()), this, SLOT(addNdk()));
|
connect(m_ui->addNdkButton, SIGNAL(clicked()), this, SLOT(addNdkTarget()));
|
||||||
connect(m_ui->removeNdkButton, SIGNAL(clicked()), this, SLOT(removeNdk()));
|
connect(m_ui->removeNdkButton, SIGNAL(clicked()), this, SLOT(removeNdkTarget()));
|
||||||
connect(m_ui->ndksTreeWidget, SIGNAL(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)), this, SLOT(updateInfoTable(QTreeWidgetItem*)));
|
connect(m_ui->ndksTreeWidget, SIGNAL(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)), this, SLOT(updateInfoTable(QTreeWidgetItem*)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -98,49 +97,27 @@ void BlackBerryNDKSettingsWidget::launchBlackBerrySetupWizard() const
|
|||||||
|
|
||||||
void BlackBerryNDKSettingsWidget::updateInfoTable(QTreeWidgetItem* currentNdk)
|
void BlackBerryNDKSettingsWidget::updateInfoTable(QTreeWidgetItem* currentNdk)
|
||||||
{
|
{
|
||||||
QString ndkPath = currentNdk->text(1);
|
QString envFilePath = currentNdk->text(1);
|
||||||
if (ndkPath.isEmpty()) {
|
if (envFilePath.isEmpty()) {
|
||||||
m_ui->removeNdkButton->setEnabled(false);
|
m_ui->removeNdkButton->setEnabled(false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
QMultiMap<QString, QString> env = QnxUtils::parseEnvironmentFile(QnxUtils::envFilePath(ndkPath));
|
BlackBerryConfiguration *config = m_bbConfigManager->configurationFromEnvFile(Utils::FileName::fromString(envFilePath));
|
||||||
if (env.isEmpty()) {
|
|
||||||
clearInfoTable();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
m_infoModel->clear();
|
|
||||||
m_infoModel->setHorizontalHeaderItem(0, new QStandardItem(QString(QLatin1String("Variable"))));
|
|
||||||
m_infoModel->setHorizontalHeaderItem(1, new QStandardItem(QString(QLatin1String("Value"))));
|
|
||||||
|
|
||||||
m_ui->ndkInfosTableView->horizontalHeader()->setResizeMode(0, QHeaderView::ResizeToContents);
|
|
||||||
m_ui->ndkInfosTableView->horizontalHeader()->setStretchLastSection(true);
|
|
||||||
|
|
||||||
QMultiMap<QString, QString>::const_iterator it;
|
|
||||||
QMultiMap<QString, QString>::const_iterator end(env.constEnd());
|
|
||||||
for (it = env.constBegin(); it != end; ++it) {
|
|
||||||
const QString key = it.key();
|
|
||||||
const QString value = it.value();
|
|
||||||
QList <QStandardItem*> row;
|
|
||||||
row << new QStandardItem(key) << new QStandardItem(value);
|
|
||||||
m_infoModel->appendRow(row);
|
|
||||||
}
|
|
||||||
|
|
||||||
BlackBerryConfiguration *config = m_bbConfigManager->configurationFromNdkPath(ndkPath);
|
|
||||||
if (!config)
|
if (!config)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
QString qmake4Path = config->qmake4BinaryFile().toString();
|
foreach (const NdkInstallInformation &ndkInfo, QnxUtils::installedNdks())
|
||||||
QString qmake5Path = config->qmake5BinaryFile().toString();
|
{
|
||||||
|
if (ndkInfo.target.contains(config->targetName())) {
|
||||||
if (!qmake4Path.isEmpty())
|
m_ui->baseNameLabel->setText(ndkInfo.name);
|
||||||
m_infoModel->appendRow(QList<QStandardItem*>() << new QStandardItem(QString(QLatin1String("QMAKE 4"))) << new QStandardItem(qmake4Path));
|
m_ui->ndkPathLabel->setText(ndkInfo.path);
|
||||||
|
m_ui->versionLabel->setText(ndkInfo.version);
|
||||||
if (!qmake5Path.isEmpty())
|
m_ui->hostLabel->setText(ndkInfo.host);
|
||||||
m_infoModel->appendRow(QList<QStandardItem*>() << new QStandardItem(QString(QLatin1String("QMAKE 5"))) << new QStandardItem(qmake5Path));
|
m_ui->targetLabel->setText(ndkInfo.target);
|
||||||
|
break;
|
||||||
m_infoModel->appendRow(QList<QStandardItem*>() << new QStandardItem(QString(QLatin1String("COMPILER"))) << new QStandardItem(config->gccCompiler().toString()));
|
}
|
||||||
|
}
|
||||||
|
|
||||||
m_ui->removeNdkButton->setEnabled(!config->isAutoDetected());
|
m_ui->removeNdkButton->setEnabled(!config->isAutoDetected());
|
||||||
}
|
}
|
||||||
@@ -151,7 +128,7 @@ void BlackBerryNDKSettingsWidget::updateNdkList()
|
|||||||
QTreeWidgetItem *parent = config->isAutoDetected() ? m_autoDetectedNdks : m_manualNdks;
|
QTreeWidgetItem *parent = config->isAutoDetected() ? m_autoDetectedNdks : m_manualNdks;
|
||||||
QTreeWidgetItem *item = new QTreeWidgetItem(parent);
|
QTreeWidgetItem *item = new QTreeWidgetItem(parent);
|
||||||
item->setText(0, config->displayName());
|
item->setText(0, config->displayName());
|
||||||
item->setText(1, config->ndkPath()); // TODO: should be target name for NDKs >= v10.2
|
item->setText(1, config->ndkEnvFile().toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_autoDetectedNdks->child(0)) {
|
if (m_autoDetectedNdks->child(0)) {
|
||||||
@@ -160,22 +137,17 @@ void BlackBerryNDKSettingsWidget::updateNdkList()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void BlackBerryNDKSettingsWidget::clearInfoTable()
|
void BlackBerryNDKSettingsWidget::addNdkTarget()
|
||||||
{
|
{
|
||||||
m_infoModel->clear();
|
QString selectedPath = QFileDialog::getOpenFileName(0, tr("Select the NDK Environment file"),
|
||||||
}
|
QString(), tr("BlackBerry Environment File (*.sh *.bat)"));
|
||||||
|
if (selectedPath.isEmpty() || !QFileInfo(selectedPath).exists())
|
||||||
void BlackBerryNDKSettingsWidget::addNdk()
|
|
||||||
{
|
|
||||||
QString selectedPath = QFileDialog::getExistingDirectory(0, tr("Select the NDK path"),
|
|
||||||
QString(),
|
|
||||||
QFileDialog::ShowDirsOnly);
|
|
||||||
if (selectedPath.isEmpty())
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
BlackBerryConfiguration *config = m_bbConfigManager->configurationFromNdkPath(selectedPath);
|
BlackBerryConfiguration *config = m_bbConfigManager->configurationFromEnvFile(Utils::FileName::fromString(selectedPath));
|
||||||
|
|
||||||
if (!config) {
|
if (!config) {
|
||||||
config = new BlackBerryConfiguration(selectedPath, false);
|
config = new BlackBerryConfiguration(Utils::FileName::fromString(selectedPath), false);
|
||||||
if (!m_bbConfigManager->addConfiguration(config)) {
|
if (!m_bbConfigManager->addConfiguration(config)) {
|
||||||
delete config;
|
delete config;
|
||||||
return;
|
return;
|
||||||
@@ -188,17 +160,18 @@ void BlackBerryNDKSettingsWidget::addNdk()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void BlackBerryNDKSettingsWidget::removeNdk()
|
void BlackBerryNDKSettingsWidget::removeNdkTarget()
|
||||||
{
|
{
|
||||||
QString ndkPath = m_ui->ndksTreeWidget->currentItem()->text(1);
|
QString ndk = m_ui->ndksTreeWidget->currentItem()->text(0);
|
||||||
|
QString envFilePath = m_ui->ndksTreeWidget->currentItem()->text(1);
|
||||||
QMessageBox::StandardButton button =
|
QMessageBox::StandardButton button =
|
||||||
QMessageBox::question(Core::ICore::mainWindow(),
|
QMessageBox::question(Core::ICore::mainWindow(),
|
||||||
tr("Clean BlackBerry 10 Configuration"),
|
tr("Clean BlackBerry 10 Configuration"),
|
||||||
tr("Are you sure you want to remove:\n %1?").arg(ndkPath),
|
tr("Are you sure you want to remove:\n %1?").arg(ndk),
|
||||||
QMessageBox::Yes | QMessageBox::No);
|
QMessageBox::Yes | QMessageBox::No);
|
||||||
|
|
||||||
if (button == QMessageBox::Yes) {
|
if (button == QMessageBox::Yes) {
|
||||||
BlackBerryConfiguration *config = m_bbConfigManager->configurationFromNdkPath(ndkPath);
|
BlackBerryConfiguration *config = m_bbConfigManager->configurationFromEnvFile(Utils::FileName::fromString(envFilePath));
|
||||||
if (config)
|
if (config)
|
||||||
m_bbConfigManager->removeConfiguration(config);
|
m_bbConfigManager->removeConfiguration(config);
|
||||||
m_manualNdks->removeChild(m_ui->ndksTreeWidget->currentItem());
|
m_manualNdks->removeChild(m_ui->ndksTreeWidget->currentItem());
|
||||||
@@ -206,20 +179,11 @@ void BlackBerryNDKSettingsWidget::removeNdk()
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void BlackBerryNDKSettingsWidget::initInfoTable()
|
|
||||||
{
|
|
||||||
m_infoModel = new QStandardItemModel(this);
|
|
||||||
|
|
||||||
m_ui->ndkInfosTableView->setModel(m_infoModel);
|
|
||||||
m_ui->ndkInfosTableView->verticalHeader()->hide();
|
|
||||||
m_ui->ndkInfosTableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
|
|
||||||
}
|
|
||||||
|
|
||||||
void BlackBerryNDKSettingsWidget::initNdkList()
|
void BlackBerryNDKSettingsWidget::initNdkList()
|
||||||
{
|
{
|
||||||
m_ui->ndksTreeWidget->header()->setResizeMode(QHeaderView::Stretch);
|
m_ui->ndksTreeWidget->header()->setResizeMode(QHeaderView::Stretch);
|
||||||
m_ui->ndksTreeWidget->header()->setStretchLastSection(false);
|
m_ui->ndksTreeWidget->header()->setStretchLastSection(false);
|
||||||
m_ui->ndksTreeWidget->setHeaderItem(new QTreeWidgetItem(QStringList() << tr("NDK") << tr("Path")));
|
m_ui->ndksTreeWidget->setHeaderItem(new QTreeWidgetItem(QStringList() << tr("NDK") << tr("NDK Environment File")));
|
||||||
m_ui->ndksTreeWidget->setTextElideMode(Qt::ElideNone);
|
m_ui->ndksTreeWidget->setTextElideMode(Qt::ElideNone);
|
||||||
m_ui->ndksTreeWidget->setColumnCount(2);
|
m_ui->ndksTreeWidget->setColumnCount(2);
|
||||||
m_autoDetectedNdks = new QTreeWidgetItem(m_ui->ndksTreeWidget);
|
m_autoDetectedNdks = new QTreeWidgetItem(m_ui->ndksTreeWidget);
|
||||||
|
|||||||
@@ -62,17 +62,14 @@ public slots:
|
|||||||
void launchBlackBerrySetupWizard() const;
|
void launchBlackBerrySetupWizard() const;
|
||||||
void updateInfoTable(QTreeWidgetItem* currentNdk);
|
void updateInfoTable(QTreeWidgetItem* currentNdk);
|
||||||
void updateNdkList();
|
void updateNdkList();
|
||||||
void clearInfoTable();
|
void addNdkTarget();
|
||||||
void addNdk();
|
void removeNdkTarget();
|
||||||
void removeNdk();
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void initInfoTable();
|
|
||||||
void initNdkList();
|
void initNdkList();
|
||||||
|
|
||||||
Ui_BlackBerryNDKSettingsWidget *m_ui;
|
Ui_BlackBerryNDKSettingsWidget *m_ui;
|
||||||
BlackBerryConfigurationManager *m_bbConfigManager;
|
BlackBerryConfigurationManager *m_bbConfigManager;
|
||||||
QStandardItemModel *m_infoModel;
|
|
||||||
QTreeWidgetItem *m_autoDetectedNdks;
|
QTreeWidgetItem *m_autoDetectedNdks;
|
||||||
QTreeWidgetItem *m_manualNdks;
|
QTreeWidgetItem *m_manualNdks;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -147,9 +147,6 @@
|
|||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<layout class="QGridLayout" name="gridLayout">
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
<item row="2" column="0">
|
|
||||||
<widget class="QTableView" name="ndkInfosTableView"/>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="0">
|
<item row="0" column="0">
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||||
<item>
|
<item>
|
||||||
@@ -166,14 +163,14 @@
|
|||||||
<item>
|
<item>
|
||||||
<widget class="QPushButton" name="addNdkButton">
|
<widget class="QPushButton" name="addNdkButton">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Add NDK</string>
|
<string>Add Target</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QPushButton" name="removeNdkButton">
|
<widget class="QPushButton" name="removeNdkButton">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Remove NDK</string>
|
<string>Remove Target</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@@ -196,6 +193,170 @@
|
|||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QGroupBox" name="groupBox">
|
||||||
|
<property name="title">
|
||||||
|
<string>BlackBerry NDK Information</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout_7">
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_7">
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label">
|
||||||
|
<property name="text">
|
||||||
|
<string><html><head/><body><p><span style=" font-weight:600;">NDK Base Name:</span></p></body></html></string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="baseNameLabel">
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_2">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_8">
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_2">
|
||||||
|
<property name="text">
|
||||||
|
<string><html><head/><body><p><span style=" font-weight:600;">NDK Path:</span></p></body></html></string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="ndkPathLabel">
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_3">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_9">
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_3">
|
||||||
|
<property name="text">
|
||||||
|
<string><html><head/><body><p><span style=" font-weight:600;">Version:</span></p></body></html></string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="versionLabel">
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_4">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_10">
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_4">
|
||||||
|
<property name="text">
|
||||||
|
<string><html><head/><body><p><span style=" font-weight:600;">Host:</span></p></body></html></string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="hostLabel">
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_5">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_11">
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_5">
|
||||||
|
<property name="text">
|
||||||
|
<string><html><head/><body><p><span style=" font-weight:600;">Target:</span></p></body></html></string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="targetLabel">
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_6">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<resources/>
|
<resources/>
|
||||||
|
|||||||
@@ -39,11 +39,16 @@
|
|||||||
#include <utils/hostosinfo.h>
|
#include <utils/hostosinfo.h>
|
||||||
#include <utils/qtcassert.h>
|
#include <utils/qtcassert.h>
|
||||||
|
|
||||||
|
#include <QFileInfo>
|
||||||
#include <QTextStream>
|
#include <QTextStream>
|
||||||
|
|
||||||
using namespace Qnx;
|
using namespace Qnx;
|
||||||
using namespace Qnx::Internal;
|
using namespace Qnx::Internal;
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
const QLatin1String NndkEnvFile("ndkEnvFile");
|
||||||
|
}
|
||||||
|
|
||||||
BlackBerryQtVersion::BlackBerryQtVersion()
|
BlackBerryQtVersion::BlackBerryQtVersion()
|
||||||
: QnxAbstractQtVersion()
|
: QnxAbstractQtVersion()
|
||||||
{
|
{
|
||||||
@@ -52,10 +57,17 @@ BlackBerryQtVersion::BlackBerryQtVersion()
|
|||||||
BlackBerryQtVersion::BlackBerryQtVersion(QnxArchitecture arch, const Utils::FileName &path, bool isAutoDetected, const QString &autoDetectionSource, const QString &sdkPath)
|
BlackBerryQtVersion::BlackBerryQtVersion(QnxArchitecture arch, const Utils::FileName &path, bool isAutoDetected, const QString &autoDetectionSource, const QString &sdkPath)
|
||||||
: QnxAbstractQtVersion(arch, path, isAutoDetected, autoDetectionSource)
|
: QnxAbstractQtVersion(arch, path, isAutoDetected, autoDetectionSource)
|
||||||
{
|
{
|
||||||
if (QnxUtils::isValidNdkPath(sdkPath))
|
if (!sdkPath.isEmpty()) {
|
||||||
setSdkPath(sdkPath);
|
if (QFileInfo(sdkPath).isDir()) {
|
||||||
else
|
setSdkPath(sdkPath);
|
||||||
|
} else {
|
||||||
|
m_ndkEnvFile = sdkPath;
|
||||||
|
setSdkPath(QFileInfo(sdkPath).absolutePath());
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
setDefaultSdkPath();
|
setDefaultSdkPath();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
BlackBerryQtVersion::~BlackBerryQtVersion()
|
BlackBerryQtVersion::~BlackBerryQtVersion()
|
||||||
@@ -78,13 +90,27 @@ QString BlackBerryQtVersion::description() const
|
|||||||
return tr("BlackBerry %1", "Qt Version is meant for BlackBerry").arg(archString());
|
return tr("BlackBerry %1", "Qt Version is meant for BlackBerry").arg(archString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QVariantMap BlackBerryQtVersion::toMap() const
|
||||||
|
{
|
||||||
|
QVariantMap result = QnxAbstractQtVersion::toMap();
|
||||||
|
result.insert(NndkEnvFile, m_ndkEnvFile);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
void BlackBerryQtVersion::fromMap(const QVariantMap &map)
|
||||||
|
{
|
||||||
|
QnxAbstractQtVersion::fromMap(map);
|
||||||
|
m_ndkEnvFile = map.value(NndkEnvFile).toString();
|
||||||
|
}
|
||||||
|
|
||||||
QMultiMap<QString, QString> BlackBerryQtVersion::environment() const
|
QMultiMap<QString, QString> BlackBerryQtVersion::environment() const
|
||||||
{
|
{
|
||||||
QTC_CHECK(!sdkPath().isEmpty());
|
QTC_CHECK(!sdkPath().isEmpty());
|
||||||
if (sdkPath().isEmpty())
|
if (sdkPath().isEmpty())
|
||||||
return QMultiMap<QString, QString>();
|
return QMultiMap<QString, QString>();
|
||||||
|
|
||||||
return QnxUtils::parseEnvironmentFile(QnxUtils::envFilePath(sdkPath()));
|
QString envFile = m_ndkEnvFile.isEmpty() ? QnxUtils::envFilePath(sdkPath()) : m_ndkEnvFile;
|
||||||
|
return QnxUtils::parseEnvironmentFile(envFile);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BlackBerryQtVersion::setDefaultSdkPath()
|
void BlackBerryQtVersion::setDefaultSdkPath()
|
||||||
|
|||||||
@@ -54,6 +54,9 @@ public:
|
|||||||
|
|
||||||
QString description() const;
|
QString description() const;
|
||||||
|
|
||||||
|
QVariantMap toMap() const;
|
||||||
|
void fromMap(const QVariantMap &map);
|
||||||
|
|
||||||
Core::FeatureSet availableFeatures() const;
|
Core::FeatureSet availableFeatures() const;
|
||||||
QString platformName() const;
|
QString platformName() const;
|
||||||
QString platformDisplayName() const;
|
QString platformDisplayName() const;
|
||||||
@@ -63,6 +66,8 @@ public:
|
|||||||
private:
|
private:
|
||||||
QMultiMap<QString, QString> environment() const;
|
QMultiMap<QString, QString> environment() const;
|
||||||
void setDefaultSdkPath();
|
void setDefaultSdkPath();
|
||||||
|
|
||||||
|
QString m_ndkEnvFile;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
|
|||||||
@@ -187,7 +187,7 @@ bool QnxUtils::isValidNdkPath(const QString &ndkPath)
|
|||||||
return (QFileInfo(envFilePath(ndkPath)).exists());
|
return (QFileInfo(envFilePath(ndkPath)).exists());
|
||||||
}
|
}
|
||||||
|
|
||||||
QString QnxUtils::envFilePath(const QString &ndkPath)
|
QString QnxUtils::envFilePath(const QString &ndkPath, const QString &targetVersion)
|
||||||
{
|
{
|
||||||
QString envFile;
|
QString envFile;
|
||||||
if (Utils::HostOsInfo::isWindowsHost())
|
if (Utils::HostOsInfo::isWindowsHost())
|
||||||
@@ -196,7 +196,7 @@ QString QnxUtils::envFilePath(const QString &ndkPath)
|
|||||||
envFile = ndkPath + QLatin1String("/bbndk-env.sh");
|
envFile = ndkPath + QLatin1String("/bbndk-env.sh");
|
||||||
|
|
||||||
if (!QFileInfo(envFile).exists()) {
|
if (!QFileInfo(envFile).exists()) {
|
||||||
QString version = ndkVersion(ndkPath);
|
QString version = targetVersion.isEmpty() ? defaultTargetVersion(ndkPath) : targetVersion;
|
||||||
version = version.replace(QLatin1Char('.'), QLatin1Char('_'));
|
version = version.replace(QLatin1Char('.'), QLatin1Char('_'));
|
||||||
if (Utils::HostOsInfo::isWindowsHost())
|
if (Utils::HostOsInfo::isWindowsHost())
|
||||||
envFile = ndkPath + QLatin1String("/bbndk-env_") + version + QLatin1String(".bat");
|
envFile = ndkPath + QLatin1String("/bbndk-env_") + version + QLatin1String(".bat");
|
||||||
@@ -262,7 +262,7 @@ QString QnxUtils::qConfigPath()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QString QnxUtils::ndkVersion(const QString &ndkPath)
|
QString QnxUtils::defaultTargetVersion(const QString &ndkPath)
|
||||||
{
|
{
|
||||||
foreach (const NdkInstallInformation &ndkInfo, installedNdks()) {
|
foreach (const NdkInstallInformation &ndkInfo, installedNdks()) {
|
||||||
if (!ndkInfo.path.compare(ndkPath, Utils::HostOsInfo::fileNameCaseSensitivity()))
|
if (!ndkInfo.path.compare(ndkPath, Utils::HostOsInfo::fileNameCaseSensitivity()))
|
||||||
|
|||||||
@@ -64,12 +64,12 @@ public:
|
|||||||
static QStringList searchPaths(QnxAbstractQtVersion *qtVersion);
|
static QStringList searchPaths(QnxAbstractQtVersion *qtVersion);
|
||||||
static QMultiMap<QString, QString> parseEnvironmentFile(const QString &fileName);
|
static QMultiMap<QString, QString> parseEnvironmentFile(const QString &fileName);
|
||||||
static bool isValidNdkPath(const QString & ndkPath);
|
static bool isValidNdkPath(const QString & ndkPath);
|
||||||
static QString envFilePath(const QString & ndkPath);
|
static QString envFilePath(const QString & ndkPath, const QString& targetVersion = QString());
|
||||||
static void prependQnxMapToEnvironment(const QMultiMap<QString, QString> &qnxMap, Utils::Environment &env);
|
static void prependQnxMapToEnvironment(const QMultiMap<QString, QString> &qnxMap, Utils::Environment &env);
|
||||||
static Utils::FileName executableWithExtension(const Utils::FileName &fileName);
|
static Utils::FileName executableWithExtension(const Utils::FileName &fileName);
|
||||||
static QString dataDirPath();
|
static QString dataDirPath();
|
||||||
static QString qConfigPath();
|
static QString qConfigPath();
|
||||||
static QString ndkVersion(const QString& ndkPath);
|
static QString defaultTargetVersion(const QString& ndkPath);
|
||||||
static QList<NdkInstallInformation> installedNdks();
|
static QList<NdkInstallInformation> installedNdks();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user