Rebased ref, commits from common ancestor: commit bb6cde1a70efaa595fec383e0c26def663736ff4 Author: Jan Holesovsky <ke...@collabora.com> Date: Wed Dec 23 10:43:39 2015 +0100
mailmerge: Icon for the Mail Merge Wizard too. Change-Id: Iae5f6d12a2593249a693ceae894fc864887d0ae9 diff --git a/icon-themes/breeze/links.txt b/icon-themes/breeze/links.txt index 05d232d..9fcfbf3 100644 --- a/icon-themes/breeze/links.txt +++ b/icon-themes/breeze/links.txt @@ -463,6 +463,8 @@ cmd/sc_xlinestyle.png cmd/sc_linestyle.png cmd/sc_hfixedline.png cmd/sc_line.png # Mail merge +cmd/lc_mailmergewizard.png cmd/lc_dsbformletter.png +cmd/sc_mailmergewizard.png cmd/sc_dsbformletter.png cmd/lc_mailmergefirstentry.png cmd/lc_firstrecord.png cmd/sc_mailmergefirstentry.png cmd/sc_firstrecord.png cmd/lc_mailmergelastentry.png cmd/lc_lastrecord.png diff --git a/icon-themes/crystal/links.txt b/icon-themes/crystal/links.txt index 4bce143..6642c92 100644 --- a/icon-themes/crystal/links.txt +++ b/icon-themes/crystal/links.txt @@ -10,6 +10,8 @@ cmd/sc_charbackcolor.png cmd/sc_backcolor.png cmd/lc_charbackcolor.png cmd/lc_backcolor.png # Mail merge +cmd/lc_mailmergewizard.png cmd/lc_dsbformletter.png +cmd/sc_mailmergewizard.png cmd/sc_dsbformletter.png cmd/lc_mailmergefirstentry.png cmd/lc_firstrecord.png cmd/sc_mailmergefirstentry.png cmd/sc_firstrecord.png cmd/lc_mailmergelastentry.png cmd/lc_lastrecord.png diff --git a/icon-themes/elementary/links.txt b/icon-themes/elementary/links.txt index 0db296f..c337c31 100644 --- a/icon-themes/elementary/links.txt +++ b/icon-themes/elementary/links.txt @@ -624,6 +624,8 @@ vcl/source/src/msgbox.png vcl/res/msgbox.png xmlsecurity/res/signet_11x16.png svx/res/signet_11x16.png # Mail merge +cmd/lc_mailmergewizard.png cmd/lc_dsbformletter.png +cmd/sc_mailmergewizard.png cmd/sc_dsbformletter.png cmd/lc_mailmergefirstentry.png cmd/lc_firstrecord.png cmd/sc_mailmergefirstentry.png cmd/sc_firstrecord.png cmd/lc_mailmergelastentry.png cmd/lc_lastrecord.png diff --git a/icon-themes/galaxy/links.txt b/icon-themes/galaxy/links.txt index 687dac5..d068ec2 100644 --- a/icon-themes/galaxy/links.txt +++ b/icon-themes/galaxy/links.txt @@ -88,6 +88,8 @@ cmd/sc_showgraphics.png cmd/sc_graphic.png svtools/res/folderop.png formula/res/fapopen.png # Mail merge +cmd/lc_mailmergewizard.png cmd/lc_dsbformletter.png +cmd/sc_mailmergewizard.png cmd/sc_dsbformletter.png cmd/lc_mailmergefirstentry.png cmd/lc_firstrecord.png cmd/sc_mailmergefirstentry.png cmd/sc_firstrecord.png cmd/lc_mailmergelastentry.png cmd/lc_lastrecord.png diff --git a/icon-themes/hicontrast/links.txt b/icon-themes/hicontrast/links.txt index 3ed8eb0..8147de1 100644 --- a/icon-themes/hicontrast/links.txt +++ b/icon-themes/hicontrast/links.txt @@ -11,6 +11,8 @@ svtools/res/folder.png formula/res/fapclose.png svtools/res/folderop.png formula/res/fapopen.png # Mail merge +cmd/lc_mailmergewizard.png cmd/lc_dsbformletter.png +cmd/sc_mailmergewizard.png cmd/sc_dsbformletter.png cmd/lc_mailmergefirstentry.png cmd/lc_firstrecord.png cmd/sc_mailmergefirstentry.png cmd/sc_firstrecord.png cmd/lc_mailmergelastentry.png cmd/lc_lastrecord.png diff --git a/icon-themes/human/links.txt b/icon-themes/human/links.txt index d3155a6..4f782ab 100644 --- a/icon-themes/human/links.txt +++ b/icon-themes/human/links.txt @@ -13,6 +13,8 @@ cmd/lc_charbackcolor.png cmd/lc_backcolor.png svtools/res/folderop.png formula/res/fapopen.png # Mail merge +cmd/lc_mailmergewizard.png cmd/lc_dsbformletter.png +cmd/sc_mailmergewizard.png cmd/sc_dsbformletter.png cmd/lc_mailmergefirstentry.png cmd/lc_firstrecord.png cmd/sc_mailmergefirstentry.png cmd/sc_firstrecord.png cmd/lc_mailmergelastentry.png cmd/lc_lastrecord.png diff --git a/icon-themes/oxygen/links.txt b/icon-themes/oxygen/links.txt index 4bce143..6642c92 100644 --- a/icon-themes/oxygen/links.txt +++ b/icon-themes/oxygen/links.txt @@ -10,6 +10,8 @@ cmd/sc_charbackcolor.png cmd/sc_backcolor.png cmd/lc_charbackcolor.png cmd/lc_backcolor.png # Mail merge +cmd/lc_mailmergewizard.png cmd/lc_dsbformletter.png +cmd/sc_mailmergewizard.png cmd/sc_dsbformletter.png cmd/lc_mailmergefirstentry.png cmd/lc_firstrecord.png cmd/sc_mailmergefirstentry.png cmd/sc_firstrecord.png cmd/lc_mailmergelastentry.png cmd/lc_lastrecord.png diff --git a/icon-themes/sifr/links.txt b/icon-themes/sifr/links.txt index 61a545a..55d5d7c 100644 --- a/icon-themes/sifr/links.txt +++ b/icon-themes/sifr/links.txt @@ -155,6 +155,8 @@ cmd/lc_insertcolumnsafter.png cmd/lc_insertcolumns.png cmd/sc_insertcolumnsafter.png cmd/sc_insertcolumns.png # Mail merge +cmd/lc_mailmergewizard.png cmd/lc_dsbformletter.png +cmd/sc_mailmergewizard.png cmd/sc_dsbformletter.png cmd/lc_mailmergefirstentry.png cmd/lc_firstrecord.png cmd/sc_mailmergefirstentry.png cmd/sc_firstrecord.png cmd/lc_mailmergelastentry.png cmd/lc_lastrecord.png diff --git a/icon-themes/tango/links.txt b/icon-themes/tango/links.txt index afb2f94..abf6d53 100644 --- a/icon-themes/tango/links.txt +++ b/icon-themes/tango/links.txt @@ -539,6 +539,8 @@ cmd/sc_showgraphics.png cmd/sc_insertgraphic.png cmd/lc_showgraphics.png cmd/lc_insertgraphic.png # Mail merge +cmd/lc_mailmergewizard.png cmd/lc_dsbformletter.png +cmd/sc_mailmergewizard.png cmd/sc_dsbformletter.png cmd/lc_mailmergefirstentry.png cmd/lc_firstrecord.png cmd/sc_mailmergefirstentry.png cmd/sc_firstrecord.png cmd/lc_mailmergelastentry.png cmd/lc_lastrecord.png diff --git a/icon-themes/tango_testing/links.txt b/icon-themes/tango_testing/links.txt index 8746aeb..147c5f1 100644 --- a/icon-themes/tango_testing/links.txt +++ b/icon-themes/tango_testing/links.txt @@ -38,6 +38,8 @@ cmd/sc_charbackcolor.png cmd/sc_backcolor.png cmd/lc_charbackcolor.png cmd/lc_backcolor.png # Mail merge +cmd/lc_mailmergewizard.png cmd/lc_dsbformletter.png +cmd/sc_mailmergewizard.png cmd/sc_dsbformletter.png cmd/lc_mailmergefirstentry.png cmd/lc_firstrecord.png cmd/sc_mailmergefirstentry.png cmd/sc_firstrecord.png cmd/lc_mailmergelastentry.png cmd/lc_lastrecord.png commit 4884f76a39f30246fa0cc0efc73c25d16f30cb6f Author: Jan Holesovsky <ke...@collabora.com> Date: Wed Dec 23 10:21:07 2015 +0100 mailmerge: Really show the icons for first/prev/next/last mailmerge entry. Change-Id: I101b39fb12746902399fe3e40f6ec589836b9b2f diff --git a/officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu b/officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu index fa7dcd0..6df35bb 100644 --- a/officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu +++ b/officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu @@ -488,26 +488,41 @@ <prop oor:name="Label" oor:type="xs:string"> <value xml:lang="en-US">Mail Merge Wi~zard...</value> </prop> + <prop oor:name="Properties" oor:type="xs:int"> + <value>1</value> + </prop> </node> <node oor:name=".uno:MailMergeFirstEntry" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> <value xml:lang="en-US">First Mail Merge Entry</value> </prop> + <prop oor:name="Properties" oor:type="xs:int"> + <value>1</value> + </prop> </node> <node oor:name=".uno:MailMergePrevEntry" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> <value xml:lang="en-US">Previous Mail Merge Entry</value> </prop> + <prop oor:name="Properties" oor:type="xs:int"> + <value>1</value> + </prop> </node> <node oor:name=".uno:MailMergeNextEntry" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> <value xml:lang="en-US">Next Mail Merge Entry</value> </prop> + <prop oor:name="Properties" oor:type="xs:int"> + <value>1</value> + </prop> </node> <node oor:name=".uno:MailMergeLastEntry" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> <value xml:lang="en-US">Last Mail Merge Entry</value> </prop> + <prop oor:name="Properties" oor:type="xs:int"> + <value>1</value> + </prop> </node> <node oor:name=".uno:SetAnchorToFrame" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> commit 47110e638af3644f6d80467973046ccc9725e880 Author: Jan Holesovsky <ke...@collabora.com> Date: Tue Dec 22 12:40:20 2015 +0100 mailmerge: Icons for the first/prev/next/last mailmerge entry buttons. Change-Id: I7187a228ac93ba502ca325a1dacd27207d3d3d86 diff --git a/icon-themes/breeze/links.txt b/icon-themes/breeze/links.txt index 8bbffb5..05d232d 100644 --- a/icon-themes/breeze/links.txt +++ b/icon-themes/breeze/links.txt @@ -462,6 +462,16 @@ cmd/lc_hfixedline.png cmd/lc_line.png cmd/sc_xlinestyle.png cmd/sc_linestyle.png cmd/sc_hfixedline.png cmd/sc_line.png +# Mail merge +cmd/lc_mailmergefirstentry.png cmd/lc_firstrecord.png +cmd/sc_mailmergefirstentry.png cmd/sc_firstrecord.png +cmd/lc_mailmergelastentry.png cmd/lc_lastrecord.png +cmd/sc_mailmergelastentry.png cmd/sc_lastrecord.png +cmd/lc_mailmergenextentry.png cmd/lc_nextrecord.png +cmd/sc_mailmergenextentry.png cmd/sc_nextrecord.png +cmd/lc_mailmergepreventry.png cmd/lc_prevrecord.png +cmd/sc_mailmergepreventry.png cmd/sc_prevrecord.png + # Arrows cmd/lc_arrowstoolbox.png cmd/lc_linearrowend.png cmd/sc_arrowstoolbox.png cmd/sc_linearrowend.png diff --git a/icon-themes/crystal/links.txt b/icon-themes/crystal/links.txt index 3e7c8a7..4bce143 100644 --- a/icon-themes/crystal/links.txt +++ b/icon-themes/crystal/links.txt @@ -8,3 +8,13 @@ cmd/sc_linespacing.png cmd/sc_spacepara15.png # text background colour Impress/Draw cmd/sc_charbackcolor.png cmd/sc_backcolor.png cmd/lc_charbackcolor.png cmd/lc_backcolor.png + +# Mail merge +cmd/lc_mailmergefirstentry.png cmd/lc_firstrecord.png +cmd/sc_mailmergefirstentry.png cmd/sc_firstrecord.png +cmd/lc_mailmergelastentry.png cmd/lc_lastrecord.png +cmd/sc_mailmergelastentry.png cmd/sc_lastrecord.png +cmd/lc_mailmergenextentry.png cmd/lc_nextrecord.png +cmd/sc_mailmergenextentry.png cmd/sc_nextrecord.png +cmd/lc_mailmergepreventry.png cmd/lc_prevrecord.png +cmd/sc_mailmergepreventry.png cmd/sc_prevrecord.png diff --git a/icon-themes/elementary/links.txt b/icon-themes/elementary/links.txt index 035a2a0..0db296f 100644 --- a/icon-themes/elementary/links.txt +++ b/icon-themes/elementary/links.txt @@ -622,3 +622,13 @@ sw/res/styfamnu.png sw/imglst/sf05.png vcl/res/closedoc.png sfx2/res/closedoc.png vcl/source/src/msgbox.png vcl/res/msgbox.png xmlsecurity/res/signet_11x16.png svx/res/signet_11x16.png + +# Mail merge +cmd/lc_mailmergefirstentry.png cmd/lc_firstrecord.png +cmd/sc_mailmergefirstentry.png cmd/sc_firstrecord.png +cmd/lc_mailmergelastentry.png cmd/lc_lastrecord.png +cmd/sc_mailmergelastentry.png cmd/sc_lastrecord.png +cmd/lc_mailmergenextentry.png cmd/lc_nextrecord.png +cmd/sc_mailmergenextentry.png cmd/sc_nextrecord.png +cmd/lc_mailmergepreventry.png cmd/lc_prevrecord.png +cmd/sc_mailmergepreventry.png cmd/sc_prevrecord.png diff --git a/icon-themes/galaxy/links.txt b/icon-themes/galaxy/links.txt index 6539986..687dac5 100644 --- a/icon-themes/galaxy/links.txt +++ b/icon-themes/galaxy/links.txt @@ -86,3 +86,13 @@ cmd/sc_showgraphics.png cmd/sc_graphic.png # FolderTree expanded icon svtools/res/folderop.png formula/res/fapopen.png + +# Mail merge +cmd/lc_mailmergefirstentry.png cmd/lc_firstrecord.png +cmd/sc_mailmergefirstentry.png cmd/sc_firstrecord.png +cmd/lc_mailmergelastentry.png cmd/lc_lastrecord.png +cmd/sc_mailmergelastentry.png cmd/sc_lastrecord.png +cmd/lc_mailmergenextentry.png cmd/lc_nextrecord.png +cmd/sc_mailmergenextentry.png cmd/sc_nextrecord.png +cmd/lc_mailmergepreventry.png cmd/lc_prevrecord.png +cmd/sc_mailmergepreventry.png cmd/sc_prevrecord.png diff --git a/icon-themes/hicontrast/links.txt b/icon-themes/hicontrast/links.txt index ea11b2a..3ed8eb0 100644 --- a/icon-themes/hicontrast/links.txt +++ b/icon-themes/hicontrast/links.txt @@ -9,3 +9,13 @@ cmd/lc_charbackcolor.png cmd/lc_backcolor.png # FolderTree icons svtools/res/folder.png formula/res/fapclose.png svtools/res/folderop.png formula/res/fapopen.png + +# Mail merge +cmd/lc_mailmergefirstentry.png cmd/lc_firstrecord.png +cmd/sc_mailmergefirstentry.png cmd/sc_firstrecord.png +cmd/lc_mailmergelastentry.png cmd/lc_lastrecord.png +cmd/sc_mailmergelastentry.png cmd/sc_lastrecord.png +cmd/lc_mailmergenextentry.png cmd/lc_nextrecord.png +cmd/sc_mailmergenextentry.png cmd/sc_nextrecord.png +cmd/lc_mailmergepreventry.png cmd/lc_prevrecord.png +cmd/sc_mailmergepreventry.png cmd/sc_prevrecord.png diff --git a/icon-themes/human/links.txt b/icon-themes/human/links.txt index 5b1aca0..d3155a6 100644 --- a/icon-themes/human/links.txt +++ b/icon-themes/human/links.txt @@ -11,3 +11,13 @@ cmd/lc_charbackcolor.png cmd/lc_backcolor.png # FolderTree expanded icon svtools/res/folderop.png formula/res/fapopen.png + +# Mail merge +cmd/lc_mailmergefirstentry.png cmd/lc_firstrecord.png +cmd/sc_mailmergefirstentry.png cmd/sc_firstrecord.png +cmd/lc_mailmergelastentry.png cmd/lc_lastrecord.png +cmd/sc_mailmergelastentry.png cmd/sc_lastrecord.png +cmd/lc_mailmergenextentry.png cmd/lc_nextrecord.png +cmd/sc_mailmergenextentry.png cmd/sc_nextrecord.png +cmd/lc_mailmergepreventry.png cmd/lc_prevrecord.png +cmd/sc_mailmergepreventry.png cmd/sc_prevrecord.png diff --git a/icon-themes/oxygen/links.txt b/icon-themes/oxygen/links.txt index 3e7c8a7..4bce143 100644 --- a/icon-themes/oxygen/links.txt +++ b/icon-themes/oxygen/links.txt @@ -8,3 +8,13 @@ cmd/sc_linespacing.png cmd/sc_spacepara15.png # text background colour Impress/Draw cmd/sc_charbackcolor.png cmd/sc_backcolor.png cmd/lc_charbackcolor.png cmd/lc_backcolor.png + +# Mail merge +cmd/lc_mailmergefirstentry.png cmd/lc_firstrecord.png +cmd/sc_mailmergefirstentry.png cmd/sc_firstrecord.png +cmd/lc_mailmergelastentry.png cmd/lc_lastrecord.png +cmd/sc_mailmergelastentry.png cmd/sc_lastrecord.png +cmd/lc_mailmergenextentry.png cmd/lc_nextrecord.png +cmd/sc_mailmergenextentry.png cmd/sc_nextrecord.png +cmd/lc_mailmergepreventry.png cmd/lc_prevrecord.png +cmd/sc_mailmergepreventry.png cmd/sc_prevrecord.png diff --git a/icon-themes/sifr/links.txt b/icon-themes/sifr/links.txt index 160f85b..61a545a 100644 --- a/icon-themes/sifr/links.txt +++ b/icon-themes/sifr/links.txt @@ -154,3 +154,12 @@ cmd/sc_insertrowsafter.png cmd/sc_insertrows.png cmd/lc_insertcolumnsafter.png cmd/lc_insertcolumns.png cmd/sc_insertcolumnsafter.png cmd/sc_insertcolumns.png +# Mail merge +cmd/lc_mailmergefirstentry.png cmd/lc_firstrecord.png +cmd/sc_mailmergefirstentry.png cmd/sc_firstrecord.png +cmd/lc_mailmergelastentry.png cmd/lc_lastrecord.png +cmd/sc_mailmergelastentry.png cmd/sc_lastrecord.png +cmd/lc_mailmergenextentry.png cmd/lc_nextrecord.png +cmd/sc_mailmergenextentry.png cmd/sc_nextrecord.png +cmd/lc_mailmergepreventry.png cmd/lc_prevrecord.png +cmd/sc_mailmergepreventry.png cmd/sc_prevrecord.png diff --git a/icon-themes/tango/links.txt b/icon-themes/tango/links.txt index ec67d4a..afb2f94 100644 --- a/icon-themes/tango/links.txt +++ b/icon-themes/tango/links.txt @@ -537,3 +537,13 @@ cmd/lc_charbackcolor.png cmd/lc_backcolor.png # Toggle graphics visibility in Writer cmd/sc_showgraphics.png cmd/sc_insertgraphic.png cmd/lc_showgraphics.png cmd/lc_insertgraphic.png + +# Mail merge +cmd/lc_mailmergefirstentry.png cmd/lc_firstrecord.png +cmd/sc_mailmergefirstentry.png cmd/sc_firstrecord.png +cmd/lc_mailmergelastentry.png cmd/lc_lastrecord.png +cmd/sc_mailmergelastentry.png cmd/sc_lastrecord.png +cmd/lc_mailmergenextentry.png cmd/lc_nextrecord.png +cmd/sc_mailmergenextentry.png cmd/sc_nextrecord.png +cmd/lc_mailmergepreventry.png cmd/lc_prevrecord.png +cmd/sc_mailmergepreventry.png cmd/sc_prevrecord.png diff --git a/icon-themes/tango_testing/links.txt b/icon-themes/tango_testing/links.txt index e1d25ff..8746aeb 100644 --- a/icon-themes/tango_testing/links.txt +++ b/icon-themes/tango_testing/links.txt @@ -36,3 +36,13 @@ cmd/sc_linespacing.png cmd/sc_spacepara15.png # text background colour Impress/Draw cmd/sc_charbackcolor.png cmd/sc_backcolor.png cmd/lc_charbackcolor.png cmd/lc_backcolor.png + +# Mail merge +cmd/lc_mailmergefirstentry.png cmd/lc_firstrecord.png +cmd/sc_mailmergefirstentry.png cmd/sc_firstrecord.png +cmd/lc_mailmergelastentry.png cmd/lc_lastrecord.png +cmd/sc_mailmergelastentry.png cmd/sc_lastrecord.png +cmd/lc_mailmergenextentry.png cmd/lc_nextrecord.png +cmd/sc_mailmergenextentry.png cmd/sc_nextrecord.png +cmd/lc_mailmergepreventry.png cmd/lc_prevrecord.png +cmd/sc_mailmergepreventry.png cmd/sc_prevrecord.png commit 17200dbfdf732d6e1fe99406a8a8b80d614c4d74 Author: Jan Holesovsky <ke...@collabora.com> Date: Tue Dec 22 07:37:07 2015 +0100 mailmerge: Make the SwMailMergeConfigItem instance long-living. In order for the toolbar to work, we need the SwMailMergeConfigItem instance in the view living even when the mail merge wizard is not around. With this change, there's a small glitch that the SwMailMergeChildWindow sometimes stays open even when we leave the wizard, but I plan to remove this window / button anyway, so no real harm at the moment. Change-Id: I2bf0c49504b9cf2f17f6fce7ab4cab7cb5be6426 diff --git a/sw/source/ui/dbui/mmoutputpage.cxx b/sw/source/ui/dbui/mmoutputpage.cxx index eaf6d5f..4faa0bc 100644 --- a/sw/source/ui/dbui/mmoutputpage.cxx +++ b/sw/source/ui/dbui/mmoutputpage.cxx @@ -906,7 +906,6 @@ IMPL_LINK_NOARG_TYPED(SwMailMergeOutputPage, PrintHdl_Impl, Button*, void) pTargetView->ExecPrint( aProps, false, true ); SfxGetpApp()->NotifyEvent(SfxEventHint(SW_EVENT_MAIL_MERGE_END, SwDocShell::GetEventName(STR_SW_EVENT_MAIL_MERGE_END), pObjSh)); - pTargetView->SetMailMergeConfigItem(nullptr, 0, false); m_pWizard->enableButtons(WizardButtonFlags::CANCEL, true); m_pWizard->enableButtons(WizardButtonFlags::FINISH, true); } diff --git a/sw/source/uibase/app/apphdl.cxx b/sw/source/uibase/app/apphdl.cxx index 62271cc..327201c 100644 --- a/sw/source/uibase/app/apphdl.cxx +++ b/sw/source/uibase/app/apphdl.cxx @@ -209,7 +209,9 @@ void SwModule::StateOther(SfxItemSet &rSet) { SwView* pView = ::GetActiveView(); SwMailMergeConfigItem* pConfigItem = pView->GetMailMergeConfigItem(); - if (pConfigItem) + if (!pConfigItem) + rSet.DisableItem(nWhich); + else { bool bFirst, bLast; bool bValid = pConfigItem->IsResultSetFirstLast(bFirst, bLast); @@ -287,7 +289,6 @@ class SwMailMergeWizardExecutor : public salhelper::SimpleReferenceObject { SwView* m_pView; // never owner SwView* m_pView2Close; // never owner - SwMailMergeConfigItem* m_pMMConfig; // sometimes owner AbstractMailMergeWizard* m_pWizard; // always owner DECL_LINK_TYPED( EndDialogHdl, Dialog&, void ); @@ -296,7 +297,7 @@ class SwMailMergeWizardExecutor : public salhelper::SimpleReferenceObject DECL_LINK_TYPED( CancelHdl, void*, void ); DECL_LINK_TYPED( CloseFrameHdl, void*, void ); - void ExecutionFinished( bool bDeleteConfigItem ); + void ExecutionFinished(); void ExecuteWizard(); public: @@ -309,7 +310,6 @@ public: SwMailMergeWizardExecutor::SwMailMergeWizardExecutor() : m_pView( nullptr ), m_pView2Close( nullptr ), - m_pMMConfig( nullptr ), m_pWizard( nullptr ) { } @@ -317,7 +317,6 @@ SwMailMergeWizardExecutor::SwMailMergeWizardExecutor() SwMailMergeWizardExecutor::~SwMailMergeWizardExecutor() { OSL_ENSURE( m_pWizard == nullptr, "SwMailMergeWizardExecutor: m_pWizard must be Null!" ); - OSL_ENSURE( m_pMMConfig == nullptr, "SwMailMergeWizardExecutor: m_pMMConfig must be Null!" ); } void SwMailMergeWizardExecutor::ExecuteMailMergeWizard( const SfxItemSet * pArgs ) @@ -362,23 +361,23 @@ void SwMailMergeWizardExecutor::ExecuteMailMergeWizard( const SfxItemSet * pArgs static_cast<SwMailMergeChildWindow*>(m_pView->GetViewFrame()->GetChildWindow(FN_MAILMERGE_CHILDWINDOW)); bool bRestoreWizard = false; sal_uInt16 nRestartPage = 0; + + SwMailMergeConfigItem* pMMConfig = m_pView->GetMailMergeConfigItem(); if (pChildWin && pChildWin->IsVisible()) { - m_pMMConfig = m_pView->GetMailMergeConfigItem(); nRestartPage = m_pView->GetMailMergeRestartPage(); if (m_pView->IsMailMergeSourceView()) - m_pMMConfig->SetSourceView(m_pView); - m_pView->SetMailMergeConfigItem(nullptr, 0, true); + pMMConfig->SetSourceView(m_pView); SfxViewFrame* pViewFrame = m_pView->GetViewFrame(); pViewFrame->ShowChildWindow(FN_MAILMERGE_CHILDWINDOW, false); - OSL_ENSURE(m_pMMConfig, "no MailMergeConfigItem available"); bRestoreWizard = true; } - // to make it bullet proof ;-) - if (!m_pMMConfig) + + // create if it does not exist yet + if (!pMMConfig) { - m_pMMConfig = new SwMailMergeConfigItem; - m_pMMConfig->SetSourceView(m_pView); + pMMConfig = new SwMailMergeConfigItem; + pMMConfig->SetSourceView(m_pView); //set the first used database as default source on the config item const SfxPoolItem* pItem = nullptr; @@ -406,7 +405,7 @@ void SwMailMergeWizardExecutor::ExecuteMailMergeWizard( const SfxItemSet * pArgs uno::Reference<container::XChild> xChild(xConnection, uno::UNO_QUERY); if (xChild.is()) xSource.set(xChild->getParent(), uno::UNO_QUERY); - m_pMMConfig->SetCurrentConnection( + pMMConfig->SetCurrentConnection( xSource, SharedConnection(xConnection, SharedConnection::NoTakeOwnership), xColumnsSupplier, aDBData); } @@ -424,13 +423,15 @@ void SwMailMergeWizardExecutor::ExecuteMailMergeWizard( const SfxItemSet * pArgs aDBData.sCommand = sDBName.getToken(1, DB_DELIM); aDBData.nCommandType = sDBName.getToken(2, DB_DELIM).toInt32(); //set the currently used database for the wizard - m_pMMConfig->SetCurrentDBData(aDBData); + pMMConfig->SetCurrentDBData(aDBData); } } + + m_pView->SetMailMergeConfigItem(pMMConfig, m_pWizard? m_pWizard->GetRestartPage(): 0, true); } SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create(); - m_pWizard = pFact->CreateMailMergeWizard(*m_pView, *m_pMMConfig); + m_pWizard = pFact->CreateMailMergeWizard(*m_pView, *pMMConfig); if (bRestoreWizard) { @@ -440,13 +441,11 @@ void SwMailMergeWizardExecutor::ExecuteMailMergeWizard( const SfxItemSet * pArgs ExecuteWizard(); } -void SwMailMergeWizardExecutor::ExecutionFinished( bool bDeleteConfigItem ) +void SwMailMergeWizardExecutor::ExecutionFinished() { - m_pMMConfig->Commit(); - if ( bDeleteConfigItem ) // owner? - delete m_pMMConfig; - - m_pMMConfig = nullptr; + SwMailMergeConfigItem* pMMConfig = m_pView->GetMailMergeConfigItem(); + if (pMMConfig) + pMMConfig->Commit(); // release/destroy asynchronously Application::PostUserEvent( LINK( this, SwMailMergeWizardExecutor, DestroyDialogHdl ) ); @@ -474,18 +473,19 @@ IMPL_LINK_NOARG_TYPED( SwMailMergeWizardExecutor, EndDialogHdl, Dialog&, void ) LINK( this, SwMailMergeWizardExecutor, DestroyWizardHdl ), m_pWizard ); SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create(); - if(pNewView) + SwMailMergeConfigItem* pMMConfig = m_pView->GetMailMergeConfigItem(); + if (pNewView) { m_pView = pNewView; - m_pMMConfig->DocumentReloaded(); + pMMConfig->DocumentReloaded(); //new source view! - m_pMMConfig->SetSourceView( m_pView ); - m_pWizard = pFact->CreateMailMergeWizard(*m_pView, *m_pMMConfig); + pMMConfig->SetSourceView( m_pView ); + m_pWizard = pFact->CreateMailMergeWizard(*m_pView, *pMMConfig); m_pWizard->ShowPage( nRestartPage ); } else { - m_pWizard = pFact->CreateMailMergeWizard(*m_pView, *m_pMMConfig); + m_pWizard = pFact->CreateMailMergeWizard(*m_pView, *pMMConfig); } // execute the wizard again @@ -494,7 +494,8 @@ IMPL_LINK_NOARG_TYPED( SwMailMergeWizardExecutor, EndDialogHdl, Dialog&, void ) } case RET_TARGET_CREATED: { - SwView* pTargetView = m_pMMConfig->GetTargetView(); + SwMailMergeConfigItem* pMMConfig = m_pView->GetMailMergeConfigItem(); + SwView* pTargetView = pMMConfig->GetTargetView(); OSL_ENSURE(pTargetView, "No target view has been created"); if(pTargetView) { @@ -503,7 +504,7 @@ IMPL_LINK_NOARG_TYPED( SwMailMergeWizardExecutor, EndDialogHdl, Dialog&, void ) LINK( this, SwMailMergeWizardExecutor, DestroyWizardHdl ), m_pWizard ); SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create(); - m_pWizard = pFact->CreateMailMergeWizard(*pTargetView, *m_pMMConfig); + m_pWizard = pFact->CreateMailMergeWizard(*pTargetView, *pMMConfig); m_pWizard->ShowPage( nRestartPage ); // execute the wizard again @@ -512,7 +513,7 @@ IMPL_LINK_NOARG_TYPED( SwMailMergeWizardExecutor, EndDialogHdl, Dialog&, void ) else { // should not happen - just in case no target view has been created - ExecutionFinished( true ); + ExecutionFinished(); } break; } @@ -521,19 +522,21 @@ IMPL_LINK_NOARG_TYPED( SwMailMergeWizardExecutor, EndDialogHdl, Dialog&, void ) { //create a non-modal dialog that allows to return to the wizard //the ConfigItem ownership moves to this dialog - bool bResult = nRet == RET_EDIT_RESULT_DOC && m_pMMConfig->GetTargetView(); - SwView* pTempView = bResult ? m_pMMConfig->GetTargetView() : m_pMMConfig->GetSourceView(); - pTempView->SetMailMergeConfigItem(m_pMMConfig, m_pWizard->GetRestartPage(), !bResult); + SwMailMergeConfigItem* pMMConfig = m_pView->GetMailMergeConfigItem(); + bool bResult = nRet == RET_EDIT_RESULT_DOC && pMMConfig->GetTargetView(); + SwView* pTempView = bResult ? pMMConfig->GetTargetView() : pMMConfig->GetSourceView(); + pTempView->SetMailMergeConfigItem(pMMConfig, m_pWizard->GetRestartPage(), !bResult); SfxViewFrame* pViewFrame = pTempView->GetViewFrame(); pViewFrame->GetDispatcher()->Execute( FN_MAILMERGE_CHILDWINDOW, SfxCallMode::SYNCHRON); - ExecutionFinished( false ); + ExecutionFinished(); break; } case RET_REMOVE_TARGET: { - SwView* pTargetView = m_pMMConfig->GetTargetView(); - SwView* pSourceView = m_pMMConfig->GetSourceView(); + SwMailMergeConfigItem* pMMConfig = m_pView->GetMailMergeConfigItem(); + SwView* pTargetView = pMMConfig->GetTargetView(); + SwView* pSourceView = pMMConfig->GetSourceView(); OSL_ENSURE(pTargetView && pSourceView, "source or target view not available" ); if(pTargetView && pSourceView) { @@ -542,14 +545,14 @@ IMPL_LINK_NOARG_TYPED( SwMailMergeWizardExecutor, EndDialogHdl, Dialog&, void ) pSourceView->GetViewFrame()->GetFrame().AppearWithUpdate(); // the current view has be set when the target is destroyed m_pView = pSourceView; - m_pMMConfig->SetTargetView(nullptr); + pMMConfig->SetTargetView(nullptr); // destroy wizard asynchronously Application::PostUserEvent( LINK( this, SwMailMergeWizardExecutor, CloseFrameHdl ), m_pWizard ); SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create(); - m_pWizard = pFact->CreateMailMergeWizard(*pSourceView, *m_pMMConfig); + m_pWizard = pFact->CreateMailMergeWizard(*pSourceView, *pMMConfig); m_pWizard->ShowPage( nRestartPage ); // execute the wizard again @@ -558,7 +561,7 @@ IMPL_LINK_NOARG_TYPED( SwMailMergeWizardExecutor, EndDialogHdl, Dialog&, void ) else { // should not happen - just in case no target view has been created - ExecutionFinished( true ); + ExecutionFinished(); } break; } @@ -571,16 +574,17 @@ IMPL_LINK_NOARG_TYPED( SwMailMergeWizardExecutor, EndDialogHdl, Dialog&, void ) } default: // finish { - SwView* pSourceView = m_pMMConfig->GetSourceView(); + SwMailMergeConfigItem* pMMConfig = m_pView->GetMailMergeConfigItem(); + SwView* pSourceView = pMMConfig->GetSourceView(); if(pSourceView) { SwDocShell* pDocShell = pSourceView->GetDocShell(); if(pDocShell->HasName() && !pDocShell->IsModified()) - m_pMMConfig->GetSourceView()->GetViewFrame()->DoClose(); + pMMConfig->GetSourceView()->GetViewFrame()->DoClose(); else - m_pMMConfig->GetSourceView()->GetViewFrame()->GetFrame().Appear(); + pMMConfig->GetSourceView()->GetViewFrame()->GetFrame().Appear(); } - ExecutionFinished( true ); + ExecutionFinished(); break; } @@ -602,17 +606,16 @@ IMPL_STATIC_LINK_TYPED(SwMailMergeWizardExecutor, DestroyWizardHdl, void*, pDial IMPL_LINK_NOARG_TYPED(SwMailMergeWizardExecutor, CancelHdl, void*, void) { - if(m_pMMConfig->GetTargetView()) + SwMailMergeConfigItem* pMMConfig = m_pView->GetMailMergeConfigItem(); + if (pMMConfig->GetTargetView()) { - m_pMMConfig->GetTargetView()->GetViewFrame()->DoClose(); - m_pMMConfig->SetTargetView(nullptr); + pMMConfig->GetTargetView()->GetViewFrame()->DoClose(); + pMMConfig->SetTargetView(nullptr); } - if(m_pMMConfig->GetSourceView()) - m_pMMConfig->GetSourceView()->GetViewFrame()->GetFrame().AppearWithUpdate(); + if (pMMConfig->GetSourceView()) + pMMConfig->GetSourceView()->GetViewFrame()->GetFrame().AppearWithUpdate(); - m_pMMConfig->Commit(); - delete m_pMMConfig; - m_pMMConfig = nullptr; + pMMConfig->Commit(); delete m_pWizard; m_pWizard = nullptr; release(); commit 3c0bda08c232286ace80e1d3e4f5b2f214280327 Author: Jan Holesovsky <ke...@collabora.com> Date: Tue Dec 22 06:32:45 2015 +0100 mailmerge: Decrease indentation level by an early return. Change-Id: I90dad46d9bced5e0faee4ab3adabc46d7e1bbc9f diff --git a/sw/source/uibase/app/apphdl.cxx b/sw/source/uibase/app/apphdl.cxx index 676f639..62271cc 100644 --- a/sw/source/uibase/app/apphdl.cxx +++ b/sw/source/uibase/app/apphdl.cxx @@ -349,96 +349,95 @@ void SwMailMergeWizardExecutor::ExecuteMailMergeWizard( const SfxItemSet * pArgs return; } - m_pView = ::GetActiveView(); // not owner! - OSL_ENSURE(m_pView, "no current view?"); - if(m_pView) + m_pView = ::GetActiveView(); + if (!m_pView) + return; + + // keep self alive until done. + acquire(); + + // if called from the child window - get the config item and close the ChildWindow, then restore + // the wizard + SwMailMergeChildWindow* pChildWin = + static_cast<SwMailMergeChildWindow*>(m_pView->GetViewFrame()->GetChildWindow(FN_MAILMERGE_CHILDWINDOW)); + bool bRestoreWizard = false; + sal_uInt16 nRestartPage = 0; + if (pChildWin && pChildWin->IsVisible()) { - // keep self alive until done. - acquire(); - - // if called from the child window - get the config item and close the ChildWindow, then restore - // the wizard - SwMailMergeChildWindow* pChildWin = - static_cast<SwMailMergeChildWindow*>(m_pView->GetViewFrame()->GetChildWindow(FN_MAILMERGE_CHILDWINDOW)); - bool bRestoreWizard = false; - sal_uInt16 nRestartPage = 0; - if(pChildWin && pChildWin->IsVisible()) - { - m_pMMConfig = m_pView->GetMailMergeConfigItem(); - nRestartPage = m_pView->GetMailMergeRestartPage(); - if(m_pView->IsMailMergeSourceView()) - m_pMMConfig->SetSourceView( m_pView ); - m_pView->SetMailMergeConfigItem(nullptr, 0, true); - SfxViewFrame* pViewFrame = m_pView->GetViewFrame(); - pViewFrame->ShowChildWindow(FN_MAILMERGE_CHILDWINDOW, false); - OSL_ENSURE(m_pMMConfig, "no MailMergeConfigItem available"); - bRestoreWizard = true; - } - // to make it bullet proof ;-) - if(!m_pMMConfig) - { - m_pMMConfig = new SwMailMergeConfigItem; + m_pMMConfig = m_pView->GetMailMergeConfigItem(); + nRestartPage = m_pView->GetMailMergeRestartPage(); + if (m_pView->IsMailMergeSourceView()) m_pMMConfig->SetSourceView(m_pView); + m_pView->SetMailMergeConfigItem(nullptr, 0, true); + SfxViewFrame* pViewFrame = m_pView->GetViewFrame(); + pViewFrame->ShowChildWindow(FN_MAILMERGE_CHILDWINDOW, false); + OSL_ENSURE(m_pMMConfig, "no MailMergeConfigItem available"); + bRestoreWizard = true; + } + // to make it bullet proof ;-) + if (!m_pMMConfig) + { + m_pMMConfig = new SwMailMergeConfigItem; + m_pMMConfig->SetSourceView(m_pView); - //set the first used database as default source on the config item - const SfxPoolItem* pItem = nullptr; - if(pArgs && SfxItemState::SET == pArgs->GetItemState( - FN_PARAM_DATABASE_PROPERTIES, false, &pItem)) + //set the first used database as default source on the config item + const SfxPoolItem* pItem = nullptr; + if (pArgs && SfxItemState::SET == pArgs->GetItemState( + FN_PARAM_DATABASE_PROPERTIES, false, &pItem)) + { + //mailmerge has been called from the database beamer + uno::Sequence< beans::PropertyValue> aDBValues; + if (static_cast<const SfxUsrAnyItem*>(pItem)->GetValue() >>= aDBValues) { - //mailmerge has been called from the database beamer - uno::Sequence< beans::PropertyValue> aDBValues; - if(static_cast<const SfxUsrAnyItem*>(pItem)->GetValue() >>= aDBValues) - { - SwDBData aDBData; - svx::ODataAccessDescriptor aDescriptor(aDBValues); - aDescriptor[svx::daDataSource] >>= aDBData.sDataSource; - aDescriptor[svx::daCommand] >>= aDBData.sCommand; - aDescriptor[svx::daCommandType] >>= aDBData.nCommandType; - - uno::Sequence< uno::Any > aSelection; - uno::Reference< sdbc::XConnection> xConnection; - uno::Reference< sdbc::XDataSource> xSource; - uno::Reference< sdbcx::XColumnsSupplier> xColumnsSupplier; - if ( aDescriptor.has(svx::daSelection) ) - aDescriptor[svx::daSelection] >>= aSelection; - if ( aDescriptor.has(svx::daConnection) ) - aDescriptor[svx::daConnection] >>= xConnection; - uno::Reference<container::XChild> xChild(xConnection, uno::UNO_QUERY); - if(xChild.is()) - xSource.set(xChild->getParent(), uno::UNO_QUERY); - m_pMMConfig->SetCurrentConnection( - xSource, SharedConnection( xConnection, SharedConnection::NoTakeOwnership ), - xColumnsSupplier, aDBData); - } + SwDBData aDBData; + svx::ODataAccessDescriptor aDescriptor(aDBValues); + aDescriptor[svx::daDataSource] >>= aDBData.sDataSource; + aDescriptor[svx::daCommand] >>= aDBData.sCommand; + aDescriptor[svx::daCommandType] >>= aDBData.nCommandType; + + uno::Sequence< uno::Any > aSelection; + uno::Reference< sdbc::XConnection> xConnection; + uno::Reference< sdbc::XDataSource> xSource; + uno::Reference< sdbcx::XColumnsSupplier> xColumnsSupplier; + if (aDescriptor.has(svx::daSelection)) + aDescriptor[svx::daSelection] >>= aSelection; + if (aDescriptor.has(svx::daConnection)) + aDescriptor[svx::daConnection] >>= xConnection; + uno::Reference<container::XChild> xChild(xConnection, uno::UNO_QUERY); + if (xChild.is()) + xSource.set(xChild->getParent(), uno::UNO_QUERY); + m_pMMConfig->SetCurrentConnection( + xSource, SharedConnection(xConnection, SharedConnection::NoTakeOwnership), + xColumnsSupplier, aDBData); } - else + } + else + { + std::vector<OUString> aDBNameList; + std::vector<OUString> aAllDBNames; + m_pView->GetWrtShell().GetAllUsedDB(aDBNameList, &aAllDBNames); + if (!aDBNameList.empty()) { - std::vector<OUString> aDBNameList; - std::vector<OUString> aAllDBNames; - m_pView->GetWrtShell().GetAllUsedDB( aDBNameList, &aAllDBNames ); - if(!aDBNameList.empty()) - { - OUString sDBName(aDBNameList[0]); - SwDBData aDBData; - aDBData.sDataSource = sDBName.getToken(0, DB_DELIM); - aDBData.sCommand = sDBName.getToken(1, DB_DELIM); - aDBData.nCommandType = sDBName.getToken(2, DB_DELIM ).toInt32(); - //set the currently used database for the wizard - m_pMMConfig->SetCurrentDBData( aDBData ); - } + OUString sDBName(aDBNameList[0]); + SwDBData aDBData; + aDBData.sDataSource = sDBName.getToken(0, DB_DELIM); + aDBData.sCommand = sDBName.getToken(1, DB_DELIM); + aDBData.nCommandType = sDBName.getToken(2, DB_DELIM).toInt32(); + //set the currently used database for the wizard + m_pMMConfig->SetCurrentDBData(aDBData); } } + } - SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create(); - m_pWizard = pFact->CreateMailMergeWizard(*m_pView, *m_pMMConfig); - - if(bRestoreWizard) - { - m_pWizard->ShowPage( nRestartPage ); - } + SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create(); + m_pWizard = pFact->CreateMailMergeWizard(*m_pView, *m_pMMConfig); - ExecuteWizard(); + if (bRestoreWizard) + { + m_pWizard->ShowPage(nRestartPage); } + + ExecuteWizard(); } void SwMailMergeWizardExecutor::ExecutionFinished( bool bDeleteConfigItem ) commit d99be03b2c972304ece404801503dfcdad587553 Author: Jan Holesovsky <ke...@collabora.com> Date: Mon Dec 21 20:41:33 2015 +0100 mailmerge: Enable/disable the first/prev/next/last mailmerge entry buttons. Change-Id: I48f0972b52c0c39e3ba691f4037412622927638b diff --git a/sw/source/uibase/app/apphdl.cxx b/sw/source/uibase/app/apphdl.cxx index 6b4b26f..676f639 100644 --- a/sw/source/uibase/app/apphdl.cxx +++ b/sw/source/uibase/app/apphdl.cxx @@ -207,12 +207,9 @@ void SwModule::StateOther(SfxItemSet &rSet) case FN_MAILMERGE_NEXT_ENTRY: case FN_MAILMERGE_LAST_ENTRY: { - /* SwView* pView = ::GetActiveView(); SwMailMergeConfigItem* pConfigItem = pView->GetMailMergeConfigItem(); - if (!pConfigItem) - rSet.DisableItem(nWhich); - else + if (pConfigItem) { bool bFirst, bLast; bool bValid = pConfigItem->IsResultSetFirstLast(bFirst, bLast); @@ -223,12 +220,7 @@ void SwModule::StateOther(SfxItemSet &rSet) { rSet.DisableItem(nWhich); } - else - { - rSet.Put(SfxVoidItem(nWhich)); - } } - */ } break; default: @@ -749,7 +741,7 @@ void SwModule::ExecOther(SfxRequest& rReq) default: break; } - //now the record has to be merged into the source document + // now the record has to be merged into the source document const SwDBData& rDBData = pConfigItem->GetCurrentDBData(); uno::Sequence<uno::Any> vSelection({ uno::makeAny(pConfigItem->GetResultSetPosition()) }); svx::ODataAccessDescriptor aDescriptor(::comphelper::InitPropertySequence({ @@ -766,6 +758,14 @@ void SwModule::ExecOther(SfxRequest& rReq) SwWrtShell& rSh = pActView->GetWrtShell(); SwMergeDescriptor aMergeDesc(DBMGR_MERGE, rSh, aDescriptor); rSh.GetDBManager()->MergeNew(aMergeDesc); + + // update enabled / disabled status of the buttons in the toolbar + SfxBindings& rBindings = rSh.GetView().GetViewFrame()->GetBindings(); + rBindings.Invalidate(FN_MAILMERGE_FIRST_ENTRY); + rBindings.Invalidate(FN_MAILMERGE_PREV_ENTRY); + rBindings.Invalidate(FN_MAILMERGE_NEXT_ENTRY); + rBindings.Invalidate(FN_MAILMERGE_LAST_ENTRY); + rBindings.Update(); } break; #endif commit c24dea0f0f2a2651eb06782e41cd25b1434ffb2e Author: Jan Holesovsky <ke...@collabora.com> Date: Fri Dec 18 21:19:10 2015 +0100 mailmerge: Introduce buttons for first/prev/next/last mailmerge entry. Change-Id: I3dc63d568dc4cd6f7e06b057ca4a387e4ad0677e diff --git a/officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu b/officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu index fff1246..fa7dcd0 100644 --- a/officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu +++ b/officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu @@ -489,6 +489,26 @@ <value xml:lang="en-US">Mail Merge Wi~zard...</value> </prop> </node> + <node oor:name=".uno:MailMergeFirstEntry" oor:op="replace"> + <prop oor:name="Label" oor:type="xs:string"> + <value xml:lang="en-US">First Mail Merge Entry</value> + </prop> + </node> + <node oor:name=".uno:MailMergePrevEntry" oor:op="replace"> + <prop oor:name="Label" oor:type="xs:string"> + <value xml:lang="en-US">Previous Mail Merge Entry</value> + </prop> + </node> + <node oor:name=".uno:MailMergeNextEntry" oor:op="replace"> + <prop oor:name="Label" oor:type="xs:string"> + <value xml:lang="en-US">Next Mail Merge Entry</value> + </prop> + </node> + <node oor:name=".uno:MailMergeLastEntry" oor:op="replace"> + <prop oor:name="Label" oor:type="xs:string"> + <value xml:lang="en-US">Last Mail Merge Entry</value> + </prop> + </node> <node oor:name=".uno:SetAnchorToFrame" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> <value xml:lang="en-US">Anchor To Frame</value> diff --git a/sw/inc/cmdid.h b/sw/inc/cmdid.h index cd0ce77..4cd552a 100644 --- a/sw/inc/cmdid.h +++ b/sw/inc/cmdid.h @@ -252,6 +252,11 @@ #define FN_MAILMERGE_CHILDWINDOW (FN_INSERT + 68) /* back-to-mail-merge-wizard child window*/ #define FN_INSERT_SMA (FN_INSERT + 69) /* insert StarMath */ +#define FN_MAILMERGE_FIRST_ENTRY (FN_INSERT+ 70) /* mail merge wizard - go to the first entry */ +#define FN_MAILMERGE_PREV_ENTRY (FN_INSERT + 71) /* mail merge wizard - go to the previous entry */ +#define FN_MAILMERGE_NEXT_ENTRY (FN_INSERT + 72) /* mail merge wizard - go to the next entry */ +#define FN_MAILMERGE_LAST_ENTRY (FN_INSERT + 73) /* mail merge wizard - go to the next entry */ + #define FN_DRAWTEXT_ATTR_DLG (FN_INSERT + 76) /* position DrawText */ #define FN_TOOL_ANCHOR_CHAR (FN_INSERT + 84) /* anchor Draw object to character */ diff --git a/sw/sdi/swriter.sdi b/sw/sdi/swriter.sdi index a80d38c..e704454 100644 --- a/sw/sdi/swriter.sdi +++ b/sw/sdi/swriter.sdi @@ -5227,6 +5227,102 @@ SfxVoidItem MailMergeWizard FN_MAILMERGE_WIZARD GroupId = GID_DOCUMENT; ] +SfxVoidItem MailMergeFirstEntry FN_MAILMERGE_FIRST_ENTRY +() +[ + /* flags: */ + AutoUpdate = TRUE, + Cachable = Cachable, + FastCall = TRUE, + HasCoreId = FALSE, + HasDialog = FALSE, + ReadOnlyDoc = FALSE, + Toggle = FALSE, + Container = TRUE, + RecordAbsolute = FALSE, + RecordPerSet; + Synchron; + + /* config: */ + AccelConfig = TRUE, + MenuConfig = TRUE, + StatusBarConfig = FALSE, + ToolBoxConfig = TRUE, + GroupId = GID_DOCUMENT; +] + +SfxVoidItem MailMergePrevEntry FN_MAILMERGE_PREV_ENTRY +() +[ + /* flags: */ + AutoUpdate = TRUE, + Cachable = Cachable, + FastCall = TRUE, + HasCoreId = FALSE, + HasDialog = FALSE, + ReadOnlyDoc = FALSE, + Toggle = FALSE, + Container = TRUE, + RecordAbsolute = FALSE, + RecordPerSet; + Synchron; + + /* config: */ + AccelConfig = TRUE, + MenuConfig = TRUE, + StatusBarConfig = FALSE, + ToolBoxConfig = TRUE, + GroupId = GID_DOCUMENT; +] + +SfxVoidItem MailMergeNextEntry FN_MAILMERGE_NEXT_ENTRY +() +[ + /* flags: */ + AutoUpdate = TRUE, + Cachable = Cachable, + FastCall = TRUE, + HasCoreId = FALSE, + HasDialog = FALSE, + ReadOnlyDoc = FALSE, + Toggle = FALSE, + Container = TRUE, + RecordAbsolute = FALSE, + RecordPerSet; + Synchron; + + /* config: */ + AccelConfig = TRUE, + MenuConfig = TRUE, + StatusBarConfig = FALSE, + ToolBoxConfig = TRUE, + GroupId = GID_DOCUMENT; +] + +SfxVoidItem MailMergeLastEntry FN_MAILMERGE_LAST_ENTRY +() +[ + /* flags: */ + AutoUpdate = TRUE, + Cachable = Cachable, + FastCall = TRUE, + HasCoreId = FALSE, + HasDialog = FALSE, + ReadOnlyDoc = FALSE, + Toggle = FALSE, + Container = TRUE, + RecordAbsolute = FALSE, + RecordPerSet; + Synchron; + + /* config: */ + AccelConfig = TRUE, + MenuConfig = TRUE, + StatusBarConfig = FALSE, + ToolBoxConfig = TRUE, + GroupId = GID_DOCUMENT; +] + SfxBoolItem MergeTable FN_TABLE_MERGE_TABLE () [ diff --git a/sw/sdi/wrtapp.sdi b/sw/sdi/wrtapp.sdi index f076b45..b130264 100644 --- a/sw/sdi/wrtapp.sdi +++ b/sw/sdi/wrtapp.sdi @@ -65,6 +65,30 @@ interface StarWriter ExecMethod = ExecOther ; ] + FN_MAILMERGE_FIRST_ENTRY + [ + ExecMethod = ExecOther ; + StateMethod = StateOther ; + ] + + FN_MAILMERGE_PREV_ENTRY + [ + ExecMethod = ExecOther ; + StateMethod = StateOther ; + ] + + FN_MAILMERGE_NEXT_ENTRY + [ + ExecMethod = ExecOther ; + StateMethod = StateOther ; + ] + + FN_MAILMERGE_LAST_ENTRY + [ + ExecMethod = ExecOther ; + StateMethod = StateOther ; + ] + FN_SET_MODOPT_TBLNUMFMT // status() [ ExecMethod = ExecOther ; diff --git a/sw/source/uibase/app/apphdl.cxx b/sw/source/uibase/app/apphdl.cxx index b957a6d..6b4b26f 100644 --- a/sw/source/uibase/app/apphdl.cxx +++ b/sw/source/uibase/app/apphdl.cxx @@ -22,6 +22,7 @@ #include <hintids.hxx> #include <comphelper/processfactory.hxx> +#include <comphelper/propertysequence.hxx> #include <osl/diagnose.h> #include <tools/link.hxx> #include <svl/urihelper.hxx> @@ -201,6 +202,35 @@ void SwModule::StateOther(SfxItemSet &rSet) rSet.Put( SfxBoolItem( nWhich, m_pModuleConfig-> IsInsTableFormatNum( bWebView ))); break; + case FN_MAILMERGE_FIRST_ENTRY: + case FN_MAILMERGE_PREV_ENTRY: + case FN_MAILMERGE_NEXT_ENTRY: + case FN_MAILMERGE_LAST_ENTRY: + { + /* + SwView* pView = ::GetActiveView(); + SwMailMergeConfigItem* pConfigItem = pView->GetMailMergeConfigItem(); + if (!pConfigItem) + rSet.DisableItem(nWhich); + else + { + bool bFirst, bLast; + bool bValid = pConfigItem->IsResultSetFirstLast(bFirst, bLast); + + if (!bValid || + (bFirst && (nWhich == FN_MAILMERGE_FIRST_ENTRY || nWhich == FN_MAILMERGE_PREV_ENTRY)) || + (bLast && (nWhich == FN_MAILMERGE_LAST_ENTRY || nWhich == FN_MAILMERGE_NEXT_ENTRY))) + { + rSet.DisableItem(nWhich); + } + else + { + rSet.Put(SfxVoidItem(nWhich)); + } + } + */ + } + break; default: OSL_FAIL("::StateOther: default"); } @@ -699,6 +729,45 @@ void SwModule::ExecOther(SfxRequest& rReq) } } break; + case FN_MAILMERGE_FIRST_ENTRY: + case FN_MAILMERGE_PREV_ENTRY: + case FN_MAILMERGE_NEXT_ENTRY: + case FN_MAILMERGE_LAST_ENTRY: + { + SwView* pView = ::GetActiveView(); + SwMailMergeConfigItem* pConfigItem = pView->GetMailMergeConfigItem(); + if (!pConfigItem) + return; + + sal_Int32 nPos = pConfigItem->GetResultSetPosition(); + switch (nWhich) + { + case FN_MAILMERGE_FIRST_ENTRY: pConfigItem->MoveResultSet(1); break; + case FN_MAILMERGE_PREV_ENTRY: pConfigItem->MoveResultSet(nPos - 1); break; + case FN_MAILMERGE_NEXT_ENTRY: pConfigItem->MoveResultSet(nPos + 1); break; + case FN_MAILMERGE_LAST_ENTRY: pConfigItem->MoveResultSet(-1); break; + default: break; + } + + //now the record has to be merged into the source document + const SwDBData& rDBData = pConfigItem->GetCurrentDBData(); + uno::Sequence<uno::Any> vSelection({ uno::makeAny(pConfigItem->GetResultSetPosition()) }); + svx::ODataAccessDescriptor aDescriptor(::comphelper::InitPropertySequence({ + {"Selection", uno::makeAny(vSelection)}, + {"DataSourceName", uno::makeAny(rDBData.sDataSource)}, + {"Command", uno::makeAny(rDBData.sCommand)}, + {"CommandType", uno::makeAny(rDBData.nCommandType)}, + {"ActiveConnection", uno::makeAny(pConfigItem->GetConnection().getTyped())}, + {"Filter", uno::makeAny(pConfigItem->GetFilter())}, + {"Cursor", uno::makeAny(pConfigItem->GetResultSet())} + })); + + SwView* pActView = ::GetActiveView(); + SwWrtShell& rSh = pActView->GetWrtShell(); + SwMergeDescriptor aMergeDesc(DBMGR_MERGE, rSh, aDescriptor); + rSh.GetDBManager()->MergeNew(aMergeDesc); + } + break; #endif } } diff --git a/sw/uiconfig/swform/toolbar/mailmerge.xml b/sw/uiconfig/swform/toolbar/mailmerge.xml index f80aeb4..662a000 100644 --- a/sw/uiconfig/swform/toolbar/mailmerge.xml +++ b/sw/uiconfig/swform/toolbar/mailmerge.xml @@ -7,6 +7,12 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. --> + <toolbar:toolbar xmlns:toolbar="http://openoffice.org/2001/toolbar" xmlns:xlink="http://www.w3.org/1999/xlink" toolbar:id="toolbar"> <toolbar:toolbaritem xlink:href=".uno:MailMergeWizard"/> + <toolbar:toolbarseparator/> + <toolbar:toolbaritem xlink:href=".uno:MailMergeFirstEntry"/> + <toolbar:toolbaritem xlink:href=".uno:MailMergePrevEntry"/> + <toolbar:toolbaritem xlink:href=".uno:MailMergeNextEntry"/> + <toolbar:toolbaritem xlink:href=".uno:MailMergeLastEntry"/> </toolbar:toolbar> diff --git a/sw/uiconfig/swreport/toolbar/mailmerge.xml b/sw/uiconfig/swreport/toolbar/mailmerge.xml index f80aeb4..662a000 100644 --- a/sw/uiconfig/swreport/toolbar/mailmerge.xml +++ b/sw/uiconfig/swreport/toolbar/mailmerge.xml @@ -7,6 +7,12 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. --> + <toolbar:toolbar xmlns:toolbar="http://openoffice.org/2001/toolbar" xmlns:xlink="http://www.w3.org/1999/xlink" toolbar:id="toolbar"> <toolbar:toolbaritem xlink:href=".uno:MailMergeWizard"/> + <toolbar:toolbarseparator/> + <toolbar:toolbaritem xlink:href=".uno:MailMergeFirstEntry"/> + <toolbar:toolbaritem xlink:href=".uno:MailMergePrevEntry"/> + <toolbar:toolbaritem xlink:href=".uno:MailMergeNextEntry"/> + <toolbar:toolbaritem xlink:href=".uno:MailMergeLastEntry"/> </toolbar:toolbar> diff --git a/sw/uiconfig/swriter/toolbar/mailmerge.xml b/sw/uiconfig/swriter/toolbar/mailmerge.xml index f80aeb4..662a000 100644 --- a/sw/uiconfig/swriter/toolbar/mailmerge.xml +++ b/sw/uiconfig/swriter/toolbar/mailmerge.xml @@ -7,6 +7,12 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. --> + <toolbar:toolbar xmlns:toolbar="http://openoffice.org/2001/toolbar" xmlns:xlink="http://www.w3.org/1999/xlink" toolbar:id="toolbar"> <toolbar:toolbaritem xlink:href=".uno:MailMergeWizard"/> + <toolbar:toolbarseparator/> + <toolbar:toolbaritem xlink:href=".uno:MailMergeFirstEntry"/> + <toolbar:toolbaritem xlink:href=".uno:MailMergePrevEntry"/> + <toolbar:toolbaritem xlink:href=".uno:MailMergeNextEntry"/> + <toolbar:toolbaritem xlink:href=".uno:MailMergeLastEntry"/> </toolbar:toolbar> diff --git a/sw/uiconfig/swxform/toolbar/mailmerge.xml b/sw/uiconfig/swxform/toolbar/mailmerge.xml index f80aeb4..662a000 100644 --- a/sw/uiconfig/swxform/toolbar/mailmerge.xml +++ b/sw/uiconfig/swxform/toolbar/mailmerge.xml @@ -7,6 +7,12 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. --> + <toolbar:toolbar xmlns:toolbar="http://openoffice.org/2001/toolbar" xmlns:xlink="http://www.w3.org/1999/xlink" toolbar:id="toolbar"> <toolbar:toolbaritem xlink:href=".uno:MailMergeWizard"/> + <toolbar:toolbarseparator/> + <toolbar:toolbaritem xlink:href=".uno:MailMergeFirstEntry"/> + <toolbar:toolbaritem xlink:href=".uno:MailMergePrevEntry"/> + <toolbar:toolbaritem xlink:href=".uno:MailMergeNextEntry"/> + <toolbar:toolbaritem xlink:href=".uno:MailMergeLastEntry"/> </toolbar:toolbar> commit 4374888c6fd8f8088b9746049b92688c7bd744e9 Author: Jan Holesovsky <ke...@collabora.com> Date: Fri Dec 18 12:40:05 2015 +0100 mailmerge: Don't hide the source document. Change-Id: Ie920ae1ea05ba81fb2da1198d9d79ba028e1e95a diff --git a/sw/source/uibase/app/apphdl.cxx b/sw/source/uibase/app/apphdl.cxx index 83229d3..b957a6d 100644 --- a/sw/source/uibase/app/apphdl.cxx +++ b/sw/source/uibase/app/apphdl.cxx @@ -474,9 +474,6 @@ IMPL_LINK_NOARG_TYPED( SwMailMergeWizardExecutor, EndDialogHdl, Dialog&, void ) case RET_TARGET_CREATED: { SwView* pTargetView = m_pMMConfig->GetTargetView(); - uno::Reference< frame::XFrame > xFrame = - m_pView->GetViewFrame()->GetFrame().GetFrameInterface(); - xFrame->getContainerWindow()->setVisible(sal_False); OSL_ENSURE(pTargetView, "No target view has been created"); if(pTargetView) { commit 3e93b9b458a58ee723814997ffa331744d057f2c Author: Jan Holesovsky <ke...@collabora.com> Date: Fri Dec 18 12:21:40 2015 +0100 mailmerge: Introduce a mailmerge toolbar. So far contains just a button to start the mailmerge wizard, and it is shown when the mailmerge wizard starts. The plan is that the last 3 steps (Edit document; Personalize document; Save, print or send) will be removed from the wizard, and instead introduced in the mailmerge toolbar. Change-Id: I3a55a5b3b8a73bc6775579ac42c4ae30c6c9bac6 diff --git a/officecfg/registry/data/org/openoffice/Office/UI/WriterFormWindowState.xcu b/officecfg/registry/data/org/openoffice/Office/UI/WriterFormWindowState.xcu index c5d927f..7f21088 100644 --- a/officecfg/registry/data/org/openoffice/Office/UI/WriterFormWindowState.xcu +++ b/officecfg/registry/data/org/openoffice/Office/UI/WriterFormWindowState.xcu @@ -73,6 +73,26 @@ <value>true</value> </prop> </node> + <node oor:name="private:resource/toolbar/mailmerge" oor:op="replace"> + <prop oor:name="DockPos" oor:type="xs:string"> + <value>0,2</value> + </prop> + <prop oor:name="Docked" oor:type="xs:boolean"> + <value>true</value> + </prop> + <prop oor:name="DockingArea" oor:type="xs:int"> + <value>0</value> + </prop> + <prop oor:name="UIName" oor:type="xs:string"> + <value xml:lang="en-US">Mail Merge</value> + </prop> + <prop oor:name="Visible" oor:type="xs:boolean"> + <value>true</value> + </prop> + <prop oor:name="ContextSensitive" oor:type="xs:boolean"> + <value>true</value> + </prop> + </node> <node oor:name="private:resource/toolbar/toolbar" oor:op="replace"> <prop oor:name="Docked" oor:type="xs:boolean"> <value>false</value> diff --git a/officecfg/registry/data/org/openoffice/Office/UI/WriterReportWindowState.xcu b/officecfg/registry/data/org/openoffice/Office/UI/WriterReportWindowState.xcu index 60c42e5..3d56d36 100644 --- a/officecfg/registry/data/org/openoffice/Office/UI/WriterReportWindowState.xcu +++ b/officecfg/registry/data/org/openoffice/Office/UI/WriterReportWindowState.xcu @@ -73,6 +73,26 @@ <value>true</value> </prop> </node> + <node oor:name="private:resource/toolbar/mailmerge" oor:op="replace"> + <prop oor:name="DockPos" oor:type="xs:string"> + <value>0,2</value> + </prop> + <prop oor:name="Docked" oor:type="xs:boolean"> + <value>true</value> + </prop> + <prop oor:name="DockingArea" oor:type="xs:int"> + <value>0</value> + </prop> + <prop oor:name="UIName" oor:type="xs:string"> + <value xml:lang="en-US">Mail Merge</value> + </prop> + <prop oor:name="Visible" oor:type="xs:boolean"> + <value>true</value> + </prop> + <prop oor:name="ContextSensitive" oor:type="xs:boolean"> + <value>true</value> + </prop> + </node> <node oor:name="private:resource/toolbar/toolbar" oor:op="replace"> <prop oor:name="Docked" oor:type="xs:boolean"> <value>false</value> diff --git a/officecfg/registry/data/org/openoffice/Office/UI/WriterWindowState.xcu b/officecfg/registry/data/org/openoffice/Office/UI/WriterWindowState.xcu index 7bbad92..719a983 100644 --- a/officecfg/registry/data/org/openoffice/Office/UI/WriterWindowState.xcu +++ b/officecfg/registry/data/org/openoffice/Office/UI/WriterWindowState.xcu @@ -93,6 +93,26 @@ <value>true</value> </prop> </node> + <node oor:name="private:resource/toolbar/mailmerge" oor:op="replace"> + <prop oor:name="DockPos" oor:type="xs:string"> + <value>0,2</value> + </prop> + <prop oor:name="Docked" oor:type="xs:boolean"> + <value>true</value> + </prop> + <prop oor:name="DockingArea" oor:type="xs:int"> + <value>0</value> + </prop> + <prop oor:name="UIName" oor:type="xs:string"> + <value xml:lang="en-US">Mail Merge</value> + </prop> + <prop oor:name="Visible" oor:type="xs:boolean"> + <value>true</value> + </prop> + <prop oor:name="ContextSensitive" oor:type="xs:boolean"> + <value>true</value> + </prop> + </node> <node oor:name="private:resource/toolbar/toolbar" oor:op="replace"> <prop oor:name="Docked" oor:type="xs:boolean"> <value>false</value> diff --git a/sw/UIConfig_swform.mk b/sw/UIConfig_swform.mk index 0ed7fef..f0ce288 100644 --- a/sw/UIConfig_swform.mk +++ b/sw/UIConfig_swform.mk @@ -47,6 +47,7 @@ $(eval $(call gb_UIConfig_add_toolbarfiles,modules/swform,\ sw/uiconfig/swform/toolbar/graphicobjectbar \ sw/uiconfig/swform/toolbar/insertbar \ sw/uiconfig/swform/toolbar/insertobjectbar \ + sw/uiconfig/swform/toolbar/mailmerge \ sw/uiconfig/swform/toolbar/mediaobjectbar \ sw/uiconfig/swform/toolbar/moreformcontrols \ sw/uiconfig/swform/toolbar/numobjectbar \ diff --git a/sw/UIConfig_swreport.mk b/sw/UIConfig_swreport.mk index 97bd1e7..436e6f2 100644 --- a/sw/UIConfig_swreport.mk +++ b/sw/UIConfig_swreport.mk @@ -47,6 +47,7 @@ $(eval $(call gb_UIConfig_add_toolbarfiles,modules/swreport,\ sw/uiconfig/swreport/toolbar/graphicobjectbar \ sw/uiconfig/swreport/toolbar/insertbar \ sw/uiconfig/swreport/toolbar/insertobjectbar \ + sw/uiconfig/swreport/toolbar/mailmerge \ sw/uiconfig/swreport/toolbar/mediaobjectbar \ sw/uiconfig/swreport/toolbar/moreformcontrols \ sw/uiconfig/swreport/toolbar/numobjectbar \ diff --git a/sw/UIConfig_swriter.mk b/sw/UIConfig_swriter.mk index b8bbef9..cf49e91 100644 --- a/sw/UIConfig_swriter.mk +++ b/sw/UIConfig_swriter.mk @@ -48,6 +48,7 @@ $(eval $(call gb_UIConfig_add_toolbarfiles,modules/swriter,\ sw/uiconfig/swriter/toolbar/graffilterbar \ sw/uiconfig/swriter/toolbar/graphicobjectbar \ sw/uiconfig/swriter/toolbar/insertbar \ + sw/uiconfig/swriter/toolbar/mailmerge \ sw/uiconfig/swriter/toolbar/mediaobjectbar \ sw/uiconfig/swriter/toolbar/moreformcontrols \ sw/uiconfig/swriter/toolbar/navigationobjectbar \ diff --git a/sw/UIConfig_swxform.mk b/sw/UIConfig_swxform.mk index 05c455e..63c5be4 100644 --- a/sw/UIConfig_swxform.mk +++ b/sw/UIConfig_swxform.mk @@ -48,6 +48,7 @@ $(eval $(call gb_UIConfig_add_toolbarfiles,modules/swxform,\ sw/uiconfig/swxform/toolbar/graphicobjectbar \ sw/uiconfig/swxform/toolbar/insertbar \ sw/uiconfig/swxform/toolbar/insertobjectbar \ + sw/uiconfig/swxform/toolbar/mailmerge \ sw/uiconfig/swxform/toolbar/mediaobjectbar \ sw/uiconfig/swxform/toolbar/moreformcontrols \ sw/uiconfig/swxform/toolbar/numobjectbar \ diff --git a/sw/source/uibase/app/apphdl.cxx b/sw/source/uibase/app/apphdl.cxx index bd18537..83229d3 100644 --- a/sw/source/uibase/app/apphdl.cxx +++ b/sw/source/uibase/app/apphdl.cxx @@ -87,6 +87,7 @@ #include <editeng/unolingu.hxx> #include <com/sun/star/beans/XMultiPropertySet.hpp> #include <com/sun/star/beans/XFastPropertySet.hpp> +#include <com/sun/star/beans/XPropertySet.hpp> #include <com/sun/star/beans/XPropertyState.hpp> #include <com/sun/star/beans/XPropertyStateChangeListener.hpp> #include <com/sun/star/beans/PropertyAttribute.hpp> @@ -672,11 +673,36 @@ void SwModule::ExecOther(SfxRequest& rReq) #if HAVE_FEATURE_DBCONNECTIVITY case FN_MAILMERGE_WIZARD: { + // show the mailmerge wizard rtl::Reference< SwMailMergeWizardExecutor > xEx( new SwMailMergeWizardExecutor ); xEx->ExecuteMailMergeWizard( pArgs ); + + // show the mailmerge toolbar + SwView* pView = ::GetActiveView(); + if (!pView) + return; + + uno::Reference<beans::XPropertySet> xPropSet(pView->GetViewFrame()->GetFrame().GetFrameInterface(), uno::UNO_QUERY); + if (!xPropSet.is()) + return; + + uno::Reference<frame::XLayoutManager> xLayoutManager; + uno::Any aValue = xPropSet->getPropertyValue("LayoutManager"); + aValue >>= xLayoutManager; + if (!xLayoutManager.is()) + return; + + const OUString sResourceURL( "private:resource/toolbar/mailmerge" ); + uno::Reference<ui::XUIElement> xUIElement = xLayoutManager->getElement(sResourceURL); + if (!xUIElement.is()) + { + // do the work, finally + xLayoutManager->createElement(sResourceURL); + xLayoutManager->showElement(sResourceURL); + } } -#endif break; +#endif } } diff --git a/sw/uiconfig/swform/toolbar/mailmerge.xml b/sw/uiconfig/swform/toolbar/mailmerge.xml new file mode 100644 index 0000000..f80aeb4 --- /dev/null +++ b/sw/uiconfig/swform/toolbar/mailmerge.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE toolbar:toolbar PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "toolbar.dtd"> +<!-- + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. +--> +<toolbar:toolbar xmlns:toolbar="http://openoffice.org/2001/toolbar" xmlns:xlink="http://www.w3.org/1999/xlink" toolbar:id="toolbar"> + <toolbar:toolbaritem xlink:href=".uno:MailMergeWizard"/> +</toolbar:toolbar> diff --git a/sw/uiconfig/swreport/toolbar/mailmerge.xml b/sw/uiconfig/swreport/toolbar/mailmerge.xml new file mode 100644 index 0000000..f80aeb4 --- /dev/null +++ b/sw/uiconfig/swreport/toolbar/mailmerge.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE toolbar:toolbar PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "toolbar.dtd"> +<!-- + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. +--> +<toolbar:toolbar xmlns:toolbar="http://openoffice.org/2001/toolbar" xmlns:xlink="http://www.w3.org/1999/xlink" toolbar:id="toolbar"> + <toolbar:toolbaritem xlink:href=".uno:MailMergeWizard"/> +</toolbar:toolbar> diff --git a/sw/uiconfig/swriter/toolbar/mailmerge.xml b/sw/uiconfig/swriter/toolbar/mailmerge.xml new file mode 100644 index 0000000..f80aeb4 --- /dev/null +++ b/sw/uiconfig/swriter/toolbar/mailmerge.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE toolbar:toolbar PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "toolbar.dtd"> +<!-- + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. +--> +<toolbar:toolbar xmlns:toolbar="http://openoffice.org/2001/toolbar" xmlns:xlink="http://www.w3.org/1999/xlink" toolbar:id="toolbar"> + <toolbar:toolbaritem xlink:href=".uno:MailMergeWizard"/> +</toolbar:toolbar> diff --git a/sw/uiconfig/swxform/toolbar/mailmerge.xml b/sw/uiconfig/swxform/toolbar/mailmerge.xml new file mode 100644 index 0000000..f80aeb4 --- /dev/null +++ b/sw/uiconfig/swxform/toolbar/mailmerge.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE toolbar:toolbar PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "toolbar.dtd"> +<!-- + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. +--> +<toolbar:toolbar xmlns:toolbar="http://openoffice.org/2001/toolbar" xmlns:xlink="http://www.w3.org/1999/xlink" toolbar:id="toolbar"> + <toolbar:toolbaritem xlink:href=".uno:MailMergeWizard"/> +</toolbar:toolbar> commit 3b984ae57e434fedba34854c989b39f12407b98c Author: Jan Holesovsky <ke...@collabora.com> Date: Fri Dec 18 11:39:23 2015 +0100 mailmerge: Minor refactor. Change-Id: Ia92b624ee32349ab936ad1a6fc62b4489fd5cde7 diff --git a/sw/source/ui/dbui/mailmergewizard.cxx b/sw/source/ui/dbui/mailmergewizard.cxx index 41b504b..4cb0ada 100644 --- a/sw/source/ui/dbui/mailmergewizard.cxx +++ b/sw/source/ui/dbui/mailmergewizard.cxx @@ -219,7 +219,6 @@ void SwMailMergeWizard::UpdateRoadmap() TabPage* pCurPage = GetPage( nCurPage ); if(!pCurPage) return; - bool bEnable = false; bool bAddressFieldsConfigured = !m_rConfigItem.IsOutputToLetter() || !m_rConfigItem.IsAddressBlock() || m_rConfigItem.IsAddressFieldsAssigned(); @@ -233,34 +232,35 @@ void SwMailMergeWizard::UpdateRoadmap() for(sal_uInt16 nPage = MM_DOCUMENTSELECTPAGE; nPage <= MM_OUTPUTPAGE; ++nPage) { + bool bEnable = true; switch(nPage) { - case MM_DOCUMENTSELECTPAGE : + case MM_DOCUMENTSELECTPAGE: bEnable = true; break; - case MM_OUTPUTTYPETPAGE : + case MM_OUTPUTTYPETPAGE: bEnable = bEnableOutputTypePage; break; - case MM_ADDRESSBLOCKPAGE : + case MM_ADDRESSBLOCKPAGE: bEnable = !m_bDocumentLoad && bEnableOutputTypePage; break; - case MM_GREETINGSPAGE : + case MM_GREETINGSPAGE: bEnable = !m_bDocumentLoad && bEnableOutputTypePage && m_rConfigItem.GetResultSet().is() && bAddressFieldsConfigured; break; - case MM_PREPAREMERGEPAGE : - case MM_MERGEPAGE : - case MM_OUTPUTPAGE : - case MM_LAYOUTPAGE : - bEnable = !m_bDocumentLoad && bEnableOutputTypePage && + case MM_LAYOUTPAGE: + bEnable = + ((m_rConfigItem.IsAddressBlock() && !m_rConfigItem.IsAddressInserted()) || + (m_rConfigItem.IsGreetingLine(false) && !m_rConfigItem.IsGreetingInserted() )); + // fall-through + case MM_PREPAREMERGEPAGE: + case MM_MERGEPAGE: + case MM_OUTPUTPAGE: + bEnable = bEnable && !m_bDocumentLoad && bEnableOutputTypePage && m_rConfigItem.GetResultSet().is() && bAddressFieldsConfigured && bGreetingFieldsConfigured; - if(MM_LAYOUTPAGE == nPage) - bEnable &= - ((m_rConfigItem.IsAddressBlock() && !m_rConfigItem.IsAddressInserted()) || - (m_rConfigItem.IsGreetingLine(false) && !m_rConfigItem.IsGreetingInserted() )); break; } enableState( nPage, bEnable ); commit 3cc78b3901c9799f6b12979e701fe7e1826dd786 Author: Jan Holesovsky <ke...@collabora.com> Date: Thu Dec 17 10:54:45 2015 +0100 sfx2: Improve git-grep-ability for at least few toolbars. Change-Id: Id5a2b98f7ce892fdf9969c676d987ee041913468 diff --git a/sfx2/source/appl/workwin.cxx b/sfx2/source/appl/workwin.cxx index 0e9d3d6..837ab2e 100644 --- a/sfx2/source/appl/workwin.cxx +++ b/sfx2/source/appl/workwin.cxx @@ -110,15 +110,15 @@ static const ResIdToResName pToolBarResToName[] = { 23017, "outlinetoolbar" }, //impress { 23012, "slideviewtoolbar" }, { 23014, "slideviewobjectbar" }, - { 23283, "bezierobjectbar" }, //writer - { 23269, "drawingobjectbar" }, - { 23270, "drawtextobjectbar" }, - { 23267, "frameobjectbar" }, - { 23268, "graphicobjectbar" }, - { 23271, "numobjectbar" }, - { 23272, "oleobjectbar" }, - { 23266, "tableobjectbar" }, - { 23265, "textobjectbar" }, + { 23283, "bezierobjectbar" }, // RID_BEZIER_TOOLBOX + { 23269, "drawingobjectbar" }, // RID_DRAW_TOOLBOX + { 23270, "drawtextobjectbar" }, // RID_DRAW_TEXT_TOOLBOX + { 23267, "frameobjectbar" }, // RID_FRAME_TOOLBOX + { 23268, "graphicobjectbar" }, // RID_GRAFIK_TOOLBOX + { 23271, "numobjectbar" }, // RID_NUM_TOOLBOX + { 23272, "oleobjectbar" }, // RID_OLE_TOOLBOX + { 23266, "tableobjectbar" }, // RID_TOOLS_TOOLBOX + { 23265, "textobjectbar" }, // RID_TEXT_TOOLBOX { 20631, "previewobjectbar" }, //writer { 20402, "toolbar" }, //web { 20403, "textobjectbar" }, commit d1407130ad5ea1741d1fac14eea75f18ba119c53 Author: Cor Nouws <oo...@nouenoff.nl> Date: Sat Oct 17 15:35:35 2015 +0200 tdf#94865 resolve duplicate accelerator - File>Template and File>Export demoing on LibreOffice_Nl Community day Change-Id: Idc17d430491627ed20ff31803a19dd8b9646397e Reviewed-on: https://gerrit.libreoffice.org/19417 Reviewed-by: Adolfo Jayme Barrientos <fit...@ubuntu.com> Tested-by: Adolfo Jayme Barrientos <fit...@ubuntu.com> diff --git a/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu b/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu index f7e7e8b..6e9b725 100644 --- a/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu +++ b/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu @@ -5999,7 +5999,7 @@ </node> <node oor:name=".uno:TemplateMenu" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> - <value xml:lang="en-US">~Templates</value> + <value xml:lang="en-US">Te~mplates</value> </prop> </node> <node oor:name=".uno:ExternalEdit" oor:op="replace"> commit 4251e676bb818cde1989b9077b1497f1d9b0cbdc Author: Arnaud Versini <arnaud.vers...@gmail.com> Date: Sun Jul 12 13:52:53 2015 +0200 BASIC : Refactor FoldConstants for extracting it from SwExprNode. Change-Id: Ia47597b26d63db216dd3ab71acbb18449ece7b1a Reviewed-on: https://gerrit.libreoffice.org/16963 Reviewed-by: Arnaud Versini <arnaud.vers...@libreoffice.org> Tested-by: Arnaud Versini <arnaud.vers...@libreoffice.org> diff --git a/basic/source/comp/exprnode.cxx b/basic/source/comp/exprnode.cxx index 52c2211..9d77f6d 100644 --- a/basic/source/comp/exprnode.cxx +++ b/basic/source/comp/exprnode.cxx @@ -231,182 +231,206 @@ void SbiExprNode::CollectBits() void SbiExprNode::FoldConstants(SbiParser* pParser) { if( IsOperand() || eTok == LIKE ) return; - if( pLeft ) - pLeft->FoldConstants(pParser); - if (pLeft && pRight) + + if (IsUnary()) + FoldConstantsUnaryNode(pParser); + else if (IsBinary()) + FoldConstantsBinaryNode(pParser); + + if( eNodeType == SbxNUMVAL ) { - pRight->FoldConstants(pParser); - if( pLeft->IsConstant() && pRight->IsConstant() - && pLeft->eNodeType == pRight->eNodeType ) + // Potentially convolve in INTEGER (because of better opcode)? + if( eType == SbxSINGLE || eType == SbxDOUBLE ) { - CollectBits(); - if( eTok == CAT ) - // CAT affiliate also two numbers! - eType = SbxSTRING; - if( pLeft->eType == SbxSTRING ) - // No Type Mismatch! + double x; + if( nVal >= SbxMINLNG && nVal <= SbxMAXLNG + && !modf( nVal, &x ) ) + eType = SbxLONG; + } + if( eType == SbxLONG && nVal >= SbxMININT && nVal <= SbxMAXINT ) + eType = SbxINTEGER; + } +} + +void SbiExprNode::FoldConstantsBinaryNode(SbiParser* pParser) +{ + pLeft->FoldConstants(pParser); + pRight->FoldConstants(pParser); + if( pLeft->IsConstant() && pRight->IsConstant() + && pLeft->eNodeType == pRight->eNodeType ) + { + CollectBits(); + if( eTok == CAT ) + // CAT affiliate also two numbers! + eType = SbxSTRING; + if( pLeft->eType == SbxSTRING ) + // No Type Mismatch! + eType = SbxSTRING; + if( eType == SbxSTRING ) + { + OUString rl( pLeft->GetString() ); + OUString rr( pRight->GetString() ); + pLeft.reset(); + pRight.reset(); + if( eTok == PLUS || eTok == CAT ) + { + eTok = CAT; + // Linking: + aStrVal = rl; + aStrVal += rr; eType = SbxSTRING; - if( eType == SbxSTRING ) + eNodeType = SbxSTRVAL; + } + else { - OUString rl( pLeft->GetString() ); - OUString rr( pRight->GetString() ); - pLeft.reset(); - pRight.reset(); - if( eTok == PLUS || eTok == CAT ) + eType = SbxDOUBLE; + eNodeType = SbxNUMVAL; + int eRes = rr.compareTo( rl ); + switch( eTok ) { - eTok = CAT; - // Linking: - aStrVal = rl; - aStrVal += rr; - eType = SbxSTRING; - eNodeType = SbxSTRVAL; + case EQ: + nVal = ( eRes == 0 ) ? SbxTRUE : SbxFALSE; + break; + case NE: + nVal = ( eRes != 0 ) ? SbxTRUE : SbxFALSE; + break; + case LT: + nVal = ( eRes < 0 ) ? SbxTRUE : SbxFALSE; + break; + case GT: + nVal = ( eRes > 0 ) ? SbxTRUE : SbxFALSE; + break; + case LE: + nVal = ( eRes <= 0 ) ? SbxTRUE : SbxFALSE; + break; + case GE: + nVal = ( eRes >= 0 ) ? SbxTRUE : SbxFALSE; + break; + default: + pParser->Error( ERRCODE_BASIC_CONVERSION ); + bError = true; + break; } - else + } + } + else + { + double nl = pLeft->nVal; + double nr = pRight->nVal; + long ll = 0, lr = 0; + long llMod = 0, lrMod = 0; + if( ( eTok >= AND && eTok <= IMP ) + || eTok == IDIV || eTok == MOD ) + { + // Integer operations + bool bErr = false; + if( nl > SbxMAXLNG ) bErr = true, nl = SbxMAXLNG; + else if( nl < SbxMINLNG ) bErr = true, nl = SbxMINLNG; + if( nr > SbxMAXLNG ) bErr = true, nr = SbxMAXLNG; + else if( nr < SbxMINLNG ) bErr = true, nr = SbxMINLNG; + ll = static_cast<long>(nl); lr = static_cast<long>(nr); + llMod = static_cast<long>(nl); + lrMod = static_cast<long>(nr); + if( bErr ) { - eType = SbxDOUBLE; - eNodeType = SbxNUMVAL; - int eRes = rr.compareTo( rl ); - switch( eTok ) - { - case EQ: - nVal = ( eRes == 0 ) ? SbxTRUE : SbxFALSE; - break; - case NE: - nVal = ( eRes != 0 ) ? SbxTRUE : SbxFALSE; - break; - case LT: - nVal = ( eRes < 0 ) ? SbxTRUE : SbxFALSE; - break; - case GT: - nVal = ( eRes > 0 ) ? SbxTRUE : SbxFALSE; - break; - case LE: - nVal = ( eRes <= 0 ) ? SbxTRUE : SbxFALSE; - break; - case GE: - nVal = ( eRes >= 0 ) ? SbxTRUE : SbxFALSE; - break; - default: - pParser->Error( ERRCODE_BASIC_CONVERSION ); - bError = true; - break; - } + pParser->Error( ERRCODE_BASIC_MATH_OVERFLOW ); + bError = true; } } - else + bool bBothInt = ( pLeft->eType < SbxSINGLE + && pRight->eType < SbxSINGLE ); + pLeft.reset(); + pRight.reset(); + nVal = 0; + eType = SbxDOUBLE; + eNodeType = SbxNUMVAL; + bool bCheckType = false; + switch( eTok ) { - double nl = pLeft->nVal; - double nr = pRight->nVal; - long ll = 0, lr = 0; - long llMod = 0, lrMod = 0; - if( ( eTok >= AND && eTok <= IMP ) - || eTok == IDIV || eTok == MOD ) - { - // Integer operations - bool bErr = false; - if( nl > SbxMAXLNG ) bErr = true, nl = SbxMAXLNG; - else if( nl < SbxMINLNG ) bErr = true, nl = SbxMINLNG; - if( nr > SbxMAXLNG ) bErr = true, nr = SbxMAXLNG; - else if( nr < SbxMINLNG ) bErr = true, nr = SbxMINLNG; - ll = static_cast<long>(nl); lr = static_cast<long>(nr); - llMod = static_cast<long>(nl); - lrMod = static_cast<long>(nr); - if( bErr ) + case EXPON: + nVal = pow( nl, nr ); break; + case MUL: + bCheckType = true; + nVal = nl * nr; break; + case DIV: + if( !nr ) { - pParser->Error( ERRCODE_BASIC_MATH_OVERFLOW ); + pParser->Error( ERRCODE_BASIC_ZERODIV ); nVal = HUGE_VAL; bError = true; - } - } - bool bBothInt = ( pLeft->eType < SbxSINGLE - && pRight->eType < SbxSINGLE ); - pLeft.reset(); - pRight.reset(); - nVal = 0; - eType = SbxDOUBLE; - eNodeType = SbxNUMVAL; - bool bCheckType = false; - switch( eTok ) - { - case EXPON: - nVal = pow( nl, nr ); break; - case MUL: - bCheckType = true; - nVal = nl * nr; break; - case DIV: - if( !nr ) - { - pParser->Error( ERRCODE_BASIC_ZERODIV ); nVal = HUGE_VAL; - bError = true; - } else nVal = nl / nr; - break; - case PLUS: - bCheckType = true; - nVal = nl + nr; break; - case MINUS: - bCheckType = true; - nVal = nl - nr; break; - case EQ: - nVal = ( nl == nr ) ? SbxTRUE : SbxFALSE; - eType = SbxINTEGER; break; - case NE: - nVal = ( nl != nr ) ? SbxTRUE : SbxFALSE; - eType = SbxINTEGER; break; - case LT: - nVal = ( nl < nr ) ? SbxTRUE : SbxFALSE; - eType = SbxINTEGER; break; - case GT: - nVal = ( nl > nr ) ? SbxTRUE : SbxFALSE; - eType = SbxINTEGER; break; - case LE: - nVal = ( nl <= nr ) ? SbxTRUE : SbxFALSE; - eType = SbxINTEGER; break; - case GE: - nVal = ( nl >= nr ) ? SbxTRUE : SbxFALSE; - eType = SbxINTEGER; break; - case IDIV: - if( !lr ) - { - pParser->Error( ERRCODE_BASIC_ZERODIV ); nVal = HUGE_VAL; - bError = true; - } else nVal = ll / lr; - eType = SbxLONG; break; - case MOD: - if( !lr ) - { - pParser->Error( ERRCODE_BASIC_ZERODIV ); nVal = HUGE_VAL; - bError = true; - } else nVal = llMod - lrMod * (llMod/lrMod); - eType = SbxLONG; break; - case AND: - nVal = (double) ( ll & lr ); eType = SbxLONG; break; - case OR: - nVal = (double) ( ll | lr ); eType = SbxLONG; break; - case XOR: - nVal = (double) ( ll ^ lr ); eType = SbxLONG; break; - case EQV: - nVal = (double) ( ~ll ^ lr ); eType = SbxLONG; break; - case IMP: - nVal = (double) ( ~ll | lr ); eType = SbxLONG; break; - default: break; - } + } else nVal = nl / nr; + break; + case PLUS: + bCheckType = true; + nVal = nl + nr; break; + case MINUS: + bCheckType = true; + nVal = nl - nr; break; + case EQ: + nVal = ( nl == nr ) ? SbxTRUE : SbxFALSE; + eType = SbxINTEGER; break; + case NE: + nVal = ( nl != nr ) ? SbxTRUE : SbxFALSE; + eType = SbxINTEGER; break; + case LT: + nVal = ( nl < nr ) ? SbxTRUE : SbxFALSE; + eType = SbxINTEGER; break; + case GT: + nVal = ( nl > nr ) ? SbxTRUE : SbxFALSE; + eType = SbxINTEGER; break; + case LE: + nVal = ( nl <= nr ) ? SbxTRUE : SbxFALSE; + eType = SbxINTEGER; break; + case GE: + nVal = ( nl >= nr ) ? SbxTRUE : SbxFALSE; + eType = SbxINTEGER; break; + case IDIV: + if( !lr ) + { + pParser->Error( ERRCODE_BASIC_ZERODIV ); nVal = HUGE_VAL; + bError = true; + } else nVal = ll / lr; + eType = SbxLONG; break; + case MOD: + if( !lr ) + { + pParser->Error( ERRCODE_BASIC_ZERODIV ); nVal = HUGE_VAL; + bError = true; + } else nVal = llMod - lrMod * (llMod/lrMod); + eType = SbxLONG; break; + case AND: + nVal = (double) ( ll & lr ); eType = SbxLONG; break; + case OR: + nVal = (double) ( ll | lr ); eType = SbxLONG; break; + case XOR: + nVal = (double) ( ll ^ lr ); eType = SbxLONG; break; + case EQV: + nVal = (double) ( ~ll ^ lr ); eType = SbxLONG; break; + case IMP: + nVal = (double) ( ~ll | lr ); eType = SbxLONG; break; + default: break; + } - if( !::rtl::math::isFinite( nVal ) ) - pParser->Error( ERRCODE_BASIC_MATH_OVERFLOW ); + if( !::rtl::math::isFinite( nVal ) ) + pParser->Error( ERRCODE_BASIC_MATH_OVERFLOW ); - // Recover the data type to kill rounding error - if( bCheckType && bBothInt - && nVal >= SbxMINLNG && nVal <= SbxMAXLNG ) - { - // Decimal place away - long n = (long) nVal; - nVal = n; - eType = ( n >= SbxMININT && n <= SbxMAXINT ) - ? SbxINTEGER : SbxLONG; - } + // Recover the data type to kill rounding error + if( bCheckType && bBothInt + && nVal >= SbxMINLNG && nVal <= SbxMAXLNG ) + { + // Decimal place away + long n = (long) nVal; + nVal = n; + eType = ( n >= SbxMININT && n <= SbxMAXINT ) + ? SbxINTEGER : SbxLONG; } } } - else if (pLeft && pLeft->IsNumber()) + +} +void SbiExprNode::FoldConstantsUnaryNode(SbiParser* pParser) +{ + pLeft->FoldConstants(pParser); + if (pLeft->IsNumber()) { nVal = pLeft->nVal; pLeft.reset(); diff --git a/basic/source/inc/expr.hxx b/basic/source/inc/expr.hxx index ac2cce8..6efa150 100644 --- a/basic/source/inc/expr.hxx +++ b/basic/source/inc/expr.hxx @@ -105,6 +105,8 @@ class SbiExprNode { // operators (and operands) SbiToken eTok; bool bError; // true: error void FoldConstants(SbiParser*); + void FoldConstantsBinaryNode(SbiParser*); + void FoldConstantsUnaryNode(SbiParser*); void CollectBits(); // converting numbers to strings bool IsOperand() { return eNodeType != SbxNODE && eNodeType != SbxTYPEOF && eNodeType != SbxNEW; } @@ -131,6 +133,10 @@ public: { return eNodeType == SbxSTRVAL || eNodeType == SbxNUMVAL; } bool IsIntConst(); bool IsVariable(); + bool IsUnary() + { return pLeft && !pRight; } + bool IsBinary() + { return pLeft && pRight; } SbiExprNode* GetWithParent() { return pWithParent; } void SetWithParent( SbiExprNode* p ) { pWithParent = p; } commit a9db17aabc3ac970e6e4754e28310d20138144d9 Author: Zolnai Tamás <zolnaitamas2...@gmail.com> Date: Sun Dec 20 14:21:43 2015 +0100 tdf#96051: FILESAVE: Roundtrip any PPTX file with Shapes creates invalid OOXML Revert "bnc#584721: Import subtitle block to master slides" This reverts commit b3d50feaa87b670baf68288974005ac26ad31736. It seems the imported subtitle block makes export corrupt the output. Better to have a valid output. Change-Id: I1a3d4f03e4fa0c4431a5394495682a1b9d7677bc diff --git a/oox/source/ppt/pptshape.cxx b/oox/source/ppt/pptshape.cxx index 869d0c4..ce9b835 100644 --- a/oox/source/ppt/pptshape.cxx +++ b/oox/source/ppt/pptshape.cxx @@ -144,9 +144,12 @@ void PPTShape::addShape( break; case XML_subTitle : { - sServiceName = "com.sun.star.presentation.SubtitleShape"; - aMasterTextListStyle = rSlidePersist.getMasterPersist().get() ? rSlidePersist.getMasterPersist()->getBodyTextStyle() : rSlidePersist.getBodyTextStyle(); - bClearText = true; + if ( ( meShapeLocation == Master ) || ( meShapeLocation == Layout ) ) + sServiceName = OUString(); + else { + sServiceName = "com.sun.star.presentation.SubtitleShape"; + aMasterTextListStyle = rSlidePersist.getMasterPersist().get() ? rSlidePersist.getMasterPersist()->getBodyTextStyle() : rSlidePersist.getBodyTextStyle(); + } } break; case XML_obj : diff --git a/sd/qa/unit/data/pptx/bnc584721_3.pptx b/sd/qa/unit/data/pptx/bnc584721_3.pptx deleted file mode 100644 index 3866257..0000000 Binary files a/sd/qa/unit/data/pptx/bnc584721_3.pptx and /dev/null differ diff --git a/sd/qa/unit/import-tests.cxx b/sd/qa/unit/import-tests.cxx index bc2b3a4..3fb64ff 100644 --- a/sd/qa/unit/import-tests.cxx +++ b/sd/qa/unit/import-tests.cxx @@ -91,7 +91,6 @@ public: void testCreationDate(); void testBnc584721_1(); void testBnc584721_2(); - void testBnc584721_3(); void testBnc584721_4(); void testBnc904423(); void testShapeLineStyle(); @@ -133,7 +132,6 @@ public: CPPUNIT_TEST(testCreationDate); CPPUNIT_TEST(testBnc584721_1); CPPUNIT_TEST(testBnc584721_2); - CPPUNIT_TEST(testBnc584721_3); CPPUNIT_TEST(testBnc584721_4); CPPUNIT_TEST(testBnc904423); CPPUNIT_TEST(testShapeLineStyle); @@ -800,28 +798,6 @@ void SdImportTest::testBnc584721_2() xDocShRef->DoClose(); } -void SdImportTest::testBnc584721_3() -{ - // Subtitle was simply skipped on master slides. - // Check whether the second shape is a subtitle shape with the right text. - - sd::DrawDocShellRef xDocShRef = loadURL(getURLFromSrc("/sd/qa/unit/data/pptx/bnc584721_3.pptx"), PPTX); - - const SdrPage *pPage = &(GetPage( 1, xDocShRef )->TRG_GetMasterPage()); - SdrTextObj *pTxtObj = dynamic_cast<SdrTextObj *>( pPage->GetObj(1) ); - CPPUNIT_ASSERT_MESSAGE( "no text object", pTxtObj != nullptr); - - // Check the shape type - uno::Reference< drawing::XShape > xShape( pTxtObj->getUnoShape(), uno::UNO_QUERY ); - CPPUNIT_ASSERT_EQUAL(OUString("com.sun.star.presentation.SubtitleShape"), xShape->getShapeType()); - - // Check the text - const EditTextObject& aEdit = pTxtObj->GetOutlinerParaObject()->GetTextObject(); - CPPUNIT_ASSERT_EQUAL(OUString("Click to edit Master subtitle style"), aEdit.GetText(0)); - - xDocShRef->DoClose(); -} - void SdImportTest::testBnc591147() { sd::DrawDocShellRef xDocShRef = loadURL(getURLFromSrc("/sd/qa/unit/data/pptx/bnc591147.pptx"), PPTX); commit 44f2edbf7a4f6f369a670ba32e7d1cc354c4fd6d Author: Noel Grandin <n...@peralex.com> Date: Tue Dec 22 10:12:28 2015 +0200 loplugin:unusedfields in include/vcl Change-Id: I61fc04e00970ea0d398ff80f6b1f81ec2f62dd5e Reviewed-on: https://gerrit.libreoffice.org/20868 Reviewed-by: Noel Grandin <noelgran...@gmail.com> Tested-by: Noel Grandin <noelgran...@gmail.com> diff --git a/include/vcl/animate.hxx b/include/vcl/animate.hxx index 52e81fb..9938240 100644 --- a/include/vcl/animate.hxx +++ b/include/vcl/animate.hxx @@ -93,8 +93,6 @@ struct VCL_DLLPUBLIC AnimationBitmap struct AInfo { - Bitmap aLastSaveBitmap; - Bitmap aBackBitmap; Point aStartOrg; Size aStartSize; VclPtr<OutputDevice> pOutDev; diff --git a/include/vcl/opengl/OpenGLContext.hxx b/include/vcl/opengl/OpenGLContext.hxx index d744bfb..6f5ba5f 100644 --- a/include/vcl/opengl/OpenGLContext.hxx +++ b/include/vcl/opengl/OpenGLContext.hxx @@ -242,9 +242,6 @@ private: typedef std::unordered_map< rtl::OString, std::shared_ptr<OpenGLProgram>, ProgramHash > ProgramCollection; ProgramCollection maPrograms; OpenGLProgram* mpCurrentProgram; -#ifdef DBG_UTIL - std::set<SalGraphicsImpl*> maParents; -#endif public: vcl::Region maClipRegion; diff --git a/include/vcl/print.hxx b/include/vcl/print.hxx index bb30f8e..6340095 100644 --- a/include/vcl/print.hxx +++ b/include/vcl/print.hxx @@ -63,13 +63,11 @@ enum PrinterSupport class VCL_DLLPUBLIC PrinterPage { GDIMetaFile* mpMtf; - JobSetup maJobSetup; public: PrinterPage() : mpMtf( new GDIMetaFile() ) {} - PrinterPage( GDIMetaFile* pMtf, const JobSetup& rSetup ) - : mpMtf( pMtf ), maJobSetup( rSetup ) {} + PrinterPage( GDIMetaFile* pMtf ) : mpMtf( pMtf ) {} ~PrinterPage() { delete mpMtf; } }; diff --git a/include/xmloff/shapeimport.hxx b/include/xmloff/shapeimport.hxx index b347ec4..bad4b36 100644 --- a/include/xmloff/shapeimport.hxx +++ b/include/xmloff/shapeimport.hxx @@ -273,8 +273,6 @@ class XMLOFF_DLLPUBLIC XMLShapeImportHelper : public salhelper::SimpleReferenceO XMLShapeImportPageContextImpl* mpPageContext; - css::uno::Reference< css::frame::XModel > mxModel; - // PropertySetMappers and factory XMLSdPropHdlFactory* mpSdPropHdlFactory; SvXMLImportPropertyMapper* mpPropertySetMapper; diff --git a/xmloff/source/draw/shapeimport.cxx b/xmloff/source/draw/shapeimport.cxx index 8ff67a3..18b7dd9 100644 --- a/xmloff/source/draw/shapeimport.cxx +++ b/xmloff/source/draw/shapeimport.cxx @@ -110,7 +110,6 @@ XMLShapeImportHelper::XMLShapeImportHelper( SvXMLImportPropertyMapper *pExtMapper ) : mpImpl( new XMLShapeImportHelperImpl() ), mpPageContext(nullptr), - mxModel(rModel), mpPropertySetMapper(nullptr), mpPresPagePropsMapper(nullptr), commit 7edfee8e4f81c17ec95a03843c509b95b8e404b2 Author: Yousuf Philips <philip...@hotmail.com> Date: Fri Dec 11 18:53:15 2015 +0400 Rearrangement of various context menus in Impress Change-Id: I6674254898dc6d7351ec4450e2aa5ac3f177bdbf Reviewed-on: https://gerrit.libreoffice.org/20640 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Yousuf Philips <philip...@hotmail.com> diff --git a/sd/inc/sdcommands.h b/sd/inc/sdcommands.h index 4642124..77d6531 100644 --- a/sd/inc/sdcommands.h +++ b/sd/inc/sdcommands.h @@ -93,6 +93,7 @@ #define CMD_SID_SAVE_BACKGROUND ".uno:SaveBackground" #define CMD_SID_DISPLAY_MASTER_BACKGROUND ".uno:DisplayMasterBackground" #define CMD_SID_DISPLAY_MASTER_OBJECTS ".uno:DisplayMasterObjects" +#define CMD_SID_MASTER_LAYOUTS ".uno:MasterLayouts" #define CMD_SID_TABLE_DISTRIBUTE_COLUMNS ".uno:DistributeColumns" #define CMD_SID_TABLE_DISTRIBUTE_ROWS ".uno:DistributeRows" #define CMD_SID_TP_APPLY_TO_ALL_SLIDES ".uno:TaskPaneApplyToAllSlides" diff --git a/sd/source/ui/app/menuids_tmpl.src b/sd/source/ui/app/menuids_tmpl.src index c32cd2d..a41c102 100644 --- a/sd/source/ui/app/menuids_tmpl.src +++ b/sd/source/ui/app/menuids_tmpl.src @@ -89,7 +89,7 @@ {\ Identifier = SID_PAGESETUP ; \ HelpId = CMD_SID_PAGESETUP ; \ - Text [ en-US ] = "Format ~Slide..." ; \ + Text [ en-US ] = "~Slide Properties..." ; \ }; #define MN_INSERT_SLIDE \ @@ -142,14 +142,21 @@ {\ Identifier = SID_DISPLAY_MASTER_BACKGROUND ; \ HelpId = CMD_SID_DISPLAY_MASTER_BACKGROUND ; \ - Text [ en-US ] = "Display Background of Master" ; \ + Text [ en-US ] = "Display Master Background" ; \ }; #define MN_DISPLAY_MASTER_OBJECTS \ MenuItem\ {\ Identifier = SID_DISPLAY_MASTER_OBJECTS ; \ ... etc. - the rest is truncated
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits