void StartGdbServerDialog::attachToProcess() { const QModelIndexList &indexes = d->tableView->selectionModel()->selectedIndexes(); if (indexes.empty()) return; d->attachProcessButton->setEnabled(false); LinuxDeviceConfiguration::ConstPtr device = d->currentDevice(); if (!device) return; PortList ports = device->freePorts(); const int port = d->gatherer.getNextFreePort(&ports); const int row = d->proxyModel.mapToSource(indexes.first()).row(); QTC_ASSERT(row >= 0, return); RemoteProcess process = d->processList->at(row); d->remoteCommandLine = process.cmdLine; d->remoteExecutable = process.exe; if (port == -1) { reportFailure(); return; } d->settings->setValue(LastProfile, d->profileChooser->currentProfileId().toString()); d->settings->setValue(LastDevice, d->deviceComboBox->currentIndex()); d->settings->setValue(LastProcessName, d->processFilterLineEdit->text()); startGdbServerOnPort(port, process.pid); }
QVariant LinuxDeviceConfigurations::data(const QModelIndex &index, int role) const { if (!index.isValid() || index.row() >= rowCount() || role != Qt::DisplayRole) return QVariant(); const LinuxDeviceConfiguration::ConstPtr devConf = deviceAt(index.row()); QString name = devConf->name(); if (devConf->isDefault()) { name += QLatin1Char(' ') + tr("(default for %1)") .arg(RemoteLinuxUtils::osTypeToString(devConf->osType())); } return name; }
PortList MaemoGlobal::freePorts(const LinuxDeviceConfiguration::ConstPtr &devConf, const QtSupport::BaseQtVersion *qtVersion) { if (!devConf || !qtVersion) return PortList(); if (devConf->type() == LinuxDeviceConfiguration::Emulator) { MaemoQemuRuntime rt; const int id = qtVersion->uniqueId(); if (MaemoQemuManager::instance().runtimeForQtVersion(id, &rt)) return rt.m_freePorts; } return devConf->freePorts(); }
QString MaemoGlobal::failedToConnectToServerMessage(const Utils::SshConnection::Ptr &connection, const LinuxDeviceConfiguration::ConstPtr &deviceConfig) { QString errorMsg = tr("Could not connect to host: %1") .arg(connection->errorString()); if (deviceConfig->type() == LinuxDeviceConfiguration::Emulator) { if (connection->errorState() == Utils::SshTimeoutError || connection->errorState() == Utils::SshSocketError) { errorMsg += tr("\nDid you start Qemu?"); } } else if (connection->errorState() == Utils::SshTimeoutError) { errorMsg += tr("\nIs the device connected and set up for network access?"); } return errorMsg; }
PublicKeyDeploymentDialog::PublicKeyDeploymentDialog(const LinuxDeviceConfiguration::ConstPtr &deviceConfig, const QString &publicKeyFileName, QWidget *parent) : QProgressDialog(parent), d(new PublicKeyDeploymentDialogPrivate) { setAutoReset(false); setAutoClose(false); setMinimumDuration(0); setMaximum(1); d->done = false; setLabelText(tr("Deploying...")); setValue(0); connect(this, SIGNAL(canceled()), SLOT(handleCanceled())); connect(&d->keyDeployer, SIGNAL(error(QString)), SLOT(handleDeploymentError(QString))); connect(&d->keyDeployer, SIGNAL(finishedSuccessfully()), SLOT(handleDeploymentSuccess())); d->keyDeployer.deployPublicKey(deviceConfig->sshParameters(), publicKeyFileName); }
MaemoRemoteProcessesDialog::MaemoRemoteProcessesDialog(const LinuxDeviceConfiguration::ConstPtr &devConfig, QWidget *parent): QDialog(parent), m_ui(new Ui::MaemoRemoteProcessesDialog), m_processList(new MaemoRemoteProcessList(devConfig, this)), m_proxyModel(new QSortFilterProxyModel(this)) { m_ui->setupUi(this); m_ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows); m_proxyModel->setSourceModel(m_processList); m_proxyModel->setDynamicSortFilter(true); m_proxyModel->setFilterKeyColumn(1); m_ui->tableView->setModel(m_proxyModel); connect(m_ui->processFilterLineEdit, SIGNAL(textChanged(QString)), m_proxyModel, SLOT(setFilterRegExp(QString))); // Manually gathered process information is missing the command line for // some system processes. Dont's show these lines by default. if (devConfig->osType() == LinuxDeviceConfiguration::Maemo5OsType) m_ui->processFilterLineEdit->setText(QLatin1String("[^ ]+")); connect(m_ui->tableView->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), SLOT(handleSelectionChanged())); connect(m_ui->updateListButton, SIGNAL(clicked()), SLOT(updateProcessList())); connect(m_ui->killProcessButton, SIGNAL(clicked()), SLOT(killProcess())); connect(m_processList, SIGNAL(error(QString)), SLOT(handleRemoteError(QString))); connect(m_processList, SIGNAL(modelReset()), SLOT(handleProcessListUpdated())); connect(m_processList, SIGNAL(processKilled()), SLOT(handleProcessKilled()), Qt::QueuedConnection); connect(m_proxyModel, SIGNAL(layoutChanged()), SLOT(handleProcessListUpdated())); handleSelectionChanged(); updateProcessList(); }
QString MaemoGlobal::deviceConfigurationName(const LinuxDeviceConfiguration::ConstPtr &devConf) { return devConf ? devConf->name() : tr("(No device)"); }
LinuxDeviceConfiguration::Id LinuxDeviceConfigurations::internalId(LinuxDeviceConfiguration::ConstPtr devConf) const { return devConf ? devConf->internalId() : LinuxDeviceConfiguration::InvalidId; }