Use named shapes for redaction
Change-Id: Ibb55bd503d264b618c3fbebfdbcf3fe9958c6783 Reviewed-on: https://gerrit.libreoffice.org/68031 Tested-by: Jenkins Reviewed-by: Muhammet Kara <muhammet.kara@collabora.com>
This commit is contained in:
@@ -416,7 +416,9 @@ class SfxDocumentInfoItem;
|
||||
#define SID_PASTE_ONLY_TEXT (SID_SFX_START + 802)
|
||||
#define SID_PASTE_ONLY_FORMULA (SID_SFX_START + 803)
|
||||
#define SID_PASTE_ONLY_VALUE (SID_SFX_START + 804)
|
||||
// FREE: SID_SFX_START + 808
|
||||
|
||||
// Used for redaction
|
||||
#define SID_SHAPE_NAME (SID_SFX_START + 808)
|
||||
// FREE: SID_SFX_START + 809
|
||||
// FREE: SID_SFX_START + 810
|
||||
#define SID_ASYNCHRON (SID_SFX_START + 811)
|
||||
|
@@ -2082,7 +2082,7 @@
|
||||
<value>1</value>
|
||||
</prop>
|
||||
</node>
|
||||
<node oor:name=".uno:Rect?FillTransparence:short=50&FillColor:string=COL_GRAY7&LineStyle:short=0&IsSticky:bool=true" oor:op="replace">
|
||||
<node oor:name=".uno:Rect?FillTransparence:short=50&FillColor:string=COL_GRAY7&LineStyle:short=0&IsSticky:bool=true&ShapeName:string=RectangleRedactionShape" oor:op="replace">
|
||||
<prop oor:name="Label" oor:type="xs:string">
|
||||
<value xml:lang="en-US">Rectangle</value>
|
||||
</prop>
|
||||
@@ -4746,7 +4746,7 @@
|
||||
<value>1</value>
|
||||
</prop>
|
||||
</node>
|
||||
<node oor:name=".uno:Freeline_Unfilled?Transparence:short=50&Color:string=COL_GRAY7&Width:short=500&IsSticky:bool=true" oor:op="replace">
|
||||
<node oor:name=".uno:Freeline_Unfilled?Transparence:short=50&Color:string=COL_GRAY7&Width:short=500&IsSticky:bool=true&ShapeName:string=FreeformRedactionShape" oor:op="replace">
|
||||
<prop oor:name="Label" oor:type="xs:string">
|
||||
<value xml:lang="en-US">Freeform</value>
|
||||
</prop>
|
||||
|
@@ -56,7 +56,8 @@ namespace sd {
|
||||
/*//Extra attributes coming from parameters
|
||||
sal_uInt16 mnTransparence; // Default: 0
|
||||
OUString msColor; // Default: ""
|
||||
sal_uInt16 mnWidth; // Default: 0*/
|
||||
sal_uInt16 mnWidth; // Default: 0
|
||||
OUString msShapeName; // Default: ""*/
|
||||
FuConstructBezierPolygon::FuConstructBezierPolygon (
|
||||
ViewShell* pViewSh,
|
||||
::sd::Window* pWin,
|
||||
@@ -114,9 +115,13 @@ void FuConstructBezierPolygon::DoExecute( SfxRequest& rReq )
|
||||
if (nSlotId != SID_DRAW_FREELINE_NOFILL)
|
||||
return;
|
||||
|
||||
// This piece is only relevant for SID_DRAW_FREELINE_NOFILL
|
||||
// Adding this note for the future because the if-block gets auto-flattened
|
||||
// by loplugins
|
||||
const SfxUInt16Item* pTransparence = rReq.GetArg<SfxUInt16Item>(FN_PARAM_1);
|
||||
const SfxStringItem* pColor = rReq.GetArg<SfxStringItem>(FN_PARAM_2);
|
||||
const SfxUInt16Item* pWidth = rReq.GetArg<SfxUInt16Item>(FN_PARAM_3);
|
||||
const SfxStringItem* pShapeName = rReq.GetArg<SfxStringItem>(SID_SHAPE_NAME);
|
||||
|
||||
if (pTransparence && pTransparence->GetValue() > 0)
|
||||
{
|
||||
@@ -130,6 +135,11 @@ void FuConstructBezierPolygon::DoExecute( SfxRequest& rReq )
|
||||
{
|
||||
mnWidth = pWidth->GetValue();
|
||||
}
|
||||
if (pShapeName && !pShapeName->GetValue().isEmpty())
|
||||
{
|
||||
msShapeName = pShapeName->GetValue();
|
||||
}
|
||||
// End of the SID_DRAW_FREELINE_NOFILL block
|
||||
}
|
||||
|
||||
bool FuConstructBezierPolygon::MouseButtonDown(const MouseEvent& rMEvt)
|
||||
@@ -174,7 +184,7 @@ bool FuConstructBezierPolygon::MouseButtonDown(const MouseEvent& rMEvt)
|
||||
{
|
||||
SfxItemSet aAttr(mpDoc->GetPool());
|
||||
SetStyleSheet(aAttr, pObj);
|
||||
SetAttributes(aAttr);
|
||||
SetAttributes(aAttr, pObj);
|
||||
pObj->SetMergedItemSet(aAttr);
|
||||
}
|
||||
}
|
||||
@@ -352,7 +362,7 @@ Color strToColor(const OUString& sColor)
|
||||
}
|
||||
}
|
||||
|
||||
void FuConstructBezierPolygon::SetAttributes(SfxItemSet& rAttr)
|
||||
void FuConstructBezierPolygon::SetAttributes(SfxItemSet& rAttr, SdrObject *pObj)
|
||||
{
|
||||
if (nSlotId == SID_DRAW_FREELINE_NOFILL)
|
||||
{
|
||||
@@ -362,6 +372,8 @@ void FuConstructBezierPolygon::SetAttributes(SfxItemSet& rAttr)
|
||||
rAttr.Put(XLineColorItem(OUString(), strToColor(msColor)));
|
||||
if (mnWidth > 0)
|
||||
rAttr.Put(XLineWidthItem(mnWidth));
|
||||
if (!msShapeName.isEmpty())
|
||||
pObj->SetName(msShapeName);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -156,6 +156,7 @@ void FuConstructRectangle::DoExecute( SfxRequest& rReq )
|
||||
const SfxUInt16Item* pFillTransparence = rReq.GetArg<SfxUInt16Item>(FN_PARAM_1);
|
||||
const SfxStringItem* pFillColor = rReq.GetArg<SfxStringItem>(FN_PARAM_2);
|
||||
const SfxUInt16Item* pLineStyle = rReq.GetArg<SfxUInt16Item>(FN_PARAM_3);
|
||||
const SfxStringItem* pShapeName = rReq.GetArg<SfxStringItem>(SID_SHAPE_NAME);
|
||||
|
||||
if (pFillTransparence && pFillTransparence->GetValue() > 0)
|
||||
{
|
||||
@@ -169,6 +170,10 @@ void FuConstructRectangle::DoExecute( SfxRequest& rReq )
|
||||
{
|
||||
mnLineStyle = pLineStyle->GetValue();
|
||||
}
|
||||
if (pShapeName && !pShapeName->GetValue().isEmpty())
|
||||
{
|
||||
msShapeName = pShapeName->GetValue();
|
||||
}
|
||||
|
||||
if (!pMouseStartX || !pMouseStartY || !pMouseEndX || !pMouseEndY)
|
||||
break;
|
||||
@@ -565,6 +570,8 @@ void FuConstructRectangle::SetAttributes(SfxItemSet& rAttr, SdrObject* pObj)
|
||||
rAttr.Put(XFillTransparenceItem(mnFillTransparence));
|
||||
if (!msFillColor.isEmpty())
|
||||
rAttr.Put(XFillColorItem(OUString(), strToColor(msFillColor)));
|
||||
if (!msShapeName.isEmpty())
|
||||
pObj->SetName(msShapeName);
|
||||
|
||||
switch(mnLineStyle)
|
||||
{
|
||||
|
@@ -50,7 +50,7 @@ public:
|
||||
/**
|
||||
* set attribute for the object to be created
|
||||
*/
|
||||
void SetAttributes(SfxItemSet& rAttr);
|
||||
void SetAttributes(SfxItemSet& rAttr, SdrObject* pObj);
|
||||
|
||||
virtual SdrObjectUniquePtr CreateDefaultObject(const sal_uInt16 nID, const ::tools::Rectangle& rRectangle) override;
|
||||
|
||||
@@ -69,6 +69,7 @@ private:
|
||||
sal_uInt16 mnTransparence; // Default: 0
|
||||
OUString msColor; // Default: ""
|
||||
sal_uInt16 mnWidth; // Default: 0
|
||||
OUString msShapeName; // Default: ""
|
||||
};
|
||||
|
||||
} // end of namespace sd
|
||||
|
@@ -38,6 +38,7 @@ private:
|
||||
sal_uInt16 mnFillTransparence; // Default: 0
|
||||
OUString msFillColor; // Default: ""
|
||||
sal_uInt16 mnLineStyle; // Default: SAL_MAX_UINT16
|
||||
OUString msShapeName; // Default: ""
|
||||
|
||||
public:
|
||||
|
||||
|
@@ -18,8 +18,8 @@
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||
-->
|
||||
<toolbar:toolbar xmlns:toolbar="http://openoffice.org/2001/toolbar" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<toolbar:toolbaritem xlink:href=".uno:Rect?FillTransparence:short=50&FillColor:string=COL_GRAY7&LineStyle:short=0&IsSticky:bool=true"/>
|
||||
<toolbar:toolbaritem xlink:href=".uno:Freeline_Unfilled?Transparence:short=50&Color:string=COL_GRAY7&Width:short=500&IsSticky:bool=true"/>
|
||||
<toolbar:toolbaritem xlink:href=".uno:Rect?FillTransparence:short=50&FillColor:string=COL_GRAY7&LineStyle:short=0&IsSticky:bool=true&ShapeName:string=RectangleRedactionShape"/>
|
||||
<toolbar:toolbaritem xlink:href=".uno:Freeline_Unfilled?Transparence:short=50&Color:string=COL_GRAY7&Width:short=500&IsSticky:bool=true&ShapeName:string=FreeformRedactionShape"/>
|
||||
<toolbar:toolbarseparator/>
|
||||
<toolbar:toolbaritem xlink:href=".uno:ExportDirectToPDF?IsRedactMode:bool=true"/>
|
||||
</toolbar:toolbar>
|
||||
|
@@ -734,46 +734,28 @@ void SfxObjectShell::ExecFile_Impl(SfxRequest &rReq)
|
||||
if (!xInfo.is())
|
||||
continue;
|
||||
|
||||
// Rectangle redaction
|
||||
if (xInfo->hasPropertyByName("FillTransparence") && xInfo->hasPropertyByName("FillColor"))
|
||||
OUString sShapeName;
|
||||
if (xInfo->hasPropertyByName("Name"))
|
||||
{
|
||||
uno::Any aAnyTransp = xPropSet->getPropertyValue("FillTransparence");
|
||||
uno::Any aAnyColor = xPropSet->getPropertyValue("FillColor");
|
||||
|
||||
sal_Int16 nTransp = 0;
|
||||
Color aColor;
|
||||
const OUString sRectangleName("RectangleRedactionShape");
|
||||
|
||||
aAnyTransp >>= nTransp;
|
||||
aAnyColor >>= aColor;
|
||||
|
||||
if (nTransp == 50 && aColor == COL_GRAY7)
|
||||
{
|
||||
xPropSet->setPropertyValue("FillTransparence", css::uno::makeAny(static_cast<sal_Int16>(0)));
|
||||
xPropSet->setPropertyValue("FillColor", css::uno::makeAny(COL_BLACK));
|
||||
xPropSet->setPropertyValue("Name", css::uno::makeAny(sRectangleName));
|
||||
}
|
||||
uno::Any aAnyShapeName = xPropSet->getPropertyValue("Name");
|
||||
aAnyShapeName >>= sShapeName;
|
||||
}
|
||||
//FIXME: Turn this into an else-if when we have the name-check
|
||||
// Freeform redaction
|
||||
if (xInfo->hasPropertyByName("LineTransparence") && xInfo->hasPropertyByName("LineColor"))
|
||||
else
|
||||
continue;
|
||||
|
||||
// Rectangle redaction
|
||||
if (sShapeName == "RectangleRedactionShape"
|
||||
&& xInfo->hasPropertyByName("FillTransparence") && xInfo->hasPropertyByName("FillColor"))
|
||||
{
|
||||
xPropSet->setPropertyValue("FillTransparence", css::uno::makeAny(static_cast<sal_Int16>(0)));
|
||||
xPropSet->setPropertyValue("FillColor", css::uno::makeAny(COL_BLACK));
|
||||
}
|
||||
// Freeform redaction
|
||||
else if (sShapeName == "FreeformRedactionShape"
|
||||
&& xInfo->hasPropertyByName("LineTransparence") && xInfo->hasPropertyByName("LineColor"))
|
||||
{
|
||||
uno::Any aAnyTransp = xPropSet->getPropertyValue("LineTransparence");
|
||||
uno::Any aAnyColor = xPropSet->getPropertyValue("LineColor");
|
||||
|
||||
sal_Int16 nTransp = 0;
|
||||
Color aColor;
|
||||
const OUString sFreeformName("FreeformRedactionShape");
|
||||
|
||||
aAnyTransp >>= nTransp;
|
||||
aAnyColor >>= aColor;
|
||||
|
||||
if (nTransp == 50 && aColor == COL_GRAY7)
|
||||
{
|
||||
xPropSet->setPropertyValue("LineTransparence", css::uno::makeAny(static_cast<sal_Int16>(0)));
|
||||
xPropSet->setPropertyValue("LineColor", css::uno::makeAny(COL_BLACK));
|
||||
xPropSet->setPropertyValue("Name", css::uno::makeAny(sFreeformName));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -3473,7 +3473,8 @@ SfxBoolItem Freeline SID_DRAW_FREELINE
|
||||
|
||||
SfxBoolItem Freeline_Unfilled SID_DRAW_FREELINE_NOFILL
|
||||
(SfxUInt16Item Transparence FN_PARAM_1, SfxStringItem Color FN_PARAM_2,
|
||||
SfxUInt16Item Width FN_PARAM_3, SfxBoolItem IsSticky FN_PARAM_4)
|
||||
SfxUInt16Item Width FN_PARAM_3, SfxBoolItem IsSticky FN_PARAM_4,
|
||||
SfxStringItem ShapeName SID_SHAPE_NAME)
|
||||
[
|
||||
AutoUpdate = TRUE,
|
||||
FastCall = FALSE,
|
||||
@@ -6830,7 +6831,8 @@ SfxBoolItem Rect SID_DRAW_RECT
|
||||
(SfxUInt32Item MouseStartX ID_VAL_MOUSESTART_X, SfxUInt32Item MouseStartY ID_VAL_MOUSESTART_Y,
|
||||
SfxUInt32Item MouseEndX ID_VAL_MOUSEEND_X, SfxUInt32Item MouseEndY ID_VAL_MOUSEEND_Y,
|
||||
SfxUInt16Item FillTransparence FN_PARAM_1, SfxStringItem FillColor FN_PARAM_2,
|
||||
SfxUInt16Item LineStyle FN_PARAM_3, SfxBoolItem IsSticky FN_PARAM_4)
|
||||
SfxUInt16Item LineStyle FN_PARAM_3, SfxBoolItem IsSticky FN_PARAM_4,
|
||||
SfxStringItem ShapeName SID_SHAPE_NAME)
|
||||
[
|
||||
AutoUpdate = TRUE,
|
||||
FastCall = FALSE,
|
||||
|
Reference in New Issue
Block a user