summaryrefslogtreecommitdiff
path: root/src/plugins/projectexplorer
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@nokia.com>2012-08-22 16:38:21 +0200
committerhjk <qthjk@ovi.com>2012-08-23 15:40:13 +0200
commitaee8f8832bbf02dfbe62731c76e7481625c8ee19 (patch)
tree9b3585948d72907ac318bd151babd78535309d0d /src/plugins/projectexplorer
parent009d6b1e2ffd9fc617c2bfe135daf2eb107fc5b6 (diff)
downloadqt-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')
-rw-r--r--src/plugins/projectexplorer/devicesupport/deviceprocessesdialog.cpp43
-rw-r--r--src/plugins/projectexplorer/devicesupport/deviceprocessesdialog.h2
-rw-r--r--src/plugins/projectexplorer/devicesupport/devicesettingswidget.cpp1
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();
}