forked from qt-creator/qt-creator
Qnx: Save BlackBerry user configurations
* Add a bbndkconfigurations.xml file to store BlackBerry user configurations * Save both manual and auto detected user configurations * Mark invalid configurations in the BlackBerry settings widget * Provide a cleanup user action to clear invalid configurations Task-number: QTCREATORBUG-11004 Change-Id: Ibb29aa5010317f62233865d42d6ca4ae3afa0de3 Reviewed-by: David Kaspar <dkaspar@blackberry.com> Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
This commit is contained in:
committed by
Mehdi Fekari
parent
1131c11a11
commit
41a2059f85
@@ -65,8 +65,16 @@ using namespace Debugger;
|
||||
namespace Qnx {
|
||||
namespace Internal {
|
||||
|
||||
const QLatin1String NDKEnvFileKey("NDKEnvFile");
|
||||
const QLatin1String NDKPathKey("NDKPath");
|
||||
const QLatin1String NDKDisplayNameKey("NDKDisplayName");
|
||||
const QLatin1String NDKTargetKey("NDKTarget");
|
||||
const QLatin1String NDKHostKey("NDKHost");
|
||||
const QLatin1String NDKVersionKey("NDKVersion");
|
||||
const QLatin1String NDKAutoDetectionSourceKey("NDKAutoDetectionSource");
|
||||
const QLatin1String NDKAutoDetectedKey("NDKAutoDetectedKey");
|
||||
|
||||
BlackBerryConfiguration::BlackBerryConfiguration(const NdkInstallInformation &ndkInstallInfo)
|
||||
: m_isAutoDetected(true)
|
||||
{
|
||||
QString envFilePath = QnxUtils::envFilePath(ndkInstallInfo.path, ndkInstallInfo.version);
|
||||
QTC_ASSERT(!envFilePath.isEmpty(), return);
|
||||
@@ -79,11 +87,12 @@ BlackBerryConfiguration::BlackBerryConfiguration(const NdkInstallInformation &nd
|
||||
m_qnxHost = ndkInstallInfo.host;
|
||||
m_sysRoot = FileName::fromString(ndkInstallInfo.target);
|
||||
m_version = BlackBerryVersionNumber(ndkInstallInfo.version);
|
||||
m_autoDetectionSource = Utils::FileName::fromString(ndkInstallInfo.installationXmlFilePath);
|
||||
ctor();
|
||||
}
|
||||
|
||||
BlackBerryConfiguration::BlackBerryConfiguration(const FileName &ndkEnvFile)
|
||||
: m_isAutoDetected(false)
|
||||
: m_autoDetectionSource(Utils::FileName())
|
||||
{
|
||||
QTC_ASSERT(!QFileInfo(ndkEnvFile.toString()).isDir(), return);
|
||||
m_ndkEnvFile = ndkEnvFile;
|
||||
@@ -115,6 +124,25 @@ BlackBerryConfiguration::BlackBerryConfiguration(const FileName &ndkEnvFile)
|
||||
ctor();
|
||||
}
|
||||
|
||||
BlackBerryConfiguration::BlackBerryConfiguration(const QVariantMap &data)
|
||||
{
|
||||
QString envFilePath = data.value(NDKEnvFileKey).toString();
|
||||
QTC_ASSERT(!envFilePath.isEmpty(), return);
|
||||
m_ndkEnvFile = Utils::FileName::fromString(envFilePath);
|
||||
m_displayName = data.value(NDKDisplayNameKey).toString();
|
||||
m_qnxEnv = QnxUtils::qnxEnvironmentFromNdkFile(m_ndkEnvFile.toString());
|
||||
QString sep = QString::fromLatin1("/qnx6");
|
||||
// The QNX_TARGET value is using Unix-like separator on all platforms.
|
||||
m_targetName = data.value(NDKTargetKey).toString().split(sep).first().split(QLatin1Char('/')).last();
|
||||
m_qnxHost = data.value(NDKHostKey).toString();
|
||||
m_sysRoot = FileName::fromString(data.value(NDKTargetKey).toString());
|
||||
m_version = BlackBerryVersionNumber(data.value(NDKVersionKey).toString());
|
||||
if (data.value(QLatin1String(NDKAutoDetectedKey)).toBool())
|
||||
m_autoDetectionSource = Utils::FileName::fromString(data.value(NDKAutoDetectionSourceKey).toString());
|
||||
|
||||
ctor();
|
||||
}
|
||||
|
||||
void BlackBerryConfiguration::ctor()
|
||||
{
|
||||
FileName qmake4Path = QnxUtils::executableWithExtension(FileName::fromString(m_qnxHost + QLatin1String("/usr/bin/qmake")));
|
||||
@@ -166,7 +194,12 @@ BlackBerryVersionNumber BlackBerryConfiguration::version() const
|
||||
|
||||
bool BlackBerryConfiguration::isAutoDetected() const
|
||||
{
|
||||
return m_isAutoDetected;
|
||||
return !m_autoDetectionSource.isEmpty();
|
||||
}
|
||||
|
||||
Utils::FileName BlackBerryConfiguration::autoDetectionSource() const
|
||||
{
|
||||
return m_autoDetectionSource;
|
||||
}
|
||||
|
||||
bool BlackBerryConfiguration::isActive() const
|
||||
@@ -182,8 +215,11 @@ bool BlackBerryConfiguration::isActive() const
|
||||
|
||||
bool BlackBerryConfiguration::isValid() const
|
||||
{
|
||||
return !((m_qmake4BinaryFile.isEmpty() && m_qmake5BinaryFile.isEmpty()) || m_gccCompiler.isEmpty()
|
||||
|| m_deviceDebugger.isEmpty() || m_simulatorDebugger.isEmpty());
|
||||
return ((!m_qmake4BinaryFile.isEmpty() || !m_qmake5BinaryFile.isEmpty()) && !m_gccCompiler.isEmpty()
|
||||
&& !m_deviceDebugger.isEmpty() && !m_simulatorDebugger.isEmpty()
|
||||
&& m_ndkEnvFile.toFileInfo().exists() && (m_autoDetectionSource.isEmpty() ||
|
||||
m_autoDetectionSource.toFileInfo().exists())
|
||||
&& m_sysRoot.toFileInfo().exists());
|
||||
}
|
||||
|
||||
FileName BlackBerryConfiguration::ndkEnvFile() const
|
||||
@@ -226,6 +262,20 @@ QList<Utils::EnvironmentItem> BlackBerryConfiguration::qnxEnv() const
|
||||
return m_qnxEnv;
|
||||
}
|
||||
|
||||
QVariantMap BlackBerryConfiguration::toMap() const
|
||||
{
|
||||
QVariantMap data;
|
||||
data.insert(QLatin1String(NDKEnvFileKey), m_ndkEnvFile.toString());
|
||||
data.insert(QLatin1String(NDKDisplayNameKey), m_displayName);
|
||||
data.insert(QLatin1String(NDKPathKey), ndkPath());
|
||||
data.insert(QLatin1String(NDKTargetKey), m_sysRoot.toString());
|
||||
data.insert(QLatin1String(NDKHostKey), m_qnxHost);
|
||||
data.insert(QLatin1String(NDKVersionKey), m_version.toString());
|
||||
data.insert(QLatin1String(NDKAutoDetectionSourceKey), m_autoDetectionSource.toString());
|
||||
data.insert(QLatin1String(NDKAutoDetectedKey), isAutoDetected());
|
||||
return data;
|
||||
}
|
||||
|
||||
QnxAbstractQtVersion *BlackBerryConfiguration::createQtVersion(
|
||||
const FileName &qmakePath, Qnx::QnxArchitecture arch, const QString &versionName)
|
||||
{
|
||||
@@ -302,7 +352,7 @@ Kit *BlackBerryConfiguration::createKit(
|
||||
bool BlackBerryConfiguration::activate()
|
||||
{
|
||||
if (!isValid()) {
|
||||
if (m_isAutoDetected)
|
||||
if (!m_autoDetectionSource.isEmpty())
|
||||
return false;
|
||||
|
||||
QString errorMessage = tr("The following errors occurred while activating target: %1").arg(m_targetName);
|
||||
|
||||
@@ -64,6 +64,7 @@ class BlackBerryConfiguration
|
||||
public:
|
||||
BlackBerryConfiguration(const NdkInstallInformation &ndkInstallInfo);
|
||||
BlackBerryConfiguration(const Utils::FileName &ndkEnvFile);
|
||||
BlackBerryConfiguration(const QVariantMap &data);
|
||||
bool activate();
|
||||
void deactivate();
|
||||
QString ndkPath() const;
|
||||
@@ -72,6 +73,7 @@ public:
|
||||
QString qnxHost() const;
|
||||
BlackBerryVersionNumber version() const;
|
||||
bool isAutoDetected() const;
|
||||
Utils::FileName autoDetectionSource() const;
|
||||
bool isActive() const;
|
||||
bool isValid() const;
|
||||
Utils::FileName ndkEnvFile() const;
|
||||
@@ -82,13 +84,14 @@ public:
|
||||
Utils::FileName simulatorDebuger() const;
|
||||
Utils::FileName sysRoot() const;
|
||||
QList<Utils::EnvironmentItem> qnxEnv() const;
|
||||
QVariantMap toMap() const;
|
||||
|
||||
private:
|
||||
QString m_displayName;
|
||||
QString m_targetName;
|
||||
QString m_qnxHost;
|
||||
bool m_isAutoDetected;
|
||||
BlackBerryVersionNumber m_version;
|
||||
Utils::FileName m_autoDetectionSource;
|
||||
Utils::FileName m_ndkEnvFile;
|
||||
Utils::FileName m_qmake4BinaryFile;
|
||||
Utils::FileName m_qmake5BinaryFile;
|
||||
@@ -99,6 +102,7 @@ private:
|
||||
QList<Utils::EnvironmentItem> m_qnxEnv;
|
||||
|
||||
void ctor();
|
||||
|
||||
QnxAbstractQtVersion* createQtVersion(
|
||||
const Utils::FileName &qmakePath, Qnx::QnxArchitecture arch, const QString &versionName);
|
||||
QnxToolChain* createToolChain(
|
||||
|
||||
@@ -67,6 +67,15 @@ const QLatin1String NDKEnvFileKey("NDKEnvFile");
|
||||
const QLatin1String ManualNDKsGroup("ManualNDKs");
|
||||
const QLatin1String ActiveNDKsGroup("ActiveNDKs");
|
||||
const QLatin1String DefaultApiLevelKey("DefaultApiLevel");
|
||||
const QLatin1String BBConfigsFileVersionKey("Version");
|
||||
const QLatin1String BBConfigDataKey("BBConfiguration.");
|
||||
const QLatin1String BBConfigCountKey("BBConfiguration.Count");
|
||||
}
|
||||
|
||||
static Utils::FileName bbConfigSettingsFileName()
|
||||
{
|
||||
return Utils::FileName::fromString(Core::ICore::userResourcePath() + QLatin1String("/qnx/")
|
||||
+ QLatin1String(Constants::QNX_BLACKBERRY_CONFIGS_FILENAME));
|
||||
}
|
||||
|
||||
static bool sortConfigurationsByVersion(const BlackBerryConfiguration *a, const BlackBerryConfiguration *b)
|
||||
@@ -78,9 +87,50 @@ BlackBerryConfigurationManager::BlackBerryConfigurationManager(QObject *parent)
|
||||
: QObject(parent),
|
||||
m_defaultApiLevel(0)
|
||||
{
|
||||
m_writer = new Utils::PersistentSettingsWriter(bbConfigSettingsFileName(),
|
||||
QLatin1String("BlackBerryConfigurations"));
|
||||
connect(Core::ICore::instance(), SIGNAL(saveSettingsRequested()), this, SLOT(saveSettings()));
|
||||
}
|
||||
|
||||
void BlackBerryConfigurationManager::saveConfigurations()
|
||||
{
|
||||
QTC_ASSERT(m_writer, return);
|
||||
QVariantMap data;
|
||||
data.insert(QLatin1String(BBConfigsFileVersionKey), 1);
|
||||
int count = 0;
|
||||
foreach (BlackBerryConfiguration *config, m_configs) {
|
||||
QVariantMap tmp = config->toMap();
|
||||
if (tmp.isEmpty())
|
||||
continue;
|
||||
|
||||
data.insert(BBConfigDataKey + QString::number(count), tmp);
|
||||
++count;
|
||||
}
|
||||
|
||||
data.insert(QLatin1String(BBConfigCountKey), count);
|
||||
m_writer->save(data, Core::ICore::mainWindow());
|
||||
}
|
||||
|
||||
void BlackBerryConfigurationManager::restoreConfigurations()
|
||||
{
|
||||
Utils::PersistentSettingsReader reader;
|
||||
if (!reader.load(bbConfigSettingsFileName()))
|
||||
return;
|
||||
|
||||
QVariantMap data = reader.restoreValues();
|
||||
int count = data.value(BBConfigCountKey, 0).toInt();
|
||||
for (int i = 0; i < count; ++i) {
|
||||
const QString key = BBConfigDataKey + QString::number(i);
|
||||
if (!data.contains(key))
|
||||
continue;
|
||||
|
||||
const QVariantMap dMap = data.value(key).toMap();
|
||||
insertByVersion(new BlackBerryConfiguration(dMap));
|
||||
}
|
||||
}
|
||||
|
||||
// Backward compatibility: Read existing entries in the ManualNDKsGroup
|
||||
// and then remove the group since not used.
|
||||
void BlackBerryConfigurationManager::loadManualConfigurations()
|
||||
{
|
||||
QSettings *settings = Core::ICore::settings();
|
||||
@@ -107,6 +157,7 @@ void BlackBerryConfigurationManager::loadManualConfigurations()
|
||||
}
|
||||
|
||||
settings->endGroup();
|
||||
settings->remove(ManualNDKsGroup);
|
||||
settings->endGroup();
|
||||
}
|
||||
|
||||
@@ -142,25 +193,13 @@ void BlackBerryConfigurationManager::loadDefaultApiLevel()
|
||||
|
||||
void BlackBerryConfigurationManager::loadAutoDetectedConfigurations()
|
||||
{
|
||||
QStringList activePaths = activeConfigurationNdkEnvPaths();
|
||||
foreach (const NdkInstallInformation &ndkInfo, QnxUtils::installedNdks()) {
|
||||
BlackBerryConfiguration *config = new BlackBerryConfiguration(ndkInfo);
|
||||
if (!addConfiguration(config)) {
|
||||
delete config;
|
||||
continue;
|
||||
}
|
||||
|
||||
// Activate targets
|
||||
foreach (const QString activeNdkEnvPath, activePaths) {
|
||||
if (config->ndkEnvFile().toString() == activeNdkEnvPath)
|
||||
config->activate();
|
||||
}
|
||||
}
|
||||
|
||||
// If no target was/is activated, activate one since it's needed by
|
||||
// device connection and CSK code.
|
||||
if (activeConfigurations().isEmpty() && !m_configs.isEmpty())
|
||||
m_configs.first()->activate();
|
||||
}
|
||||
|
||||
void BlackBerryConfigurationManager::setDefaultApiLevel(BlackBerryConfiguration *config)
|
||||
@@ -175,45 +214,6 @@ void BlackBerryConfigurationManager::setDefaultApiLevel(BlackBerryConfiguration
|
||||
m_defaultApiLevel = config;
|
||||
}
|
||||
|
||||
QStringList BlackBerryConfigurationManager::activeConfigurationNdkEnvPaths()
|
||||
{
|
||||
QStringList actives;
|
||||
QSettings *settings = Core::ICore::settings();
|
||||
|
||||
settings->beginGroup(SettingsGroup);
|
||||
settings->beginGroup(ActiveNDKsGroup);
|
||||
|
||||
foreach (const QString &activeNdkEnvPath, settings->childGroups()) {
|
||||
settings->beginGroup(activeNdkEnvPath);
|
||||
actives.append(settings->value(NDKEnvFileKey).toString());
|
||||
settings->endGroup();
|
||||
}
|
||||
|
||||
settings->endGroup();
|
||||
settings->endGroup();
|
||||
|
||||
return actives;
|
||||
}
|
||||
|
||||
void BlackBerryConfigurationManager::saveManualConfigurations()
|
||||
{
|
||||
if (manualConfigurations().isEmpty())
|
||||
return;
|
||||
|
||||
QSettings *settings = Core::ICore::settings();
|
||||
settings->beginGroup(SettingsGroup);
|
||||
settings->beginGroup(ManualNDKsGroup);
|
||||
|
||||
foreach (BlackBerryConfiguration *config, manualConfigurations()) {
|
||||
settings->beginGroup(config->displayName());
|
||||
settings->setValue(NDKEnvFileKey, config->ndkEnvFile().toString());
|
||||
settings->endGroup();
|
||||
}
|
||||
|
||||
settings->endGroup();
|
||||
settings->endGroup();
|
||||
}
|
||||
|
||||
void BlackBerryConfigurationManager::saveDefaultApiLevel()
|
||||
{
|
||||
if (!m_defaultApiLevel)
|
||||
@@ -225,51 +225,6 @@ void BlackBerryConfigurationManager::saveDefaultApiLevel()
|
||||
settings->endGroup();
|
||||
}
|
||||
|
||||
void BlackBerryConfigurationManager::saveActiveConfigurationNdkEnvPath()
|
||||
{
|
||||
if (activeConfigurations().isEmpty())
|
||||
return;
|
||||
|
||||
QSettings *settings = Core::ICore::settings();
|
||||
settings->beginGroup(SettingsGroup);
|
||||
settings->beginGroup(ActiveNDKsGroup);
|
||||
|
||||
settings->remove(QString());
|
||||
|
||||
foreach (BlackBerryConfiguration *config, activeConfigurations()) {
|
||||
settings->beginGroup(config->displayName());
|
||||
settings->setValue(NDKEnvFileKey, config->ndkEnvFile().toString());
|
||||
settings->endGroup();
|
||||
}
|
||||
|
||||
settings->endGroup();
|
||||
settings->endGroup();
|
||||
}
|
||||
|
||||
// Remove no longer available/valid 'auto detected' BlackBerry kits and qt versions
|
||||
void BlackBerryConfigurationManager::clearInvalidConfigurations()
|
||||
{
|
||||
// Deregister invalid auto deteted BlackBerry Kits
|
||||
foreach (Kit *kit, KitManager::kits()) {
|
||||
if (!kit->isAutoDetected())
|
||||
continue;
|
||||
|
||||
if (DeviceTypeKitInformation::deviceTypeId(kit) == Constants::QNX_BB_OS_TYPE
|
||||
&& !kit->isValid())
|
||||
KitManager::deregisterKit(kit);
|
||||
}
|
||||
|
||||
// Remove invalid auto detected BlackBerry qtVerions
|
||||
foreach (QtSupport::BaseQtVersion *qtVersion, QtSupport::QtVersionManager::versions()) {
|
||||
if (!qtVersion->isAutodetected())
|
||||
continue;
|
||||
|
||||
if (qtVersion->platformName() == QLatin1String(Constants::QNX_BB_PLATFORM_NAME)
|
||||
&& !qtVersion->isValid())
|
||||
QtSupport::QtVersionManager::removeVersion(qtVersion);
|
||||
}
|
||||
}
|
||||
|
||||
void BlackBerryConfigurationManager::setKitsAutoDetectionSource()
|
||||
{
|
||||
foreach (Kit *kit, KitManager::kits()) {
|
||||
@@ -287,6 +242,13 @@ void BlackBerryConfigurationManager::setKitsAutoDetectionSource()
|
||||
}
|
||||
}
|
||||
|
||||
void BlackBerryConfigurationManager::insertByVersion(BlackBerryConfiguration *config)
|
||||
{
|
||||
QList<BlackBerryConfiguration *>::iterator it = qLowerBound(m_configs.begin(), m_configs.end(),
|
||||
config, &sortConfigurationsByVersion);
|
||||
m_configs.insert(it, config);
|
||||
}
|
||||
|
||||
// Switch to QnxToolchain for exisintg configuration using GccToolChain
|
||||
void BlackBerryConfigurationManager::checkToolChainConfiguration()
|
||||
{
|
||||
@@ -308,8 +270,7 @@ void BlackBerryConfigurationManager::checkToolChainConfiguration()
|
||||
bool BlackBerryConfigurationManager::addConfiguration(BlackBerryConfiguration *config)
|
||||
{
|
||||
foreach (BlackBerryConfiguration *c, m_configs) {
|
||||
if (c->ndkPath() == config->ndkPath()
|
||||
&& c->targetName() == config->targetName()) {
|
||||
if (config->ndkEnvFile() == c->ndkEnvFile()) {
|
||||
if (!config->isAutoDetected())
|
||||
QMessageBox::warning(Core::ICore::mainWindow(), tr("NDK Already Known"),
|
||||
tr("The NDK already has a configuration."), QMessageBox::Ok);
|
||||
@@ -318,9 +279,7 @@ bool BlackBerryConfigurationManager::addConfiguration(BlackBerryConfiguration *c
|
||||
}
|
||||
|
||||
if (config->isValid()) {
|
||||
QList<BlackBerryConfiguration *>::iterator it = qLowerBound(m_configs.begin(), m_configs.end(),
|
||||
config, &sortConfigurationsByVersion);
|
||||
m_configs.insert(it, config);
|
||||
insertByVersion(config);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -335,8 +294,6 @@ void BlackBerryConfigurationManager::removeConfiguration(BlackBerryConfiguration
|
||||
if (config->isActive())
|
||||
config->deactivate();
|
||||
|
||||
clearConfigurationSettings(config);
|
||||
|
||||
m_configs.removeAt(m_configs.indexOf(config));
|
||||
|
||||
if (m_defaultApiLevel == config) {
|
||||
@@ -409,39 +366,25 @@ void BlackBerryConfigurationManager::loadSettings()
|
||||
// Backward compatibility: Set kit's auto detection source
|
||||
// for existing BlackBerry kits that do not have it set yet.
|
||||
setKitsAutoDetectionSource();
|
||||
clearInvalidConfigurations();
|
||||
loadAutoDetectedConfigurations();
|
||||
|
||||
restoreConfigurations();
|
||||
// For backward compatibility
|
||||
loadManualConfigurations();
|
||||
loadAutoDetectedConfigurations();
|
||||
loadDefaultApiLevel();
|
||||
checkToolChainConfiguration();
|
||||
|
||||
// If no target was/is activated, activate one since it's needed by
|
||||
// device connection and CSK code.
|
||||
if (activeConfigurations().isEmpty() && !m_configs.isEmpty())
|
||||
m_configs.first()->activate();
|
||||
|
||||
emit settingsLoaded();
|
||||
}
|
||||
|
||||
void BlackBerryConfigurationManager::clearConfigurationSettings(BlackBerryConfiguration *config)
|
||||
{
|
||||
if (!config)
|
||||
return;
|
||||
|
||||
QSettings *settings = Core::ICore::settings();
|
||||
settings->beginGroup(SettingsGroup);
|
||||
settings->beginGroup(ManualNDKsGroup);
|
||||
|
||||
foreach (const QString &manualNdk, settings->childGroups()) {
|
||||
if (manualNdk == config->displayName()) {
|
||||
settings->remove(manualNdk);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
settings->endGroup();
|
||||
settings->endGroup();
|
||||
}
|
||||
|
||||
void BlackBerryConfigurationManager::saveSettings()
|
||||
{
|
||||
saveActiveConfigurationNdkEnvPath();
|
||||
saveManualConfigurations();
|
||||
saveConfigurations();
|
||||
saveDefaultApiLevel();
|
||||
}
|
||||
|
||||
|
||||
@@ -38,6 +38,8 @@
|
||||
#include <QSettings>
|
||||
#include <QObject>
|
||||
|
||||
namespace Utils { class PersistentSettingsWriter; }
|
||||
|
||||
namespace Qnx {
|
||||
namespace Internal {
|
||||
|
||||
@@ -81,17 +83,21 @@ signals:
|
||||
private:
|
||||
BlackBerryConfigurationManager(QObject *parent = 0);
|
||||
QList<BlackBerryConfiguration*> m_configs;
|
||||
|
||||
BlackBerryConfiguration *m_defaultApiLevel;
|
||||
|
||||
void loadManualConfigurations();
|
||||
void loadDefaultApiLevel();
|
||||
void saveManualConfigurations();
|
||||
void saveDefaultApiLevel();
|
||||
void saveActiveConfigurationNdkEnvPath();
|
||||
void clearInvalidConfigurations();
|
||||
|
||||
Utils::PersistentSettingsWriter *m_writer;
|
||||
|
||||
void saveConfigurations();
|
||||
void restoreConfigurations();
|
||||
|
||||
void loadManualConfigurations();
|
||||
void setKitsAutoDetectionSource();
|
||||
|
||||
QStringList activeConfigurationNdkEnvPaths();
|
||||
void insertByVersion(BlackBerryConfiguration* config);
|
||||
};
|
||||
|
||||
} // namespace Internal
|
||||
|
||||
@@ -51,6 +51,8 @@
|
||||
namespace Qnx {
|
||||
namespace Internal {
|
||||
|
||||
static QIcon invalidConfigIcon(QLatin1String(":/projectexplorer/images/compile_error.png"));
|
||||
|
||||
BlackBerryNDKSettingsWidget::BlackBerryNDKSettingsWidget(QWidget *parent) :
|
||||
QWidget(parent),
|
||||
m_ui(new Ui_BlackBerryNDKSettingsWidget),
|
||||
@@ -86,6 +88,7 @@ BlackBerryNDKSettingsWidget::BlackBerryNDKSettingsWidget(QWidget *parent) :
|
||||
connect(m_ui->removeNdkButton, SIGNAL(clicked()), this, SLOT(removeNdkTarget()));
|
||||
connect(m_ui->activateNdkTargetButton, SIGNAL(clicked()), this, SLOT(activateNdkTarget()));
|
||||
connect(m_ui->deactivateNdkTargetButton, SIGNAL(clicked()), this, SLOT(deactivateNdkTarget()));
|
||||
connect(m_ui->cleanUpButton, SIGNAL(clicked()), this, SLOT(cleanUp()));
|
||||
connect(m_ui->ndksTreeWidget, SIGNAL(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)), this, SLOT(updateInfoTable(QTreeWidgetItem*)));
|
||||
connect(m_ui->apiLevelCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(setDefaultApiLevel(int)));
|
||||
|
||||
@@ -155,6 +158,7 @@ void BlackBerryNDKSettingsWidget::updateNdkList()
|
||||
qDeleteAll(m_autoDetectedNdks->takeChildren());
|
||||
qDeleteAll(m_manualNdks->takeChildren());
|
||||
|
||||
bool enableCleanUp = false;
|
||||
foreach (BlackBerryConfiguration *config, m_bbConfigManager->configurations()) {
|
||||
QTreeWidgetItem *parent = config->isAutoDetected() ? m_autoDetectedNdks : m_manualNdks;
|
||||
QTreeWidgetItem *item = new QTreeWidgetItem(parent);
|
||||
@@ -164,9 +168,36 @@ void BlackBerryNDKSettingsWidget::updateNdkList()
|
||||
font.setBold(config->isActive() || m_activatedTargets.contains(config));
|
||||
item->setFont(0, font);
|
||||
item->setFont(1, font);
|
||||
item->setIcon(0, config->isValid() ? QIcon() : invalidConfigIcon);
|
||||
// TODO: Do the same if qmake, qcc, debugger are no longer detected...
|
||||
if (!config->isValid()) {
|
||||
QString toolTip = tr("Invalid target %1: ").arg(config->targetName());
|
||||
if (config->isAutoDetected() && !config->autoDetectionSource().toFileInfo().exists())
|
||||
toolTip += QLatin1Char('\n') + tr("- Target no longer installed.");
|
||||
|
||||
if (!config->ndkEnvFile().toFileInfo().exists())
|
||||
toolTip += QLatin1Char('\n') + tr("- No NDK environment file found.");
|
||||
|
||||
if (config->qmake4BinaryFile().isEmpty()
|
||||
&& config->qmake5BinaryFile().isEmpty())
|
||||
toolTip += QLatin1Char('\n') + tr("- No Qt version found.");
|
||||
|
||||
if (config->gccCompiler().isEmpty())
|
||||
toolTip += QLatin1Char('\n') + tr("- No compiler found.");
|
||||
|
||||
if (config->deviceDebuger().isEmpty())
|
||||
toolTip += QLatin1Char('\n') + tr("- No debugger found for device.");
|
||||
|
||||
if (config->simulatorDebuger().isEmpty())
|
||||
toolTip += QLatin1Char('\n') + tr("- No debugger found for simulator.");
|
||||
|
||||
item->setToolTip(0, toolTip);
|
||||
enableCleanUp = true;
|
||||
}
|
||||
}
|
||||
|
||||
m_ui->ndksTreeWidget->setCurrentItem(m_autoDetectedNdks->child(0));
|
||||
m_ui->cleanUpButton->setEnabled(enableCleanUp);
|
||||
}
|
||||
|
||||
void BlackBerryNDKSettingsWidget::addNdkTarget()
|
||||
@@ -276,6 +307,19 @@ void BlackBerryNDKSettingsWidget::uninstallNdkTarget()
|
||||
launchBlackBerryInstallerWizard(BlackBerryInstallerDataHandler::UninstallMode, m_ui->versionLabel->text());
|
||||
}
|
||||
|
||||
void BlackBerryNDKSettingsWidget::cleanUp()
|
||||
{
|
||||
foreach (BlackBerryConfiguration *config, m_bbConfigManager->configurations()) {
|
||||
if (!config->isValid()) {
|
||||
m_activatedTargets.removeOne(config);
|
||||
m_deactivatedTargets.removeOne(config);
|
||||
m_bbConfigManager->removeConfiguration(config);
|
||||
}
|
||||
}
|
||||
|
||||
updateNdkList();
|
||||
}
|
||||
|
||||
void BlackBerryNDKSettingsWidget::handleInstallationFinished()
|
||||
{
|
||||
m_bbConfigManager->loadAutoDetectedConfigurations();
|
||||
|
||||
@@ -75,6 +75,7 @@ public slots:
|
||||
void activateNdkTarget();
|
||||
void deactivateNdkTarget();
|
||||
void uninstallNdkTarget();
|
||||
void cleanUp();
|
||||
void handleInstallationFinished();
|
||||
void handleUninstallationFinished();
|
||||
void updateUi(QTreeWidgetItem* item, BlackBerryConfiguration* config);
|
||||
|
||||
@@ -229,6 +229,29 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="verticalSpacer_3">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>QSizePolicy::Fixed</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>13</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="cleanUpButton">
|
||||
<property name="text">
|
||||
<string>Clean Up</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
|
||||
@@ -113,6 +113,8 @@ const char QNX_BLACKBERRY_DEPLOY_CMD[] = "blackberry-deploy";
|
||||
|
||||
const char QNX_BLACKBERRY_CASCADESIMPORTER_VERSION[] = "0.0.1";
|
||||
|
||||
const char QNX_BLACKBERRY_CONFIGS_FILENAME[] = "bbndkconfigurations.xml";
|
||||
|
||||
} // namespace Constants
|
||||
} // namespace Qnx
|
||||
|
||||
|
||||
@@ -258,6 +258,7 @@ QList<NdkInstallInformation> QnxUtils::installedNdks()
|
||||
ndkInfo.host = childElt.firstChildElement(QLatin1String("host")).text();
|
||||
ndkInfo.target = childElt.firstChildElement(QLatin1String("target")).text();
|
||||
ndkInfo.version = childElt.firstChildElement(QLatin1String("version")).text();
|
||||
ndkInfo.installationXmlFilePath = ndkFile.absoluteFilePath();
|
||||
|
||||
ndkList.append(ndkInfo);
|
||||
}
|
||||
|
||||
@@ -54,6 +54,10 @@ public:
|
||||
QString host;
|
||||
QString target;
|
||||
QString version;
|
||||
QString installationXmlFilePath;
|
||||
|
||||
bool isValid() { return !path.isEmpty() && !name.isEmpty() && !host.isEmpty()
|
||||
&& !target.isEmpty() && !version.isEmpty() && !installationXmlFilePath.isEmpty(); }
|
||||
};
|
||||
|
||||
class QnxUtils
|
||||
|
||||
Reference in New Issue
Block a user