diff --git a/src/plugins/qnx/blackberrycreatepackagestep.cpp b/src/plugins/qnx/blackberrycreatepackagestep.cpp index 9126d64a9b7825676a3b9bd8d0cf38111409a6c5..b4f9d4f9d331dd13ec7cd730517c28fa60ac27ae 100644 --- a/src/plugins/qnx/blackberrycreatepackagestep.cpp +++ b/src/plugins/qnx/blackberrycreatepackagestep.cpp @@ -102,17 +102,17 @@ bool BlackBerryCreatePackageStep::init() } foreach (const BarPackageDeployInformation &info, packagesToDeploy) { - if (info.appDescriptorPath.isEmpty()) { + if (info.appDescriptorPath().isEmpty()) { raiseError(tr("Application descriptor file not specified, please check deployment settings")); return false; } - if (info.packagePath.isEmpty()) { + if (info.packagePath().isEmpty()) { raiseError(tr("No package specified, please check deployment settings")); return false; } - const QString buildDir = target()->activeBuildConfiguration()->buildDirectory(); + const QString buildDir = QFileInfo(info.packagePath()).absolutePath(); QDir dir(buildDir); if (!dir.exists()) { if (!dir.mkpath(buildDir)) { @@ -122,7 +122,7 @@ bool BlackBerryCreatePackageStep::init() } const QString preparedFilePath = buildDir + QLatin1String("/bar-descriptor-") + project()->displayName() + QLatin1String("-qtc-generated.xml"); - if (!prepareAppDescriptorFile(info.appDescriptorPath, preparedFilePath)) + if (!prepareAppDescriptorFile(info.appDescriptorPath(), preparedFilePath)) // If there is an error, prepareAppDescriptorFile() will raise it return false; @@ -131,7 +131,7 @@ bool BlackBerryCreatePackageStep::init() args << QLatin1String("-devMode"); if (!debugToken().isEmpty()) args << QLatin1String("-debugToken") << QnxUtils::addQuotes(QDir::toNativeSeparators(debugToken())); - args << QLatin1String("-package") << QnxUtils::addQuotes(QDir::toNativeSeparators(info.packagePath)); + args << QLatin1String("-package") << QnxUtils::addQuotes(QDir::toNativeSeparators(info.packagePath())); args << QnxUtils::addQuotes(QDir::toNativeSeparators(preparedFilePath)); addCommand(packageCmd, args); } diff --git a/src/plugins/qnx/blackberrydeployinformation.cpp b/src/plugins/qnx/blackberrydeployinformation.cpp index cdd62424ee00b86d634904f8c65ae337ecc315d7..7abc7a38308e29a2c57047bc40d4ccf7dd3574ae 100644 --- a/src/plugins/qnx/blackberrydeployinformation.cpp +++ b/src/plugins/qnx/blackberrydeployinformation.cpp @@ -50,8 +50,28 @@ const char ENABLED_KEY[] = "Qnx.BlackBerry.DeployInformation.Enabled"; const char APPDESCRIPTOR_KEY[] = "Qnx.BlackBerry.DeployInformation.AppDescriptor"; const char PACKAGE_KEY[] = "Qnx.BlackBerry.DeployInformation.Package"; const char PROFILE_KEY[] = "Qnx.BlackBerry.DeployInformation.ProFile"; +const char TARGET_KEY[] = "Qnx.BlackBerry.DeployInformation.Target"; +const char SOURCE_KEY[] = "Qnx.BlackBerry.DeployInformation.Source"; } +QString BarPackageDeployInformation::appDescriptorPath() const +{ + if (userAppDescriptorPath.isEmpty()) + return sourceDir + QLatin1String("/bar-descriptor.xml"); + + return userAppDescriptorPath; +} + +QString BarPackageDeployInformation::packagePath() const +{ + if (userPackagePath.isEmpty()) + return buildDir + QLatin1String("/") + targetName + QLatin1String(".bar"); + + return userPackagePath; +} + +// ---------------------------------------------------------------------------- + BlackBerryDeployInformation::BlackBerryDeployInformation(ProjectExplorer::Target *target) : QAbstractTableModel(target) , m_target(target) @@ -89,9 +109,9 @@ QVariant BlackBerryDeployInformation::data(const QModelIndex &index, int role) c return di.enabled ? Qt::Checked : Qt::Unchecked; } else if (role == Qt::DisplayRole || role == Qt::EditRole) { if (index.column() == AppDescriptorColumn) - return di.appDescriptorPath; + return QDir::toNativeSeparators(di.appDescriptorPath()); else if (index.column() == PackageColumn) - return di.packagePath; + return QDir::toNativeSeparators(di.packagePath()); } return QVariant(); @@ -126,9 +146,9 @@ bool BlackBerryDeployInformation::setData(const QModelIndex &index, const QVaria di.enabled = static_cast<Qt::CheckState>(value.toInt()) == Qt::Checked; } else if (role == Qt::EditRole) { if (index.column() == AppDescriptorColumn) - di.appDescriptorPath = value.toString(); + di.userAppDescriptorPath = value.toString(); else if (index.column() == PackageColumn) - di.packagePath = value.toString(); + di.userPackagePath = value.toString(); } emit dataChanged(index, index); @@ -173,9 +193,11 @@ QVariantMap BlackBerryDeployInformation::toMap() const QVariantMap deployInfoMap; deployInfoMap[QLatin1String(ENABLED_KEY)] = deployInfo.enabled; - deployInfoMap[QLatin1String(APPDESCRIPTOR_KEY)] = deployInfo.appDescriptorPath; - deployInfoMap[QLatin1String(PACKAGE_KEY)] = deployInfo.packagePath; + deployInfoMap[QLatin1String(APPDESCRIPTOR_KEY)] = deployInfo.userAppDescriptorPath; + deployInfoMap[QLatin1String(PACKAGE_KEY)] = deployInfo.userPackagePath; deployInfoMap[QLatin1String(PROFILE_KEY)] = deployInfo.proFilePath; + deployInfoMap[QLatin1String(TARGET_KEY)] = deployInfo.targetName; + deployInfoMap[QLatin1String(SOURCE_KEY)] = deployInfo.sourceDir; outerMap[QString::fromLatin1(DEPLOYINFO_KEY).arg(i)] = deployInfoMap; } @@ -196,8 +218,13 @@ void BlackBerryDeployInformation::fromMap(const QVariantMap &map) const QString appDescriptorPath = innerMap.value(QLatin1String(APPDESCRIPTOR_KEY)).toString(); const QString packagePath = innerMap.value(QLatin1String(PACKAGE_KEY)).toString(); const QString proFilePath = innerMap.value(QLatin1String(PROFILE_KEY)).toString(); + const QString targetName = innerMap.value(QLatin1String(TARGET_KEY)).toString(); + const QString sourceDir = innerMap.value(QLatin1String(SOURCE_KEY)).toString(); - m_deployInformation << BarPackageDeployInformation(enabled, appDescriptorPath, packagePath, proFilePath); + BarPackageDeployInformation deployInformation(enabled, proFilePath, sourceDir, m_target->activeBuildConfiguration()->buildDirectory(), targetName); + deployInformation.userAppDescriptorPath = appDescriptorPath; + deployInformation.userPackagePath = packagePath; + m_deployInformation << deployInformation; } endResetModel(); @@ -216,8 +243,13 @@ void BlackBerryDeployInformation::updateModel() foreach (Qt4ProjectManager::Qt4ProFileNode *node, appNodes) { bool nodeFound = false; for (int i = 0; i < m_deployInformation.size(); ++i) { - if (m_deployInformation[i].proFilePath == node->path()) { - keep << m_deployInformation[i]; + if (m_deployInformation[i].proFilePath == node->path() + && (!m_deployInformation[i].userAppDescriptorPath.isEmpty() + || !m_deployInformation[i].userPackagePath.isEmpty())) { + BarPackageDeployInformation deployInformation = m_deployInformation[i]; + // In case the user resets the bar package path (or if it is empty already), we need the current build dir + deployInformation.buildDir = m_target->activeBuildConfiguration()->buildDirectory(); + keep << deployInformation; nodeFound = true; break; } @@ -270,9 +302,7 @@ BarPackageDeployInformation BlackBerryDeployInformation::deployInformationFromNo Qt4ProjectManager::TargetInformation ti = node->targetInformation(); QFileInfo fi(node->path()); - const QString appDescriptorPath = QDir::toNativeSeparators(fi.absolutePath() + QLatin1String("/bar-descriptor.xml")); - QString buildDir = m_target->activeBuildConfiguration()->buildDirectory(); - QString barPackagePath = QDir::toNativeSeparators(buildDir + QLatin1Char('/') + ti.target + QLatin1String(".bar")); + const QString buildDir = m_target->activeBuildConfiguration()->buildDirectory(); - return BarPackageDeployInformation(true, appDescriptorPath, barPackagePath, node->path()); + return BarPackageDeployInformation(true, node->path(), fi.absolutePath(), buildDir, ti.target); } diff --git a/src/plugins/qnx/blackberrydeployinformation.h b/src/plugins/qnx/blackberrydeployinformation.h index 28a46f6e08e96d45511952862307bb6ff2e7e12a..462f6feaabdaca4088a3c271013f0ef2a472b6ad 100644 --- a/src/plugins/qnx/blackberrydeployinformation.h +++ b/src/plugins/qnx/blackberrydeployinformation.h @@ -47,18 +47,27 @@ namespace Internal { class BarPackageDeployInformation { public: - BarPackageDeployInformation(bool enabled, QString appDescriptorPath, QString packagePath, QString proFilePath) + BarPackageDeployInformation(bool enabled, const QString &proFilePath, const QString &sourceDir, + const QString &buildDir, const QString &targetName) : enabled(enabled) - , appDescriptorPath(appDescriptorPath) - , packagePath(packagePath) , proFilePath(proFilePath) + , sourceDir(sourceDir) + , buildDir(buildDir) + , targetName(targetName) { } + QString appDescriptorPath() const; + QString packagePath() const; + bool enabled; - QString appDescriptorPath; - QString packagePath; QString proFilePath; + QString sourceDir; + QString buildDir; + QString targetName; + + QString userAppDescriptorPath; + QString userPackagePath; }; class BlackBerryDeployInformation : public QAbstractTableModel diff --git a/src/plugins/qnx/blackberrydeploystep.cpp b/src/plugins/qnx/blackberrydeploystep.cpp index 2086185fb332661b5a6a062c86530a6fd9047687..54692bf7619b2caec09ab3e1081b60e3807bfb60 100644 --- a/src/plugins/qnx/blackberrydeploystep.cpp +++ b/src/plugins/qnx/blackberrydeploystep.cpp @@ -117,7 +117,7 @@ bool BlackBerryDeployStep::init() args << QLatin1String("-device") << deviceHost(); if (!password().isEmpty()) args << QLatin1String("-password") << password(); - args << QnxUtils::addQuotes(QDir::toNativeSeparators(info.packagePath)); + args << QnxUtils::addQuotes(QDir::toNativeSeparators(info.packagePath())); addCommand(deployCmd, args); } @@ -132,8 +132,8 @@ void BlackBerryDeployStep::run(QFutureInterface<bool> &fi) QList<BarPackageDeployInformation> packagesToDeploy = deployConfig->deploymentInfo()->enabledPackages(); foreach (const BarPackageDeployInformation &info, packagesToDeploy) { - if (!QFileInfo(info.packagePath).exists()) { - raiseError(tr("Package '%1' does not exist. Create the package first.").arg(info.packagePath)); + if (!QFileInfo(info.packagePath()).exists()) { + raiseError(tr("Package '%1' does not exist. Create the package first.").arg(info.packagePath())); fi.reportResult(false); return; } diff --git a/src/plugins/qnx/blackberryrunconfiguration.cpp b/src/plugins/qnx/blackberryrunconfiguration.cpp index 165b45cc2336fa0bc893b62bad0d5446c7a2a4f6..aa732b305ac613de9169685cd25c29cdf0bb076d 100644 --- a/src/plugins/qnx/blackberryrunconfiguration.cpp +++ b/src/plugins/qnx/blackberryrunconfiguration.cpp @@ -102,7 +102,7 @@ QString BlackBerryRunConfiguration::barPackage() const QList<BarPackageDeployInformation> packages = dc->deploymentInfo()->enabledPackages(); foreach (const BarPackageDeployInformation package, packages) { if (package.proFilePath == proFilePath()) - return package.packagePath; + return package.packagePath(); } return QString(); }