[Libreoffice-commits] core.git: svx/source svx/uiconfig

Samuel Mehrbrodt Samuel.Mehrbrodt at cib.de
Mon Oct 17 13:13:56 UTC 2016


 svx/source/dialog/SafeModeDialog.cxx |   50 +++++++++++
 svx/source/dialog/SafeModeDialog.hxx |    5 +
 svx/uiconfig/ui/safemodedialog.ui    |  148 ++++++++++++++++++++++++-----------
 3 files changed, 156 insertions(+), 47 deletions(-)

New commits:
commit 148ca1024379e3712df4d855595df9bb46cdb1c4
Author: Samuel Mehrbrodt <Samuel.Mehrbrodt at cib.de>
Date:   Mon Oct 17 11:45:27 2016 +0200

    safemode: Add hints how to get help/report a bug
    
    Change-Id: Ie65e9706017f5f56fa4c453aa3fdb117b201096e
    Reviewed-on: https://gerrit.libreoffice.org/29961
    Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt at cib.de>
    Tested-by: Samuel Mehrbrodt <Samuel.Mehrbrodt at cib.de>

diff --git a/svx/source/dialog/SafeModeDialog.cxx b/svx/source/dialog/SafeModeDialog.cxx
index a2e6ca2..d5a2e6a 100644
--- a/svx/source/dialog/SafeModeDialog.cxx
+++ b/svx/source/dialog/SafeModeDialog.cxx
@@ -12,13 +12,21 @@
 #include <config_folders.h>
 #include <rtl/bootstrap.hxx>
 #include <osl/file.hxx>
-#include <comphelper/processfactory.hxx>
 #include <sfx2/safemode.hxx>
+#include <vcl/svapp.hxx>
+#include <vcl/layout.hxx>
+#include <comphelper/anytostring.hxx>
+#include <comphelper/processfactory.hxx>
+#include <cppuhelper/exc_hlp.hxx>
+#include <unotools/configmgr.hxx>
 
 #include <com/sun/star/frame/Desktop.hpp>
 #include <com/sun/star/frame/XDesktop2.hpp>
 #include <com/sun/star/task/OfficeRestartManager.hpp>
 #include <com/sun/star/task/XInteractionHandler.hpp>
+#include <com/sun/star/system/XSystemShellExecute.hpp>
+#include <com/sun/star/system/SystemShellExecuteFlags.hpp>
+#include <com/sun/star/system/SystemShellExecute.hpp>
 
 using namespace css;
 
@@ -47,6 +55,8 @@ SafeModeDialog::SafeModeDialog(vcl::Window* pParent)
     get(mpCBResetCustomizations, "check_reset_customizations");
     get(mpCBResetWholeUserProfile, "check_reset_whole_userprofile");
 
+    get(mpBugLink, "linkbutton_bugs");
+
     mpBtnContinue->SetClickHdl(LINK(this, SafeModeDialog, BtnHdl));
     mpBtnQuit->SetClickHdl(LINK(this, SafeModeDialog, BtnHdl));
     mpBtnRestart->SetClickHdl(LINK(this, SafeModeDialog, BtnHdl));
@@ -57,6 +67,8 @@ SafeModeDialog::SafeModeDialog(vcl::Window* pParent)
     mpCBResetCustomizations->SetToggleHdl(LINK(this, SafeModeDialog, CheckBoxHdl));
     mpCBResetWholeUserProfile->SetToggleHdl(LINK(this, SafeModeDialog, CheckBoxHdl));
 
+    mpBugLink->SetClickHdl(LINK(this, SafeModeDialog, HandleHyperlink));
+
     // Disable restart btn until some checkbox is active
     mpBtnRestart->Disable();
 
@@ -79,6 +91,11 @@ SafeModeDialog::SafeModeDialog(vcl::Window* pParent)
     {
         mpCBResetCustomizations->Disable();
     }
+
+    // Set URL for help button (module=safemode)
+    OUString sURL("http://hub.libreoffice.org/send-feedback/?LOversion=" + utl::ConfigManager::getAboutBoxProductVersion() +
+        "&LOlocale=" + utl::ConfigManager::getLocale() + "&LOmodule=safemode");
+    mpBugLink->SetURL(sURL);
 }
 
 SafeModeDialog::~SafeModeDialog()
@@ -98,6 +115,8 @@ void SafeModeDialog::dispose()
     mpCBResetCustomizations.clear();
     mpCBResetWholeUserProfile.clear();
 
+    mpBugLink.clear();
+
     Dialog::dispose();
 }
 
@@ -157,6 +176,30 @@ void SafeModeDialog::applyChanges()
         css::uno::Reference< css::task::XInteractionHandler >());
 }
 
+void SafeModeDialog::openWebBrowser(const OUString & sURL, const OUString &sTitle)
+{
+    if ( sURL.isEmpty() ) // Nothing to do, when the URL is empty
+        return;
+
+    try
+    {
+        uno::Reference< system::XSystemShellExecute > xSystemShellExecute(
+            system::SystemShellExecute::create(comphelper::getProcessComponentContext()));
+        //throws css::lang::IllegalArgumentException, css::system::SystemShellExecuteException
+        xSystemShellExecute->execute( sURL, OUString(), system::SystemShellExecuteFlags::URIS_ONLY );
+    }
+    catch ( const uno::Exception& )
+    {
+        uno::Any exc(cppu::getCaughtException());
+        OUString msg(comphelper::anyToString(exc));
+        const SolarMutexGuard guard;
+        ScopedVclPtrInstance< MessageDialog > aErrorBox(nullptr, msg);
+        aErrorBox->SetText( sTitle );
+        aErrorBox->Execute();
+    }
+}
+
+
 IMPL_LINK(SafeModeDialog, BtnHdl, Button*, pBtn, void)
 {
     if (pBtn == mpBtnContinue.get())
@@ -186,4 +229,9 @@ IMPL_LINK(SafeModeDialog, CheckBoxHdl, CheckBox&, /*pCheckBox*/, void)
     mpBtnRestart->Enable(bEnable);
 }
 
+IMPL_LINK( SafeModeDialog, HandleHyperlink, FixedHyperlink&, rHyperlink, void )
+{
+    SafeModeDialog::openWebBrowser( rHyperlink.GetURL(), GetText() );
+}
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/source/dialog/SafeModeDialog.hxx b/svx/source/dialog/SafeModeDialog.hxx
index 6f2e4af..f84f94d 100644
--- a/svx/source/dialog/SafeModeDialog.hxx
+++ b/svx/source/dialog/SafeModeDialog.hxx
@@ -15,6 +15,7 @@
 #include <vcl/fixed.hxx>
 #include <vcl/edit.hxx>
 #include <vcl/vclmedit.hxx>
+#include <vcl/fixedhyper.hxx>
 #include <comphelper/backupfilehelper.hxx>
 
 class SafeModeDialog : public Dialog
@@ -41,14 +42,18 @@ private:
     VclPtr<CheckBox> mpCBResetCustomizations;
     VclPtr<CheckBox> mpCBResetWholeUserProfile;
 
+    VclPtr<FixedHyperlink> mpBugLink;
+
     // local BackupFileHelper for handling possible restores
     comphelper::BackupFileHelper maBackupFileHelper;
 
     static void terminateOffice();
     void applyChanges();
+    static void openWebBrowser(const OUString & sURL, const OUString &sTitle);
 
     DECL_LINK(CheckBoxHdl, CheckBox&, void);
     DECL_LINK(BtnHdl, Button*, void);
+    DECL_LINK(HandleHyperlink, FixedHyperlink&, void);
 };
 
 #endif
diff --git a/svx/uiconfig/ui/safemodedialog.ui b/svx/uiconfig/ui/safemodedialog.ui
index a1a352a..cfc7e0f 100644
--- a/svx/uiconfig/ui/safemodedialog.ui
+++ b/svx/uiconfig/ui/safemodedialog.ui
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.16.1 -->
+<!-- Generated with glade 3.18.3 -->
 <interface>
   <requires lib="gtk+" version="3.12"/>
   <object class="GtkDialog" id="SafeModeDialog">
@@ -13,16 +13,71 @@
         <property name="can_focus">False</property>
         <property name="orientation">vertical</property>
         <property name="spacing">12</property>
+        <child internal-child="action_area">
+          <object class="GtkButtonBox" id="dialog-action_area1">
+            <property name="can_focus">False</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="btn_continue">
+                <property name="label" translatable="yes">_Continue in Safe Mode</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="has_default">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_underline">True</property>
+              </object>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="btn_quit">
+                <property name="label" translatable="yes">_Quit</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_underline">True</property>
+              </object>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="btn_restart">
+                <property name="label" translatable="yes">_Make Changes and Restart</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_underline">True</property>
+              </object>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">3</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">4</property>
+          </packing>
+        </child>
         <child>
           <object class="GtkLabel" id="label1">
             <property name="visible">True</property>
             <property name="can_focus">False</property>
-            <property name="xalign">0</property>
-            <property name="yalign">0</property>
             <property name="label" translatable="yes">%PRODUCTNAME is now running in Safe Mode. You can make one or more of the following changes to return to a working state.
 
 The offered possible changes get more radical from top to bottom, so it is recommended to try them thoroughly one after the other.</property>
             <property name="wrap">True</property>
+            <property name="xalign">0</property>
+            <property name="yalign">0</property>
           </object>
           <packing>
             <property name="expand">False</property>
@@ -117,59 +172,60 @@ The offered possible changes get more radical from top to bottom, so it is recom
             <property name="position">1</property>
           </packing>
         </child>
-        <child internal-child="action_area">
-          <object class="GtkButtonBox" id="dialog-action_area1">
-            <property name="can_focus">False</property>
-            <property name="layout_style">end</property>
+        <child>
+          <object class="GtkExpander" id="expander1">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
             <child>
-              <object class="GtkButton" id="btn_continue">
-                <property name="label" translatable="yes">_Continue in Safe Mode</property>
+              <object class="GtkBox" id="box2">
                 <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="has_default">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_underline">True</property>
-              </object>
-              <packing>
-                <property name="expand">True</property>
-                <property name="fill">True</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="btn_quit">
-                <property name="label" translatable="yes">_Quit</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_underline">True</property>
+                <property name="can_focus">False</property>
+                <property name="orientation">vertical</property>
+                <property name="spacing">12</property>
+                <child>
+                  <object class="GtkLabel" id="label3">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label" translatable="yes">If you experience problems that are not resolved by using the Safe Mode, visit the following link to get help or report a bug.
+
+You can also include the relevant parts of your User Profile. Beware that it might contain personal data.</property>
+                    <property name="xalign">0</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkLinkButton" id="linkbutton_bugs">
+                    <property name="label" translatable="yes">Get Help</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">True</property>
+                    <property name="relief">none</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
               </object>
-              <packing>
-                <property name="expand">True</property>
-                <property name="fill">True</property>
-                <property name="position">1</property>
-              </packing>
             </child>
-            <child>
-              <object class="GtkButton" id="btn_restart">
-                <property name="label" translatable="yes">_Make Changes and Restart</property>
+            <child type="label">
+              <object class="GtkLabel" id="label2">
                 <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_underline">True</property>
+                <property name="can_focus">False</property>
+                <property name="margin_bottom">6</property>
+                <property name="label" translatable="yes">Advanced</property>
               </object>
-              <packing>
-                <property name="expand">True</property>
-                <property name="fill">True</property>
-                <property name="position">3</property>
-              </packing>
             </child>
           </object>
           <packing>
             <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="pack_type">end</property>
-            <property name="position">4</property>
+            <property name="fill">True</property>
+            <property name="position">3</property>
           </packing>
         </child>
       </object>


More information about the Libreoffice-commits mailing list