include/vcl/weld.hxx           |   10 ++++++++
 sfx2/source/appl/sfxhelp.cxx   |   43 +++++++++++++++++++++---------------
 sfx2/uiconfig/ui/helpmanual.ui |   48 ++++++++++++++++++-----------------------
 3 files changed, 57 insertions(+), 44 deletions(-)

New commits:
commit d37330ce1b356c71b2b3d635ff03f1259bee2fca
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Fri Sep 13 11:12:28 2019 +0100
Commit:     Caolán McNamara <caol...@redhat.com>
CommitDate: Fri Sep 13 17:16:01 2019 +0200

    document how to align extra widgets with message dialog labels
    
    Change-Id: I6c64d1b637120cab71de5f521c0c0268f2f80732
    Reviewed-on: https://gerrit.libreoffice.org/78870
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caol...@redhat.com>
    Tested-by: Caolán McNamara <caol...@redhat.com>

diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx
index 18637cceda7b..d3fd087333df 100644
--- a/include/vcl/weld.hxx
+++ b/include/vcl/weld.hxx
@@ -1936,6 +1936,16 @@ protected:
     std::unique_ptr<weld::Container> m_xOrigParent;
 
 public:
+    /* @param rRelocateId - optional argument of the name of a widget in the 
.ui file
+                            which should be relocated into the content area of 
the dialog.
+
+                            e.g. a checkbox for a "Never show this again" 
option.
+
+                            This results in the named widget relocating to the 
same container
+                            as the messages.  This enables aligning the extra 
widget with the
+                            message labels in the content area container which 
doesn't
+                            explicitly exist in the ui description, but is 
only implied.
+    */
     MessageDialogController(weld::Widget* pParent, const OUString& rUIFile,
                             const OString& rDialogId, const OString& 
rRelocateId = OString());
     virtual Dialog* getDialog() override;
commit e40e04c83f3c8e962c838d63124e653d7dfede89
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Fri Sep 13 10:52:25 2019 +0100
Commit:     Caolán McNamara <caol...@redhat.com>
CommitDate: Fri Sep 13 17:15:52 2019 +0200

    Related: tdf#127195 use MessageDialogController to relocate checkbox
    
    MessageDialogController has an argument which indicates what
    widget in a message dialog should be rearranged to be aligned
    with the message box messsage area, "hidedialog" in this case
    
    remove the indent amount as the relocate logic takes care of
    the intent of that
    
    Change-Id: I92f138e41ec3fd50771d210db8358e9236684157
    Reviewed-on: https://gerrit.libreoffice.org/78869
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caol...@redhat.com>
    Tested-by: Caolán McNamara <caol...@redhat.com>

diff --git a/sfx2/source/appl/sfxhelp.cxx b/sfx2/source/appl/sfxhelp.cxx
index d709ed3591f2..e6942da14fd6 100644
--- a/sfx2/source/appl/sfxhelp.cxx
+++ b/sfx2/source/appl/sfxhelp.cxx
@@ -998,6 +998,25 @@ namespace
     }
 }
 
+class HelpManualMessage : public weld::MessageDialogController
+{
+private:
+    std::unique_ptr<weld::CheckButton> m_xHideOfflineHelpCB;
+
+public:
+    HelpManualMessage(weld::Widget* pParent)
+        : MessageDialogController(pParent, "sfx/ui/helpmanual.ui", 
"onlinehelpmanual", "hidedialog")
+        , m_xHideOfflineHelpCB(m_xBuilder->weld_check_button("hidedialog"))
+    {
+        LanguageTag aLangTag = Application::GetSettings().GetUILanguageTag();
+        OUString sLocaleString = 
SvtLanguageTable::GetLanguageString(aLangTag.getLanguageType());
+        OUString sPrimText = get_primary_text();
+        set_primary_text(sPrimText.replaceAll("$UILOCALE", sLocaleString));
+    }
+
+    bool GetOfflineHelpPopUp() const { return 
!m_xHideOfflineHelpCB->get_active(); }
+};
+
 bool SfxHelp::Start_Impl(const OUString& rURL, const vcl::Window* pWindow, 
const OUString& rKeyword)
 {
     OUStringBuffer aHelpRootURL("vnd.sun.star.help://");
@@ -1126,16 +1145,10 @@ bool SfxHelp::Start_Impl(const OUString& rURL, const 
vcl::Window* pWindow, const
             {
                 weld::Window* pWeldWindow = pWindow ? pWindow->GetFrameWeld() 
: nullptr;
                 aBusy.incBusy(pWeldWindow);
-                std::unique_ptr<weld::Builder> 
xBuilder(Application::CreateBuilder(pWeldWindow, "sfx/ui/helpmanual.ui"));
-                std::unique_ptr<weld::MessageDialog> 
xQueryBox(xBuilder->weld_message_dialog("onlinehelpmanual"));
-                std::unique_ptr<weld::CheckButton> 
m_xHideOfflineHelpCB(xBuilder->weld_check_button("hidedialog"));
-                LanguageTag aLangTag = 
Application::GetSettings().GetUILanguageTag();
-                OUString sLocaleString = SvtLanguageTable::GetLanguageString( 
aLangTag.getLanguageType() );
-                OUString sPrimText = xQueryBox->get_primary_text();
-                xQueryBox->set_primary_text(sPrimText.replaceAll("$UILOCALE", 
sLocaleString));
-                short OnlineHelpBox = xQueryBox->run();
+                HelpManualMessage aQueryBox(pWeldWindow);
+                short OnlineHelpBox = aQueryBox.run();
                 bShowOfflineHelpPopUp = OnlineHelpBox != RET_OK;
-                
aHelpOptions.SetOfflineHelpPopUp(!m_xHideOfflineHelpCB->get_state());
+                
aHelpOptions.SetOfflineHelpPopUp(aQueryBox.GetOfflineHelpPopUp());
                 aBusy.decBusy();
             }
             if(!bShowOfflineHelpPopUp)
@@ -1284,16 +1297,10 @@ bool SfxHelp::Start_Impl(const OUString& rURL, 
weld::Widget* pWidget, const OUSt
             if(bShowOfflineHelpPopUp)
             {
                 aBusy.incBusy(pWidget);
-                std::unique_ptr<weld::Builder> 
xBuilder(Application::CreateBuilder(pWidget, "sfx/ui/helpmanual.ui"));
-                std::unique_ptr<weld::MessageDialog> 
xQueryBox(xBuilder->weld_message_dialog("onlinehelpmanual"));
-                std::unique_ptr<weld::CheckButton> 
m_xHideOfflineHelpCB(xBuilder->weld_check_button("hidedialog"));
-                LanguageTag aLangTag = 
Application::GetSettings().GetUILanguageTag();
-                OUString sLocaleString = SvtLanguageTable::GetLanguageString( 
aLangTag.getLanguageType() );
-                OUString sPrimText = xQueryBox->get_primary_text();
-                xQueryBox->set_primary_text(sPrimText.replaceAll("$UILOCALE", 
sLocaleString));
-                short OnlineHelpBox = xQueryBox->run();
+                HelpManualMessage aQueryBox(pWidget);
+                short OnlineHelpBox = aQueryBox.run();
                 bShowOfflineHelpPopUp = OnlineHelpBox != RET_OK;
-                
aHelpOptions.SetOfflineHelpPopUp(!m_xHideOfflineHelpCB->get_state());
+                
aHelpOptions.SetOfflineHelpPopUp(aQueryBox.GetOfflineHelpPopUp());
                 aBusy.decBusy();
             }
             if(!bShowOfflineHelpPopUp)
diff --git a/sfx2/uiconfig/ui/helpmanual.ui b/sfx2/uiconfig/ui/helpmanual.ui
index 6fe76ea115e2..06df47407d32 100644
--- a/sfx2/uiconfig/ui/helpmanual.ui
+++ b/sfx2/uiconfig/ui/helpmanual.ui
@@ -18,24 +18,6 @@
         <child internal-child="action_area">
           <object class="GtkButtonBox" id="btnbox">
             <property name="can_focus">False</property>
-            <property name="hexpand">True</property>
-            <property name="layout_style">end</property>
-            <child>
-              <object class="GtkCheckButton" id="hidedialog">
-                <property name="label" translatable="yes" 
context="helpmanual|hidedialog">Do not show this dialog again</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">False</property>
-                <property name="xalign">0</property>
-                <property name="draw_indicator">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">0</property>
-                <property name="secondary">True</property>
-              </packing>
-            </child>
             <child>
               <object class="GtkButton" id="website">
                 <property name="label" translatable="yes" 
context="helpmanual|website">Read Help Online</property>
@@ -45,9 +27,9 @@
                 <property name="use_underline">True</property>
               </object>
               <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">1</property>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
               </packing>
             </child>
             <child>
@@ -61,19 +43,33 @@
                 <property name="use_stock">True</property>
               </object>
               <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">2</property>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
               </packing>
             </child>
           </object>
           <packing>
             <property name="expand">False</property>
-            <property name="fill">True</property>
-            <property name="pack_type">end</property>
+            <property name="fill">False</property>
             <property name="position">0</property>
           </packing>
         </child>
+        <child>
+          <object class="GtkCheckButton" id="hidedialog">
+            <property name="label" translatable="yes" 
context="helpmanual|hidedialog">Do not show this dialog again</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">False</property>
+            <property name="xalign">0</property>
+            <property name="draw_indicator">True</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
       </object>
     </child>
     <action-widgets>
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to