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