Android: Use FilePath in JavaLanguageServer

Change-Id: Ifaaf95c7463db634a08072e5c988bfc75237f8eb
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
This commit is contained in:
hjk
2021-09-27 11:13:56 +02:00
parent cef21f46e8
commit 5c7b4d66c5
2 changed files with 18 additions and 21 deletions

View File

@@ -60,7 +60,7 @@ public:
QString name() const { return m_name->text(); } QString name() const { return m_name->text(); }
FilePath java() const { return m_java->filePath(); } FilePath java() const { return m_java->filePath(); }
QString languageServer() const { return m_ls->filePath().toString(); } FilePath languageServer() const { return m_ls->filePath(); }
QString workspace() const { return m_workspace->filePath().toString(); } QString workspace() const { return m_workspace->filePath().toString(); }
private: private:
@@ -92,7 +92,7 @@ JLSSettingsWidget::JLSSettingsWidget(const JLSSettings *settings, QWidget *paren
m_ls->setExpectedKind(Utils::PathChooser::File); m_ls->setExpectedKind(Utils::PathChooser::File);
m_ls->lineEdit()->setPlaceholderText(tr("Path to equinox launcher jar")); m_ls->lineEdit()->setPlaceholderText(tr("Path to equinox launcher jar"));
m_ls->setPromptDialogFilter("org.eclipse.equinox.launcher_*.jar"); m_ls->setPromptDialogFilter("org.eclipse.equinox.launcher_*.jar");
m_ls->setPath(QDir::toNativeSeparators(settings->m_languageServer)); m_ls->setFilePath(settings->m_languageServer);
mainLayout->addWidget(m_ls, row, 1); mainLayout->addWidget(m_ls, row, 1);
setLayout(mainLayout); setLayout(mainLayout);
@@ -131,8 +131,7 @@ bool JLSSettings::applyFromSettingsWidget(QWidget *widget)
"-jar \"%1\" " "-jar \"%1\" "
"-configuration \"%2\""; "-configuration \"%2\"";
QFileInfo languageServerFileInfo(m_languageServer); QDir configDir = m_languageServer.toFileInfo().absoluteDir();
QDir configDir = languageServerFileInfo.absoluteDir();
if (configDir.exists()) { if (configDir.exists()) {
configDir.cdUp(); configDir.cdUp();
if constexpr (HostOsInfo::hostOs() == OsTypeWindows) if constexpr (HostOsInfo::hostOs() == OsTypeWindows)
@@ -143,7 +142,7 @@ bool JLSSettings::applyFromSettingsWidget(QWidget *widget)
configDir.cd("config_mac"); configDir.cd("config_mac");
} }
if (configDir.exists()) { if (configDir.exists()) {
arguments = arguments.arg(m_languageServer, configDir.absolutePath()); arguments = arguments.arg(m_languageServer.toString(), configDir.absolutePath());
changed |= m_arguments != arguments; changed |= m_arguments != arguments;
m_arguments = arguments; m_arguments = arguments;
} }
@@ -163,14 +162,14 @@ bool JLSSettings::isValid() const
QVariantMap JLSSettings::toMap() const QVariantMap JLSSettings::toMap() const
{ {
QVariantMap map = StdIOSettings::toMap(); QVariantMap map = StdIOSettings::toMap();
map.insert(languageServerKey, m_languageServer); map.insert(languageServerKey, m_languageServer.toVariant());
return map; return map;
} }
void JLSSettings::fromMap(const QVariantMap &map) void JLSSettings::fromMap(const QVariantMap &map)
{ {
StdIOSettings::fromMap(map); StdIOSettings::fromMap(map);
m_languageServer = map[languageServerKey].toString(); m_languageServer = FilePath::fromVariant(map[languageServerKey]);
} }
LanguageClient::BaseSettings *JLSSettings::copy() const LanguageClient::BaseSettings *JLSSettings::copy() const
@@ -269,8 +268,8 @@ static void generateProjectFile(const FilePath &projectDir,
} }
static void generateClassPathFile(const FilePath &projectDir, static void generateClassPathFile(const FilePath &projectDir,
const QString &sourceDir, const FilePath &sourceDir,
const QStringList &libs) const FilePaths &libs)
{ {
const FilePath classPathFilePath = projectDir.pathAppended(".classpath"); const FilePath classPathFilePath = projectDir.pathAppended(".classpath");
QFile classPathFile(classPathFilePath.toString()); QFile classPathFile(classPathFilePath.toString());
@@ -283,14 +282,14 @@ static void generateClassPathFile(const FilePath &projectDir,
writer.writeStartElement("classpath"); writer.writeStartElement("classpath");
writer.writeEmptyElement("classpathentry"); writer.writeEmptyElement("classpathentry");
writer.writeAttribute("kind", "src"); writer.writeAttribute("kind", "src");
writer.writeAttribute("path", sourceDir); writer.writeAttribute("path", sourceDir.toString());
writer.writeEmptyElement("classpathentry"); writer.writeEmptyElement("classpathentry");
writer.writeAttribute("kind", "src"); writer.writeAttribute("kind", "src");
writer.writeAttribute("path", "qtSrc"); writer.writeAttribute("path", "qtSrc");
for (const QString &lib : libs) { for (const FilePath &lib : libs) {
writer.writeEmptyElement("classpathentry"); writer.writeEmptyElement("classpathentry");
writer.writeAttribute("kind", "lib"); writer.writeAttribute("kind", "lib");
writer.writeAttribute("path", lib); writer.writeAttribute("path", lib.toString());
} }
writer.writeEndElement(); // classpath writer.writeEndElement(); // classpath
writer.writeEndDocument(); writer.writeEndDocument();
@@ -323,14 +322,12 @@ void JLSClient::updateProjectFiles()
sourceDir = sourceDir.relativeChildPath(projectDir); sourceDir = sourceDir.relativeChildPath(projectDir);
const FilePath &sdkLocation = AndroidConfigurations::currentConfig().sdkLocation(); const FilePath &sdkLocation = AndroidConfigurations::currentConfig().sdkLocation();
const QString &targetSDK = AndroidManager::buildTargetSDK(m_currentTarget); const QString &targetSDK = AndroidManager::buildTargetSDK(m_currentTarget);
const QString androidJar = QString("%1/platforms/%2/android.jar") const FilePath androidJar = sdkLocation / QString("platforms/%2/android.jar")
.arg(sdkLocation.toString(), targetSDK); .arg(targetSDK);
QStringList libs(androidJar); FilePaths libs = {androidJar};
QDir libDir(packageSourceDir.pathAppended("libs").toString()); libs << packageSourceDir.pathAppended("libs").dirEntries({"*.jar"}, QDir::Files);
libs << Utils::transform(libDir.entryInfoList({"*.jar"}, QDir::Files),
&QFileInfo::absoluteFilePath);
generateProjectFile(projectDir, qtSrc, project()->displayName()); generateProjectFile(projectDir, qtSrc, project()->displayName());
generateClassPathFile(projectDir, sourceDir.toString(), libs); generateClassPathFile(projectDir, sourceDir, libs);
} }
} }
} }

View File

@@ -42,9 +42,9 @@ public:
void fromMap(const QVariantMap &map) final; void fromMap(const QVariantMap &map) final;
LanguageClient::BaseSettings *copy() const final; LanguageClient::BaseSettings *copy() const final;
LanguageClient::Client *createClient(LanguageClient::BaseClientInterface *interface) const final; LanguageClient::Client *createClient(LanguageClient::BaseClientInterface *interface) const final;
LanguageClient::BaseClientInterface *createInterface() const override; LanguageClient::BaseClientInterface *createInterface() const final;
QString m_languageServer; Utils::FilePath m_languageServer;
private: private:
JLSSettings(const JLSSettings &other) = default; JLSSettings(const JLSSettings &other) = default;