summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Kaganski <mike.kaganski@collabora.com>2016-06-28 00:30:29 +1000
committerMiklos Vajna <vmiklos@collabora.co.uk>2016-06-28 07:06:04 +0000
commit3f9acf02b0a45deb258c96b638c6fddd9af31ff9 (patch)
tree6c856a388a32dfda98c47a37c0226b25a1904590
parentd37e39081328e94b7106c8f3ca1dbc629ecb9a80 (diff)
tdf#99729 prerequisite: model-level user data r/w
This commit introduces a system for reading/writing common model-level user data (like compatibility flags from settings.xml). It is designed to reduce code duplication in cases where an option is applicable to any type of document. Change-Id: Id4e31df14f49cbb673f4a6df943ccec6d98eb9aa Reviewed-on: https://gerrit.libreoffice.org/26719 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
-rw-r--r--include/svx/svdmodel.hxx4
-rw-r--r--sc/source/ui/view/prevwsh.cxx7
-rw-r--r--sc/source/ui/view/viewdata.cxx13
-rw-r--r--sd/source/ui/view/drviews5.cxx5
-rw-r--r--svx/source/svdraw/svdmodel.cxx29
-rw-r--r--sw/source/uibase/uiview/view.cxx5
6 files changed, 61 insertions, 2 deletions
diff --git a/include/svx/svdmodel.hxx b/include/svx/svdmodel.hxx
index 3f617c2fe48e..fa24d554d893 100644
--- a/include/svx/svdmodel.hxx
+++ b/include/svx/svdmodel.hxx
@@ -550,6 +550,10 @@ public:
bool IsWriter() const { return !bMyPool; }
+ // Used as a fallback in *::ReadUserDataSequence() to process common properties
+ void ReadUserDataSequenceValue(const css::beans::PropertyValue *pValue);
+ void WriteUserDataSequence(css::uno::Sequence < css::beans::PropertyValue >& rValues, bool bBrowse = false);
+
/** returns the numbering type that is used to format page fields in drawing shapes */
virtual SvxNumType GetPageNumType() const;
diff --git a/sc/source/ui/view/prevwsh.cxx b/sc/source/ui/view/prevwsh.cxx
index 885273f78739..b363f7c65d62 100644
--- a/sc/source/ui/view/prevwsh.cxx
+++ b/sc/source/ui/view/prevwsh.cxx
@@ -947,6 +947,9 @@ void ScPreviewShell::WriteUserDataSequence(uno::Sequence < beans::PropertyValue
pSeq[2].Name = "PageNumber";
pSeq[2].Value <<= pPreview->GetPageNo();
}
+
+ // Common SdrModel processing
+ GetDocument().GetDrawLayer()->WriteUserDataSequence(rSeq);
}
void ScPreviewShell::ReadUserDataSequence(const uno::Sequence < beans::PropertyValue >& rSeq)
@@ -972,7 +975,9 @@ void ScPreviewShell::ReadUserDataSequence(const uno::Sequence < beans::PropertyV
if (pSeq->Value >>= nTemp)
pPreview->SetPageNo(nTemp);
}
- }
+ // Fallback to common SdrModel processing
+ else GetDocument().GetDrawLayer()->ReadUserDataSequenceValue(pSeq);
+ }
}
}
}
diff --git a/sc/source/ui/view/viewdata.cxx b/sc/source/ui/view/viewdata.cxx
index 7ef5dbccecfc..d188643b660c 100644
--- a/sc/source/ui/view/viewdata.cxx
+++ b/sc/source/ui/view/viewdata.cxx
@@ -112,7 +112,7 @@ ScViewDataTable::~ScViewDataTable()
{
}
-void ScViewDataTable::WriteUserDataSequence(uno::Sequence <beans::PropertyValue>& rSettings, const ScViewData& /*rViewData*/, SCTAB /*nTab*/) const
+void ScViewDataTable::WriteUserDataSequence(uno::Sequence <beans::PropertyValue>& rSettings, const ScViewData& rViewData, SCTAB /*nTab*/) const
{
rSettings.realloc(SC_TABLE_VIEWSETTINGS_COUNT);
beans::PropertyValue* pSettings = rSettings.getArray();
@@ -159,6 +159,9 @@ void ScViewDataTable::WriteUserDataSequence(uno::Sequence <beans::PropertyValue>
pSettings[SC_TABLE_SHOWGRID].Name = SC_UNO_SHOWGRID;
pSettings[SC_TABLE_SHOWGRID].Value <<= bShowGrid;
}
+
+ // Common SdrModel processing
+ rViewData.GetDocument()->GetDrawLayer()->WriteUserDataSequence(rSettings);
}
void ScViewDataTable::ReadUserDataSequence(const uno::Sequence <beans::PropertyValue>& aSettings, ScViewData& rViewData, SCTAB nTab, bool& rHasZoom )
@@ -288,6 +291,8 @@ void ScViewDataTable::ReadUserDataSequence(const uno::Sequence <beans::PropertyV
pDoc->SetTabBgColor(nTab, Color(static_cast<ColorData>(nColor)));
}
}
+ // Fallback to common SdrModel processing
+ else rViewData.GetDocument()->GetDrawLayer()->ReadUserDataSequenceValue(&aSettings[i]);
}
if (eHSplitMode == SC_SPLIT_FIX)
nFixPosX = SanitizeCol( static_cast<SCCOL>( bHasHSplitInTwips ? nTempPosHTw : nTempPosH ));
@@ -2728,6 +2733,9 @@ void ScViewData::WriteUserDataSequence(uno::Sequence <beans::PropertyValue>& rSe
pSettings[SC_RASTERSYNC].Value <<= aGridOpt.GetSynchronize();
}
}
+
+ // Common SdrModel processing
+ GetDocument()->GetDrawLayer()->WriteUserDataSequence(rSettings);
}
void ScViewData::ReadUserDataSequence(const uno::Sequence <beans::PropertyValue>& rSettings)
@@ -2881,6 +2889,9 @@ void ScViewData::ReadUserDataSequence(const uno::Sequence <beans::PropertyValue>
aGridOpt.SetFieldDivisionY( static_cast <sal_uInt32> ( ScUnoHelpFunctions::GetInt32FromAny( rSettings[i].Value ) ) );
else if ( sName == SC_UNO_RASTERSYNC )
aGridOpt.SetSynchronize( ScUnoHelpFunctions::GetBoolFromAny( rSettings[i].Value ) );
+ // Fallback to common SdrModel processing
+ else GetDocument()->GetDrawLayer()->ReadUserDataSequenceValue(&rSettings[i]);
+
pOptions->SetGridOptions(aGridOpt);
}
}
diff --git a/sd/source/ui/view/drviews5.cxx b/sd/source/ui/view/drviews5.cxx
index de08b44f84a6..b4e331918038 100644
--- a/sd/source/ui/view/drviews5.cxx
+++ b/sd/source/ui/view/drviews5.cxx
@@ -452,6 +452,9 @@ void DrawViewShell::WriteUserDataSequence ( css::uno::Sequence < css::beans::Pro
rSequence.realloc( nIndex + 1 );
rSequence[nIndex].Name = sUNO_View_ZoomOnPage ;
rSequence[nIndex].Value <<= mbZoomOnPage;
+
+ // Common SdrModel processing
+ GetDocSh()->GetDoc()->WriteUserDataSequence(rSequence, bBrowse);
}
void DrawViewShell::ReadUserDataSequence ( const css::uno::Sequence < css::beans::PropertyValue >& rSequence, bool bBrowse )
@@ -472,6 +475,8 @@ void DrawViewShell::ReadUserDataSequence ( const css::uno::Sequence < css::beans
mbZoomOnPage = bZoomPage;
}
}
+ // Fallback to common SdrModel processing
+ else GetDocSh()->GetDoc()->ReadUserDataSequenceValue(pValue);
}
if( mpFrameView->GetPageKind() != mePageKind )
diff --git a/svx/source/svdraw/svdmodel.cxx b/svx/source/svdraw/svdmodel.cxx
index 5edce8f8b453..f537e07b206e 100644
--- a/svx/source/svdraw/svdmodel.cxx
+++ b/svx/source/svdraw/svdmodel.cxx
@@ -1925,6 +1925,35 @@ SvxNumType SdrModel::GetPageNumType() const
return SVX_ARABIC;
}
+void SdrModel::ReadUserDataSequenceValue(const css::beans::PropertyValue* /*pValue*/)
+{
+ // TODO: Read common model-level values
+}
+
+template <typename T>
+inline void addPair(std::vector< std::pair< OUString, Any > >& aUserData, const OUString& name, const T val)
+{
+ aUserData.push_back(std::pair< OUString, Any >(name, css::uno::makeAny(val)));
+}
+
+void SdrModel::WriteUserDataSequence(css::uno::Sequence < css::beans::PropertyValue >& rValues, bool /*bBrowse*/)
+{
+ std::vector< std::pair< OUString, Any > > aUserData;
+ // TODO: addPair(aUserData, "PropName", PropValue);
+
+ const sal_Int32 nOldLength = rValues.getLength();
+ rValues.realloc(nOldLength + aUserData.size());
+
+ css::beans::PropertyValue* pValue = &(rValues.getArray()[nOldLength]);
+
+ for (const auto &aIter : aUserData)
+ {
+ pValue->Name = aIter.first;
+ pValue->Value = aIter.second;
+ ++pValue;
+ }
+}
+
const SdrPage* SdrModel::GetPage(sal_uInt16 nPgNum) const
{
DBG_ASSERT(nPgNum < maPages.size(), "SdrModel::GetPage: Access out of range (!)");
diff --git a/sw/source/uibase/uiview/view.cxx b/sw/source/uibase/uiview/view.cxx
index 411431039ced..7821da5e39c4 100644
--- a/sw/source/uibase/uiview/view.cxx
+++ b/sw/source/uibase/uiview/view.cxx
@@ -1326,6 +1326,8 @@ void SwView::ReadUserDataSequence ( const uno::Sequence < beans::PropertyValue >
pValue->Value >>= bSelectedFrame;
bGotIsSelectedFrame = true;
}
+ // Fallback to common SdrModel processing
+ else GetDocShell()->GetDoc()->getIDocumentDrawModelAccess().GetDrawModel()->ReadUserDataSequenceValue(pValue);
pValue++;
}
if (bGotVisibleBottom)
@@ -1490,6 +1492,9 @@ void SwView::WriteUserDataSequence ( uno::Sequence < beans::PropertyValue >& rSe
aVector.push_back(comphelper::makePropertyValue("IsSelectedFrame", FrameTypeFlags::NONE != m_pWrtShell->GetSelFrameType()));
rSequence = comphelper::containerToSequence(aVector);
+
+ // Common SdrModel processing
+ GetDocShell()->GetDoc()->getIDocumentDrawModelAccess().GetDrawModel()->WriteUserDataSequence(rSequence);
}
void SwView::ShowCursor( bool bOn )