summaryrefslogtreecommitdiff
path: root/src/plugins/remotelinux/remotelinuxcheckforfreediskspacestep.cpp
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@nokia.com>2012-05-30 18:22:17 +0200
committerChristian Kandeler <christian.kandeler@nokia.com>2012-05-31 14:07:22 +0200
commitff584622f48474e054ee4e44b2d0646513df4b19 (patch)
treebbf18e34e3f2aecbf2e597ddf3cedc8d76cb4358 /src/plugins/remotelinux/remotelinuxcheckforfreediskspacestep.cpp
parentf10d751466c68cd8f999aa73884c5f2452632fd3 (diff)
downloadqt-creator-ff584622f48474e054ee4e44b2d0646513df4b19.tar.gz
RemoteLinux: Add new deploy step that checks for free space.
Tool output in the "disk full" case can be rather unhelpful, so we check in advance. Change-Id: Ia3f5f0b456b91acf9a8f8e72de870e1df6ea8e80 Reviewed-by: Nikolai Kosjar <nikolai.kosjar@nokia.com>
Diffstat (limited to 'src/plugins/remotelinux/remotelinuxcheckforfreediskspacestep.cpp')
-rw-r--r--src/plugins/remotelinux/remotelinuxcheckforfreediskspacestep.cpp190
1 files changed, 190 insertions, 0 deletions
diff --git a/src/plugins/remotelinux/remotelinuxcheckforfreediskspacestep.cpp b/src/plugins/remotelinux/remotelinuxcheckforfreediskspacestep.cpp
new file mode 100644
index 0000000000..81afdbedd4
--- /dev/null
+++ b/src/plugins/remotelinux/remotelinuxcheckforfreediskspacestep.cpp
@@ -0,0 +1,190 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2012 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+**
+** GNU Lesser General Public License Usage
+**
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this file.
+** Please review the following information to ensure the GNU Lesser General
+** Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** Other Usage
+**
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**************************************************************************/
+#include "remotelinuxcheckforfreediskspacestep.h"
+#include "ui_remotelinuxcheckforfreediskspacestepwidget.h"
+
+#include "remotelinuxcheckforfreediskspaceservice.h"
+
+#include <QString>
+
+#include <limits>
+
+using namespace ProjectExplorer;
+
+namespace RemoteLinux {
+namespace Internal {
+namespace {
+class RemoteLinuxCheckForFreeDiskSpaceStepWidget : public BuildStepConfigWidget
+{
+ Q_OBJECT
+
+public:
+ explicit RemoteLinuxCheckForFreeDiskSpaceStepWidget(RemoteLinuxCheckForFreeDiskSpaceStep &step)
+ : m_step(step)
+ {
+ m_ui.setupUi(this);
+ m_ui.requiredSpaceSpinBox->setSuffix(tr("MB"));
+ m_ui.requiredSpaceSpinBox->setMinimum(1);
+ m_ui.requiredSpaceSpinBox->setMaximum(std::numeric_limits<int>::max());
+
+ m_ui.pathLineEdit->setText(m_step.pathToCheck());
+ m_ui.requiredSpaceSpinBox->setValue(m_step.requiredSpaceInBytes()/multiplier);
+
+ connect(m_ui.pathLineEdit, SIGNAL(textChanged(QString)), SLOT(handlePathChanged()));
+ connect(m_ui.requiredSpaceSpinBox, SIGNAL(valueChanged(int)),
+ SLOT(handleRequiredSpaceChanged()));
+ }
+
+private:
+ Q_SLOT void handlePathChanged() { m_step.setPathToCheck(m_ui.pathLineEdit->text().trimmed()); }
+ Q_SLOT void handleRequiredSpaceChanged() {
+ m_step.setRequiredSpaceInBytes(quint64(m_ui.requiredSpaceSpinBox->value())*multiplier);
+ }
+
+ QString displayName() const { return QLatin1String("<b>") + m_step.displayName()
+ + QLatin1String("</b>"); }
+ QString summaryText() const { return displayName(); }
+
+ static const int multiplier = 1024*1024;
+
+ Ui::RemoteLinuxCheckForFreeDiskSpaceStepWidget m_ui;
+ RemoteLinuxCheckForFreeDiskSpaceStep &m_step;
+};
+
+} // anonymous namespace
+
+const char PathToCheckKey[] = "RemoteLinux.CheckForFreeDiskSpaceStep.PathToCheck";
+const char RequiredSpaceKey[] = "RemoteLinux.CheckForFreeDiskSpaceStep.RequiredSpace";
+
+class RemoteLinuxCheckForFreeDiskSpaceStepPrivate
+{
+public:
+ RemoteLinuxCheckForFreeDiskSpaceService deployService;
+ QString pathToCheck;
+ quint64 requiredSpaceInBytes;
+};
+} // namespace Internal
+
+
+RemoteLinuxCheckForFreeDiskSpaceStep::RemoteLinuxCheckForFreeDiskSpaceStep(BuildStepList *bsl)
+ : AbstractRemoteLinuxDeployStep(bsl, stepId())
+{
+ ctor();
+}
+
+RemoteLinuxCheckForFreeDiskSpaceStep::RemoteLinuxCheckForFreeDiskSpaceStep(BuildStepList *bsl,
+ RemoteLinuxCheckForFreeDiskSpaceStep *other) : AbstractRemoteLinuxDeployStep(bsl, other)
+{
+ ctor();
+}
+
+RemoteLinuxCheckForFreeDiskSpaceStep::~RemoteLinuxCheckForFreeDiskSpaceStep()
+{
+ delete d;
+}
+
+void RemoteLinuxCheckForFreeDiskSpaceStep::ctor()
+{
+ d = new Internal::RemoteLinuxCheckForFreeDiskSpaceStepPrivate;
+ setDefaultDisplayName(stepDisplayName());
+ d->pathToCheck = QLatin1String("/");
+ d->requiredSpaceInBytes = 5*1024*1024;
+}
+
+void RemoteLinuxCheckForFreeDiskSpaceStep::setPathToCheck(const QString &path)
+{
+ d->pathToCheck = path;
+}
+
+QString RemoteLinuxCheckForFreeDiskSpaceStep::pathToCheck() const
+{
+ return d->pathToCheck;
+}
+
+void RemoteLinuxCheckForFreeDiskSpaceStep::setRequiredSpaceInBytes(quint64 space)
+{
+ d->requiredSpaceInBytes = space;
+}
+
+quint64 RemoteLinuxCheckForFreeDiskSpaceStep::requiredSpaceInBytes() const
+{
+ return d->requiredSpaceInBytes;
+}
+
+bool RemoteLinuxCheckForFreeDiskSpaceStep::fromMap(const QVariantMap &map)
+{
+ if (!AbstractRemoteLinuxDeployStep::fromMap(map))
+ return false;
+ d->pathToCheck = map.value(QLatin1String(Internal::PathToCheckKey)).toString();
+ d->requiredSpaceInBytes = map.value(QLatin1String(Internal::RequiredSpaceKey)).toULongLong();
+ return true;
+}
+
+QVariantMap RemoteLinuxCheckForFreeDiskSpaceStep::toMap() const
+{
+ QVariantMap map = AbstractRemoteLinuxDeployStep::toMap();
+ map.insert(QLatin1String(Internal::PathToCheckKey), d->pathToCheck);
+ map.insert(QLatin1String(Internal::RequiredSpaceKey), d->requiredSpaceInBytes);
+ return map;
+}
+
+BuildStepConfigWidget *RemoteLinuxCheckForFreeDiskSpaceStep::createConfigWidget()
+{
+ return new Internal::RemoteLinuxCheckForFreeDiskSpaceStepWidget(*this);
+}
+
+bool RemoteLinuxCheckForFreeDiskSpaceStep::initInternal(QString *error)
+{
+ Q_UNUSED(error);
+ d->deployService.setPathToCheck(d->pathToCheck);
+ d->deployService.setRequiredSpaceInBytes(d->requiredSpaceInBytes);
+ return true;
+}
+
+AbstractRemoteLinuxDeployService *RemoteLinuxCheckForFreeDiskSpaceStep::deployService() const
+{
+ return &d->deployService;
+}
+
+Core::Id RemoteLinuxCheckForFreeDiskSpaceStep::stepId()
+{
+ return Core::Id("RemoteLinux.CheckForFreeDiskSpaceStep");
+}
+
+QString RemoteLinuxCheckForFreeDiskSpaceStep::stepDisplayName()
+{
+ return tr("Check for free disk space");
+}
+
+} // namespace RemoteLinux
+
+#include "remotelinuxcheckforfreediskspacestep.moc"