diff --git a/src/plugins/qnx/blackberrydebugtokenrequestdialog.cpp b/src/plugins/qnx/blackberrydebugtokenrequestdialog.cpp index df7426f90124329a9a6f77a9164916148c0f8d7c..b753243e8aa37cadcf84e0ffbf6ab3635068c6ae 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 7fe3e8065f4587e705fad3cab9b9d26645082658..e4a17a539197378c1e11f72f36b7c79b0c0a9b9b 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 81020bdb85a5eb952e4ab69b66d59d64b74af685..c407b082b1812b267e8c3ff10ebcf54c74eeba31 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 f5a31d678747d90a5b1c09b068b8942b40809941..5b4a7a9cd16e60c10cb59cd0823f73d112d08467 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 <QWizard> #include <projectexplorer/devicesupport/idevice.h> @@ -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 0000000000000000000000000000000000000000..e59a39eba4ae89452807c030e8d588e406ff15e8 --- /dev/null +++ b/src/plugins/qnx/blackberrydeviceconfigurationwizardconfigpage.ui @@ -0,0 +1,159 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>Qnx::Internal::BlackBerryDeviceConfigurationWizardConfigPage</class> + <widget class="QWizardPage" name="Qnx::Internal::BlackBerryDeviceConfigurationWizardConfigPage"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>477</width> + <height>348</height> + </rect> + </property> + <property name="windowTitle"> + <string>Form</string> + </property> + <layout class="QGridLayout" name="gridLayout"> + <item row="3" column="0" colspan="3"> + <widget class="QGroupBox" name="groupBox_2"> + <property name="title"> + <string>Debug Token</string> + </property> + <layout class="QGridLayout" name="gridLayout_3"> + <item row="2" column="0"> + <widget class="QLabel" name="label_5"> + <property name="text"> + <string>Location:</string> + </property> + </widget> + </item> + <item row="2" column="2"> + <widget class="QPushButton" name="generateButton"> + <property name="text"> + <string>Generate</string> + </property> + </widget> + </item> + <item row="2" column="1"> + <widget class="Utils::PathChooser" name="debugTokenField" native="true"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </item> + <item row="4" column="0" colspan="3"> + <widget class="QLabel" name="label_3"> + <property name="font"> + <font> + <italic>true</italic> + </font> + </property> + <property name="text"> + <string>Debug Token is needed for BlackBerry applications deployment to a device.</string> + </property> + <property name="wordWrap"> + <bool>true</bool> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item row="4" column="0"> + <spacer name="verticalSpacer"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + <item row="2" column="0" colspan="3"> + <widget class="QFrame" name="frame"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="frameShape"> + <enum>QFrame::StyledPanel</enum> + </property> + <property name="frameShadow"> + <enum>QFrame::Raised</enum> + </property> + <layout class="QGridLayout" name="gridLayout_2"> + <item row="2" column="1"> + <widget class="QLabel" name="deviceTypeField"> + <property name="text"> + <string/> + </property> + </widget> + </item> + <item row="2" column="0"> + <widget class="QLabel" name="label_6"> + <property name="text"> + <string>Type:</string> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="QLabel" name="deviceHostNameField"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text"> + <string/> + </property> + </widget> + </item> + <item row="1" column="0"> + <widget class="QLabel" name="label_4"> + <property name="text"> + <string>Host name/IP:</string> + </property> + </widget> + </item> + <item row="0" column="0"> + <widget class="QLabel" name="label"> + <property name="text"> + <string>Configuration name:</string> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="QLineEdit" name="configurationNameField"/> + </item> + </layout> + </widget> + </item> + </layout> + </widget> + <customwidgets> + <customwidget> + <class>Utils::PathChooser</class> + <extends>QWidget</extends> + <header location="global">utils/pathchooser.h</header> + <container>1</container> + <slots> + <signal>editingFinished()</signal> + <signal>browsingFinished()</signal> + </slots> + </customwidget> + </customwidgets> + <tabstops> + <tabstop>generateButton</tabstop> + </tabstops> + <resources/> + <connections/> +</ui> diff --git a/src/plugins/qnx/blackberrydeviceconfigurationwizardpages.cpp b/src/plugins/qnx/blackberrydeviceconfigurationwizardpages.cpp index 6685bf5c650a0fbab88f5460437b6cd9ff0d7c34..1474f10372f9c34a62cb66b376cedc96f4707570 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,33 +217,66 @@ 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(); + + 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(); - m_ui->debugToken->setPath(dialog.debugToken()); + if (m_holder.deviceInfoRetrieved) + wizard()->next(); } -// ---------------------------------------------------------------------------- +bool BlackBerryDeviceConfigurationWizardQueryPage::isComplete() const +{ + return m_holder.deviceInfoRetrieved; +} +// ---------------------------------------------------------------------------- BlackBerryDeviceConfigurationWizardSshKeyPage::BlackBerryDeviceConfigurationWizardSshKeyPage(QWidget *parent) : QWizardPage(parent) @@ -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 e2310331b9da53236bc79a4a155a685c0689eda1..482fa8d8d4e51ea069efe0809a7b10e68a1c0f46 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 0000000000000000000000000000000000000000..d27baba62a70c52e2b2ca7d6cd293cfd17d4c1d6 --- /dev/null +++ b/src/plugins/qnx/blackberrydeviceconfigurationwizardquerypage.ui @@ -0,0 +1,51 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>Qnx::Internal::BlackBerryDeviceConfigurationWizardQueryPage</class> + <widget class="QWizardPage" name="Qnx::Internal::BlackBerryDeviceConfigurationWizardQueryPage"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>381</width> + <height>142</height> + </rect> + </property> + <property name="windowTitle"> + <string>Form</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QLabel" name="statusLabel"> + <property name="text"> + <string/> + </property> + <property name="wordWrap"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QProgressBar" name="progressBar"> + <property name="maximum"> + <number>0</number> + </property> + </widget> + </item> + <item> + <spacer name="verticalSpacer"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>58</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> diff --git a/src/plugins/qnx/blackberrydeviceconfigurationwizardsetuppage.ui b/src/plugins/qnx/blackberrydeviceconfigurationwizardsetuppage.ui index 9295ae46a072c4f7ff357c5c2ff681657326e588..b4a6b27a59cb06fda4f2df6082f6e44445b356cc 100644 --- a/src/plugins/qnx/blackberrydeviceconfigurationwizardsetuppage.ui +++ b/src/plugins/qnx/blackberrydeviceconfigurationwizardsetuppage.ui @@ -6,8 +6,8 @@ <rect> <x>0</x> <y>0</y> - <width>612</width> - <height>303</height> + <width>484</width> + <height>182</height> </rect> </property> <property name="windowTitle"> @@ -19,139 +19,34 @@ </item> <item> <layout class="QGridLayout" name="gridLayout"> - <item row="0" column="0"> - <widget class="QLabel" name="label"> - <property name="text"> - <string>Configuration name:</string> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="QLineEdit" name="deviceName"/> - </item> - <item row="1" column="0"> - <widget class="QLabel" name="label_4"> - <property name="text"> - <string>Device type:</string> - </property> - </widget> - </item> <item row="1" column="1"> - <layout class="QHBoxLayout" name="horizontalLayout"> - <item> - <widget class="QRadioButton" name="physicalDevice"> - <property name="text"> - <string>Physical device</string> - </property> - </widget> - </item> - <item> - <widget class="QRadioButton" name="simulator"> - <property name="text"> - <string>Simulator</string> - </property> - </widget> - </item> - <item> - <spacer name="horizontalSpacer"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - </layout> - </item> - <item row="2" column="0"> - <widget class="QLabel" name="label_2"> - <property name="text"> - <string>Device host name or IP address:</string> + <widget class="QLineEdit" name="password"> + <property name="echoMode"> + <enum>QLineEdit::Password</enum> </property> </widget> </item> - <item row="2" column="1"> - <widget class="QLineEdit" name="deviceHostIp"/> - </item> - <item row="3" column="0"> + <item row="1" column="0"> <widget class="QLabel" name="label_3"> <property name="text"> <string>Device password:</string> </property> </widget> </item> - <item row="3" column="1"> - <widget class="QLineEdit" name="password"> - <property name="echoMode"> - <enum>QLineEdit::Password</enum> - </property> - </widget> + <item row="0" column="1"> + <widget class="QLineEdit" name="deviceHostIp"/> </item> - <item row="4" column="0"> - <widget class="QLabel" name="label_5"> + <item row="0" column="0"> + <widget class="QLabel" name="label_2"> <property name="text"> - <string>Debug token:</string> + <string>Device host name or IP address:</string> </property> </widget> </item> - <item row="4" column="1"> - <layout class="QHBoxLayout" name="horizontalLayout_2"> - <item> - <widget class="Utils::PathChooser" name="debugToken" native="true"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Expanding" vsizetype="Preferred"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - </widget> - </item> - <item> - <widget class="QPushButton" name="requestButton"> - <property name="text"> - <string>Request</string> - </property> - </widget> - </item> - </layout> - </item> </layout> </item> </layout> </widget> - <customwidgets> - <customwidget> - <class>Utils::PathChooser</class> - <extends>QWidget</extends> - <header location="global">utils/pathchooser.h</header> - <container>1</container> - <slots> - <signal>editingFinished()</signal> - <signal>browsingFinished()</signal> - </slots> - </customwidget> - </customwidgets> <resources/> - <connections> - <connection> - <sender>physicalDevice</sender> - <signal>toggled(bool)</signal> - <receiver>debugToken</receiver> - <slot>setEnabled(bool)</slot> - <hints> - <hint type="sourcelabel"> - <x>271</x> - <y>98</y> - </hint> - <hint type="destinationlabel"> - <x>226</x> - <y>124</y> - </hint> - </hints> - </connection> - </connections> + <connections/> </ui> diff --git a/src/plugins/qnx/blackberrydeviceconfigurationwizardsshkeypage.ui b/src/plugins/qnx/blackberrydeviceconfigurationwizardsshkeypage.ui index 3eb327e46fa0c28bb0b689486c1b437e1e3c3783..7699fb3a0ab143fa5d688581bdc383bd0cea53e2 100644 --- a/src/plugins/qnx/blackberrydeviceconfigurationwizardsshkeypage.ui +++ b/src/plugins/qnx/blackberrydeviceconfigurationwizardsshkeypage.ui @@ -6,14 +6,14 @@ <rect> <x>0</x> <y>0</y> - <width>413</width> - <height>92</height> + <width>409</width> + <height>185</height> </rect> </property> <property name="windowTitle"> <string>WizardPage</string> </property> - <layout class="QFormLayout" name="formLayout"> + <layout class="QGridLayout" name="gridLayout"> <item row="0" column="0"> <widget class="QLabel" name="label"> <property name="text"> @@ -21,6 +21,13 @@ </property> </widget> </item> + <item row="1" column="1"> + <widget class="QLineEdit" name="publicKey"> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> + </item> <item row="0" column="1"> <layout class="QHBoxLayout" name="horizontalLayout"> <item> @@ -35,6 +42,29 @@ </item> </layout> </item> + <item row="2" column="1"> + <widget class="QProgressBar" name="progressBar"> + <property name="maximum"> + <number>0</number> + </property> + <property name="value"> + <number>-1</number> + </property> + </widget> + </item> + <item row="3" column="1"> + <spacer name="verticalSpacer"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> <item row="1" column="0"> <widget class="QLabel" name="label_2"> <property name="text"> @@ -42,20 +72,18 @@ </property> </widget> </item> - <item row="1" column="1"> - <widget class="QLineEdit" name="publicKey"> - <property name="readOnly"> - <bool>true</bool> + <item row="4" column="0" colspan="2"> + <widget class="QLabel" name="label_3"> + <property name="font"> + <font> + <italic>true</italic> + </font> </property> - </widget> - </item> - <item row="3" column="1"> - <widget class="QProgressBar" name="progressBar"> - <property name="maximum"> - <number>0</number> + <property name="text"> + <string>SSH public key is used for securing a connection to a device.</string> </property> - <property name="value"> - <number>-1</number> + <property name="wordWrap"> + <bool>true</bool> </property> </widget> </item> @@ -73,6 +101,10 @@ </slots> </customwidget> </customwidgets> + <tabstops> + <tabstop>generate</tabstop> + <tabstop>publicKey</tabstop> + </tabstops> <resources/> <connections/> </ui> diff --git a/src/plugins/qnx/blackberrydeviceinformation.cpp b/src/plugins/qnx/blackberrydeviceinformation.cpp index 7c466e277394f26cd5588cdebbd527d0aa300f2e..92d7d59310999752365ccc3654cad0b739aff8df 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 d58e386fcb4c46c5a7a0b13e27ae92c33bcea761..8e4f4d5e5200f0d663395818e586cf411fd00072 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 93a2fc7b709f16d4ce13078bfd4e65f80d518ed7..1382fa78205315fb65da9ffd830a5d001c5d05c9 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 50fe534a998f20ce1040612de53a749c40a60733..e7939172c02689004a4e7c7e60b34b288c82934a 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 c3b692f969060a59286b2b1b452bc0bbc25b0946..34e7351107fdd6e377dc35c3141e758d9433647c 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 3ef3e5924f664223d345a0f0ef5553ad5d23b6fd..74569c1e87d135c4dd21002fc2fa50e569a62c50 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 74b81b81f90558343fd57000e00dca6042d5457d..3c8d26f46a89caee43ce77cfb54d625032329089 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",