23 #include <osl/diagnose.h>
24 #include <osl/thread.h>
25 #include <rtl/ustrbuf.hxx>
53 virtual void Closed()
override;
54 virtual ::sfx2::SvBaseLink::UpdateResult
DataChanged(
55 const OUString& rMimeType,
const css::uno::Any & rValue )
override;
57 virtual const SwNode* GetAnchor()
const override;
68 case SotClipboardFormatId::STRING:
71 uno::Sequence< sal_Int8 >
aSeq;
73 OUString sStr( reinterpret_cast<char const *>(aSeq.getConstArray()), aSeq.getLength(), osl_getThreadTextEncoding() );
76 sal_Int32
n = sStr.getLength();
77 while( n && 0 == sStr[ n-1 ] )
79 if( n && 0x0a == sStr[ n-1 ] )
81 if( n && 0x0d == sStr[ n-1 ] )
84 bool bDel = n != sStr.getLength();
86 sStr = sStr.copy( 0, n );
88 m_rFieldType.SetExpansion(sStr);
90 m_rFieldType.SetCRLFDelFlag(bDel);
99 OSL_ENSURE(m_rFieldType.GetDoc(),
"no pDoc");
102 if (m_rFieldType.HasWriterListeners() && !m_rFieldType.IsModifyLocked() && !ChkNoDataFlag())
109 m_rFieldType.LockModify();
111 std::vector<SwFormatField*> vFields;
112 m_rFieldType.GatherFields(vFields,
false);
121 for(
auto pFormatField: vFields)
124 if(pFormatField->GetTextField())
125 pFormatField->UpdateTextNode(
nullptr, &aUpdateDDE );
128 m_rFieldType.UnlockModify();
145 void SwIntrnlRefLink::Closed()
147 if (m_rFieldType.GetDoc() && !m_rFieldType.GetDoc()->IsInDtor())
165 SvBaseLink::Closed();
170 const SwNode* SwIntrnlRefLink::GetAnchor()
const
173 const SwNode* pNd =
nullptr;
174 m_rFieldType.CallSwClientNotify(
181 bool bInRange =
false;
189 m_aName( rName ), m_pDoc( nullptr ), m_nRefCount( 0 )
192 m_RefLink =
new SwIntrnlRefLink( *
this, nUpdateType );
220 OUString
aStr = _aStr;
224 aStr = aStr.replaceFirst(
" ",
" ", &nIndex);
241 OSL_ENSURE( !
m_nRefCount,
"How do we get the references?" );
271 sal_Int32 nPart = -1;
278 rVal <<=
GetType() == SfxLinkUpdateMode::ALWAYS;
292 sal_Int32 nPart = -1;
299 SetType( *o3tl::doAccess<bool>(rVal) ?
300 SfxLinkUpdateMode::ALWAYS :
301 SfxLinkUpdateMode::ONCALL );
312 const OUString sOldCmd(
GetCmd() );
313 OUStringBuffer sNewCmd;
315 for (sal_Int32
i=0;
i<3; ++
i)
322 sNewCmd.append((
i < 2)
325 SetCmd( sNewCmd.makeStringAndClear() );
335 if(
GetTyp()->HasOnlyOneListener() )
342 aStr = aStr.replaceAll(
"\r",
"");
343 aStr = aStr.replaceAll(
"\t",
" ");
344 aStr = aStr.replaceAll(
"\n",
"|");
345 if (aStr.endsWith(
"|"))
347 return aStr.copy(0, aStr.getLength()-1);
Instances of SwFields and those derived from it occur 0 to n times.
virtual void SetPar2(const OUString &rStr) override
set field type command
void SetCmd(const OUString &aStr)
SwDDEFieldType(const OUString &rName, const OUString &rCmd, SfxLinkUpdateMode)
virtual ~SwDDEField() override
virtual void SetModified()=0
Must be called manually at changes of format.
const sal_Unicode cTokenSeparator
void SetType(SfxLinkUpdateMode nType)
Base class of all fields.
SfxLinkUpdateMode GetType() const
IDocumentLinksAdministration const & getIDocumentLinksAdministration() const
void SetLinkSourceName(const OUString &rName)
virtual ~LinkAnchorSearchHint() override
The root element of a Writer document layout.
#define FIELD_PROP_SUBTYPE
OUString const & GetCmd() const
virtual OUString ExpandImpl(SwRootFrame const *pLayout) const override
SAL_DLLPRIVATE void RefCntChgd()
const BorderLinePrimitive2D *pCandidateB assert(pCandidateA)
const OUString & GetLinkSourceName() const
bool IsInRange(const sal_uInt16 *pRange, const sal_uInt16 nId)
check if ID is in range of attribute set IDs
virtual void PutValue(const css::uno::Any &rVal, sal_uInt16 nWhich) override
virtual std::unique_ptr< SwFieldType > Copy() const override
tools::SvRef< sfx2::SvBaseLink > m_RefLink
void Remove(SvBaseLink const *pLink)
SwEditShell const * GetEditShell() const
virtual OUString GetPar1() const override
Get parameter via types.
virtual OUString GetPar2() const override
get field type command
IDocumentState const & getIDocumentState() const
SwDDEField(SwDDEFieldType *)
IDocumentLayoutAccess const & getIDocumentLayoutAccess() const
SwFieldType * GetTyp() const
void EndAction(const bool bIdleEnd=false)
void InsertDDELink(SvBaseLink *, const OUString &rServer, std::u16string_view rTopic, std::u16string_view rItem)
void FieldToText(SwFieldType const *pType)
virtual const SwViewShell * GetCurrentViewShell() const =0
Returns the layout set at the document.
static SotClipboardFormatId GetFormatIdFromMimeType(const OUString &rMimeType)
Sequence< sal_Int8 > aSeq
virtual sfx2::LinkManager & GetLinkManager()=0
virtual std::unique_ptr< SwField > Copy() const override
virtual ~SwDDEFieldType() override
void StartAllAction()
For all views of this document.
constexpr TypedWhichId< SwMsgPoolItem > RES_UPDATEDDETBL(169)
virtual OUString GetName() const override
Only in derived classes.
virtual void QueryValue(css::uno::Any &rVal, sal_uInt16 nWhich) const override
virtual bool IsVisibleLinks() const =0
Insert links in-/visibly into LinkManager (linked ranges).
Base class of the Writer document model elements.
void SetVisible(bool bFlag)