summaryrefslogtreecommitdiff
path: root/sw/source
diff options
context:
space:
mode:
Diffstat (limited to 'sw/source')
-rw-r--r--sw/source/core/fields/authfld.cxx48
-rw-r--r--sw/source/uibase/docvw/edtwin2.cxx9
2 files changed, 57 insertions, 0 deletions
diff --git a/sw/source/core/fields/authfld.cxx b/sw/source/core/fields/authfld.cxx
index 53867c809673..4728e48fd60b 100644
--- a/sw/source/core/fields/authfld.cxx
+++ b/sw/source/core/fields/authfld.cxx
@@ -554,6 +554,54 @@ OUString SwAuthorityField::GetDescription() const
return SwResId(STR_AUTHORITY_ENTRY);
}
+OUString SwAuthorityField::GetAuthority(const SwTextAttr* pTextAttr,
+ const SwRootFrame* pLayout) const
+{
+ OUString aText;
+
+ SwForm aForm(TOX_AUTHORITIES);
+ if (!pTextAttr)
+ {
+ return aText;
+ }
+
+ auto& rFormatField = const_cast<SwFormatField&>(pTextAttr->GetFormatField());
+ SwTextField* pTextField = rFormatField.GetTextField();
+ if (!pTextField)
+ {
+ return aText;
+ }
+
+ const SwTextNode& rNode = pTextField->GetTextNode();
+ const auto pFieldType = static_cast<const SwAuthorityFieldType*>(GetTyp());
+ std::unique_ptr<SwTOXInternational> pIntl(pFieldType->CreateTOXInternational());
+ SwTOXAuthority aAuthority(rNode, rFormatField, *pIntl);
+ sal_uInt16 nLevel = aAuthority.GetLevel();
+ SwFormTokens aPattern = aForm.GetPattern(nLevel);
+ aAuthority.InitText(pLayout);
+ for (const auto& rToken : aPattern)
+ {
+ switch (rToken.eTokenType)
+ {
+ case TOKEN_TEXT:
+ {
+ aText += rToken.sText;
+ break;
+ }
+ case TOKEN_AUTHORITY:
+ {
+ sal_uInt16 eField = rToken.nAuthorityField;
+ aText += aAuthority.GetText(eField, pLayout);
+ break;
+ }
+ default:
+ break;
+ }
+ }
+
+ return aText;
+}
+
const char* const aFieldNames[] =
{
"Identifier",
diff --git a/sw/source/uibase/docvw/edtwin2.cxx b/sw/source/uibase/docvw/edtwin2.cxx
index 5770afbd4c05..f3b975dfb546 100644
--- a/sw/source/uibase/docvw/edtwin2.cxx
+++ b/sw/source/uibase/docvw/edtwin2.cxx
@@ -52,6 +52,7 @@
#include <ndtxt.hxx>
#include <FrameControlsManager.hxx>
#include <comphelper/lok.hxx>
+#include <authfld.hxx>
static OUString lcl_GetRedlineHelp( const SwRangeRedline& rRedl, bool bBalloon )
{
@@ -340,6 +341,14 @@ void SwEditWin::RequestHelp(const HelpEvent &rEvt)
}
break;
}
+ case SwFieldIds::TableOfAuthorities:
+ {
+ const auto pAuthorityField
+ = static_cast<const SwAuthorityField*>(pField);
+ sText = pAuthorityField->GetAuthority(aContentAtPos.pFndTextAttr,
+ rSh.GetLayout());
+ break;
+ }
default: break;
}