aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrederik Schwarzer <schwarzer@kde.org>2019-08-12 01:41:41 +0200
committerFrederik Schwarzer <schwarzer@kde.org>2019-08-13 21:49:18 +0000
commit4ca3bd4d0f336f7055080e78849c0607ba99843c (patch)
tree55d0476319f0a3f7701dbb4d1882d34b54ab8461
parent7ffc1f53491595e6fc3389d569a6d57fb5a9b23f (diff)
check if Android sdk folder is writable
Fixes: QTCREATORBUG-21943 Change-Id: Ic20ed4c24c567b0b08269b7ad07014eb4248b214 Reviewed-by: hjk <hjk@qt.io>
-rw-r--r--src/libs/utils/fileutils.cpp7
-rw-r--r--src/libs/utils/fileutils.h1
-rw-r--r--src/plugins/android/androidsettingswidget.cpp7
3 files changed, 13 insertions, 2 deletions
diff --git a/src/libs/utils/fileutils.cpp b/src/libs/utils/fileutils.cpp
index 2edcf420bb..50ff572580 100644
--- a/src/libs/utils/fileutils.cpp
+++ b/src/libs/utils/fileutils.cpp
@@ -768,6 +768,13 @@ bool FilePath::exists() const
return !isEmpty() && QFileInfo::exists(m_data);
}
+/// \returns a bool indicating whether a path is writable.
+bool FilePath::isWritablePath() const
+{
+ const QFileInfo fi{m_data};
+ return exists() && fi.isDir() && fi.isWritable();
+}
+
/// Find the parent directory of a given directory.
/// Returns an empty FilePath if the current directory is already
diff --git a/src/libs/utils/fileutils.h b/src/libs/utils/fileutils.h
index a4693ddf75..ae691fe4c3 100644
--- a/src/libs/utils/fileutils.h
+++ b/src/libs/utils/fileutils.h
@@ -82,6 +82,7 @@ public:
QString fileName(int pathComponents = 0) const;
bool exists() const;
+ bool isWritablePath() const;
FilePath parentDir() const;
diff --git a/src/plugins/android/androidsettingswidget.cpp b/src/plugins/android/androidsettingswidget.cpp
index 494af3065f..d6bb4bfa96 100644
--- a/src/plugins/android/androidsettingswidget.cpp
+++ b/src/plugins/android/androidsettingswidget.cpp
@@ -72,6 +72,7 @@ enum JavaValidation {
enum AndroidValidation {
SdkPathExistsRow,
+ SdkPathWritableRow,
SdkToolsInstalledRow,
PlatformToolsInstalledRow,
BuildToolsInstalledRow,
@@ -255,6 +256,7 @@ AndroidSettingsWidget::AndroidSettingsWidget(QWidget *parent)
QMap<int, QString> androidValidationPoints;
androidValidationPoints[SdkPathExistsRow] = tr("Android SDK path exists.");
+ androidValidationPoints[SdkPathWritableRow] = tr("Android SDK path writable.");
androidValidationPoints[SdkToolsInstalledRow] = tr("SDK tools installed.");
androidValidationPoints[PlatformToolsInstalledRow] = tr("Platform tools installed.");
androidValidationPoints[BuildToolsInstalledRow] = tr("Build tools installed.");
@@ -415,6 +417,7 @@ void AndroidSettingsWidget::validateSdk()
{
auto summaryWidget = static_cast<SummaryWidget *>(m_ui->androidDetailsWidget->widget());
summaryWidget->setPointValid(SdkPathExistsRow, m_androidConfig.sdkLocation().exists());
+ summaryWidget->setPointValid(SdkPathWritableRow, m_androidConfig.sdkLocation().isWritablePath());
summaryWidget->setPointValid(SdkToolsInstalledRow,
!m_androidConfig.sdkToolsVersion().isNull());
summaryWidget->setPointValid(PlatformToolsInstalledRow,
@@ -427,7 +430,7 @@ void AndroidSettingsWidget::validateSdk()
summaryWidget->setPointValid(PlatformSdkInstalledRow,
!m_sdkManager->installedSdkPlatforms().isEmpty());
updateUI();
- bool sdkToolsOk = summaryWidget->rowsOk({SdkPathExistsRow, SdkToolsInstalledRow});
+ bool sdkToolsOk = summaryWidget->rowsOk({SdkPathExistsRow, SdkPathWritableRow, SdkToolsInstalledRow});
bool componentsOk = summaryWidget->rowsOk({PlatformToolsInstalledRow,
BuildToolsInstalledRow,
PlatformSdkInstalledRow});
@@ -528,7 +531,7 @@ void AndroidSettingsWidget::updateUI()
auto javaSummaryWidget = static_cast<SummaryWidget *>(m_ui->javaDetailsWidget->widget());
auto androidSummaryWidget = static_cast<SummaryWidget *>(m_ui->androidDetailsWidget->widget());
bool javaSetupOk = javaSummaryWidget->allRowsOk();
- bool sdkToolsOk = androidSummaryWidget->rowsOk({SdkPathExistsRow, SdkToolsInstalledRow});
+ bool sdkToolsOk = androidSummaryWidget->rowsOk({SdkPathExistsRow, SdkPathWritableRow, SdkToolsInstalledRow});
bool androidSetupOk = androidSummaryWidget->allRowsOk();
m_ui->avdManagerTab->setEnabled(javaSetupOk && androidSetupOk);