From 2e39132debcff470905835ed2494fce581180cca Mon Sep 17 00:00:00 2001 From: Ville Voutilainen Date: Tue, 29 Sep 2020 15:01:30 +0300 Subject: Android: Set the manifest dirty when app icons are set or removed Task-number: QTCREATORBUG-24700 Change-Id: I862b5a17f47c7c6bbf7900b8923a246b8e902190 Reviewed-by: Assam Boudjelthia --- .../android/androidmanifesteditoriconcontainerwidget.cpp | 13 +++++++++++++ .../android/androidmanifesteditoriconcontainerwidget.h | 5 ++++- src/plugins/android/androidmanifesteditorwidget.cpp | 2 ++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/plugins/android/androidmanifesteditoriconcontainerwidget.cpp b/src/plugins/android/androidmanifesteditoriconcontainerwidget.cpp index 3cd14cdeaf..e15fd26452 100644 --- a/src/plugins/android/androidmanifesteditoriconcontainerwidget.cpp +++ b/src/plugins/android/androidmanifesteditoriconcontainerwidget.cpp @@ -99,10 +99,22 @@ AndroidManifestEditorIconContainerWidget::AndroidManifestEditorIconContainerWidg m_iconButtons.push_back(hIconButton); iconLayout->addStretch(6); + auto handleIconModification = [this] { + bool iconsMaybeChanged = hasIcons(); + if (m_hasIcons != iconsMaybeChanged) + iconsModified(); + m_hasIcons = iconsMaybeChanged; + }; for (auto &&iconButton : m_iconButtons) { connect(masterIconButton, &AndroidManifestEditorIconWidget::iconSelected, iconButton, &AndroidManifestEditorIconWidget::setIconFromPath); + connect(iconButton, &AndroidManifestEditorIconWidget::iconRemoved, + this, handleIconModification); + connect(iconButton, &AndroidManifestEditorIconWidget::iconSelected, + this, handleIconModification); } + connect(masterIconButton, &AndroidManifestEditorIconWidget::iconSelected, + this, handleIconModification); } void AndroidManifestEditorIconContainerWidget::setIconFileName(const QString &name) @@ -121,6 +133,7 @@ void AndroidManifestEditorIconContainerWidget::loadIcons() iconButton->setTargetIconFileName(m_iconFileName + imageSuffix); iconButton->loadIcon(); } + m_hasIcons = hasIcons(); } bool AndroidManifestEditorIconContainerWidget::hasIcons() const diff --git a/src/plugins/android/androidmanifesteditoriconcontainerwidget.h b/src/plugins/android/androidmanifesteditoriconcontainerwidget.h index 2e657d017a..d4a51b5929 100644 --- a/src/plugins/android/androidmanifesteditoriconcontainerwidget.h +++ b/src/plugins/android/androidmanifesteditoriconcontainerwidget.h @@ -42,7 +42,7 @@ class AndroidManifestEditorIconWidget; class AndroidManifestEditorIconContainerWidget : public QWidget { - Q_DECLARE_TR_FUNCTIONS(Android::Internal::AndroidManifestEditorIconContainerWidget) + Q_OBJECT public: explicit AndroidManifestEditorIconContainerWidget(QWidget *parent, @@ -54,6 +54,9 @@ public: private: QVector m_iconButtons; QString m_iconFileName = QLatin1String("icon"); + bool m_hasIcons = false; +signals: + void iconsModified(); }; } // namespace Internal diff --git a/src/plugins/android/androidmanifesteditorwidget.cpp b/src/plugins/android/androidmanifesteditorwidget.cpp index a235e431cb..49013e31b5 100644 --- a/src/plugins/android/androidmanifesteditorwidget.cpp +++ b/src/plugins/android/androidmanifesteditorwidget.cpp @@ -461,6 +461,8 @@ QGroupBox *AndroidManifestEditorWidget::createAdvancedGroupBox(QWidget *parent) this, &AndroidManifestEditorWidget::setInvalidServiceInfo); connect(m_splashButtons, &SplashIconContainerWidget::splashScreensModified, this, [this]() { setDirty(); }); + connect(m_iconButtons, &AndroidManifestEditorIconContainerWidget::iconsModified, + this, [this]() { setDirty(); }); formLayout->addRow(m_advanvedTabWidget); otherGroupBox->setLayout(formLayout); -- cgit v1.2.3