[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[libreoffice] 06/25: fix mailmerge without libreoffice-base scenario



This is an automated email from the git hooks/post-receive script.

sweetshark-guest pushed a commit to branch ubuntu-wily-5.0
in repository libreoffice.

commit 4425f83babff7eeba7ff9eba89c7353d26411441
Author: Bjoern Michaelsen <bjoern.michaelsen@canonical.com>
Date:   Tue May 19 17:04:16 2015 +0200

    fix mailmerge without libreoffice-base scenario
---
 changelog                   |   6 ++
 patches/mailmerge-base.diff | 162 ++++++++++++++++++++++++++++++++++++++++++++
 patches/series              |   1 +
 3 files changed, 169 insertions(+)

diff --git a/changelog b/changelog
index 24784cb..d2b6ae0 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,9 @@
+libreoffice (1:4.4.3~rc2-0ubuntu1~vivid4) vivid; urgency=medium
+
+  * Fix mailmerge without libreoffice-base scenario
+
+ -- Bjoern Michaelsen <bjoern.michaelsen@canonical.com>  Tue, 19 May 2015 17:01:04 +0200
+
 libreoffice (1:4.4.3~rc2-0ubuntu1~vivid3) vivid; urgency=medium
 
   * add upstream hack to prevent crash on exit (LP: #1418551)
diff --git a/patches/mailmerge-base.diff b/patches/mailmerge-base.diff
new file mode 100644
index 0000000..318f540
--- /dev/null
+++ b/patches/mailmerge-base.diff
@@ -0,0 +1,162 @@
+From: Bjoern Michaelsen <bjoern.michaelsen@canonical.com>
+Date: Tue, 19 May 2015 13:58:13 +0200
+Subject: [PATCH] check for and handle missing base in mail merge (related:
+ fdo#33266)
+
+Change-Id: I3e362a873c28026cbecf005c07def1295aa920e0
+
+Conflicts:
+	sw/source/uibase/app/apphdl.cxx
+
+---
+ include/svtools/restartdialog.hxx        |  5 +++-
+ svtools/source/dialogs/restartdialog.cxx |  3 +++
+ svtools/uiconfig/ui/restartdialog.ui     | 15 +++++++++++
+ sw/source/uibase/app/apphdl.cxx          | 45 +++++++++++++++++++++++++++++++-
+ 4 files changed, 66 insertions(+), 2 deletions(-)
+
+diff --git a/include/svtools/restartdialog.hxx b/include/svtools/restartdialog.hxx
+--- a/include/svtools/restartdialog.hxx
++++ b/include/svtools/restartdialog.hxx
+@@ -29,9 +29,12 @@ enum RestartReason {
+     RESTART_REASON_PDF_AS_STANDARD_JOB_FORMAT,
+         // For the modified default print job format to take effect,
+         // %PRODUCTNAME must be restarted.
+-    RESTART_REASON_BIBLIOGRAPHY_INSTALL
++    RESTART_REASON_BIBLIOGRAPHY_INSTALL,
+         // "For the bibliography to work properly,
+         // %PRODUCTNAME must be restarted."
++    RESTART_REASON_MAILMERGE_INSTALL
++        // "For the mail merge to work properly,
++        // %PRODUCTNAME must be restarted."
+ };
+ 
+ // Must be called with the solar mutex locked:
+diff --git a/svtools/source/dialogs/restartdialog.cxx b/svtools/source/dialogs/restartdialog.cxx
+--- a/svtools/source/dialogs/restartdialog.cxx
++++ b/svtools/source/dialogs/restartdialog.cxx
+@@ -40,6 +40,9 @@ public:
+         case svtools::RESTART_REASON_BIBLIOGRAPHY_INSTALL:
+             get(reason_, "reason_bibliography_install");
+             break;
++        case svtools::RESTART_REASON_MAILMERGE_INSTALL:
++            get(reason_, "reason_mailmerge_install");
++            break;
+         default:
+             assert(false); // this cannot happen
+         }
+diff --git a/svtools/uiconfig/ui/restartdialog.ui b/svtools/uiconfig/ui/restartdialog.ui
+--- a/svtools/uiconfig/ui/restartdialog.ui
++++ b/svtools/uiconfig/ui/restartdialog.ui
+@@ -101,6 +101,21 @@
+               </packing>
+             </child>
+             <child>
++              <object class="GtkLabel" id="reason_mailmerge_install">
++                <property name="can_focus">False</property>
++                <property name="no_show_all">True</property>
++                <property name="xalign">0</property>
++                <property name="label" translatable="yes">For the mail merge to work properly, %PRODUCTNAME must be restarted.</property>
++                <property name="wrap">True</property>
++                <property name="max_width_chars">50</property>
++              </object>
++              <packing>
++                <property name="expand">False</property>
++                <property name="fill">True</property>
++                <property name="position">2</property>
++              </packing>
++            </child>
++            <child>
+               <object class="GtkLabel" id="label">
+                 <property name="visible">True</property>
+                 <property name="can_focus">False</property>
+diff --git a/sw/source/uibase/app/apphdl.cxx b/sw/source/uibase/app/apphdl.cxx
+--- a/sw/source/uibase/app/apphdl.cxx
++++ b/sw/source/uibase/app/apphdl.cxx
+@@ -21,17 +21,19 @@
+ 
+ #include <hintids.hxx>
+ 
++#include <comphelper/processfactory.hxx>
+ #include <osl/diagnose.h>
+ #include <tools/link.hxx>
+ #include <svl/urihelper.hxx>
+ #include <unotools/pathoptions.hxx>
+-#include <svtools/accessibilityoptions.hxx>
+ #include <sfx2/dispatch.hxx>
+ #include <sfx2/event.hxx>
+ #include <sfx2/objitem.hxx>
+ #include <svx/dataaccessdescriptor.hxx>
+ #include <svl/srchitem.hxx>
++#include <svtools/accessibilityoptions.hxx>
+ #include <svtools/colorcfg.hxx>
++#include <svtools/restartdialog.hxx>
+ #include <svl/eitem.hxx>
+ #include <svl/whiter.hxx>
+ #include <svl/isethint.hxx>
+@@ -92,7 +94,9 @@
+ #include <com/sun/star/beans/XPropertyContainer.hpp>
+ #include <com/sun/star/container/XChild.hpp>
+ #include <com/sun/star/sdbc/XConnection.hpp>
++#include <com/sun/star/sdb/TextConnectionSettings.hpp>
+ #include <com/sun/star/sdbc/XDataSource.hpp>
++#include <org/freedesktop/PackageKit/SyncDbusSessionHelper.hpp>
+ #include <swabstdlg.hxx>
+ 
+ #include <vcl/status.hxx>
+@@ -115,6 +119,24 @@ using namespace ::com::sun::star;
+ 
+ #include <shells.hrc>
+ 
++namespace
++{
++    static bool lcl_hasAllComponentsAvailable()
++    {
++        try
++        {
++            return css::sdb::TextConnectionSettings::create(comphelper::getProcessComponentContext()).is();
++        }
++        catch (css::uno::Exception & e)
++        {
++            SAL_INFO(
++                "sw.core",
++                "assuming Base to be missing; caught " << e.Message);
++            return false;
++        }
++    }
++}
++
+ SFX_IMPL_INTERFACE(SwModule, SfxModule, SW_RES(RID_SW_NAME) )
+ 
+ void SwModule::InitInterface_Impl()
+@@ -277,6 +299,27 @@ SwMailMergeWizardExecutor::~SwMailMergeWizardExecutor()
+ 
+ void SwMailMergeWizardExecutor::ExecuteMailMergeWizard( const SfxItemSet * pArgs )
+ {
++    if(!lcl_hasAllComponentsAvailable())
++    {
++        try
++        {
++            using namespace org::freedesktop::PackageKit;
++            using namespace svtools;
++            css::uno::Reference< XSyncDbusSessionHelper > xSyncDbusSessionHelper(SyncDbusSessionHelper::create(comphelper::getProcessComponentContext()));
++            const css::uno::Sequence< OUString > vPackages{ "libreoffice-base" };
++            OUString sInteraction;
++            xSyncDbusSessionHelper->InstallPackageNames(0, vPackages, sInteraction);
++            SolarMutexGuard aGuard;
++            executeRestartDialog(comphelper::getProcessComponentContext(), NULL, RESTART_REASON_MAILMERGE_INSTALL);
++        }
++        catch (const css::uno::Exception & e)
++        {
++            SAL_INFO(
++                "sw.core",
++                "trying to install LibreOffice Base, caught " << e.Message);
++        }
++        return;
++    }
+     if ( m_pView )
+     {
+         OSL_FAIL("SwMailMergeWizardExecutor::ExecuteMailMergeWizard: Already executing the wizard!" );
+-- 
+1.9.1
+
diff --git a/patches/series b/patches/series
index 1055094..9e896da 100644
--- a/patches/series
+++ b/patches/series
@@ -30,3 +30,4 @@ g_strdup_printf_format.diff
 lp-753627-readd-updated-Ubuntu-brand-palette-colors.diff
 kubuntu_breeze-icons.diff
 lp-1418551.diff
+mailmerge-base.diff

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-openoffice/libreoffice.git


Reply to: