summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@nokia.com>2011-11-29 15:49:37 +0100
committerChristian Kandeler <christian.kandeler@nokia.com>2011-11-29 17:42:00 +0100
commite287fbd812ae9fbac36726ac4565739b078bf48e (patch)
tree01f036412921caf8c699fbceebc5d97a9d67def5 /src
parentc9cea6f9b6a419efde13c38b004d42447fc01616 (diff)
downloadqt-creator-e287fbd812ae9fbac36726ac4565739b078bf48e.tar.gz
RemoteLinux: Fix visual glitch when canceling key deployment.
Task-number: QTCREATORBUG-6568 Change-Id: I62da4b5e6ebed90fa51ed02107cfc083218802a4 Reviewed-by: Robert Löhning <robert.loehning@nokia.com>
Diffstat (limited to 'src')
-rw-r--r--src/plugins/madde/maddedeviceconfigurationfactory.cpp2
-rw-r--r--src/plugins/remotelinux/genericlinuxdeviceconfigurationfactory.cpp2
-rw-r--r--src/plugins/remotelinux/linuxdeviceconfigurationssettingswidget.cpp4
-rw-r--r--src/plugins/remotelinux/publickeydeploymentdialog.cpp42
-rw-r--r--src/plugins/remotelinux/publickeydeploymentdialog.h6
5 files changed, 31 insertions, 25 deletions
diff --git a/src/plugins/madde/maddedeviceconfigurationfactory.cpp b/src/plugins/madde/maddedeviceconfigurationfactory.cpp
index c81d51cbc3..7dfff2837a 100644
--- a/src/plugins/madde/maddedeviceconfigurationfactory.cpp
+++ b/src/plugins/madde/maddedeviceconfigurationfactory.cpp
@@ -112,7 +112,7 @@ QDialog *MaddeDeviceConfigurationFactory::createDeviceAction(const QString &acti
if (actionId == QLatin1String(MaddeRemoteProcessesActionId))
return new RemoteLinuxProcessesDialog(new GenericRemoteLinuxProcessList(deviceConfig), parent);
if (actionId == QLatin1String(Constants::GenericDeployKeyToDeviceActionId))
- return new PublicKeyDeploymentDialog(deviceConfig, parent);
+ return PublicKeyDeploymentDialog::createDialog(deviceConfig, parent);
return 0; // Can't happen.
}
diff --git a/src/plugins/remotelinux/genericlinuxdeviceconfigurationfactory.cpp b/src/plugins/remotelinux/genericlinuxdeviceconfigurationfactory.cpp
index 9cc3aaf423..65f3653308 100644
--- a/src/plugins/remotelinux/genericlinuxdeviceconfigurationfactory.cpp
+++ b/src/plugins/remotelinux/genericlinuxdeviceconfigurationfactory.cpp
@@ -100,7 +100,7 @@ QDialog *GenericLinuxDeviceConfigurationFactory::createDeviceAction(const QStrin
parent);
}
if (actionId == QLatin1String(Constants::GenericDeployKeyToDeviceActionId))
- return new PublicKeyDeploymentDialog(deviceConfig, parent);
+ return PublicKeyDeploymentDialog::createDialog(deviceConfig, parent);
return 0; // Can't happen.
}
diff --git a/src/plugins/remotelinux/linuxdeviceconfigurationssettingswidget.cpp b/src/plugins/remotelinux/linuxdeviceconfigurationssettingswidget.cpp
index fef007b06c..8fb6709539 100644
--- a/src/plugins/remotelinux/linuxdeviceconfigurationssettingswidget.cpp
+++ b/src/plugins/remotelinux/linuxdeviceconfigurationssettingswidget.cpp
@@ -426,8 +426,8 @@ void LinuxDeviceConfigurationsSettingsWidget::handleAdditionalActionRequest(cons
const ILinuxDeviceConfigurationFactory * const factory = factoryForCurrentConfig();
Q_ASSERT(factory);
QDialog * const action = factory->createDeviceAction(actionId, currentConfig(), this);
- Q_ASSERT(action);
- action->exec();
+ if (action)
+ action->exec();
delete action;
}
diff --git a/src/plugins/remotelinux/publickeydeploymentdialog.cpp b/src/plugins/remotelinux/publickeydeploymentdialog.cpp
index 16c26319b0..fef99bf855 100644
--- a/src/plugins/remotelinux/publickeydeploymentdialog.cpp
+++ b/src/plugins/remotelinux/publickeydeploymentdialog.cpp
@@ -33,25 +33,40 @@
#include "linuxdeviceconfiguration.h"
#include "sshkeydeployer.h"
+#include <coreplugin/icore.h>
#include <utils/ssh/sshconnection.h>
#include <QtCore/QTimer>
#include <QtGui/QFileDialog>
+#include <QtGui/QMainWindow>
namespace RemoteLinux {
namespace Internal {
class PublicKeyDeploymentDialogPrivate
{
public:
- SshKeyDeployer *keyDeployer;
+ SshKeyDeployer keyDeployer;
bool done;
};
} // namespace Internal;
using namespace Internal;
+PublicKeyDeploymentDialog *PublicKeyDeploymentDialog::createDialog(const LinuxDeviceConfiguration::ConstPtr &deviceConfig,
+ QWidget *parent)
+{
+ const QString &dir = QFileInfo(deviceConfig->sshParameters().privateKeyFile).path();
+ const QString publicKeyFileName = QFileDialog::getOpenFileName(parent
+ ? parent : Core::ICore::instance()->mainWindow(),
+ tr("Choose Public Key File"), dir,
+ tr("Public Key Files (*.pub);;All Files (*)"));
+ if (publicKeyFileName.isEmpty())
+ return 0;
+ return new PublicKeyDeploymentDialog(deviceConfig, publicKeyFileName, parent);
+}
+
PublicKeyDeploymentDialog::PublicKeyDeploymentDialog(const LinuxDeviceConfiguration::ConstPtr &deviceConfig,
- QWidget *parent)
+ const QString &publicKeyFileName, QWidget *parent)
: QProgressDialog(parent), d(new PublicKeyDeploymentDialogPrivate)
{
setAutoReset(false);
@@ -59,26 +74,13 @@ PublicKeyDeploymentDialog::PublicKeyDeploymentDialog(const LinuxDeviceConfigurat
setMinimumDuration(0);
setMaximum(1);
- d->keyDeployer = new SshKeyDeployer(this);
d->done = false;
-
- setLabelText(tr("Waiting for file name..."));
- const Utils::SshConnectionParameters sshParams = deviceConfig->sshParameters();
- const QString &dir = QFileInfo(sshParams.privateKeyFile).path();
- QString publicKeyFileName = QFileDialog::getOpenFileName(this,
- tr("Choose Public Key File"), dir,
- tr("Public Key Files (*.pub);;All Files (*)"));
- if (publicKeyFileName.isEmpty()) {
- QTimer::singleShot(0, this, SLOT(reject()));
- return;
- }
-
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(sshParams, publicKeyFileName);
+ connect(&d->keyDeployer, SIGNAL(error(QString)), SLOT(handleDeploymentError(QString)));
+ connect(&d->keyDeployer, SIGNAL(finishedSuccessfully()), SLOT(handleDeploymentSuccess()));
+ d->keyDeployer.deployPublicKey(deviceConfig->sshParameters(), publicKeyFileName);
}
PublicKeyDeploymentDialog::~PublicKeyDeploymentDialog()
@@ -115,8 +117,8 @@ void PublicKeyDeploymentDialog::handleDeploymentFinished(const QString &errorMsg
void PublicKeyDeploymentDialog::handleCanceled()
{
- disconnect(d->keyDeployer, 0, this, 0);
- d->keyDeployer->stopDeployment();
+ disconnect(&d->keyDeployer, 0, this, 0);
+ d->keyDeployer.stopDeployment();
if (d->done)
accept();
else
diff --git a/src/plugins/remotelinux/publickeydeploymentdialog.h b/src/plugins/remotelinux/publickeydeploymentdialog.h
index 04071efd7f..01678820c3 100644
--- a/src/plugins/remotelinux/publickeydeploymentdialog.h
+++ b/src/plugins/remotelinux/publickeydeploymentdialog.h
@@ -51,8 +51,10 @@ class REMOTELINUX_EXPORT PublicKeyDeploymentDialog : public QProgressDialog
{
Q_OBJECT
public:
- explicit PublicKeyDeploymentDialog(const QSharedPointer<const LinuxDeviceConfiguration> &deviceConfig,
+ // Asks for public key and returns null if the file dialog is canceled.
+ static PublicKeyDeploymentDialog *createDialog(const QSharedPointer<const LinuxDeviceConfiguration> &deviceConfig,
QWidget *parent = 0);
+
~PublicKeyDeploymentDialog();
private slots:
@@ -61,6 +63,8 @@ private slots:
void handleCanceled();
private:
+ explicit PublicKeyDeploymentDialog(const QSharedPointer<const LinuxDeviceConfiguration> &deviceConfig,
+ const QString &publicKeyFileName, QWidget *parent = 0);
void handleDeploymentFinished(const QString &errorMsg);
Internal::PublicKeyDeploymentDialogPrivate * const d;