diff options
author | Friedemann Kleint <Friedemann.Kleint@nokia.com> | 2012-08-22 16:38:21 +0200 |
---|---|---|
committer | hjk <qthjk@ovi.com> | 2012-08-23 15:40:13 +0200 |
commit | aee8f8832bbf02dfbe62731c76e7481625c8ee19 (patch) | |
tree | 9b3585948d72907ac318bd151babd78535309d0d /src/plugins/projectexplorer | |
parent | 009d6b1e2ffd9fc617c2bfe135daf2eb107fc5b6 (diff) | |
download | qt-creator-aee8f8832bbf02dfbe62731c76e7481625c8ee19.tar.gz |
DeviceProcessDialog: Introduce methods for modal/non-modal use.
Add methods to be able to use the dialog as a non-modal
dialog showing a list of processes or a modal-dialog
for selecting a process.
Connect double-click to 'Accept' for the modal
case (regression from 2.5).
Change-Id: If05a1c40ee6a41135d943e9919a1250db03eeffb
Reviewed-by: hjk <qthjk@ovi.com>
Diffstat (limited to 'src/plugins/projectexplorer')
3 files changed, 38 insertions, 8 deletions
diff --git a/src/plugins/projectexplorer/devicesupport/deviceprocessesdialog.cpp b/src/plugins/projectexplorer/devicesupport/deviceprocessesdialog.cpp index df44ccf51a..5c88d9b5bd 100644 --- a/src/plugins/projectexplorer/devicesupport/deviceprocessesdialog.cpp +++ b/src/plugins/projectexplorer/devicesupport/deviceprocessesdialog.cpp @@ -120,11 +120,12 @@ public: FilterLineEdit *processFilterLineEdit; QPushButton *updateListButton; QPushButton *killProcessButton; - QPushButton *attachProcessButton; + QPushButton *acceptButton; + QDialogButtonBox *buttonBox; }; DeviceProcessesDialogPrivate::DeviceProcessesDialogPrivate(QWidget *parent) - : q(parent) + : q(parent), acceptButton(0), buttonBox(new QDialogButtonBox(parent)) { processList = 0; @@ -150,13 +151,9 @@ DeviceProcessesDialogPrivate::DeviceProcessesDialogPrivate(QWidget *parent) updateListButton = new QPushButton(DeviceProcessesDialog::tr("&Update List"), q); killProcessButton = new QPushButton(DeviceProcessesDialog::tr("&Kill Process"), q); - attachProcessButton = new QPushButton(DeviceProcessesDialog::tr("&Attach to Process"), q); - QDialogButtonBox *buttonBox = new QDialogButtonBox(q); - buttonBox->setStandardButtons(QDialogButtonBox::Close); buttonBox->addButton(updateListButton, QDialogButtonBox::ActionRole); buttonBox->addButton(killProcessButton, QDialogButtonBox::ActionRole); - buttonBox->addButton(attachProcessButton, QDialogButtonBox::AcceptRole); QFormLayout *leftColumn = new QFormLayout(); leftColumn->setFieldGrowthPolicy(QFormLayout::ExpandingFieldsGrow); @@ -259,8 +256,9 @@ void DeviceProcessesDialogPrivate::handleProcessKilled() void DeviceProcessesDialogPrivate::updateButtons() { - bool hasSelection = procView->selectionModel()->hasSelection(); - attachProcessButton->setEnabled(hasSelection); + const bool hasSelection = procView->selectionModel()->hasSelection(); + if (acceptButton) + acceptButton->setEnabled(hasSelection); killProcessButton->setEnabled(hasSelection); errorText->setVisible(!errorText->document()->isEmpty()); } @@ -281,6 +279,21 @@ DeviceProcess DeviceProcessesDialogPrivate::selectedProcess() const // /////////////////////////////////////////////////////////////////////// +/*! + \class ProjectExplorer::DeviceProcessesDialog + + \brief Shows a list of processes. + + The dialog can be used as a + \list + \o Non-modal dialog showing a list of processes: Call addCloseButton() + to add a 'Close' button. + \o Modal dialog with an 'Accept' button to select a process: Call + addAcceptButton() passing the label text. This will create a + 'Cancel' button as well. + \endlist +*/ + DeviceProcessesDialog::DeviceProcessesDialog(QWidget *parent) : QDialog(parent), d(new Internal::DeviceProcessesDialogPrivate(this)) { @@ -294,6 +307,20 @@ DeviceProcessesDialog::~DeviceProcessesDialog() delete d; } +void DeviceProcessesDialog::addAcceptButton(const QString &label) +{ + d->acceptButton = new QPushButton(label); + d->buttonBox->addButton(d->acceptButton, QDialogButtonBox::AcceptRole); + connect(d->procView, SIGNAL(doubleClicked(QModelIndex)), + d->acceptButton, SLOT(animateClick())); + d->buttonBox->addButton(QDialogButtonBox::Cancel); +} + +void DeviceProcessesDialog::addCloseButton() +{ + d->buttonBox->addButton(QDialogButtonBox::Close); +} + void DeviceProcessesDialog::setDevice(const IDevice::ConstPtr &device) { d->profileChooser->hide(); diff --git a/src/plugins/projectexplorer/devicesupport/deviceprocessesdialog.h b/src/plugins/projectexplorer/devicesupport/deviceprocessesdialog.h index 9d11ad974d..3f7a968fa4 100644 --- a/src/plugins/projectexplorer/devicesupport/deviceprocessesdialog.h +++ b/src/plugins/projectexplorer/devicesupport/deviceprocessesdialog.h @@ -51,6 +51,8 @@ class PROJECTEXPLORER_EXPORT DeviceProcessesDialog : public QDialog public: explicit DeviceProcessesDialog(QWidget *parent = 0); ~DeviceProcessesDialog(); + void addAcceptButton(const QString &label); + void addCloseButton(); void setDevice(const IDevice::ConstPtr &device); void showAllDevices(); diff --git a/src/plugins/projectexplorer/devicesupport/devicesettingswidget.cpp b/src/plugins/projectexplorer/devicesupport/devicesettingswidget.cpp index 08c628c825..1d26187b7c 100644 --- a/src/plugins/projectexplorer/devicesupport/devicesettingswidget.cpp +++ b/src/plugins/projectexplorer/devicesupport/devicesettingswidget.cpp @@ -336,6 +336,7 @@ void DeviceSettingsWidget::handleProcessListRequested() { QTC_ASSERT(currentDevice()->canCreateProcessModel(), return); DeviceProcessesDialog dlg; + dlg.addCloseButton(); dlg.setDevice(currentDevice()); dlg.exec(); } |