summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Meeks <michael.meeks@collabora.com>2020-03-30 11:26:50 +0100
committerMichael Meeks <michael.meeks@collabora.com>2020-05-08 21:31:32 +0100
commita55065b9781b8d11795c250d262c2f2c6b72fa33 (patch)
treedc620c41052cdb9f3045de8155da10ecceffa531
parent70e12fc5fc504df411bd0bd6719da78d2fd901e8 (diff)
FrameLineColor - add Color parameter, and share code for color params.
Change-Id: I50483228221e817eb1a1d049d3c1ddf55a9c91d8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91354 Tested-by: Jenkins Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
-rw-r--r--sc/source/ui/view/formatsh.cxx59
-rw-r--r--svx/sdi/svx.sdi2
2 files changed, 33 insertions, 28 deletions
diff --git a/sc/source/ui/view/formatsh.cxx b/sc/source/ui/view/formatsh.cxx
index 5d0d52272621..9830e532214c 100644
--- a/sc/source/ui/view/formatsh.cxx
+++ b/sc/source/ui/view/formatsh.cxx
@@ -1642,6 +1642,27 @@ void ScFormatShell::ExecuteTextAttr( SfxRequest& rReq )
}
+namespace
+{
+ bool lcl_getColorFromStr(const SfxItemSet *pArgs, Color &rColor)
+ {
+ const SfxPoolItem* pColorStringItem = nullptr;
+
+ if (pArgs && SfxItemState::SET == pArgs->GetItemState(SID_ATTR_COLOR_STR, false, &pColorStringItem) && pColorStringItem)
+ {
+ OUString sColor;
+ sColor = static_cast<const SfxStringItem*>(pColorStringItem)->GetValue();
+
+ if (sColor == "transparent")
+ rColor = COL_TRANSPARENT;
+ else
+ rColor = Color(sColor.toInt32(16));
+ return true;
+ }
+ return false;
+ }
+}
+
void ScFormatShell::ExecuteAttr( SfxRequest& rReq )
{
ScTabViewShell* pTabViewShell = GetViewData()->GetViewShell();
@@ -1785,16 +1806,9 @@ void ScFormatShell::ExecuteAttr( SfxRequest& rReq )
case SID_ATTR_CHAR_COLOR:
case SID_SCATTR_PROTECTION :
{
- const SfxPoolItem* pColorStringItem = nullptr;
- if ( SfxItemState::SET == pNewAttrs->GetItemState( SID_ATTR_COLOR_STR, false, &pColorStringItem ) )
+ Color aColor;
+ if (lcl_getColorFromStr(pNewAttrs, aColor))
{
- Color aColor;
- OUString sColor = static_cast<const SfxStringItem*>(pColorStringItem)->GetValue();
- if ( sColor == "transparent" )
- aColor = Color( COL_TRANSPARENT );
- else
- aColor = Color( sColor.toInt32( 16 ) );
-
SvxColorItem aColorItem(pTabViewShell->GetSelectionPattern()->
GetItem( ATTR_FONT_COLOR ) );
aColorItem.SetValue(aColor);
@@ -1870,18 +1884,20 @@ void ScFormatShell::ExecuteAttr( SfxRequest& rReq )
case SID_FRAME_LINECOLOR:
{
::editeng::SvxBorderLine* pDefLine = pTabViewShell->GetDefaultFrameLine();
- const Color& rColor = pNewAttrs->Get( SID_FRAME_LINECOLOR ).GetValue();
+
+ Color aColor;
+ if (!lcl_getColorFromStr(pNewAttrs, aColor))
+ aColor = pNewAttrs->Get( SID_FRAME_LINECOLOR ).GetValue();
// Update default line
if ( pDefLine )
{
- pDefLine->SetColor( rColor );
+ pDefLine->SetColor( aColor );
pTabViewShell->SetSelectionFrameLines( pDefLine, true );
}
else
{
- ::editeng::SvxBorderLine aDefLine( &rColor, 20,
- SvxBorderLineStyle::SOLID );
+ ::editeng::SvxBorderLine aDefLine( &aColor, 20, SvxBorderLineStyle::SOLID );
pTabViewShell->SetDefaultFrameLine( &aDefLine );
pTabViewShell->SetSelectionFrameLines( &aDefLine, false );
}
@@ -1993,27 +2009,16 @@ void ScFormatShell::ExecuteAttr( SfxRequest& rReq )
// ATTR_BACKGROUND (=SID_ATTR_BRUSH) has to be set to two IDs:
case SID_BACKGROUND_COLOR:
{
- const SfxPoolItem* pColorStringItem = nullptr;
Color aColor;
- if ( SfxItemState::SET == pNewAttrs->GetItemState( SID_ATTR_COLOR_STR, false, &pColorStringItem ) )
- {
- OUString sColor = static_cast<const SfxStringItem*>(pColorStringItem)->GetValue();
- if ( sColor == "transparent" )
- aColor = COL_TRANSPARENT;
- else
- aColor = Color( sColor.toInt32( 16 ) );
- }
- else
+ if (!lcl_getColorFromStr(pNewAttrs, aColor))
{
const SvxColorItem& rNewColorItem = pNewAttrs->Get( SID_BACKGROUND_COLOR );
aColor = rNewColorItem.GetValue();
}
- SvxBrushItem aBrushItem(
- pTabViewShell->GetSelectionPattern()->
- GetItem( ATTR_BACKGROUND ) );
-
+ SvxBrushItem aBrushItem(
+ pTabViewShell->GetSelectionPattern()->GetItem( ATTR_BACKGROUND ) );
aBrushItem.SetColor( aColor );
pTabViewShell->ApplyAttr( aBrushItem, false );
diff --git a/svx/sdi/svx.sdi b/svx/sdi/svx.sdi
index b501e546e7bb..9e5880b7ce20 100644
--- a/svx/sdi/svx.sdi
+++ b/svx/sdi/svx.sdi
@@ -5483,7 +5483,7 @@ SfxVoidItem ArrowsToolbox SID_DRAWTBX_ARROWS
]
SvxColorItem FrameLineColor SID_FRAME_LINECOLOR
-
+(SfxStringItem Color SID_ATTR_COLOR_STR, SvxColorItem FrameLineColor SID_FRAME_LINECOLOR)
[
AutoUpdate = TRUE,
FastCall = FALSE,