diff options
author | Daniel Teske <daniel.teske@digia.com> | 2014-03-10 21:37:38 +0100 |
---|---|---|
committer | Daniel Teske <daniel.teske@digia.com> | 2014-03-12 10:45:34 +0100 |
commit | de8b8604414786980a1b219693314f67ed09cc72 (patch) | |
tree | e4de7c5c7c84b80668e044d5d534a8165db5e119 /src/plugins/android/androidmanifesteditorwidget.h | |
parent | 8303f793abc95de32c3525bd9b8f7e85f7d5e758 (diff) | |
download | qt-creator-de8b8604414786980a1b219693314f67ed09cc72.tar.gz |
AndroidManifestEditor: Rewrite writing of xml files
Using QXmlStreamWriter + QXmlStreamReader gives us greater control
over the ordering of attributes. That way we can ensure that we never
change the ordering that the user used. (Whereas for QDom the best
we can do is to have a predictable but random order.)
Neither QXmlStreamWriter nor QDom allows us to control the indentation
and other whitespace, so any user indentation is lost.
In addtion QXmlStreamWriter seems to have several bugs with indentation
though, leading to rather strangely formatted files.
Task-number: QTCREATORBUG-10870
Change-Id: I4cdbdcd499227f418e7767eb1b532efbbd5083a5
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Reviewed-by: Alessandro Portale <alessandro.portale@digia.com>
Diffstat (limited to 'src/plugins/android/androidmanifesteditorwidget.h')
-rw-r--r-- | src/plugins/android/androidmanifesteditorwidget.h | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/plugins/android/androidmanifesteditorwidget.h b/src/plugins/android/androidmanifesteditorwidget.h index ab19800e2f..b35d7ccd2f 100644 --- a/src/plugins/android/androidmanifesteditorwidget.h +++ b/src/plugins/android/androidmanifesteditorwidget.h @@ -48,6 +48,8 @@ class QLineEdit; class QListView; class QSpinBox; class QToolButton; +class QXmlStreamReader; +class QXmlStreamWriter; QT_END_NAMESPACE namespace Core { class IEditor; } @@ -137,7 +139,6 @@ private: void syncToEditor(); bool checkDocument(QDomDocument doc, QString *errorMessage, int *errorLine, int *errorColumn); - bool setAndroidAppLibName(QDomDocument document, QDomElement activity, const QString &name); enum IconDPI { LowDPI, MediumDPI, HighDPI }; QIcon icon(const QString &baseDir, IconDPI dpi); QString iconPath(const QString &baseDir, IconDPI dpi); @@ -147,6 +148,14 @@ private: void hideInfoBar(); Q_SLOT void updateTargetComboBox(); + void parseManifest(QXmlStreamReader &reader, QXmlStreamWriter &writer); + void parseApplication(QXmlStreamReader &reader, QXmlStreamWriter &writer); + void parseActivity(QXmlStreamReader &reader, QXmlStreamWriter &writer); + bool parseMetaData(QXmlStreamReader &reader, QXmlStreamWriter &writer); + void parseUsesSdk(QXmlStreamReader &reader, QXmlStreamWriter &writer); + QString parseUsesPermission(QXmlStreamReader &reader, QXmlStreamWriter &writer, const QSet<QString> permissions); + void parseUnknownElement(QXmlStreamReader &reader, QXmlStreamWriter &writer); + bool m_dirty; // indicates that we need to call syncToEditor() bool m_stayClean; bool m_setAppName; |