Android: Remove Service management from AndroidManifestEditorWidget

Any manipulation of an AndroidManifest.xml document in the
AndroidManifestEditor would heavily modify present <service/> entries.
Even if the Service widget is not used. Furthermore, the service
handling code would filter out any present white space.

A visual XML editor must keep any present information (ideally also
formatting and white spaces) intact and should only apply the minimal
amount of change when saving. This can be challenging if the loaded
AndroidManifest.xml has before been hand-edited. Implementing and
maintaining a visual XML editor requires much effort. It has to be
considered if such effort is reasonable for a specialist feature like
creating Android services, especially since the "Manifest elements
reference" is very well documented on developer.android.com and the Qt-
specific parts in the Qt docs.

This change removes the service management from the
AndroidManifestEditorWidget. A good, text-based XML editor that
considers the AndroidManifest schema is a valid substitute.

Fixes: QTCREATORBUG-28024
Change-Id: I73ce5b5c548c5bee6fb7fe2d50d83e0ca3937208
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
This commit is contained in:
Alessandro Portale
2022-12-13 13:11:41 +01:00
parent 3f340616d5
commit 9eb3cb1acc
7 changed files with 7 additions and 726 deletions

View File

@@ -33,7 +33,6 @@ namespace Android::Internal {
class AndroidManifestEditor;
class AndroidManifestEditorIconContainerWidget;
class AndroidManifestEditorWidget;
class AndroidServiceWidget;
class SplashScreenContainerWidget;
class PermissionsModel: public QAbstractListModel
@@ -114,14 +113,10 @@ private:
void updateInfoBar(const QString &errorMessage, int line, int column);
void hideInfoBar();
void setInvalidServiceInfo();
void clearInvalidServiceInfo();
void parseManifest(QXmlStreamReader &reader, QXmlStreamWriter &writer);
void parseApplication(QXmlStreamReader &reader, QXmlStreamWriter &writer);
void parseSplashScreen(QXmlStreamWriter &writer);
void parseService(QXmlStreamReader &reader, QXmlStreamWriter &writer);
void parseNewServices(QXmlStreamWriter &writer);
void parseActivity(QXmlStreamReader &reader, QXmlStreamWriter &writer);
bool parseMetaData(QXmlStreamReader &reader, QXmlStreamWriter &writer);
void parseUsesSdk(QXmlStreamReader &reader, QXmlStreamWriter &writer);
@@ -129,15 +124,13 @@ private:
QXmlStreamWriter &writer,
const QSet<QString> &permissions);
QString parseComment(QXmlStreamReader &reader, QXmlStreamWriter &writer);
void parseUnknownElement(QXmlStreamReader &reader, QXmlStreamWriter &writer, bool ignore=false);
void parseUnknownElement(QXmlStreamReader &reader, QXmlStreamWriter &writer);
QGroupBox *createPermissionsGroupBox(QWidget *parent);
QGroupBox *createPackageFormLayout(QWidget *parent);
QGroupBox *createApplicationGroupBox(QWidget *parent);
QGroupBox *createAdvancedGroupBox(QWidget *parent);
void addServiceMetadata(QXmlStreamWriter &writer);
bool m_dirty = false; // indicates that we need to call syncToEditor()
bool m_stayClean = false;
int m_errorLine;
@@ -170,8 +163,6 @@ private:
QPushButton *m_removePermissionButton;
QComboBox *m_permissionsComboBox;
// Services
AndroidServiceWidget *m_services;
QTimer m_timerParseCheck;
TextEditor::TextEditorWidget *m_textEditorWidget;
AndroidManifestEditor *m_editor;