summaryrefslogtreecommitdiff
path: root/sw
diff options
context:
space:
mode:
authorJan Holesovsky <kendy@collabora.com>2015-12-18 21:19:10 +0100
committerMiklos Vajna <vmiklos@collabora.co.uk>2016-03-18 09:13:56 +0100
commit827ff2e8531619e96666a5690f538a0a27e5780f (patch)
tree0472e3a2be1e81bc4f8f87e4f9b8462b85567f3c /sw
parent299cc331bebe951b8b6fcfdd1e279ce6d2123ece (diff)
mailmerge: Introduce buttons for first/prev/next/last mailmerge entry.
Change-Id: I3dc63d568dc4cd6f7e06b057ca4a387e4ad0677e
Diffstat (limited to 'sw')
-rw-r--r--sw/inc/cmdid.h5
-rw-r--r--sw/sdi/swriter.sdi68
-rw-r--r--sw/sdi/wrtapp.sdi24
-rw-r--r--sw/source/uibase/app/apphdl.cxx69
-rw-r--r--sw/uiconfig/swform/toolbar/mailmerge.xml6
-rw-r--r--sw/uiconfig/swreport/toolbar/mailmerge.xml6
-rw-r--r--sw/uiconfig/swriter/toolbar/mailmerge.xml6
-rw-r--r--sw/uiconfig/swxform/toolbar/mailmerge.xml6
8 files changed, 190 insertions, 0 deletions
diff --git a/sw/inc/cmdid.h b/sw/inc/cmdid.h
index acb112b13669..a2b192c9bc14 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 9a1bee2effee..a5b12586adf1 100644
--- a/sw/sdi/swriter.sdi
+++ b/sw/sdi/swriter.sdi
@@ -3773,6 +3773,74 @@ SfxVoidItem MailMergeWizard FN_MAILMERGE_WIZARD
GroupId = GID_DOCUMENT;
]
+SfxVoidItem MailMergeFirstEntry FN_MAILMERGE_FIRST_ENTRY
+()
+[
+ AutoUpdate = TRUE,
+ FastCall = TRUE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = TRUE,
+ RecordAbsolute = FALSE,
+ RecordPerSet;
+
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_DOCUMENT;
+]
+
+SfxVoidItem MailMergePrevEntry FN_MAILMERGE_PREV_ENTRY
+()
+[
+ AutoUpdate = TRUE,
+ FastCall = TRUE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = TRUE,
+ RecordAbsolute = FALSE,
+ RecordPerSet;
+
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_DOCUMENT;
+]
+
+SfxVoidItem MailMergeNextEntry FN_MAILMERGE_NEXT_ENTRY
+()
+[
+ AutoUpdate = TRUE,
+ FastCall = TRUE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = TRUE,
+ RecordAbsolute = FALSE,
+ RecordPerSet;
+
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_DOCUMENT;
+]
+
+SfxVoidItem MailMergeLastEntry FN_MAILMERGE_LAST_ENTRY
+()
+[
+ AutoUpdate = TRUE,
+ FastCall = TRUE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = TRUE,
+ RecordAbsolute = FALSE,
+ RecordPerSet;
+
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_DOCUMENT;
+]
+
SfxBoolItem MergeTable FN_TABLE_MERGE_TABLE
()
[
diff --git a/sw/sdi/wrtapp.sdi b/sw/sdi/wrtapp.sdi
index 57a7e8aec006..9e8d3587b9fd 100644
--- a/sw/sdi/wrtapp.sdi
+++ b/sw/sdi/wrtapp.sdi
@@ -62,6 +62,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 3bd9d4132d84..0f1209c2df0c 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 f80aeb421d66..662a0000ed70 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 f80aeb421d66..662a0000ed70 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 f80aeb421d66..662a0000ed70 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 f80aeb421d66..662a0000ed70 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>