Android: Handle some Qt deprecation related warnings

... in manifest editor.

Change-Id: I7e33f6e96ef88c8a5fb3f5d509bccab9ceebe799
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
hjk
2023-06-09 12:34:23 +02:00
parent dd28fb438f
commit a69ee57396
2 changed files with 37 additions and 47 deletions

View File

@@ -488,21 +488,40 @@ void AndroidManifestEditorWidget::focusInEvent(QFocusEvent *event)
} }
} }
static bool checkDocument(const QDomDocument &doc, QDomDocument::ParseResult *result)
{
QDomElement manifest = doc.documentElement();
if (manifest.tagName() != QLatin1String("manifest")) {
result->errorMessage = ::Android::Tr::tr("The structure of the Android manifest file "
"is corrupted. Expected a top level 'manifest' node.");
result->errorLine = -1;
result->errorColumn = -1;
return false;
}
if (manifest.firstChildElement(QLatin1String("application")).firstChildElement(QLatin1String("activity")).isNull()) {
// missing either application or activity element
result->errorMessage = ::Android::Tr::tr("The structure of the Android manifest file "
"is corrupted. Expected an 'application' and 'activity' sub node.");
result->errorLine = -1;
result->errorColumn = -1;
return false;
}
return true;
}
void AndroidManifestEditorWidget::updateAfterFileLoad() void AndroidManifestEditorWidget::updateAfterFileLoad()
{ {
QString error;
int errorLine;
int errorColumn;
QDomDocument doc; QDomDocument doc;
if (doc.setContent(m_textEditorWidget->toPlainText(), &error, &errorLine, &errorColumn)) { QDomDocument::ParseResult result = doc.setContent(m_textEditorWidget->toPlainText());
if (checkDocument(doc, &error, &errorLine, &errorColumn)) { if (result) {
if (checkDocument(doc, &result)) {
if (activePage() != Source) if (activePage() != Source)
syncToWidgets(doc); syncToWidgets(doc);
return; return;
} }
} }
// some error occurred // some error occurred
updateInfoBar(error, errorLine, errorColumn); updateInfoBar(result.errorMessage, result.errorLine, result.errorColumn);
setActivePage(Source); setActivePage(Source);
} }
@@ -591,39 +610,19 @@ TextEditor::TextEditorWidget *AndroidManifestEditorWidget::textEditorWidget() co
bool AndroidManifestEditorWidget::syncToWidgets() bool AndroidManifestEditorWidget::syncToWidgets()
{ {
QDomDocument doc; QDomDocument doc;
QString errorMessage; QDomDocument::ParseResult result = doc.setContent(m_textEditorWidget->toPlainText());
int errorLine, errorColumn; if (result) {
if (doc.setContent(m_textEditorWidget->toPlainText(), &errorMessage, &errorLine, &errorColumn)) { if (checkDocument(doc, &result)) {
if (checkDocument(doc, &errorMessage, &errorLine, &errorColumn)) {
hideInfoBar(); hideInfoBar();
syncToWidgets(doc); syncToWidgets(doc);
return true; return true;
} }
} }
updateInfoBar(errorMessage, errorLine, errorColumn); updateInfoBar(result.errorMessage, result.errorLine, result.errorColumn);
return false; return false;
} }
bool AndroidManifestEditorWidget::checkDocument(const QDomDocument &doc, QString *errorMessage,
int *errorLine, int *errorColumn)
{
QDomElement manifest = doc.documentElement();
if (manifest.tagName() != QLatin1String("manifest")) {
*errorMessage = ::Android::Tr::tr("The structure of the Android manifest file is corrupted. Expected a top level 'manifest' node.");
*errorLine = -1;
*errorColumn = -1;
return false;
} else if (manifest.firstChildElement(QLatin1String("application")).firstChildElement(QLatin1String("activity")).isNull()) {
// missing either application or activity element
*errorMessage = ::Android::Tr::tr("The structure of the Android manifest file is corrupted. Expected an 'application' and 'activity' sub node.");
*errorLine = -1;
*errorColumn = -1;
return false;
}
return true;
}
void AndroidManifestEditorWidget::startParseCheck() void AndroidManifestEditorWidget::startParseCheck()
{ {
m_timerParseCheck.start(); m_timerParseCheck.start();
@@ -641,16 +640,15 @@ void AndroidManifestEditorWidget::updateInfoBar()
return; return;
} }
QDomDocument doc; QDomDocument doc;
int errorLine, errorColumn; QDomDocument::ParseResult result = doc.setContent(m_textEditorWidget->toPlainText());
QString errorMessage; if (result) {
if (doc.setContent(m_textEditorWidget->toPlainText(), &errorMessage, &errorLine, &errorColumn)) { if (checkDocument(doc, &result)) {
if (checkDocument(doc, &errorMessage, &errorLine, &errorColumn)) {
hideInfoBar(); hideInfoBar();
return; return;
} }
} }
updateInfoBar(errorMessage, errorLine, errorColumn); updateInfoBar(result.errorMessage, result.errorLine, result.errorColumn);
} }
void AndroidManifestEditorWidget::updateSdkVersions() void AndroidManifestEditorWidget::updateSdkVersions()
@@ -888,9 +886,9 @@ void AndroidManifestEditorWidget::syncToEditor()
m_dirty = false; m_dirty = false;
} }
namespace { static QXmlStreamAttributes modifyXmlStreamAttributes(
QXmlStreamAttributes modifyXmlStreamAttributes(const QXmlStreamAttributes &input, const QStringList &keys, const QXmlStreamAttributes &input, const QStringList &keys,
const QStringList &values, const QStringList &remove = QStringList()) const QStringList &values, const QStringList &remove = {})
{ {
Q_ASSERT(keys.size() == values.size()); Q_ASSERT(keys.size() == values.size());
QXmlStreamAttributes result; QXmlStreamAttributes result;
@@ -903,8 +901,7 @@ QXmlStreamAttributes modifyXmlStreamAttributes(const QXmlStreamAttributes &input
if (index == -1) if (index == -1)
result.push_back(attribute); result.push_back(attribute);
else else
result.push_back(QXmlStreamAttribute(name, result.push_back(QXmlStreamAttribute(name, values.at(index)));
values.at(index)));
} }
for (int i = 0; i < keys.size(); ++i) { for (int i = 0; i < keys.size(); ++i) {
@@ -913,7 +910,6 @@ QXmlStreamAttributes modifyXmlStreamAttributes(const QXmlStreamAttributes &input
} }
return result; return result;
} }
} // end namespace
void AndroidManifestEditorWidget::parseManifest(QXmlStreamReader &reader, QXmlStreamWriter &writer) void AndroidManifestEditorWidget::parseManifest(QXmlStreamReader &reader, QXmlStreamWriter &writer)
{ {

View File

@@ -14,14 +14,11 @@
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
class QCheckBox; class QCheckBox;
class QDomDocument; class QDomDocument;
class QDomElement;
class QComboBox; class QComboBox;
class QPushButton; class QPushButton;
class QLabel; class QLabel;
class QLineEdit; class QLineEdit;
class QListView; class QListView;
class QSpinBox;
class QToolButton;
class QXmlStreamReader; class QXmlStreamReader;
class QXmlStreamWriter; class QXmlStreamWriter;
QT_END_NAMESPACE QT_END_NAMESPACE
@@ -108,9 +105,6 @@ private:
void syncToEditor(); void syncToEditor();
void updateAfterFileLoad(); void updateAfterFileLoad();
bool checkDocument(const QDomDocument &doc, QString *errorMessage,
int *errorLine, int *errorColumn);
void updateInfoBar(const QString &errorMessage, int line, int column); void updateInfoBar(const QString &errorMessage, int line, int column);
void hideInfoBar(); void hideInfoBar();