summaryrefslogtreecommitdiff
path: root/sc/source/ui/view/viewdata.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sc/source/ui/view/viewdata.cxx')
-rw-r--r--sc/source/ui/view/viewdata.cxx52
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;
}
}