Android: Set the manifest dirty when app icons are set or removed

Task-number: QTCREATORBUG-24700
Change-Id: I862b5a17f47c7c6bbf7900b8923a246b8e902190
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
This commit is contained in:
Ville Voutilainen
2020-09-29 15:01:30 +03:00
parent a37a02a6b3
commit 2e39132deb
3 changed files with 19 additions and 1 deletions

View File

@@ -99,10 +99,22 @@ AndroidManifestEditorIconContainerWidget::AndroidManifestEditorIconContainerWidg
m_iconButtons.push_back(hIconButton); m_iconButtons.push_back(hIconButton);
iconLayout->addStretch(6); iconLayout->addStretch(6);
auto handleIconModification = [this] {
bool iconsMaybeChanged = hasIcons();
if (m_hasIcons != iconsMaybeChanged)
iconsModified();
m_hasIcons = iconsMaybeChanged;
};
for (auto &&iconButton : m_iconButtons) { for (auto &&iconButton : m_iconButtons) {
connect(masterIconButton, &AndroidManifestEditorIconWidget::iconSelected, connect(masterIconButton, &AndroidManifestEditorIconWidget::iconSelected,
iconButton, &AndroidManifestEditorIconWidget::setIconFromPath); 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) void AndroidManifestEditorIconContainerWidget::setIconFileName(const QString &name)
@@ -121,6 +133,7 @@ void AndroidManifestEditorIconContainerWidget::loadIcons()
iconButton->setTargetIconFileName(m_iconFileName + imageSuffix); iconButton->setTargetIconFileName(m_iconFileName + imageSuffix);
iconButton->loadIcon(); iconButton->loadIcon();
} }
m_hasIcons = hasIcons();
} }
bool AndroidManifestEditorIconContainerWidget::hasIcons() const bool AndroidManifestEditorIconContainerWidget::hasIcons() const

View File

@@ -42,7 +42,7 @@ class AndroidManifestEditorIconWidget;
class AndroidManifestEditorIconContainerWidget : public QWidget class AndroidManifestEditorIconContainerWidget : public QWidget
{ {
Q_DECLARE_TR_FUNCTIONS(Android::Internal::AndroidManifestEditorIconContainerWidget) Q_OBJECT
public: public:
explicit AndroidManifestEditorIconContainerWidget(QWidget *parent, explicit AndroidManifestEditorIconContainerWidget(QWidget *parent,
@@ -54,6 +54,9 @@ public:
private: private:
QVector<AndroidManifestEditorIconWidget *> m_iconButtons; QVector<AndroidManifestEditorIconWidget *> m_iconButtons;
QString m_iconFileName = QLatin1String("icon"); QString m_iconFileName = QLatin1String("icon");
bool m_hasIcons = false;
signals:
void iconsModified();
}; };
} // namespace Internal } // namespace Internal

View File

@@ -461,6 +461,8 @@ QGroupBox *AndroidManifestEditorWidget::createAdvancedGroupBox(QWidget *parent)
this, &AndroidManifestEditorWidget::setInvalidServiceInfo); this, &AndroidManifestEditorWidget::setInvalidServiceInfo);
connect(m_splashButtons, &SplashIconContainerWidget::splashScreensModified, connect(m_splashButtons, &SplashIconContainerWidget::splashScreensModified,
this, [this]() { setDirty(); }); this, [this]() { setDirty(); });
connect(m_iconButtons, &AndroidManifestEditorIconContainerWidget::iconsModified,
this, [this]() { setDirty(); });
formLayout->addRow(m_advanvedTabWidget); formLayout->addRow(m_advanvedTabWidget);
otherGroupBox->setLayout(formLayout); otherGroupBox->setLayout(formLayout);