Kaydet (Commit) 88005f6f authored tarafından Caolán McNamara's avatar Caolán McNamara

Related: fdo#73936 allow ModelToViewHelper to not expand footnotes..

but continue to expand fields. No change to anything yet, but
should allow this to be reused in SwTxtNode::GetExpandText

Change-Id: I4dbfc454d498fc85a918b0e43e68c219cbc37a21
üst d0c545be
......@@ -61,10 +61,11 @@ class SwTxtNode;
0111: expanding fields + hiding hiddens + hiding redlines gives: AAAABB foo CCCCC foo DDDDD
*/
#define PASSTHROUGH 0x0000
#define EXPANDFIELDS 0x0001
#define HIDEINVISIBLE 0x0002
#define HIDEREDLINED 0x0004
#define PASSTHROUGH 0x0000
#define EXPANDFIELDS 0x0001
#define EXPANDFOOTNOTE 0x0002
#define HIDEINVISIBLE 0x0004
#define HIDEREDLINED 0x0008
class ModelToViewHelper
{
......@@ -98,7 +99,7 @@ public:
ModelPosition() : mnPos(0), mnSubPos(0), mbIsField(false) {}
};
ModelToViewHelper(const SwTxtNode &rNode, sal_uInt16 eMode = EXPANDFIELDS);
ModelToViewHelper(const SwTxtNode &rNode, sal_uInt16 eMode = EXPANDFIELDS | EXPANDFOOTNOTE);
ModelToViewHelper() //pass through filter, view == model
{
}
......
......@@ -265,11 +265,17 @@ void SwDocTest::testModelToViewHelper()
}
{
ModelToViewHelper aModelToViewHelper(*pTxtNode, EXPANDFIELDS);
ModelToViewHelper aModelToViewHelper(*pTxtNode, EXPANDFIELDS | EXPANDFOOTNOTE);
OUString sViewText = aModelToViewHelper.getViewText();
CPPUNIT_ASSERT(sViewText == "AAAAA BBBBB foo CCCCC foo DDDDD");
}
{
ModelToViewHelper aModelToViewHelper(*pTxtNode, EXPANDFIELDS);
OUString sViewText = aModelToViewHelper.getViewText();
CPPUNIT_ASSERT(sViewText == "AAAAA BBBBB CCCCC DDDDD");
}
{
ModelToViewHelper aModelToViewHelper(*pTxtNode, HIDEINVISIBLE);
OUString sViewText = aModelToViewHelper.getViewText();
......@@ -283,13 +289,13 @@ void SwDocTest::testModelToViewHelper()
}
{
ModelToViewHelper aModelToViewHelper(*pTxtNode, EXPANDFIELDS | HIDEINVISIBLE);
ModelToViewHelper aModelToViewHelper(*pTxtNode, EXPANDFIELDS | HIDEINVISIBLE | EXPANDFOOTNOTE);
OUString sViewText = aModelToViewHelper.getViewText();
CPPUNIT_ASSERT(sViewText == "AAAAA CCCCC foo DDDDD");
}
{
ModelToViewHelper aModelToViewHelper(*pTxtNode, EXPANDFIELDS | HIDEREDLINED);
ModelToViewHelper aModelToViewHelper(*pTxtNode, EXPANDFIELDS | HIDEREDLINED | EXPANDFOOTNOTE);
OUString sViewText = aModelToViewHelper.getViewText();
CPPUNIT_ASSERT(sViewText == "AAAABB foo CCCCC foo DDDDD");
}
......@@ -305,7 +311,7 @@ void SwDocTest::testModelToViewHelper()
}
{
ModelToViewHelper aModelToViewHelper(*pTxtNode, EXPANDFIELDS | HIDEINVISIBLE | HIDEREDLINED);
ModelToViewHelper aModelToViewHelper(*pTxtNode, EXPANDFIELDS | HIDEINVISIBLE | HIDEREDLINED | EXPANDFOOTNOTE);
OUString sViewText = aModelToViewHelper.getViewText();
CPPUNIT_ASSERT(sViewText == "AAAACCCCC foo DDDDD");
}
......@@ -325,7 +331,7 @@ void SwDocTest::testModelToViewHelper()
CPPUNIT_ASSERT(pTxtNode->GetTxt().getLength() == 11);
{
ModelToViewHelper aModelToViewHelper(*pTxtNode, EXPANDFIELDS);
ModelToViewHelper aModelToViewHelper(*pTxtNode, EXPANDFIELDS | EXPANDFOOTNOTE);
OUString sViewText = aModelToViewHelper.getViewText();
fprintf(stderr, "string is %s\n", OUStringToOString(sViewText, RTL_TEXTENCODING_UTF8).getStr());
CPPUNIT_ASSERT(sViewText == "AAAAABBBBBCCCCC");
......
......@@ -119,7 +119,7 @@ ModelToViewHelper::ModelToViewHelper(const SwTxtNode &rNode, sal_uInt16 eMode)
if (nTrailingShownLen)
aBlocks.push_back(block(nShownStart, nTrailingShownLen, true));
if (eMode & EXPANDFIELDS)
if (eMode & EXPANDFIELDS || eMode & EXPANDFOOTNOTE)
{
//first the normal fields, get their position in the node and what the text they expand
//to is
......@@ -142,11 +142,15 @@ ModelToViewHelper::ModelToViewHelper(const SwTxtNode &rNode, sal_uInt16 eMode)
{
case RES_TXTATR_FIELD:
case RES_TXTATR_ANNOTATION:
aFieldResult.m_sExpand =
static_cast<SwTxtFld const*>(pAttr)->GetFmtFld().GetField()
->ExpandField(true);
if (eMode & EXPANDFIELDS)
{
aFieldResult.m_sExpand =
static_cast<SwTxtFld const*>(pAttr)->GetFmtFld().GetField()
->ExpandField(true);
}
break;
case RES_TXTATR_FTN:
if (eMode & EXPANDFOOTNOTE)
{
const SwFmtFtn& rFtn = static_cast<SwTxtFtn const*>(pAttr)->GetFtn();
const SwDoc *pDoc = rNode.GetDoc();
......@@ -156,33 +160,35 @@ ModelToViewHelper::ModelToViewHelper(const SwTxtNode &rNode, sal_uInt16 eMode)
default:
break;
}
aFind->m_aAttrs.insert(aFieldResult);
}
}
}
//now get the dropdown formfields, get their position in the node and what the text they expand
//to is
SwPaM aPaM(rNode, 0, rNode, rNode.Len());
std::vector<sw::mark::IFieldmark*> aDropDowns =
rNode.GetDoc()->getIDocumentMarkAccess()->getDropDownsFor(aPaM);
for (std::vector<sw::mark::IFieldmark*>::iterator aI = aDropDowns.begin(), aEnd = aDropDowns.end();
aI != aEnd; ++aI)
if (eMode & EXPANDFIELDS)
{
sw::mark::IFieldmark *pMark = *aI;
const sal_Int32 nDummyCharPos = pMark->GetMarkPos().nContent.GetIndex()-1;
if (aHiddenMulti.IsSelected(nDummyCharPos))
continue;
std::vector<block>::iterator aFind = std::find_if(aBlocks.begin(), aBlocks.end(),
containsPos(nDummyCharPos));
if (aFind != aBlocks.end())
//now get the dropdown formfields, get their position in the node and what the text they expand
//to is
SwPaM aPaM(rNode, 0, rNode, rNode.Len());
std::vector<sw::mark::IFieldmark*> aDropDowns =
rNode.GetDoc()->getIDocumentMarkAccess()->getDropDownsFor(aPaM);
for (std::vector<sw::mark::IFieldmark*>::iterator aI = aDropDowns.begin(), aEnd = aDropDowns.end();
aI != aEnd; ++aI)
{
FieldResult aFieldResult;
aFieldResult.m_nFieldPos = nDummyCharPos;
aFieldResult.m_sExpand = sw::mark::ExpandFieldmark(pMark);
aFind->m_aAttrs.insert(aFieldResult);
sw::mark::IFieldmark *pMark = *aI;
const sal_Int32 nDummyCharPos = pMark->GetMarkPos().nContent.GetIndex()-1;
if (aHiddenMulti.IsSelected(nDummyCharPos))
continue;
std::vector<block>::iterator aFind = std::find_if(aBlocks.begin(), aBlocks.end(),
containsPos(nDummyCharPos));
if (aFind != aBlocks.end())
{
FieldResult aFieldResult;
aFieldResult.m_nFieldPos = nDummyCharPos;
aFieldResult.m_sExpand = sw::mark::ExpandFieldmark(pMark);
aFind->m_aAttrs.insert(aFieldResult);
}
}
}
}
......
......@@ -1980,7 +1980,7 @@ bool SwTxtNode::CountWords( SwDocStat& rStat,
}
// ConversionMap to expand fields, remove invisible and redline deleted text for scanner
const ModelToViewHelper aConversionMap(*this, EXPANDFIELDS | HIDEINVISIBLE | HIDEREDLINED);
const ModelToViewHelper aConversionMap(*this, EXPANDFIELDS | EXPANDFOOTNOTE | HIDEINVISIBLE | HIDEREDLINED);
OUString aExpandText = aConversionMap.getViewText();
// map start and end points onto the ConversionMap
......
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