sdext/source/minimizer/optimizerdialog.cxx |   30 +++++++++++++++++++----------
 sdext/source/minimizer/optimizerdialog.hxx |   28 +++++++++++++++++----------
 2 files changed, 38 insertions(+), 20 deletions(-)

New commits:
commit c13bd9d995d82a4f35122fbf1a99516799e83819
Author:     Caolán McNamara <caolan.mcnam...@collabora.com>
AuthorDate: Thu Jul 11 14:37:31 2024 +0100
Commit:     Adolfo Jayme Barrientos <fit...@ubuntu.com>
CommitDate: Sat Jul 13 21:13:22 2024 +0200

    Resolves: tdf#161965 missing UpdateControlStates on page switch
    
    since:
    
    commit a70ad1568ea0fb5b4d7f888fb56fcee130afc433
    Date:   Mon Dec 5 11:44:48 2022 +0000
    
        Resolves: tdf#121297 weld Presentation Minimizer
    
    Change-Id: Ibe28ba79d958d306440807adec9c5bbb64a8801d
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170348
    Tested-by: Jenkins
    Reviewed-by: Adolfo Jayme Barrientos <fit...@ubuntu.com>

diff --git a/sdext/source/minimizer/optimizerdialog.cxx 
b/sdext/source/minimizer/optimizerdialog.cxx
index 8c85d14fcaec..fc51677a2f00 100644
--- a/sdext/source/minimizer/optimizerdialog.cxx
+++ b/sdext/source/minimizer/optimizerdialog.cxx
@@ -52,9 +52,23 @@ using namespace ::com::sun::star::util;
 using namespace ::com::sun::star::frame;
 using namespace ::com::sun::star::beans;
 
-IntroPage::IntroPage(weld::Container* pPage, OptimizerDialog& rOptimizerDialog)
-    : vcl::OWizardPage(pPage, &rOptimizerDialog, 
u"modules/simpress/ui/pmintropage.ui"_ustr, u"PMIntroPage"_ustr)
+OptimizedDialogPage::OptimizedDialogPage(weld::Container* pPage, 
OptimizerDialog& rOptimizerDialog,
+                                         const OUString& rUIXMLDescription, 
const OUString& rID,
+                                         int nPageNum)
+    : vcl::OWizardPage(pPage, &rOptimizerDialog, rUIXMLDescription, rID)
     , mrOptimizerDialog(rOptimizerDialog)
+    , m_nPageNum(nPageNum)
+{
+}
+
+void OptimizedDialogPage::Activate()
+{
+    vcl::OWizardPage::Activate();
+    mrOptimizerDialog.UpdateControlStates(m_nPageNum);
+}
+
+IntroPage::IntroPage(weld::Container* pPage, OptimizerDialog& rOptimizerDialog)
+    : OptimizedDialogPage(pPage, rOptimizerDialog, 
u"modules/simpress/ui/pmintropage.ui"_ustr, u"PMIntroPage"_ustr, 0)
     , mxComboBox(m_xBuilder->weld_combo_box(u"LB_SETTINGS"_ustr))
     , mxButton(m_xBuilder->weld_button(u"STR_REMOVE"_ustr))
 {
@@ -73,8 +87,7 @@ void IntroPage::UpdateControlStates(const 
std::vector<OUString>& rItemList, int
 }
 
 SlidesPage::SlidesPage(weld::Container* pPage, OptimizerDialog& 
rOptimizerDialog)
-    : vcl::OWizardPage(pPage, &rOptimizerDialog, 
u"modules/simpress/ui/pmslidespage.ui"_ustr, u"PMSlidesPage"_ustr)
-    , mrOptimizerDialog(rOptimizerDialog)
+    : OptimizedDialogPage(pPage, rOptimizerDialog, 
u"modules/simpress/ui/pmslidespage.ui"_ustr, u"PMSlidesPage"_ustr, 1)
     , 
mxMasterSlides(m_xBuilder->weld_check_button(u"STR_DELETE_MASTER_PAGES"_ustr))
     , 
mxHiddenSlides(m_xBuilder->weld_check_button(u"STR_DELETE_HIDDEN_SLIDES"_ustr))
     , mxUnusedSlides(m_xBuilder->weld_check_button(u"STR_CUSTOM_SHOW"_ustr))
@@ -105,8 +118,7 @@ void SlidesPage::UpdateControlStates(bool 
bDeleteUnusedMasterPages, bool bDelete
 }
 
 ImagesPage::ImagesPage(weld::Container* pPage, OptimizerDialog& 
rOptimizerDialog)
-    : vcl::OWizardPage(pPage, &rOptimizerDialog, 
u"modules/simpress/ui/pmimagespage.ui"_ustr, u"PMImagesPage"_ustr)
-    , mrOptimizerDialog(rOptimizerDialog)
+    : OptimizedDialogPage(pPage, rOptimizerDialog, 
u"modules/simpress/ui/pmimagespage.ui"_ustr, u"PMImagesPage"_ustr, 2)
     , 
m_xLossLessCompression(m_xBuilder->weld_radio_button(u"STR_LOSSLESS_COMPRESSION"_ustr))
     , m_xQualityLabel(m_xBuilder->weld_label(u"STR_QUALITY"_ustr))
     , m_xQuality(m_xBuilder->weld_spin_button(u"SB_QUALITY"_ustr))
@@ -139,8 +151,7 @@ void ImagesPage::UpdateControlStates(bool bJPEGCompression, 
int nJPEGQuality, bo
 }
 
 ObjectsPage::ObjectsPage(weld::Container* pPage, OptimizerDialog& 
rOptimizerDialog)
-    : vcl::OWizardPage(pPage, &rOptimizerDialog, 
u"modules/simpress/ui/pmobjectspage.ui"_ustr, u"PMObjectsPage"_ustr)
-    , mrOptimizerDialog(rOptimizerDialog)
+    : OptimizedDialogPage(pPage, rOptimizerDialog, 
u"modules/simpress/ui/pmobjectspage.ui"_ustr, u"PMObjectsPage"_ustr, 3)
     , 
m_xCreateStaticImage(m_xBuilder->weld_check_button(u"STR_OLE_REPLACE"_ustr))
     , 
m_xAllOLEObjects(m_xBuilder->weld_radio_button(u"STR_ALL_OLE_OBJECTS"_ustr))
     , 
m_xForeignOLEObjects(m_xBuilder->weld_radio_button(u"STR_ALIEN_OLE_OBJECTS_ONLY"_ustr))
@@ -167,8 +178,7 @@ void ObjectsPage::UpdateControlStates(bool 
bConvertOLEObjects, int nOLEOptimizat
 }
 
 SummaryPage::SummaryPage(weld::Container* pPage, OptimizerDialog& 
rOptimizerDialog)
-    : vcl::OWizardPage(pPage, &rOptimizerDialog, 
u"modules/simpress/ui/pmsummarypage.ui"_ustr, u"PMSummaryPage"_ustr)
-    , mrOptimizerDialog(rOptimizerDialog)
+    : OptimizedDialogPage(pPage, rOptimizerDialog, 
u"modules/simpress/ui/pmsummarypage.ui"_ustr, u"PMSummaryPage"_ustr, 4)
     , m_xLabel1(m_xBuilder->weld_label(u"LABEL1"_ustr))
     , m_xLabel2(m_xBuilder->weld_label(u"LABEL2"_ustr))
     , m_xLabel3(m_xBuilder->weld_label(u"LABEL3"_ustr))
diff --git a/sdext/source/minimizer/optimizerdialog.hxx 
b/sdext/source/minimizer/optimizerdialog.hxx
index 88c01b54300b..f095ccf0556f 100644
--- a/sdext/source/minimizer/optimizerdialog.hxx
+++ b/sdext/source/minimizer/optimizerdialog.hxx
@@ -47,10 +47,22 @@
 
 class OptimizerDialog;
 
-class IntroPage : public vcl::OWizardPage
+class OptimizedDialogPage : public vcl::OWizardPage
 {
-private:
+protected:
     OptimizerDialog& mrOptimizerDialog;
+private:
+    int m_nPageNum;
+public:
+    OptimizedDialogPage(weld::Container* pPage, OptimizerDialog& 
rOptimizerDialog,
+                        const OUString& rUIXMLDescription, const OUString& rID,
+                        int nPageNum);
+    virtual void Activate() override;
+};
+
+class IntroPage : public OptimizedDialogPage
+{
+private:
     std::unique_ptr<weld::ComboBox> mxComboBox;
     std::unique_ptr<weld::Button> mxButton;
 
@@ -66,10 +78,9 @@ public:
     }
 };
 
-class SlidesPage : public vcl::OWizardPage
+class SlidesPage : public OptimizedDialogPage
 {
 private:
-    OptimizerDialog& mrOptimizerDialog;
     std::unique_ptr<weld::CheckButton> mxMasterSlides;
     std::unique_ptr<weld::CheckButton> mxHiddenSlides;
     std::unique_ptr<weld::CheckButton> mxUnusedSlides;
@@ -93,10 +104,9 @@ public:
     }
 };
 
-class ImagesPage : public vcl::OWizardPage
+class ImagesPage : public OptimizedDialogPage
 {
 private:
-    OptimizerDialog& mrOptimizerDialog;
     std::unique_ptr<weld::RadioButton> m_xLossLessCompression;
     std::unique_ptr<weld::Label> m_xQualityLabel;
     std::unique_ptr<weld::SpinButton> m_xQuality;
@@ -118,10 +128,9 @@ public:
                              int nResolution, bool bEmbedLinkedGraphics);
 };
 
-class ObjectsPage : public vcl::OWizardPage
+class ObjectsPage : public OptimizedDialogPage
 {
 private:
-    OptimizerDialog& mrOptimizerDialog;
     std::unique_ptr<weld::CheckButton> m_xCreateStaticImage;
     std::unique_ptr<weld::RadioButton> m_xAllOLEObjects;
     std::unique_ptr<weld::RadioButton> m_xForeignOLEObjects;
@@ -138,10 +147,9 @@ public:
     void UpdateControlStates(bool bConvertOLEObjects, int 
nOLEOptimizationType);
 };
 
-class SummaryPage : public vcl::OWizardPage
+class SummaryPage : public OptimizedDialogPage
 {
 private:
-    OptimizerDialog& mrOptimizerDialog;
     std::unique_ptr<weld::Label> m_xLabel1;
     std::unique_ptr<weld::Label> m_xLabel2;
     std::unique_ptr<weld::Label> m_xLabel3;

Reply via email to