diff --git a/src/plugins/qnx/blackberryinstallwizard.cpp b/src/plugins/qnx/blackberryinstallwizard.cpp index 67b6c0bbb18..76a81dac2a1 100644 --- a/src/plugins/qnx/blackberryinstallwizard.cpp +++ b/src/plugins/qnx/blackberryinstallwizard.cpp @@ -40,6 +40,7 @@ using namespace Qnx; using namespace Qnx::Internal; BlackBerryInstallWizard::BlackBerryInstallWizard(BlackBerryInstallerDataHandler::Mode mode, + BlackBerryInstallerDataHandler::Target target, const QString& version, QWidget *parent) : Utils::Wizard(parent) @@ -49,8 +50,10 @@ BlackBerryInstallWizard::BlackBerryInstallWizard(BlackBerryInstallerDataHandler: setWindowTitle(tr("BlackBerry NDK Installation Wizard")); m_data.mode = mode; + m_data.installTarget = target; m_data.version = version; + if (m_data.mode != BlackBerryInstallerDataHandler::UninstallMode) { m_optionPage = new BlackBerryInstallWizardOptionPage(m_data, this); m_ndkPage = new BlackBerryInstallWizardNdkPage(m_data, this); diff --git a/src/plugins/qnx/blackberryinstallwizard.h b/src/plugins/qnx/blackberryinstallwizard.h index f59dd92c008..cac543928fb 100644 --- a/src/plugins/qnx/blackberryinstallwizard.h +++ b/src/plugins/qnx/blackberryinstallwizard.h @@ -53,12 +53,19 @@ public: ManuallMode }; + enum Target { + ApiLevel, + Simulator, + Runtime + }; + QString ndkPath; QString target; QString version; int exitCode; QProcess::ExitStatus exitStatus; Mode mode; + Target installTarget; }; class BlackBerryInstallWizard : public Utils::Wizard @@ -74,6 +81,7 @@ public: }; explicit BlackBerryInstallWizard(BlackBerryInstallerDataHandler::Mode mode = BlackBerryInstallerDataHandler::InstallMode, + BlackBerryInstallerDataHandler::Target target = BlackBerryInstallerDataHandler::ApiLevel, const QString& version = QString(), QWidget *parent = 0); diff --git a/src/plugins/qnx/blackberryinstallwizardoptionpage.ui b/src/plugins/qnx/blackberryinstallwizardoptionpage.ui new file mode 100644 index 00000000000..83e0aae8146 --- /dev/null +++ b/src/plugins/qnx/blackberryinstallwizardoptionpage.ui @@ -0,0 +1,97 @@ + + + Qnx::Internal::BlackBerryInstallWizardOptionPage + + + + 0 + 0 + 457 + 278 + + + + Form + + + + + + + + Install Api Level + + + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 20 + 0 + + + + + + + + + + Install New Target + + + + + + + Add Existing Target + + + + + + + + + + + Install Simulator + + + + + + + Install Runtime + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + diff --git a/src/plugins/qnx/blackberryinstallwizardpages.cpp b/src/plugins/qnx/blackberryinstallwizardpages.cpp index 207b8b29d71..7e366864003 100644 --- a/src/plugins/qnx/blackberryinstallwizardpages.cpp +++ b/src/plugins/qnx/blackberryinstallwizardpages.cpp @@ -33,6 +33,7 @@ #include "blackberryconfigurationmanager.h" #include "blackberryconfiguration.h" +#include "ui_blackberryinstallwizardoptionpage.h" #include "ui_blackberryinstallwizardtargetpage.h" #include "ui_blackberryinstallwizardprocesspage.h" #include "ui_blackberryinstallwizardndkpage.h" @@ -50,8 +51,6 @@ #include #include -#include -#include namespace Qnx { namespace Internal { @@ -94,56 +93,64 @@ bool NdkPathChooser::validatePath(const QString &path, QString *errorMessage) BlackBerryInstallWizardOptionPage::BlackBerryInstallWizardOptionPage(BlackBerryInstallerDataHandler &data, QWidget *parent) : QWizardPage(parent) - , m_layout(new QVBoxLayout(this)) - , m_installButton(new QRadioButton) - , m_addButton(new QRadioButton) + , m_ui(new Ui_BlackBerryInstallWizardOptionPage) + , m_buttonGroup(new QButtonGroup(this)) , m_envFileChooser(new NdkPathChooser(NdkPathChooser::ManualMode)) , m_data(data) { + m_ui->setupUi(this); setTitle(tr("Options")); - connect(m_addButton, SIGNAL(toggled(bool)), this, SLOT(handleOptionChanged())); + connect(m_ui->addButton, SIGNAL(toggled(bool)), this, SLOT(handleApiLevelOptionChanged())); connect(m_envFileChooser, SIGNAL(pathChanged(QString)), this, SLOT(handlePathChanged(QString))); + connect(m_ui->apiLevelButton, SIGNAL(toggled(bool)), this, SLOT(handleTargetChanged())); + connect(m_ui->simulatorButton, SIGNAL(toggled(bool)), this, SLOT(handleTargetChanged())); + connect(m_ui->runtimeButton, SIGNAL(toggled(bool)), this, SLOT(handleTargetChanged())); +} + +BlackBerryInstallWizardOptionPage::~BlackBerryInstallWizardOptionPage() +{ + delete m_ui; } void BlackBerryInstallWizardOptionPage::initializePage() { - m_installButton->setText(tr("Install New Target")); - m_addButton->setText(tr("Add Existing Target")); + m_ui->apiLevelOptionsLayout->addWidget(m_envFileChooser); + m_buttonGroup->addButton(m_ui->installButton); + m_buttonGroup->addButton(m_ui->addButton); + m_ui->apiLevelButton->setChecked(true); if (m_data.mode == BlackBerryInstallerDataHandler::ManuallMode) - m_addButton->setChecked(true); + m_ui->addButton->setChecked(true); else - m_installButton->setChecked(true); + m_ui->installButton->setChecked(true); - m_envFileChooser->setEnabled(m_addButton->isChecked()); - - m_layout->addWidget(m_installButton); - m_layout->addWidget(m_addButton); - m_layout->addWidget(m_envFileChooser); + m_envFileChooser->setEnabled(m_ui->addButton->isChecked()); } bool BlackBerryInstallWizardOptionPage::isComplete() const { - return (m_installButton->isChecked() - || (m_addButton->isChecked() && m_envFileChooser->isValid())); + if (m_ui->addButton->isEnabled() && m_ui->addButton->isChecked()) + return m_envFileChooser->isValid(); + + return true; } int BlackBerryInstallWizardOptionPage::nextId() const { - if (m_addButton->isChecked()) + if (m_ui->addButton->isChecked()) return BlackBerryInstallWizard::FinalPageId; return BlackBerryInstallWizard::NdkPageId; } -void BlackBerryInstallWizardOptionPage::handleOptionChanged() +void BlackBerryInstallWizardOptionPage::handleApiLevelOptionChanged() { - if (m_addButton->isChecked()) + if (m_ui->addButton->isChecked()) m_data.mode = BlackBerryInstallerDataHandler::ManuallMode; else m_data.mode = BlackBerryInstallerDataHandler::InstallMode; - m_envFileChooser->setEnabled(m_addButton->isChecked()); + m_envFileChooser->setEnabled(m_ui->addButton->isChecked()); emit completeChanged(); } @@ -155,6 +162,21 @@ void BlackBerryInstallWizardOptionPage::handlePathChanged(const QString &envFile emit completeChanged(); } +void BlackBerryInstallWizardOptionPage::handleTargetChanged() +{ + m_ui->installButton->setEnabled(m_ui->apiLevelButton->isChecked()); + m_ui->addButton->setEnabled(m_ui->apiLevelButton->isChecked()); + + if (m_ui->apiLevelButton->isChecked()) + m_data.installTarget = BlackBerryInstallerDataHandler::ApiLevel; + else if (m_ui->simulatorButton->isChecked()) + m_data.installTarget = BlackBerryInstallerDataHandler::Simulator; + else if (m_ui->runtimeButton->isChecked()) + m_data.installTarget = BlackBerryInstallerDataHandler::Runtime; + + emit completeChanged(); +} + //------------------------------------------------------------------ BlackBerryInstallWizardNdkPage::BlackBerryInstallWizardNdkPage(BlackBerryInstallerDataHandler &data, QWidget *parent) @@ -250,7 +272,7 @@ BlackBerryInstallWizardTargetPage::BlackBerryInstallWizardTargetPage(BlackBerryI , m_targetListProcess(new QProcess(this)) { m_ui->setupUi(this); - setTitle(tr("Target")); + setTitle(tr("Version")); connect(m_targetListProcess, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(targetsListProcessFinished())); @@ -331,7 +353,7 @@ void BlackBerryInstallWizardTargetPage::initTargetsTreeWidget() m_ui->targetsTreeWidget->clear(); m_ui->targetsTreeWidget->setHeaderHidden(false); m_ui->targetsTreeWidget->header()->setResizeMode(QHeaderView::ResizeToContents); - m_ui->targetsTreeWidget->setHeaderItem(new QTreeWidgetItem(QStringList() << tr("Version") << tr("Target"))); + m_ui->targetsTreeWidget->setHeaderItem(new QTreeWidgetItem(QStringList() << tr("Version") << tr("Name"))); m_ui->targetsTreeWidget->setTextElideMode(Qt::ElideNone); m_ui->targetsTreeWidget->setColumnCount(2); } @@ -341,11 +363,11 @@ void BlackBerryInstallWizardTargetPage::updateAvailableTargetsList() m_ui->targetsTreeWidget->clear(); m_ui->targetsTreeWidget->setHeaderHidden(true); QTreeWidgetItem *item = new QTreeWidgetItem(m_ui->targetsTreeWidget); - item->setText(0, tr("Querying available targets. Please wait...")); + item->setText(0, tr("Querying available versions. Please wait...")); QFont font; font.setItalic(true); item->setFont(0, font); - QString qdeProcess = QnxUtils::qdeInstallProcess(m_data.ndkPath, QLatin1String(" --list")); + QString qdeProcess = QnxUtils::qdeInstallProcess(m_data.ndkPath, QString(), QLatin1String(" --list")); QTC_ASSERT(!qdeProcess.isEmpty(), return); m_targetListProcess->start(qdeProcess); } @@ -377,6 +399,21 @@ BlackBerryInstallWizardProcessPage::~BlackBerryInstallWizardProcessPage() void BlackBerryInstallWizardProcessPage::initializePage() { + QString target; + switch (m_data.installTarget) { + case BlackBerryInstallerDataHandler::ApiLevel: + target = tr("API level version: "); + break; + case BlackBerryInstallerDataHandler::Simulator: + target = tr("simulator version: "); + break; + case BlackBerryInstallerDataHandler::Runtime: + target = tr("runtime version: "); + break; + default: + break; + } + if (m_data.mode == BlackBerryInstallerDataHandler::UninstallMode) { if (m_data.version.isEmpty()) { wizard()->next(); @@ -391,9 +428,9 @@ void BlackBerryInstallWizardProcessPage::initializePage() } } - m_ui->label->setText(tr("Uninstalling target:") + QLatin1Char('\n') + m_data.target); + m_ui->label->setText(tr("Uninstalling ") + target + m_data.version); } else { - m_ui->label->setText(tr("Installing target:") + QLatin1Char('\n') + m_data.target); + m_ui->label->setText(tr("Installing ") + target + m_data.version); } // m_targetProcess could be running if (m_targetProcess->state() == QProcess::Running) { @@ -428,6 +465,12 @@ void BlackBerryInstallWizardProcessPage::handleProcessFinished(int exitCode, QPr void BlackBerryInstallWizardProcessPage::processTarget() { + QString target; + if (m_data.installTarget == BlackBerryInstallerDataHandler::Simulator) + target = QLatin1String(" --simulator"); + else if (m_data.installTarget == BlackBerryInstallerDataHandler::Runtime) + target = QLatin1String(" --runtime"); + QString option; if (m_data.mode == BlackBerryInstallerDataHandler::UninstallMode) option = QLatin1String(" --uninstall"); @@ -449,7 +492,7 @@ void BlackBerryInstallWizardProcessPage::processTarget() // Killing the sdkinstall process won't kill the qde process it launched // thus, let's directly launch the resulting qde process - QString qdeProcess = QnxUtils::qdeInstallProcess(m_data.ndkPath, option, version); + QString qdeProcess = QnxUtils::qdeInstallProcess(m_data.ndkPath, target, option, version); QTC_ASSERT(!qdeProcess.isEmpty(), return); m_targetProcess->start(qdeProcess); @@ -497,15 +540,30 @@ void BlackBerryInstallWizardFinalPage::initializePage() } QString message; + QString target; + switch (m_data.installTarget) { + case BlackBerryInstallerDataHandler::ApiLevel: + target = tr("API level version: "); + break; + case BlackBerryInstallerDataHandler::Simulator: + target = tr("simulator version: "); + break; + case BlackBerryInstallerDataHandler::Runtime: + target = tr("runtime version: "); + break; + default: + break; + } + if (m_data.exitCode == 0 && m_data.exitStatus == QProcess::NormalExit) { message = m_data.mode == BlackBerryInstallerDataHandler::UninstallMode ? - tr("Finished uninstalling target:\n %1").arg(m_data.target) : - tr("Finished installing target:\n %1").arg(m_data.target); + tr("Finished uninstalling %1:\n %2").arg(target, m_data.version) : + tr("Finished installing %1:\n %2").arg(target, m_data.version); emit done(); } else { message = m_data.mode == BlackBerryInstallerDataHandler::UninstallMode ? - tr("An error has occurred while uninstalling target:\n %1").arg(m_data.target) : - tr("An error has occurred while installing target:\n %1").arg(m_data.target); + tr("An error has occurred while uninstalling %1:\n %2").arg(target, m_data.version) : + tr("An error has occurred while installing %1:\n %2").arg(target, m_data.version); } label->setText(message); } diff --git a/src/plugins/qnx/blackberryinstallwizardpages.h b/src/plugins/qnx/blackberryinstallwizardpages.h index 1d92e329a8f..aa28c93b089 100644 --- a/src/plugins/qnx/blackberryinstallwizardpages.h +++ b/src/plugins/qnx/blackberryinstallwizardpages.h @@ -41,13 +41,13 @@ QT_BEGIN_NAMESPACE class QProcess; -class QRadioButton; -class QVBoxLayout; +class QButtonGroup; QT_END_NAMESPACE namespace Qnx { namespace Internal { +class Ui_BlackBerryInstallWizardOptionPage; class Ui_BlackBerryInstallWizardNdkPage; class Ui_BlackBerryInstallWizardTargetPage; class Ui_BlackBerryInstallWizardProcessPage; @@ -74,22 +74,24 @@ class BlackBerryInstallWizardOptionPage : public QWizardPage public: explicit BlackBerryInstallWizardOptionPage(BlackBerryInstallerDataHandler &data, QWidget *parent = 0); + ~BlackBerryInstallWizardOptionPage(); void initializePage(); bool isComplete() const; int nextId() const; protected slots: - void handleOptionChanged(); + void handleApiLevelOptionChanged(); void handlePathChanged(const QString &envFilePath); + void handleTargetChanged(); signals: void installModeChanged(); private: - QVBoxLayout *m_layout; - QRadioButton* m_installButton; - QRadioButton* m_addButton; - NdkPathChooser* m_envFileChooser; + Ui_BlackBerryInstallWizardOptionPage *m_ui; + QButtonGroup *m_buttonGroup; + + NdkPathChooser *m_envFileChooser; BlackBerryInstallerDataHandler &m_data; }; diff --git a/src/plugins/qnx/blackberryinstallwizardtargetpage.ui b/src/plugins/qnx/blackberryinstallwizardtargetpage.ui index 71591f21799..e3af1ab5804 100644 --- a/src/plugins/qnx/blackberryinstallwizardtargetpage.ui +++ b/src/plugins/qnx/blackberryinstallwizardtargetpage.ui @@ -17,7 +17,7 @@ - Please select target: + Please select version: diff --git a/src/plugins/qnx/blackberryndksettingswidget.cpp b/src/plugins/qnx/blackberryndksettingswidget.cpp index a30a988bc9f..c115c980b57 100644 --- a/src/plugins/qnx/blackberryndksettingswidget.cpp +++ b/src/plugins/qnx/blackberryndksettingswidget.cpp @@ -398,7 +398,7 @@ void BlackBerryNDKSettingsWidget::updateDefaultApiLevel() void BlackBerryNDKSettingsWidget::launchBlackBerryInstallerWizard(BlackBerryInstallerDataHandler::Mode mode, const QString& targetVersion) { - BlackBerryInstallWizard wizard(mode, targetVersion, this); + BlackBerryInstallWizard wizard(mode, BlackBerryInstallerDataHandler::ApiLevel, targetVersion, this); if (mode == BlackBerryInstallerDataHandler::InstallMode) connect(&wizard, SIGNAL(processFinished()), this, SLOT(handleInstallationFinished())); else diff --git a/src/plugins/qnx/qnx.pro b/src/plugins/qnx/qnx.pro index 25df0bf0fa5..cfe15336c91 100644 --- a/src/plugins/qnx/qnx.pro +++ b/src/plugins/qnx/qnx.pro @@ -229,7 +229,8 @@ FORMS += \ blackberrydeviceconfigurationwizardquerypage.ui \ blackberryinstallwizardtargetpage.ui \ blackberryinstallwizardndkpage.ui \ - blackberryinstallwizardprocesspage.ui + blackberryinstallwizardprocesspage.ui \ + blackberryinstallwizardoptionpage.ui include(../../private_headers.pri) include(./cascadesimport/cascadesimport.pri) diff --git a/src/plugins/qnx/qnx.qbs b/src/plugins/qnx/qnx.qbs index 5cf317bab44..a741da4e1f7 100644 --- a/src/plugins/qnx/qnx.qbs +++ b/src/plugins/qnx/qnx.qbs @@ -118,6 +118,7 @@ QtcPlugin { "blackberryinstallwizard.cpp", "blackberryinstallwizard.h", "blackberryinstallwizardndkpage.ui", + "blackberryinstallwizardoptionpage.ui", "blackberryinstallwizardpages.cpp", "blackberryinstallwizardpages.h", "blackberryinstallwizardprocesspage.ui", diff --git a/src/plugins/qnx/qnxutils.cpp b/src/plugins/qnx/qnxutils.cpp index a56f909669f..31332efb91b 100644 --- a/src/plugins/qnx/qnxutils.cpp +++ b/src/plugins/qnx/qnxutils.cpp @@ -282,7 +282,8 @@ QString QnxUtils::sdkInstallerPath(const QString &ndkPath) } // The resulting process when launching sdkinstall -QString QnxUtils::qdeInstallProcess(const QString &ndkPath, const QString &option, const QString &version) +QString QnxUtils::qdeInstallProcess(const QString &ndkPath, const QString &target, + const QString &option, const QString &version) { QString installerPath = sdkInstallerPath(ndkPath); if (installerPath.isEmpty()) @@ -293,7 +294,7 @@ QString QnxUtils::qdeInstallProcess(const QString &ndkPath, const QString &optio const QString installerApplication = installerPlugins.size() >= 1 ? QLatin1String("com.qnx.tools.ide.sdk.installer.app.SDKInstallerApplication") : QLatin1String("com.qnx.tools.ide.sdk.manager.core.SDKInstallerApplication"); return QString::fromLatin1("%1 -nosplash -application %2 " - "%3 %4 -vmargs -Dosgi.console=:none").arg(installerPath, installerApplication, option, version); + "%3 %4 %5 -vmargs -Dosgi.console=:none").arg(installerPath, installerApplication, target, option, version); } QList QnxUtils::qnxEnvironment(const QString &sdkPath) diff --git a/src/plugins/qnx/qnxutils.h b/src/plugins/qnx/qnxutils.h index 9edae410a03..4f402ec2432 100644 --- a/src/plugins/qnx/qnxutils.h +++ b/src/plugins/qnx/qnxutils.h @@ -75,7 +75,8 @@ public: static QString defaultTargetVersion(const QString& ndkPath); static QList installedNdks(); static QString sdkInstallerPath(const QString& ndkPath); - static QString qdeInstallProcess(const QString& ndkPath, const QString &option, const QString &version = QString()); + static QString qdeInstallProcess(const QString& ndkPath, const QString &target, + const QString &option, const QString &version = QString()); static QList qnxEnvironment(const QString &ndk); };