aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNikunj Arora <nikunj.arora@qt.io>2025-05-30 15:23:15 +0300
committerNikunj Arora <nikunj.arora@qt.io>2025-06-24 07:36:40 +0000
commitde31f177af5acfb19f7624d8a17c94736a3da895 (patch)
tree6f86da1cce92ffdab90a80c3a72fe2f2cc161449
parent775f6f1d4e67ae0298ac4c47245af132053345f7 (diff)
Write properties to gradle.properties file from Android Studio UI
After setting the values in Android Studio UI, write the values to gradle.properties file so that it can be read from both QtGP and QtTAS. Task-number: QTTA-354 Pick-to: 4.1 Change-Id: I3bad5d7eafa2773baf4a6b3a35349ca388762d46 Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
-rw-r--r--src/main/java/org/qtproject/qt/androidstudiotools/ImportProjectAction.java2
-rw-r--r--src/main/java/org/qtproject/qt/androidstudiotools/ImportProjectDialogWrapper.java18
-rw-r--r--src/main/java/org/qtproject/qt/androidstudiotools/NewProjectAction.java15
-rw-r--r--src/main/java/org/qtproject/qt/androidstudiotools/NewProjectDialogWrapper.java9
4 files changed, 36 insertions, 8 deletions
diff --git a/src/main/java/org/qtproject/qt/androidstudiotools/ImportProjectAction.java b/src/main/java/org/qtproject/qt/androidstudiotools/ImportProjectAction.java
index bc82e6a..925e371 100644
--- a/src/main/java/org/qtproject/qt/androidstudiotools/ImportProjectAction.java
+++ b/src/main/java/org/qtproject/qt/androidstudiotools/ImportProjectAction.java
@@ -31,7 +31,7 @@ class ImportProjectAction extends AnAction {
return;
}
- ImportProjectDialogWrapper wrapper = new ImportProjectDialogWrapper();
+ ImportProjectDialogWrapper wrapper = new ImportProjectDialogWrapper(e.getProject());
wrapper.show();
}
}
diff --git a/src/main/java/org/qtproject/qt/androidstudiotools/ImportProjectDialogWrapper.java b/src/main/java/org/qtproject/qt/androidstudiotools/ImportProjectDialogWrapper.java
index 330ee03..fd6f5ac 100644
--- a/src/main/java/org/qtproject/qt/androidstudiotools/ImportProjectDialogWrapper.java
+++ b/src/main/java/org/qtproject/qt/androidstudiotools/ImportProjectDialogWrapper.java
@@ -6,11 +6,13 @@ package org.qtproject.qt.androidstudiotools;
import java.awt.Color;
import java.awt.Dimension;
import java.io.File;
+import java.util.Map;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.event.DocumentEvent;
import com.intellij.openapi.fileChooser.FileChooserDescriptor;
+import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.ComponentValidator;
import com.intellij.openapi.ui.DialogWrapper;
import com.intellij.openapi.ui.TextBrowseFolderListener;
@@ -23,13 +25,16 @@ import org.jetbrains.annotations.Nullable;
class ImportProjectDialogWrapper extends DialogWrapper {
private JLabel m_errorLabel;
+ private Project m_project;
private final TextFieldWithBrowseButton m_qtPathLocationBtn = new TextFieldWithBrowseButton();
private final TextFieldWithBrowseButton m_newQtProjectLocationBtn = new TextFieldWithBrowseButton();
- protected ImportProjectDialogWrapper() {
+ protected ImportProjectDialogWrapper(Project project) {
super(true);
+ this.m_project = project;
+
setTitle("Import Qt Project");
init();
@@ -40,6 +45,9 @@ class ImportProjectDialogWrapper extends DialogWrapper {
m_qtPathLocationBtn.addBrowseFolderListener(new TextBrowseFolderListener(allowFoldersFCD));
m_newQtProjectLocationBtn.addBrowseFolderListener(new TextBrowseFolderListener(allowFoldersFCD));
+ QtSettingStateProject settings = QtSettingStateProject.getInstance(m_project);
+ m_qtPathLocationBtn.setText(settings.getQtPath());
+
ComponentValidator qtPathValidator = new ComponentValidator(getDisposable()).withValidator(
() -> validateQtPath()).installOn(m_qtPathLocationBtn);
@@ -105,8 +113,12 @@ class ImportProjectDialogWrapper extends DialogWrapper {
// Close the current dialog before starting the new one
dispose();
- CodeSnippetDialogWrapper dialog = new CodeSnippetDialogWrapper(newProjectLocation, qtPathLocation);
- dialog.show();
+ GradlePropertiesManager propertiesManager =
+ new GradlePropertiesManager(m_project.getBasePath());
+ propertiesManager.writeMultipleProperties(Map.of(
+ GradleFileParser.QT_PATH_PROPERTY, qtPathLocation,
+ GradleFileParser.QT_PROJECT_PATH_PROPERTY, newProjectLocation
+ ));
super.doOKAction();
}
diff --git a/src/main/java/org/qtproject/qt/androidstudiotools/NewProjectAction.java b/src/main/java/org/qtproject/qt/androidstudiotools/NewProjectAction.java
index db3162c..ecc6b55 100644
--- a/src/main/java/org/qtproject/qt/androidstudiotools/NewProjectAction.java
+++ b/src/main/java/org/qtproject/qt/androidstudiotools/NewProjectAction.java
@@ -17,6 +17,7 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Paths;
+import java.util.Map;
class NewProjectAction extends AnAction {
@@ -47,9 +48,17 @@ class NewProjectAction extends AnAction {
ProgressManager.getInstance().run(new Task.Backgroundable(e.getProject(), "Creating new Project") {
@Override
public void onSuccess() {
- CodeSnippetDialogWrapper dialog = new CodeSnippetDialogWrapper(wrapper.getNewProjectLocation(),
- wrapper.getQtPath());
- dialog.show();
+ GradlePropertiesManager propertiesManager =
+ new GradlePropertiesManager(e.getProject().getBasePath());
+ propertiesManager.writeMultipleProperties(Map.of(
+ GradleFileParser.QT_PATH_PROPERTY, wrapper.getQtPath(),
+ GradleFileParser.QT_PROJECT_PATH_PROPERTY, wrapper.getNewProjectLocation()
+ ));
+
+ QtSettingStateProject settings =
+ QtSettingStateProject.getInstance(e.getProject());
+ settings.setQtMinimumVersion(wrapper.getMinimumQtVersion());
+
super.onSuccess();
}
diff --git a/src/main/java/org/qtproject/qt/androidstudiotools/NewProjectDialogWrapper.java b/src/main/java/org/qtproject/qt/androidstudiotools/NewProjectDialogWrapper.java
index c47a725..d2caa1c 100644
--- a/src/main/java/org/qtproject/qt/androidstudiotools/NewProjectDialogWrapper.java
+++ b/src/main/java/org/qtproject/qt/androidstudiotools/NewProjectDialogWrapper.java
@@ -21,6 +21,7 @@ import com.intellij.openapi.ui.ValidationInfo;
import com.intellij.ui.DocumentAdapter;
import com.intellij.ui.components.JBTextField;
import com.intellij.util.ui.FormBuilder;
+import org.apache.commons.lang.ArrayUtils;
import org.jetbrains.annotations.Nullable;
// TODO: QTBUG-122062 Separate the new project dialog
@@ -36,7 +37,7 @@ class NewProjectDialogWrapper extends DialogWrapper {
private final ComboBox<String> m_minimumQtVersionComboBox = new ComboBox<>();
private final static String[] m_minQtVersions = new String[]{"6.8"};
- protected NewProjectDialogWrapper(@Nullable Project project) {
+ protected NewProjectDialogWrapper(Project project) {
super(project, true);
m_project = project;
@@ -55,6 +56,12 @@ class NewProjectDialogWrapper extends DialogWrapper {
m_qtPathLocationBtn.addBrowseFolderListener(new TextBrowseFolderListener(allowFoldersFCD));
m_newQtProjectLocationBtn.addBrowseFolderListener(new TextBrowseFolderListener(allowFoldersFCD));
+ QtSettingStateProject settings = QtSettingStateProject.getInstance(m_project);
+ m_qtPathLocationBtn.setText(settings.getQtPath());
+ m_minimumQtVersionComboBox.setSelectedIndex(
+ ArrayUtils.indexOf(m_minQtVersions, settings.getMinimumQtVersion())
+ );
+
ComponentValidator projectNameValidator = new ComponentValidator(
getDisposable()).withValidator(() -> validateProjectName())
.installOn(m_newQtProjectNameField);