From 269d51935d6913ef9c298c0eed2ec867bd3ddaf3 Mon Sep 17 00:00:00 2001 From: David Kaspar Date: Mon, 12 Aug 2013 15:22:55 +0200 Subject: [PATCH] Qnx: Add BlackBerry Device wizard queries device to prefill wizard fields BlackBerry Device wizard is having the following pages: * Setup page - simplified to contains the device listing, device host name and device password fields only * Query page - queries device for information * SshKey page - no changes there * Config page - contains config-name and debug token fields Change-Id: I30e05b984960df2184353209bff1f07c9440e6b1 Reviewed-by: Tobias Hunger Reviewed-by: David Kaspar --- .../qnx/blackberrydebugtokenrequestdialog.cpp | 5 + .../qnx/blackberrydebugtokenrequestdialog.h | 1 + .../blackberrydeviceconfigurationwizard.cpp | 15 +- .../qnx/blackberrydeviceconfigurationwizard.h | 12 +- ...errydeviceconfigurationwizardconfigpage.ui | 159 ++++++++++++++ ...ackberrydeviceconfigurationwizardpages.cpp | 196 ++++++++++++------ ...blackberrydeviceconfigurationwizardpages.h | 61 +++++- ...berrydeviceconfigurationwizardquerypage.ui | 51 +++++ ...berrydeviceconfigurationwizardsetuppage.ui | 135 ++---------- ...errydeviceconfigurationwizardsshkeypage.ui | 64 ++++-- .../qnx/blackberrydeviceinformation.cpp | 57 ++++- src/plugins/qnx/blackberrydeviceinformation.h | 11 + .../qnx/blackberrydevicelistdetector.cpp | 5 +- src/plugins/qnx/blackberryndkprocess.cpp | 6 + src/plugins/qnx/blackberryndkprocess.h | 1 + src/plugins/qnx/qnx.pro | 4 +- src/plugins/qnx/qnx.qbs | 2 + 17 files changed, 570 insertions(+), 215 deletions(-) create mode 100644 src/plugins/qnx/blackberrydeviceconfigurationwizardconfigpage.ui create mode 100644 src/plugins/qnx/blackberrydeviceconfigurationwizardquerypage.ui diff --git a/src/plugins/qnx/blackberrydebugtokenrequestdialog.cpp b/src/plugins/qnx/blackberrydebugtokenrequestdialog.cpp index df7426f9012..b753243e8aa 100644 --- a/src/plugins/qnx/blackberrydebugtokenrequestdialog.cpp +++ b/src/plugins/qnx/blackberrydebugtokenrequestdialog.cpp @@ -99,6 +99,11 @@ QString BlackBerryDebugTokenRequestDialog::debugToken() const return m_ui->debugTokenPath->path(); } +void BlackBerryDebugTokenRequestDialog::setDevicePin(const QString &devicePin) +{ + m_ui->devicePin->setText(devicePin); +} + void BlackBerryDebugTokenRequestDialog::setTargetDetails(const QString &deviceIp, const QString &password) { m_ui->devicePin->setPlaceholderText(tr("Requesting Device PIN...")); diff --git a/src/plugins/qnx/blackberrydebugtokenrequestdialog.h b/src/plugins/qnx/blackberrydebugtokenrequestdialog.h index 7fe3e8065f4..e4a17a53919 100644 --- a/src/plugins/qnx/blackberrydebugtokenrequestdialog.h +++ b/src/plugins/qnx/blackberrydebugtokenrequestdialog.h @@ -55,6 +55,7 @@ public: ~BlackBerryDebugTokenRequestDialog(); QString debugToken() const; + void setDevicePin(const QString &devicePin); void setTargetDetails(const QString &deviceIp, const QString &password); private slots: diff --git a/src/plugins/qnx/blackberrydeviceconfigurationwizard.cpp b/src/plugins/qnx/blackberrydeviceconfigurationwizard.cpp index 81020bdb85a..c407b082b18 100644 --- a/src/plugins/qnx/blackberrydeviceconfigurationwizard.cpp +++ b/src/plugins/qnx/blackberrydeviceconfigurationwizard.cpp @@ -45,11 +45,15 @@ BlackBerryDeviceConfigurationWizard::BlackBerryDeviceConfigurationWizard(QWidget setWindowTitle(tr("New BlackBerry Device Configuration Setup")); m_setupPage = new BlackBerryDeviceConfigurationWizardSetupPage(this); + m_queryPage = new BlackBerryDeviceConfigurationWizardQueryPage(m_holder, this); m_sshKeyPage = new BlackBerryDeviceConfigurationWizardSshKeyPage(this); + m_configPage = new BlackBerryDeviceConfigurationWizardConfigPage(m_holder, this); m_finalPage = new BlackBerryDeviceConfigurationWizardFinalPage(this); setPage(SetupPageId, m_setupPage); + setPage(QueryPageId, m_queryPage); setPage(SshKeyPageId, m_sshKeyPage); + setPage(ConfigPageId, m_configPage); setPage(FinalPageId, m_finalPage); m_finalPage->setCommitPage(true); } @@ -66,10 +70,13 @@ ProjectExplorer::IDevice::Ptr BlackBerryDeviceConfigurationWizard::device() sshParams.timeout = 10; sshParams.port = 22; - BlackBerryDeviceConfiguration::Ptr configuration = BlackBerryDeviceConfiguration::create(m_setupPage->deviceName(), - Core::Id(Constants::QNX_BB_OS_TYPE), - m_setupPage->machineType()); + BlackBerryDeviceConfiguration::Ptr configuration = BlackBerryDeviceConfiguration::create( + m_configPage->configurationName(), + Core::Id(Constants::QNX_BB_OS_TYPE), + m_holder.isSimulator + ? ProjectExplorer::IDevice::Emulator + : ProjectExplorer::IDevice::Hardware); configuration->setSshParameters(sshParams); - configuration->setDebugToken(m_setupPage->debugToken()); + configuration->setDebugToken(m_configPage->debugToken()); return configuration; } diff --git a/src/plugins/qnx/blackberrydeviceconfigurationwizard.h b/src/plugins/qnx/blackberrydeviceconfigurationwizard.h index f5a31d67874..5b4a7a9cd16 100644 --- a/src/plugins/qnx/blackberrydeviceconfigurationwizard.h +++ b/src/plugins/qnx/blackberrydeviceconfigurationwizard.h @@ -32,6 +32,8 @@ #ifndef QNX_INTERNAL_BLACKBERRYDEVICECONFIGURATIONWIZARD_H #define QNX_INTERNAL_BLACKBERRYDEVICECONFIGURATIONWIZARD_H +#include "blackberrydeviceconfigurationwizardpages.h" + #include #include @@ -39,10 +41,6 @@ namespace Qnx { namespace Internal { -class BlackBerryDeviceConfigurationWizardSetupPage; -class BlackBerryDeviceConfigurationWizardSshKeyPage; -class BlackBerryDeviceConfigurationWizardFinalPage; - class BlackBerryDeviceConfigurationWizard : public QWizard { Q_OBJECT @@ -54,13 +52,19 @@ public: private: enum PageId { SetupPageId, + QueryPageId, SshKeyPageId, + ConfigPageId, FinalPageId }; BlackBerryDeviceConfigurationWizardSetupPage *m_setupPage; + BlackBerryDeviceConfigurationWizardQueryPage *m_queryPage; BlackBerryDeviceConfigurationWizardSshKeyPage *m_sshKeyPage; + BlackBerryDeviceConfigurationWizardConfigPage *m_configPage; BlackBerryDeviceConfigurationWizardFinalPage *m_finalPage; + + BlackBerryDeviceConfigurationWizardHolder m_holder; }; } // namespace Internal diff --git a/src/plugins/qnx/blackberrydeviceconfigurationwizardconfigpage.ui b/src/plugins/qnx/blackberrydeviceconfigurationwizardconfigpage.ui new file mode 100644 index 00000000000..e59a39eba4a --- /dev/null +++ b/src/plugins/qnx/blackberrydeviceconfigurationwizardconfigpage.ui @@ -0,0 +1,159 @@ + + + Qnx::Internal::BlackBerryDeviceConfigurationWizardConfigPage + + + + 0 + 0 + 477 + 348 + + + + Form + + + + + + Debug Token + + + + + + Location: + + + + + + + Generate + + + + + + + + 0 + 0 + + + + + + + + + true + + + + Debug Token is needed for BlackBerry applications deployment to a device. + + + true + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + 0 + 0 + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + + + + + + + Type: + + + + + + + + 0 + 0 + + + + + + + + + + + Host name/IP: + + + + + + + Configuration name: + + + + + + + + + + + + + + Utils::PathChooser + QWidget +
utils/pathchooser.h
+ 1 + + editingFinished() + browsingFinished() + +
+
+ + generateButton + + + +
diff --git a/src/plugins/qnx/blackberrydeviceconfigurationwizardpages.cpp b/src/plugins/qnx/blackberrydeviceconfigurationwizardpages.cpp index 6685bf5c650..1474f10372f 100644 --- a/src/plugins/qnx/blackberrydeviceconfigurationwizardpages.cpp +++ b/src/plugins/qnx/blackberrydeviceconfigurationwizardpages.cpp @@ -33,8 +33,11 @@ #include "blackberryconfiguration.h" #include "blackberrydebugtokenrequestdialog.h" #include "blackberrysshkeysgenerator.h" +#include "blackberrydeviceinformation.h" #include "ui_blackberrydeviceconfigurationwizardsetuppage.h" +#include "ui_blackberrydeviceconfigurationwizardquerypage.h" #include "ui_blackberrydeviceconfigurationwizardsshkeypage.h" +#include "ui_blackberrydeviceconfigurationwizardconfigpage.h" #include "blackberryconfiguration.h" #include "qnxutils.h" @@ -54,7 +57,10 @@ using namespace Qnx; using namespace Qnx::Internal; namespace { -const char DEVICENAME_FIELD_ID[] = "DeviceName"; +const char DEVICEHOSTNAME_FIELD_ID[] = "DeviceHostName"; +const char DEVICEPASSWORD_FIELD_ID[] = "DevicePassword"; +const char CONFIGURATIONNAME_FIELD_ID[] = "ConfigurationName"; +const char DEBUGTOKENPATH_FIELD_ID[] = "DebugTokenPath"; enum DeviceListUserRole { @@ -71,25 +77,14 @@ BlackBerryDeviceConfigurationWizardSetupPage::BlackBerryDeviceConfigurationWizar m_ui->setupUi(this); setTitle(tr("Connection Details")); - m_ui->debugToken->setExpectedKind(Utils::PathChooser::File); - m_ui->debugToken->setPromptDialogFilter(QLatin1String("*.bar")); - - QString debugTokenBrowsePath = QnxUtils::dataDirPath(); - if (!QFileInfo(debugTokenBrowsePath).exists()) - debugTokenBrowsePath = QDir::homePath(); - m_ui->debugToken->setInitialBrowsePathBackup(debugTokenBrowsePath); - connect(m_ui->deviceListWidget, SIGNAL(itemSelectionChanged()), this, SLOT(onDeviceSelectionChanged())); connect(m_deviceListDetector, SIGNAL(deviceDetected(QString,QString,bool)), this, SLOT(onDeviceDetected(QString,QString,bool))); connect(m_deviceListDetector, SIGNAL(finished()), this, SLOT(onDeviceListDetectorFinished())); - connect(m_ui->deviceName, SIGNAL(textChanged(QString)), this, SIGNAL(completeChanged())); connect(m_ui->deviceHostIp, SIGNAL(textChanged(QString)), this, SIGNAL(completeChanged())); - connect(m_ui->physicalDevice, SIGNAL(toggled(bool)), this, SIGNAL(completeChanged())); - connect(m_ui->debugToken, SIGNAL(changed(QString)), this, SIGNAL(completeChanged())); - connect(m_ui->requestButton, SIGNAL(clicked()), this, SLOT(requestDebugToken())); - registerField(QLatin1String(DEVICENAME_FIELD_ID), m_ui->deviceName); + registerField(QLatin1String(DEVICEHOSTNAME_FIELD_ID), m_ui->deviceHostIp); + registerField(QLatin1String(DEVICEPASSWORD_FIELD_ID), m_ui->password); } BlackBerryDeviceConfigurationWizardSetupPage::~BlackBerryDeviceConfigurationWizardSetupPage() @@ -160,38 +155,23 @@ void BlackBerryDeviceConfigurationWizardSetupPage::onDeviceSelectionChanged() ? selected->data(DeviceTypeRole).toBool() : false; switch (itemKind) { case SpecifyManually: - m_ui->deviceName->setEnabled(true); - m_ui->deviceName->setText(tr("BlackBerry Device")); m_ui->deviceHostIp->setEnabled(true); m_ui->deviceHostIp->setText(QLatin1String("169.254.0.1")); - m_ui->physicalDevice->setEnabled(true); - m_ui->physicalDevice->setChecked(true); - m_ui->simulator->setEnabled(true); - m_ui->simulator->setChecked(false); + m_ui->password->setEnabled(true); m_ui->deviceHostIp->selectAll(); m_ui->deviceHostIp->setFocus(); break; case Autodetected: - m_ui->deviceName->setEnabled(true); - m_ui->deviceName->setText(selected->data(DeviceNameRole).toString()); m_ui->deviceHostIp->setEnabled(false); m_ui->deviceHostIp->setText(selected->data(DeviceIpRole).toString()); - m_ui->physicalDevice->setEnabled(false); - m_ui->physicalDevice->setChecked(!isSimulator); - m_ui->simulator->setEnabled(false); - m_ui->simulator->setChecked(isSimulator); + m_ui->password->setEnabled(true); m_ui->password->setFocus(); break; case PleaseWait: case Note: - m_ui->deviceName->setEnabled(false); - m_ui->deviceName->clear(); m_ui->deviceHostIp->setEnabled(false); m_ui->deviceHostIp->clear(); - m_ui->physicalDevice->setEnabled(false); - m_ui->physicalDevice->setChecked(false); - m_ui->simulator->setEnabled(false); - m_ui->simulator->setChecked(false); + m_ui->password->setEnabled(false); break; } } @@ -224,17 +204,7 @@ QListWidgetItem *BlackBerryDeviceConfigurationWizardSetupPage::findDeviceListIte bool BlackBerryDeviceConfigurationWizardSetupPage::isComplete() const { - bool debugTokenComplete = m_ui->simulator->isChecked() - || (m_ui->physicalDevice->isChecked() && !m_ui->debugToken->fileName().isEmpty() - && QFileInfo(m_ui->debugToken->fileName().toString()).exists()); - - return !m_ui->deviceHostIp->text().isEmpty() && !m_ui->deviceHostIp->text().isEmpty() - && debugTokenComplete; -} - -QString BlackBerryDeviceConfigurationWizardSetupPage::deviceName() const -{ - return m_ui->deviceName->text(); + return !m_ui->deviceHostIp->text().isEmpty(); } QString BlackBerryDeviceConfigurationWizardSetupPage::hostName() const @@ -247,34 +217,67 @@ QString BlackBerryDeviceConfigurationWizardSetupPage::password() const return m_ui->password->text(); } -QString BlackBerryDeviceConfigurationWizardSetupPage::debugToken() const +// ---------------------------------------------------------------------------- + +BlackBerryDeviceConfigurationWizardQueryPage::BlackBerryDeviceConfigurationWizardQueryPage + (BlackBerryDeviceConfigurationWizardHolder &holder, QWidget *parent) + : QWizardPage(parent) + , m_ui(new Ui::BlackBerryDeviceConfigurationWizardQueryPage) + , m_holder(holder) + , m_deviceInformation(new BlackBerryDeviceInformation(this)) { - return m_ui->debugToken->fileName().toString(); + m_ui->setupUi(this); + setTitle(tr("Query Device Information")); + + connect(m_deviceInformation,SIGNAL(finished(int)),this,SLOT(processQueryFinished(int))); } -IDevice::MachineType BlackBerryDeviceConfigurationWizardSetupPage::machineType() const +BlackBerryDeviceConfigurationWizardQueryPage::~BlackBerryDeviceConfigurationWizardQueryPage() { - return m_ui->physicalDevice->isChecked() ? IDevice::Hardware : IDevice::Emulator; + delete m_ui; + m_ui = 0; } -void BlackBerryDeviceConfigurationWizardSetupPage::requestDebugToken() +void BlackBerryDeviceConfigurationWizardQueryPage::initializePage() { - BlackBerryDebugTokenRequestDialog dialog; + m_ui->statusLabel->setText(tr("Querying device information. Please wait...")); + m_ui->progressBar->setVisible(true); - if (!m_ui->deviceHostIp->text().isEmpty() && !m_ui->password->text().isEmpty()) - dialog.setTargetDetails(m_ui->deviceHostIp->text(), m_ui->password->text()); + m_holder.deviceInfoRetrieved = false; - const int result = dialog.exec(); + m_deviceInformation->setDeviceTarget( + field(QLatin1String(DEVICEHOSTNAME_FIELD_ID)).toString(), + field(QLatin1String(DEVICEPASSWORD_FIELD_ID)).toString()); +} - if (result != QDialog::Accepted) - return; +void BlackBerryDeviceConfigurationWizardQueryPage::processQueryFinished(int status) +{ + m_holder.deviceInfoRetrieved = status == BlackBerryDeviceInformation::Success; + m_holder.devicePin = m_deviceInformation->devicePin(); + m_holder.scmBundle = m_deviceInformation->scmBundle(); + m_holder.deviceName = m_deviceInformation->hostName(); + m_holder.debugTokenAuthor = m_deviceInformation->debugTokenAuthor(); + m_holder.debugTokenValid = m_deviceInformation->debugTokenValid(); + m_holder.isSimulator = m_deviceInformation->isSimulator(); - m_ui->debugToken->setPath(dialog.debugToken()); + if (m_holder.deviceInfoRetrieved) + m_ui->statusLabel->setText(tr("Device information retrieved successfully.")); + else + m_ui->statusLabel->setText(tr("Cannot connect to the device. Check if the device is in development mode and has matching host name and password.")); + m_ui->progressBar->setVisible(false); + emit completeChanged(); + + if (m_holder.deviceInfoRetrieved) + wizard()->next(); +} + +bool BlackBerryDeviceConfigurationWizardQueryPage::isComplete() const +{ + return m_holder.deviceInfoRetrieved; } // ---------------------------------------------------------------------------- - BlackBerryDeviceConfigurationWizardSshKeyPage::BlackBerryDeviceConfigurationWizardSshKeyPage(QWidget *parent) : QWizardPage(parent) , m_ui(new Ui::BlackBerryDeviceConfigurationWizardSshKeyPage) @@ -401,8 +404,84 @@ void BlackBerryDeviceConfigurationWizardSshKeyPage::setBusy(bool busy) wizard()->button(QWizard::FinishButton)->setEnabled(!busy); wizard()->button(QWizard::CancelButton)->setEnabled(!busy); } + // ---------------------------------------------------------------------------- +BlackBerryDeviceConfigurationWizardConfigPage::BlackBerryDeviceConfigurationWizardConfigPage + (BlackBerryDeviceConfigurationWizardHolder &holder, QWidget *parent) + : QWizardPage(parent) + , m_ui(new Ui::BlackBerryDeviceConfigurationWizardConfigPage) + , m_holder(holder) +{ + m_ui->setupUi(this); + setTitle(tr("Configuration")); + + m_ui->debugTokenField->setExpectedKind(Utils::PathChooser::File); + m_ui->debugTokenField->setPromptDialogFilter(QLatin1String("*.bar")); + + QString debugTokenBrowsePath = QnxUtils::dataDirPath(); + if (!QFileInfo(debugTokenBrowsePath).exists()) + debugTokenBrowsePath = QDir::homePath(); + m_ui->debugTokenField->setInitialBrowsePathBackup(debugTokenBrowsePath); + + connect(m_ui->configurationNameField, SIGNAL(textChanged(QString)), this, SIGNAL(completeChanged())); + connect(m_ui->debugTokenField, SIGNAL(changed(QString)), this, SIGNAL(completeChanged())); + connect(m_ui->generateButton, SIGNAL(clicked()), this, SLOT(generateDebugToken())); + + registerField(QLatin1String(CONFIGURATIONNAME_FIELD_ID), m_ui->configurationNameField); + registerField(QLatin1String(DEBUGTOKENPATH_FIELD_ID), m_ui->debugTokenField); +} + +BlackBerryDeviceConfigurationWizardConfigPage::~BlackBerryDeviceConfigurationWizardConfigPage() +{ + delete m_ui; + m_ui = 0; +} + +void BlackBerryDeviceConfigurationWizardConfigPage::initializePage() +{ + QString deviceHostName = field(QLatin1String(DEVICEHOSTNAME_FIELD_ID)).toString(); + m_ui->configurationNameField->setText(m_holder.deviceName); + m_ui->deviceHostNameField->setText(deviceHostName); + m_ui->deviceTypeField->setText(QLatin1String (m_holder.isSimulator ? "Simulator" : "Device")); + m_ui->debugTokenField->setEnabled(!m_holder.isSimulator); + m_ui->generateButton->setEnabled(!m_holder.isSimulator); +} + +bool BlackBerryDeviceConfigurationWizardConfigPage::isComplete() const +{ + bool configurationNameComplete = !m_ui->configurationNameField->text().isEmpty(); + Utils::FileName fileName = m_ui->debugTokenField->fileName(); + bool debugTokenComplete = m_holder.isSimulator + || (!fileName.isEmpty() && QFileInfo(fileName.toString()).exists()); + + return configurationNameComplete && debugTokenComplete; +} + +void BlackBerryDeviceConfigurationWizardConfigPage::generateDebugToken() +{ + BlackBerryDebugTokenRequestDialog dialog; + dialog.setDevicePin(m_holder.devicePin); + + const int result = dialog.exec(); + + if (result != QDialog::Accepted) + return; + + m_ui->debugTokenField->setPath(dialog.debugToken()); +} + +QString BlackBerryDeviceConfigurationWizardConfigPage::configurationName() const +{ + return m_ui->configurationNameField->text(); +} + +QString BlackBerryDeviceConfigurationWizardConfigPage::debugToken() const +{ + return m_ui->debugTokenField->fileName().toString(); +} + +// ---------------------------------------------------------------------------- BlackBerryDeviceConfigurationWizardFinalPage::BlackBerryDeviceConfigurationWizardFinalPage(QWidget *parent) : QWizardPage(parent) @@ -410,9 +489,6 @@ BlackBerryDeviceConfigurationWizardFinalPage::BlackBerryDeviceConfigurationWizar setTitle(tr("Setup Finished")); QVBoxLayout *layout = new QVBoxLayout(this); - QLabel *label = new QLabel(tr("The new device configuration will now be created."), this); + QLabel *label = new QLabel(tr("The new device configuration will be created now."), this); layout->addWidget(label); } - - - diff --git a/src/plugins/qnx/blackberrydeviceconfigurationwizardpages.h b/src/plugins/qnx/blackberrydeviceconfigurationwizardpages.h index e2310331b9d..482fa8d8d4e 100644 --- a/src/plugins/qnx/blackberrydeviceconfigurationwizardpages.h +++ b/src/plugins/qnx/blackberrydeviceconfigurationwizardpages.h @@ -47,9 +47,27 @@ namespace Qnx { namespace Internal { namespace Ui { class BlackBerryDeviceConfigurationWizardSetupPage; +class BlackBerryDeviceConfigurationWizardQueryPage; class BlackBerryDeviceConfigurationWizardSshKeyPage; +class BlackBerryDeviceConfigurationWizardConfigPage; } class BlackBerrySshKeysGenerator; +class BlackBerryDeviceInformation; + +struct BlackBerryDeviceConfigurationWizardHolder { + QString devicePin; + QString deviceName; + QString scmBundle; + QString debugTokenAuthor; + bool isSimulator; + bool debugTokenValid; + bool deviceInfoRetrieved; + + BlackBerryDeviceConfigurationWizardHolder() + : isSimulator(false) + , debugTokenValid(false) + , deviceInfoRetrieved(false) {} +}; class BlackBerryDeviceConfigurationWizardSetupPage : public QWizardPage { @@ -65,13 +83,9 @@ public: void initializePage(); bool isComplete() const; - QString deviceName() const; QString hostName() const; QString password() const; - QString debugToken() const; - ProjectExplorer::IDevice::MachineType machineType() const; private slots: - void requestDebugToken(); void onDeviceSelectionChanged(); void onDeviceDetected(const QString &deviceName, const QString &hostName, bool isSimulator); void onDeviceListDetectorFinished(); @@ -85,6 +99,25 @@ private: BlackBerryDeviceListDetector *m_deviceListDetector; }; +class BlackBerryDeviceConfigurationWizardQueryPage : public QWizardPage +{ + Q_OBJECT +public: + explicit BlackBerryDeviceConfigurationWizardQueryPage(BlackBerryDeviceConfigurationWizardHolder &holder, QWidget *parent = 0); + ~BlackBerryDeviceConfigurationWizardQueryPage(); + + void initializePage(); + bool isComplete() const; + +private slots: + void processQueryFinished(int status); + +private: + Ui::BlackBerryDeviceConfigurationWizardQueryPage *m_ui; + BlackBerryDeviceConfigurationWizardHolder &m_holder; + BlackBerryDeviceInformation *m_deviceInformation; +}; + class BlackBerryDeviceConfigurationWizardSshKeyPage : public QWizardPage { Q_OBJECT @@ -112,6 +145,26 @@ private: Ui::BlackBerryDeviceConfigurationWizardSshKeyPage *m_ui; }; +class BlackBerryDeviceConfigurationWizardConfigPage : public QWizardPage +{ + Q_OBJECT +public: + explicit BlackBerryDeviceConfigurationWizardConfigPage(BlackBerryDeviceConfigurationWizardHolder &holder, QWidget *parent = 0); + ~BlackBerryDeviceConfigurationWizardConfigPage(); + + void initializePage(); + bool isComplete() const; + + QString configurationName() const; + QString debugToken() const; +private slots: + void generateDebugToken(); + +private: + Ui::BlackBerryDeviceConfigurationWizardConfigPage *m_ui; + BlackBerryDeviceConfigurationWizardHolder &m_holder; +}; + class BlackBerryDeviceConfigurationWizardFinalPage : public QWizardPage { Q_OBJECT diff --git a/src/plugins/qnx/blackberrydeviceconfigurationwizardquerypage.ui b/src/plugins/qnx/blackberrydeviceconfigurationwizardquerypage.ui new file mode 100644 index 00000000000..d27baba62a7 --- /dev/null +++ b/src/plugins/qnx/blackberrydeviceconfigurationwizardquerypage.ui @@ -0,0 +1,51 @@ + + + Qnx::Internal::BlackBerryDeviceConfigurationWizardQueryPage + + + + 0 + 0 + 381 + 142 + + + + Form + + + + + + + + + true + + + + + + + 0 + + + + + + + Qt::Vertical + + + + 20 + 58 + + + + + + + + + diff --git a/src/plugins/qnx/blackberrydeviceconfigurationwizardsetuppage.ui b/src/plugins/qnx/blackberrydeviceconfigurationwizardsetuppage.ui index 9295ae46a07..b4a6b27a59c 100644 --- a/src/plugins/qnx/blackberrydeviceconfigurationwizardsetuppage.ui +++ b/src/plugins/qnx/blackberrydeviceconfigurationwizardsetuppage.ui @@ -6,8 +6,8 @@ 0 0 - 612 - 303 + 484 + 182 @@ -19,139 +19,34 @@ - - - - Configuration name: - - - - - - - - - - Device type: - - - - - - - - Physical device - - - - - - - Simulator - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - Device host name or IP address: - - - - - - - - - - Device password: - - - - QLineEdit::Password - - + + - Debug token: + Device password: - - - - - - - 0 - 0 - - - - - - - - Request - - - - + + + + + + + Device host name or IP address: + + - - - Utils::PathChooser - QWidget -
utils/pathchooser.h
- 1 - - editingFinished() - browsingFinished() - -
-
- - - physicalDevice - toggled(bool) - debugToken - setEnabled(bool) - - - 271 - 98 - - - 226 - 124 - - - - + diff --git a/src/plugins/qnx/blackberrydeviceconfigurationwizardsshkeypage.ui b/src/plugins/qnx/blackberrydeviceconfigurationwizardsshkeypage.ui index 3eb327e46fa..7699fb3a0ab 100644 --- a/src/plugins/qnx/blackberrydeviceconfigurationwizardsshkeypage.ui +++ b/src/plugins/qnx/blackberrydeviceconfigurationwizardsshkeypage.ui @@ -6,14 +6,14 @@ 0 0 - 413 - 92 + 409 + 185
WizardPage - + @@ -21,6 +21,13 @@ + + + + true + + + @@ -35,6 +42,29 @@ + + + + 0 + + + -1 + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + @@ -42,23 +72,21 @@ - - - + + + + + true + + + + SSH public key is used for securing a connection to a device. + + true - - - - 0 - - - -1 - - - @@ -73,6 +101,10 @@ + + generate + publicKey + diff --git a/src/plugins/qnx/blackberrydeviceinformation.cpp b/src/plugins/qnx/blackberrydeviceinformation.cpp index 7c466e27739..92d7d593109 100644 --- a/src/plugins/qnx/blackberrydeviceinformation.cpp +++ b/src/plugins/qnx/blackberrydeviceinformation.cpp @@ -62,6 +62,18 @@ void BlackBerryDeviceInformation::setDeviceTarget(const QString &deviceIp, const start(arguments); } +void BlackBerryDeviceInformation::resetResults() +{ + m_devicePin.clear(); + m_deviceOS.clear(); + m_hardwareId.clear(); + m_debugTokenAuthor.clear(); + m_scmBundle.clear(); + m_hostName.clear(); + m_debugTokenValid = false; + m_isSimulator = false; +} + QString BlackBerryDeviceInformation::devicePin() const { return m_devicePin; @@ -77,14 +89,51 @@ QString BlackBerryDeviceInformation::hardwareId() const return m_hardwareId; } +QString BlackBerryDeviceInformation::debugTokenAuthor() const +{ + return m_debugTokenAuthor; +} + +QString BlackBerryDeviceInformation::scmBundle() const +{ + return m_scmBundle; +} + +QString BlackBerryDeviceInformation::hostName() const +{ + return m_hostName; +} + +bool BlackBerryDeviceInformation::debugTokenValid() const +{ + return m_debugTokenValid; +} + +bool BlackBerryDeviceInformation::isSimulator() const +{ + return m_isSimulator; +} + void BlackBerryDeviceInformation::processData(const QString &line) { - if (line.startsWith(QLatin1String("devicepin::"))) - m_devicePin = line.split(QLatin1String("::0x")).at(1).trimmed(); + if (line.startsWith(QLatin1String("devicepin::0x"))) + m_devicePin = line.mid(QLatin1String("devicepin::0x").size()).trimmed(); else if (line.startsWith(QLatin1String("device_os::"))) - m_deviceOS = line.split(QLatin1String("::")).at(1).trimmed(); + m_deviceOS = line.mid(QLatin1String("device_os::").size()).trimmed(); else if (line.startsWith(QLatin1String("hardwareid::"))) - m_hardwareId = line.split(QLatin1String("::")).at(1).trimmed(); + m_hardwareId = line.mid(QLatin1String("hardwareid::").size()).trimmed(); + else if (line.startsWith(QLatin1String("debug_token_author::"))) + m_debugTokenAuthor = line.mid(QLatin1String("debug_token_author::").size()).trimmed(); + else if (line.startsWith(QLatin1String("debug_token_valid:b:"))) + m_debugTokenValid = line.mid(QLatin1String("debug_token_valid:b:").size()).trimmed() + == QLatin1String("true"); + else if (line.startsWith(QLatin1String("simulator:b:"))) + m_isSimulator = line.mid(QLatin1String("simulator:b:").size()).trimmed() + == QLatin1String("true"); + else if (line.startsWith(QLatin1String("scmbundle::"))) + m_scmBundle = line.mid(QLatin1String("scmbundle::").size()).trimmed(); + else if (line.startsWith(QLatin1String("hostname::"))) + m_hostName = line.mid(QLatin1String("hostname::").size()).trimmed(); } } // namespace Internal diff --git a/src/plugins/qnx/blackberrydeviceinformation.h b/src/plugins/qnx/blackberrydeviceinformation.h index d58e386fcb4..8e4f4d5e520 100644 --- a/src/plugins/qnx/blackberrydeviceinformation.h +++ b/src/plugins/qnx/blackberrydeviceinformation.h @@ -61,13 +61,24 @@ public: QString devicePin() const; QString deviceOS() const; QString hardwareId() const; + QString debugTokenAuthor() const; + bool debugTokenValid() const; + QString scmBundle() const; + QString hostName() const; + bool isSimulator() const; private: QString m_devicePin; QString m_deviceOS; QString m_hardwareId; + QString m_debugTokenAuthor; + QString m_scmBundle; + QString m_hostName; + bool m_debugTokenValid; + bool m_isSimulator; void processData(const QString &line); + void resetResults(); }; } diff --git a/src/plugins/qnx/blackberrydevicelistdetector.cpp b/src/plugins/qnx/blackberrydevicelistdetector.cpp index 93a2fc7b709..1382fa78205 100644 --- a/src/plugins/qnx/blackberrydevicelistdetector.cpp +++ b/src/plugins/qnx/blackberrydevicelistdetector.cpp @@ -75,6 +75,7 @@ void BlackBerryDeviceListDetector::processFinished() const QString BlackBerryDeviceListDetector::readProcessLine() { + // we assume that the process output is ASCII only QByteArray bytes = m_process->readLine(); while (bytes.endsWith('\r') || bytes.endsWith('\n')) bytes.chop(1); @@ -83,10 +84,10 @@ const QString BlackBerryDeviceListDetector::readProcessLine() void BlackBerryDeviceListDetector::processData(const QString &line) { - // line format is: deviceName,deviceHostName,deviceType,deviceDisplayName + // line format is: deviceName,deviceHostNameOrIP,deviceType,versionIfSimulator QStringList list = line.split(QLatin1String(",")); if (list.count() == 4) { - emit deviceDetected (list[3].isEmpty() ? list[0] : list[3], list[1], QLatin1String("Simulator") == list[2]); + emit deviceDetected (list[0], list[1], QLatin1String("Simulator") == list[2]); } } diff --git a/src/plugins/qnx/blackberryndkprocess.cpp b/src/plugins/qnx/blackberryndkprocess.cpp index 50fe534a998..e7939172c02 100644 --- a/src/plugins/qnx/blackberryndkprocess.cpp +++ b/src/plugins/qnx/blackberryndkprocess.cpp @@ -78,6 +78,8 @@ void BlackBerryNdkProcess::start(const QStringList &arguments) if (m_process->state() != QProcess::NotRunning) return; + resetResults(); + m_process->start(command(), arguments); } @@ -155,5 +157,9 @@ void BlackBerryNdkProcess::processData(const QString &line) Q_UNUSED(line); } +void BlackBerryNdkProcess::resetResults() +{ +} + } // namespace Internal } // namespace Qnx diff --git a/src/plugins/qnx/blackberryndkprocess.h b/src/plugins/qnx/blackberryndkprocess.h index c3b692f9690..34e7351107f 100644 --- a/src/plugins/qnx/blackberryndkprocess.h +++ b/src/plugins/qnx/blackberryndkprocess.h @@ -81,6 +81,7 @@ private slots: private: int errorLineToReturnStatus(const QString &line) const; virtual void processData(const QString &line); + virtual void resetResults(); QProcess *m_process; diff --git a/src/plugins/qnx/qnx.pro b/src/plugins/qnx/qnx.pro index 3ef3e5924f6..74569c1e87d 100644 --- a/src/plugins/qnx/qnx.pro +++ b/src/plugins/qnx/qnx.pro @@ -216,7 +216,9 @@ FORMS += \ bardescriptoreditorassetswidget.ui \ blackberrysetupwizardkeyspage.ui \ blackberrysetupwizarddevicepage.ui \ - blackberrysetupwizardfinishpage.ui + blackberrysetupwizardfinishpage.ui \ + blackberrydeviceconfigurationwizardconfigpage.ui \ + blackberrydeviceconfigurationwizardquerypage.ui include(../../private_headers.pri) diff --git a/src/plugins/qnx/qnx.qbs b/src/plugins/qnx/qnx.qbs index 74b81b81f90..3c8d26f46a8 100644 --- a/src/plugins/qnx/qnx.qbs +++ b/src/plugins/qnx/qnx.qbs @@ -105,8 +105,10 @@ QtcPlugin { "blackberrydeviceconfigurationwidget.ui", "blackberrydeviceconfigurationwizard.cpp", "blackberrydeviceconfigurationwizard.h", + "blackberrydeviceconfigurationwizardconfigpage.ui", "blackberrydeviceconfigurationwizardpages.cpp", "blackberrydeviceconfigurationwizardpages.h", + "blackberrydeviceconfigurationwizardquerypage.ui", "blackberrydeviceconfigurationwizardsetuppage.ui", "blackberrydeviceconfigurationwizardsshkeypage.ui", "blackberrydeviceconnection.cpp",