diff options
Diffstat (limited to 'sc/source/ui/view/viewdata.cxx')
-rw-r--r-- | sc/source/ui/view/viewdata.cxx | 52 |
1 files changed, 51 insertions, 1 deletions
diff --git a/sc/source/ui/view/viewdata.cxx b/sc/source/ui/view/viewdata.cxx index 6b13c1bedcbf..814501ae8a63 100644 --- a/sc/source/ui/view/viewdata.cxx +++ b/sc/source/ui/view/viewdata.cxx @@ -101,7 +101,8 @@ ScViewDataTable::ScViewDataTable() : nFixPosY( 0 ), nCurX( 0 ), nCurY( 0 ), - bOldCurValid( FALSE ) + bOldCurValid( FALSE ), + aTabBgColor( Color(COL_AUTO) ) { nPosX[0]=nPosX[1]=0; nPosY[0]=nPosY[1]=0; @@ -161,6 +162,11 @@ void ScViewDataTable::WriteUserDataSequence(uno::Sequence <beans::PropertyValue> pSettings[SC_TABLE_PAGE_VIEW_ZOOM_VALUE].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_PAGEVIEWZOOMVALUE)); pSettings[SC_TABLE_PAGE_VIEW_ZOOM_VALUE].Value <<= nPageZoomValue; + if ( !IsDefaultTabBgColor() ) + { + pSettings[SC_TABLE_TAB_BG_COLOR].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNO_TABCOLOR)); + pSettings[SC_TABLE_TAB_BG_COLOR].Value <<= static_cast<sal_Int32>(aTabBgColor.GetColor()); + } // pSettings[SC_TABLE_SELECTED].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_TABLESELECTED)); // pSettings[SC_TABLE_SELECTED].Value <<= bool(rViewData.GetMarkData().GetTableSelect( nTab )); } @@ -273,6 +279,13 @@ void ScViewDataTable::ReadUserDataSequence(const uno::Sequence <beans::PropertyV aSettings[i].Value >>= bSelected; rViewData.GetMarkData().SelectTable( nTab, bSelected ); } + else if (sName.compareToAscii(SC_UNO_TABCOLOR) == 0) + { + sal_Int32 nColor = COL_AUTO; + aSettings[i].Value >>= nColor; + if (static_cast<ColorData>(nColor) != COL_AUTO) + aTabBgColor.SetColor(static_cast<ColorData>(nColor)); + } } if (eHSplitMode == SC_SPLIT_FIX) nFixPosX = SanitizeCol( static_cast<SCCOL>( bHasHSplitInTwips ? nTempPosHTw : nTempPosH )); @@ -576,6 +589,36 @@ void ScViewData::MoveTab( SCTAB nSrcTab, SCTAB nDestTab ) aMarkData.InsertTab( nInsTab ); // ggf. angepasst } +void ScViewData::SetTabBgColor( Color rTabBgColor, SCTAB nTab ) +{ + if ( rTabBgColor != Color(COL_AUTO) ) + { + if ( !pTabData[nTab] ) + CreateTabData( nTab ); + pTabData[nTab]->aTabBgColor = rTabBgColor; + } + else + { + if ( pTabData[nTab] ) + pTabData[nTab]->aTabBgColor = Color( COL_AUTO ); + } +} + +Color ScViewData::GetTabBgColor( SCTAB nTab ) const +{ + if ( !pTabData[nTab] ) + return Color(COL_AUTO); + return pTabData[nTab]->aTabBgColor; +} + +BOOL ScViewData::IsDefaultTabBgColor( SCTAB nTab ) const +{ + if ( !pTabData[nTab] ) + return true; + BOOL bResult = pTabData[nTab]->aTabBgColor==Color( COL_AUTO ) ? TRUE : FALSE; + return bResult; +} + //UNUSED2008-05 void ScViewData::UpdateOle( ScSplitPos /* eWhich */ ) //UNUSED2008-05 { //UNUSED2008-05 GetDocShell()->UpdateOle(this); @@ -2520,6 +2563,9 @@ void ScViewData::WriteExtOptions( ScExtDocOptions& rDocOpt ) const rTabSett.mbPageMode = bPagebreak; rTabSett.mnNormalZoom = static_cast< long >( pViewTab->aZoomY * Fraction( 100.0 ) ); rTabSett.mnPageZoom = static_cast< long >( pViewTab->aPageZoomY * Fraction( 100.0 ) ); + + // Tab Bg Color + rTabSett.maTabBgColor = pViewTab->aTabBgColor; } } } @@ -2674,6 +2720,10 @@ void ScViewData::ReadExtOptions( const ScExtDocOptions& rDocOpt ) update map modes that are needed to draw text correctly. */ SetPagebreakMode( rTabSett.mbPageMode ); } + + // Tab Bg Color + if( !rTabSett.IsDefaultTabBgColor() ) + rViewTab.aTabBgColor = rTabSett.maTabBgColor; } } |