check if Android sdk folder is writable

Fixes: QTCREATORBUG-21943
Change-Id: Ic20ed4c24c567b0b08269b7ad07014eb4248b214
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Frederik Schwarzer
2019-08-12 01:41:41 +02:00
parent 7ffc1f5349
commit 4ca3bd4d0f
3 changed files with 13 additions and 2 deletions

View File

@@ -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

View File

@@ -82,6 +82,7 @@ public:
QString fileName(int pathComponents = 0) const;
bool exists() const;
bool isWritablePath() const;
FilePath parentDir() const;

View File

@@ -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);