Kaydet (Commit) 5ddcaa86 authored tarafından Miklos Vajna's avatar Miklos Vajna

SwPostItField::GetByName: make this available for the layout as well

Change-Id: Ic2a2d759d855cecadb8429541d0a7665a6deaa4b
üst 91aaceb7
...@@ -34,6 +34,7 @@ class SwTxtFld; ...@@ -34,6 +34,7 @@ class SwTxtFld;
class SwFrm; class SwFrm;
class OutlinerParaObject; class OutlinerParaObject;
class SwTextAPIObject; class SwTextAPIObject;
class SwFmtFld;
enum SwAuthorFormat enum SwAuthorFormat
{ {
...@@ -530,6 +531,9 @@ public: ...@@ -530,6 +531,9 @@ public:
const String& rAuthor, const String& rTxt, const String& rInitials, const String& rName, const DateTime& rDate); const String& rAuthor, const String& rTxt, const String& rInitials, const String& rName, const DateTime& rDate);
~SwPostItField(); ~SwPostItField();
/// Looks up a field identified by its unique name (used to get the postit field of a comment fieldmark)
static const SwFmtFld* GetByName(SwDoc* pDoc, const OUString& rName);
virtual String Expand() const; virtual String Expand() const;
virtual SwField* Copy() const; virtual SwField* Copy() const;
......
...@@ -92,6 +92,7 @@ ...@@ -92,6 +92,7 @@
#include <editeng/outliner.hxx> #include <editeng/outliner.hxx>
#include <editeng/outlobj.hxx> #include <editeng/outlobj.hxx>
#include <switerator.hxx> #include <switerator.hxx>
#include <docary.hxx>
#define URL_DECODE INetURLObject::DECODE_UNAMBIGUOUS #define URL_DECODE INetURLObject::DECODE_UNAMBIGUOUS
...@@ -1753,6 +1754,27 @@ SwPostItField::~SwPostItField() ...@@ -1753,6 +1754,27 @@ SwPostItField::~SwPostItField()
} }
} }
const SwFmtFld* SwPostItField::GetByName(SwDoc* pDoc, const OUString& rName)
{
const SwFldTypes* pFldTypes = pDoc->GetFldTypes();
sal_uInt16 nCount = pFldTypes->size();
for (sal_uInt16 nType = 0; nType < nCount; ++nType)
{
const SwFieldType *pCurType = (*pFldTypes)[nType];
SwIterator<SwFmtFld, SwFieldType> aIter(*pCurType);
for (const SwFmtFld* pCurFldFmt = aIter.First(); pCurFldFmt; pCurFldFmt = aIter.Next())
{
// Ignore the field if it's not an annotation or it doesn't have an anchor.
if (pCurFldFmt->GetFld()->GetTyp()->Which() != RES_POSTITFLD || !pCurFldFmt->GetTxtFld())
continue;
const SwPostItField* pField = dynamic_cast<const SwPostItField*>(pCurFldFmt->GetFld());
if (pField->GetName() == rName)
return pCurFldFmt;
}
}
return 0;
}
String SwPostItField::Expand() const String SwPostItField::Expand() const
{ {
......
...@@ -322,28 +322,6 @@ lcl_FillFieldMarkArray(FieldMarks_t & rFieldMarks, SwUnoCrsr const & rUnoCrsr, ...@@ -322,28 +322,6 @@ lcl_FillFieldMarkArray(FieldMarks_t & rFieldMarks, SwUnoCrsr const & rUnoCrsr,
} }
} }
static const SwFmtFld* lcl_getFieldByName(SwDoc* pDoc, const OUString& rName)
{
const SwFldTypes* pFldTypes = pDoc->GetFldTypes();
sal_uInt16 nCount = pFldTypes->size();
for (sal_uInt16 nType = 0; nType < nCount; ++nType)
{
const SwFieldType *pCurType = (*pFldTypes)[nType];
SwIterator<SwFmtFld, SwFieldType> aIter(*pCurType);
for (const SwFmtFld* pCurFldFmt = aIter.First(); pCurFldFmt; pCurFldFmt = aIter.Next())
{
// Ignore the field if it's not an annotation or it doesn't have an anchor.
if (pCurFldFmt->GetFld()->GetTyp()->Which() != RES_POSTITFLD || !pCurFldFmt->GetTxtFld())
continue;
const SwPostItField* pField = dynamic_cast<const SwPostItField*>(pCurFldFmt->GetFld());
if (pField->GetName() == rName)
return pCurFldFmt;
}
}
return 0;
}
static uno::Reference<text::XTextRange> static uno::Reference<text::XTextRange>
lcl_ExportFieldMark( lcl_ExportFieldMark(
uno::Reference< text::XText > const & i_xParentText, uno::Reference< text::XText > const & i_xParentText,
...@@ -380,7 +358,7 @@ lcl_ExportFieldMark( ...@@ -380,7 +358,7 @@ lcl_ExportFieldMark(
{ {
pPortion->SetBookmark( SwXFieldmark::CreateXFieldmark( *pDoc, *pFieldmark ) ); pPortion->SetBookmark( SwXFieldmark::CreateXFieldmark( *pDoc, *pFieldmark ) );
Reference<XTextField> xField; Reference<XTextField> xField;
const SwFmtFld* pField = lcl_getFieldByName(pDoc, pFieldmark->GetName()); const SwFmtFld* pField = SwPostItField::GetByName(pDoc, pFieldmark->GetName());
if (pField) if (pField)
xField = SwXTextField::CreateSwXTextField(*pDoc, *pField); xField = SwXTextField::CreateSwXTextField(*pDoc, *pField);
pPortion->SetTextField(xField); pPortion->SetTextField(xField);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment