forked from qt-creator/qt-creator
Initial implementation of BB key management
Change-Id: Iba9c264b6c5809a0714da69591248fc2962c6526 Reviewed-by: Nicolas Arnaud-Cormos <nicolas@kdab.com> Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
This commit is contained in:
committed by
Tobias Hunger
parent
5686983e95
commit
41bdf34275
@@ -31,6 +31,7 @@
|
||||
|
||||
#include "blackberryconfiguration.h"
|
||||
#include "blackberryqtversion.h"
|
||||
#include "blackberrycertificate.h"
|
||||
#include "qnxutils.h"
|
||||
|
||||
#include <coreplugin/icore.h>
|
||||
@@ -62,22 +63,29 @@ namespace Internal {
|
||||
namespace {
|
||||
const QLatin1String SettingsGroup("BlackBerryConfiguration");
|
||||
const QLatin1String NDKLocationKey("NDKLocation");
|
||||
const QLatin1String CertificateGroup("Certificates");
|
||||
}
|
||||
|
||||
BlackBerryConfiguration::BlackBerryConfiguration(QObject *parent)
|
||||
:QObject(parent)
|
||||
{
|
||||
loadSetting();
|
||||
connect(Core::ICore::instance(), SIGNAL(saveSettingsRequested()), this, SLOT(saveSetting()));
|
||||
loadSettings();
|
||||
connect(Core::ICore::instance(), SIGNAL(saveSettingsRequested()), this, SLOT(saveSettings()));
|
||||
}
|
||||
|
||||
bool BlackBerryConfiguration::setConfig(const QString &ndkPath)
|
||||
bool BlackBerryConfiguration::setNdkPath(const QString &ndkPath)
|
||||
{
|
||||
if (ndkPath.isEmpty())
|
||||
return false;
|
||||
|
||||
m_config.ndkPath = ndkPath;
|
||||
m_config.qnxEnv = QnxUtils::parseEnvironmentFile(QnxUtils::envFilePath(ndkPath));
|
||||
|
||||
return refresh();
|
||||
}
|
||||
|
||||
bool BlackBerryConfiguration::refresh()
|
||||
{
|
||||
m_config.qnxEnv = QnxUtils::parseEnvironmentFile(QnxUtils::envFilePath(m_config.ndkPath));
|
||||
|
||||
QString ndkTarget = m_config.qnxEnv.value(QLatin1String("QNX_TARGET"));
|
||||
QString sep = QString::fromLatin1("%1qnx6").arg(QDir::separator());
|
||||
@@ -120,12 +128,83 @@ bool BlackBerryConfiguration::setConfig(const QString &ndkPath)
|
||||
return true;
|
||||
}
|
||||
|
||||
void BlackBerryConfiguration::setupConfiguration(const QString &ndkPath)
|
||||
void BlackBerryConfiguration::loadCertificates()
|
||||
{
|
||||
QSettings *settings = Core::ICore::instance()->settings();
|
||||
|
||||
settings->beginGroup(SettingsGroup);
|
||||
settings->beginGroup(CertificateGroup);
|
||||
|
||||
foreach (QString certificateId, settings->childGroups()) {
|
||||
settings->beginGroup(certificateId);
|
||||
|
||||
BlackBerryCertificate *cert =
|
||||
new BlackBerryCertificate(settings->value(QLatin1String(Qnx::Constants::QNX_KEY_PATH)).toString(),
|
||||
settings->value(QLatin1String(Qnx::Constants::QNX_KEY_AUTHOR)).toString());
|
||||
cert->setParent(this);
|
||||
|
||||
if (settings->value(QLatin1String(Qnx::Constants::QNX_KEY_ACTIVE)).toBool())
|
||||
m_config.activeCertificate = cert;
|
||||
|
||||
m_config.certificates << cert;
|
||||
|
||||
settings->endGroup();
|
||||
}
|
||||
|
||||
settings->endGroup();
|
||||
settings->endGroup();
|
||||
}
|
||||
|
||||
void BlackBerryConfiguration::loadNdkSettings()
|
||||
{
|
||||
QSettings *settings = Core::ICore::instance()->settings();
|
||||
|
||||
settings->beginGroup(SettingsGroup);
|
||||
setNdkPath(settings->value(NDKLocationKey).toString());
|
||||
settings->endGroup();
|
||||
}
|
||||
|
||||
void BlackBerryConfiguration::saveCertificates()
|
||||
{
|
||||
QSettings *settings = Core::ICore::instance()->settings();
|
||||
|
||||
settings->beginGroup(SettingsGroup);
|
||||
settings->beginGroup(CertificateGroup);
|
||||
|
||||
settings->remove(QString());
|
||||
|
||||
foreach (const BlackBerryCertificate *cert, m_config.certificates) {
|
||||
settings->beginGroup(cert->id());
|
||||
settings->setValue(QLatin1String(Qnx::Constants::QNX_KEY_PATH), cert->fileName());
|
||||
settings->setValue(QLatin1String(Qnx::Constants::QNX_KEY_AUTHOR), cert->author());
|
||||
|
||||
if (cert == m_config.activeCertificate)
|
||||
settings->setValue(QLatin1String(Qnx::Constants::QNX_KEY_ACTIVE), true);
|
||||
|
||||
settings->endGroup();
|
||||
}
|
||||
|
||||
settings->endGroup();
|
||||
settings->endGroup();
|
||||
}
|
||||
|
||||
void BlackBerryConfiguration::saveNdkSettings()
|
||||
{
|
||||
if (m_config.ndkPath.isEmpty())
|
||||
return;
|
||||
|
||||
QSettings *settings = Core::ICore::instance()->settings();
|
||||
settings->beginGroup(SettingsGroup);
|
||||
settings->setValue(NDKLocationKey, m_config.ndkPath);
|
||||
settings->endGroup();
|
||||
}
|
||||
|
||||
void BlackBerryConfiguration::setupNdkConfiguration(const QString &ndkPath)
|
||||
{
|
||||
if (ndkPath.isEmpty())
|
||||
return;
|
||||
|
||||
if (setConfig(ndkPath)) {
|
||||
if (setNdkPath(ndkPath)) {
|
||||
QtSupport::BaseQtVersion *qtVersion = createQtVersion();
|
||||
ProjectExplorer::GccToolChain *tc = createGccToolChain();
|
||||
ProjectExplorer::Kit *deviceKit = createKit(ArmLeV7, qtVersion, tc);
|
||||
@@ -143,7 +222,7 @@ void BlackBerryConfiguration::setupConfiguration(const QString &ndkPath)
|
||||
}
|
||||
}
|
||||
|
||||
void BlackBerryConfiguration::cleanConfiguration()
|
||||
void BlackBerryConfiguration::cleanNdkConfiguration()
|
||||
{
|
||||
QtSupport::BaseQtVersion *version = QtSupport::QtVersionManager::instance()->qtVersionForQMakeBinary(m_config.qmakeBinaryFile);
|
||||
if (version) {
|
||||
@@ -161,10 +240,42 @@ void BlackBerryConfiguration::cleanConfiguration()
|
||||
}
|
||||
|
||||
BlackBerryConfig conf;
|
||||
conf.activeCertificate = m_config.activeCertificate;
|
||||
conf.certificates = m_config.certificates;
|
||||
m_config = conf;
|
||||
emit updated();
|
||||
|
||||
clearSetting();
|
||||
clearNdkSettings();
|
||||
}
|
||||
|
||||
void BlackBerryConfiguration::syncCertificates(QList<BlackBerryCertificate*> certificates,
|
||||
BlackBerryCertificate *activeCertificate)
|
||||
{
|
||||
m_config.activeCertificate = activeCertificate;
|
||||
|
||||
foreach (BlackBerryCertificate *cert, m_config.certificates) {
|
||||
if (!certificates.contains(cert)) {
|
||||
m_config.certificates.removeAll(cert);
|
||||
delete cert;
|
||||
}
|
||||
}
|
||||
|
||||
foreach (BlackBerryCertificate *cert, certificates) {
|
||||
if (!m_config.certificates.contains(cert)) {
|
||||
cert->setParent(this);
|
||||
m_config.certificates << cert;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
QList<BlackBerryCertificate*> BlackBerryConfiguration::certificates() const
|
||||
{
|
||||
return m_config.certificates;
|
||||
}
|
||||
|
||||
BlackBerryCertificate * BlackBerryConfiguration::activeCertificate()
|
||||
{
|
||||
return m_config.activeCertificate;
|
||||
}
|
||||
|
||||
QtSupport::BaseQtVersion *BlackBerryConfiguration::createQtVersion()
|
||||
@@ -252,26 +363,19 @@ ProjectExplorer::Kit *BlackBerryConfiguration::createKit(QnxArchitecture arch, Q
|
||||
return kit;
|
||||
}
|
||||
|
||||
void BlackBerryConfiguration::loadSetting()
|
||||
void BlackBerryConfiguration::loadSettings()
|
||||
{
|
||||
QSettings *settings = Core::ICore::instance()->settings();
|
||||
settings->beginGroup(SettingsGroup);
|
||||
setConfig(settings->value(NDKLocationKey).toString());
|
||||
settings->endGroup();
|
||||
loadNdkSettings();
|
||||
loadCertificates();
|
||||
}
|
||||
|
||||
void BlackBerryConfiguration::saveSetting()
|
||||
void BlackBerryConfiguration::saveSettings()
|
||||
{
|
||||
if (m_config.ndkPath.isEmpty())
|
||||
return;
|
||||
|
||||
QSettings *settings = Core::ICore::instance()->settings();
|
||||
settings->beginGroup(SettingsGroup);
|
||||
settings->setValue(NDKLocationKey, m_config.ndkPath);
|
||||
settings->endGroup();
|
||||
saveNdkSettings();
|
||||
saveCertificates();
|
||||
}
|
||||
|
||||
void BlackBerryConfiguration::clearSetting()
|
||||
void BlackBerryConfiguration::clearNdkSettings()
|
||||
{
|
||||
QSettings *settings = Core::ICore::instance()->settings();
|
||||
settings->beginGroup(SettingsGroup);
|
||||
@@ -326,6 +430,45 @@ Utils::FileName BlackBerryConfiguration::sysRoot() const
|
||||
return m_config.sysRoot;
|
||||
}
|
||||
|
||||
QString BlackBerryConfiguration::dataDirPath() const
|
||||
{
|
||||
const QString homeDir = QDir::homePath();
|
||||
|
||||
if (Utils::HostOsInfo::isMacHost())
|
||||
return homeDir + QLatin1String("/Library/Research in Motion");
|
||||
|
||||
if (Utils::HostOsInfo::isAnyUnixHost())
|
||||
return homeDir + QLatin1String("/.rim");
|
||||
|
||||
#if defined(Q_OS_WIN)
|
||||
if (Utils::HostOsInfo::isWindowsHost()) {
|
||||
// needed because QSysInfo::windowsVersion() is not available on other
|
||||
// platforms.
|
||||
if (QSysInfo::windowsVersion() == QSysInfo::WV_XP)
|
||||
return homeDir
|
||||
+ QLatin1String("/Local Settings/Application Data/Research In Motion");
|
||||
return homeDir + QLatin1String("/AppData/Local/Research in Motion");
|
||||
}
|
||||
#endif
|
||||
|
||||
return QString();
|
||||
}
|
||||
|
||||
QString BlackBerryConfiguration::barsignerCskPath() const
|
||||
{
|
||||
return dataDirPath() + QLatin1String("/barsigner.csk");
|
||||
}
|
||||
|
||||
QString BlackBerryConfiguration::barsignerDbPath() const
|
||||
{
|
||||
return dataDirPath() + QLatin1String("/barsigner.db");
|
||||
}
|
||||
|
||||
QString BlackBerryConfiguration::defaultKeystorePath() const
|
||||
{
|
||||
return dataDirPath() + QLatin1String("/author.p12");
|
||||
}
|
||||
|
||||
// TODO: QnxUtils::parseEnvFile() and qnxEnv() to return Util::Enviroment instead(?)
|
||||
QMultiMap<QString, QString> BlackBerryConfiguration::qnxEnv() const
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user