| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| |
| // MARKER(update_precomp.py): autogen include statement, do not remove |
| #include "precompiled_sc.hxx" |
| |
| |
| |
| #include <vcl/svapp.hxx> |
| |
| #include <com/sun/star/uno/Any.hxx> |
| #include <com/sun/star/uno/Sequence.hxx> |
| |
| #include "global.hxx" |
| #include "globstr.hrc" |
| #include "cfgids.hxx" |
| #include "viewopti.hxx" |
| #include "rechead.hxx" |
| #include "scresid.hxx" |
| #include "sc.hrc" |
| #include "miscuno.hxx" |
| |
| using namespace utl; |
| using namespace rtl; |
| using namespace com::sun::star::uno; |
| |
| //------------------------------------------------------------------ |
| |
| TYPEINIT1(ScTpViewItem, SfxPoolItem); |
| |
| #define SC_VERSION ((sal_uInt16)302) |
| |
| |
| //======================================================================== |
| // class ScGridOptions |
| //======================================================================== |
| |
| |
| void ScGridOptions::SetDefaults() |
| { |
| *this = ScGridOptions(); |
| |
| // Raster-Defaults sind jetzt zwischen den Apps unterschiedlich |
| // darum hier selber eintragen (alles in 1/100mm) |
| |
| if ( ScOptionsUtil::IsMetricSystem() ) |
| { |
| nFldDrawX = 1000; // 1cm |
| nFldDrawY = 1000; |
| nFldSnapX = 1000; |
| nFldSnapY = 1000; |
| } |
| else |
| { |
| nFldDrawX = 1270; // 0,5" |
| nFldDrawY = 1270; |
| nFldSnapX = 1270; |
| nFldSnapY = 1270; |
| } |
| nFldDivisionX = 1; |
| nFldDivisionY = 1; |
| } |
| |
| //------------------------------------------------------------------------ |
| |
| const ScGridOptions& ScGridOptions::operator=( const ScGridOptions& rCpy ) |
| { |
| nFldDrawX = rCpy.nFldDrawX; // UINT32 |
| nFldDrawX = rCpy.nFldDrawX; |
| nFldDivisionX = rCpy.nFldDivisionX; |
| nFldDrawY = rCpy.nFldDrawY; |
| nFldDivisionY = rCpy.nFldDivisionY; |
| nFldSnapX = rCpy.nFldSnapX; |
| nFldSnapY = rCpy.nFldSnapY; |
| bUseGridsnap = rCpy.bUseGridsnap; // BitBool |
| bSynchronize = rCpy.bSynchronize; |
| bGridVisible = rCpy.bGridVisible; |
| bEqualGrid = rCpy.bEqualGrid; |
| |
| return *this; |
| } |
| |
| //------------------------------------------------------------------------ |
| |
| int ScGridOptions::operator==( const ScGridOptions& rCpy ) const |
| { |
| return ( nFldDrawX == rCpy.nFldDrawX |
| && nFldDrawX == rCpy.nFldDrawX |
| && nFldDivisionX == rCpy.nFldDivisionX |
| && nFldDrawY == rCpy.nFldDrawY |
| && nFldDivisionY == rCpy.nFldDivisionY |
| && nFldSnapX == rCpy.nFldSnapX |
| && nFldSnapY == rCpy.nFldSnapY |
| && bUseGridsnap == rCpy.bUseGridsnap |
| && bSynchronize == rCpy.bSynchronize |
| && bGridVisible == rCpy.bGridVisible |
| && bEqualGrid == rCpy.bEqualGrid ); |
| } |
| |
| |
| //======================================================================== |
| // class ScViewOptions |
| //======================================================================== |
| |
| ScViewOptions::ScViewOptions() |
| { |
| SetDefaults(); |
| } |
| |
| //------------------------------------------------------------------------ |
| |
| ScViewOptions::ScViewOptions( const ScViewOptions& rCpy ) |
| { |
| *this = rCpy; |
| } |
| |
| //------------------------------------------------------------------------ |
| |
| __EXPORT ScViewOptions::~ScViewOptions() |
| { |
| } |
| |
| //------------------------------------------------------------------------ |
| |
| void ScViewOptions::SetDefaults() |
| { |
| aOptArr[ VOPT_FORMULAS ] = |
| aOptArr[ VOPT_SYNTAX ] = |
| aOptArr[ VOPT_HELPLINES ] = sal_False; |
| |
| aOptArr[ VOPT_NOTES ] = |
| aOptArr[ VOPT_NULLVALS ] = |
| aOptArr[ VOPT_VSCROLL ] = |
| aOptArr[ VOPT_HSCROLL ] = |
| aOptArr[ VOPT_TABCONTROLS ] = |
| aOptArr[ VOPT_OUTLINER ] = |
| aOptArr[ VOPT_HEADER ] = |
| aOptArr[ VOPT_GRID ] = |
| aOptArr[ VOPT_ANCHOR ] = |
| aOptArr[ VOPT_PAGEBREAKS ] = |
| aOptArr[ VOPT_SOLIDHANDLES] = // default is enhanced handles |
| aOptArr[ VOPT_BIGHANDLES ] = // default is big handles |
| aOptArr[ VOPT_CLIPMARKS ] = sal_True; |
| |
| aModeArr[VOBJ_TYPE_OLE ] = |
| aModeArr[VOBJ_TYPE_CHART] = |
| aModeArr[VOBJ_TYPE_DRAW ] = VOBJ_MODE_SHOW; |
| |
| aGridCol = Color( SC_STD_GRIDCOLOR ); |
| aGridColName = ScGlobal::GetRscString( STR_GRIDCOLOR ); |
| |
| aGridOpt.SetDefaults(); |
| } |
| |
| //------------------------------------------------------------------------ |
| |
| Color ScViewOptions::GetGridColor( String* pStrName ) const |
| { |
| if ( pStrName ) |
| *pStrName = aGridColName; |
| |
| return aGridCol; |
| } |
| |
| //------------------------------------------------------------------------ |
| |
| const ScViewOptions& ScViewOptions::operator=( const ScViewOptions& rCpy ) |
| { |
| sal_uInt16 i; |
| |
| for ( i=0; i<MAX_OPT; i++ ) aOptArr [i] = rCpy.aOptArr[i]; |
| for ( i=0; i<MAX_TYPE; i++ ) aModeArr[i] = rCpy.aModeArr[i]; |
| |
| aGridCol = rCpy.aGridCol; |
| aGridColName = rCpy.aGridColName; |
| aGridOpt = rCpy.aGridOpt; |
| |
| return *this; |
| } |
| |
| //------------------------------------------------------------------------ |
| |
| int ScViewOptions::operator==( const ScViewOptions& rOpt ) const |
| { |
| sal_Bool bEqual = sal_True; |
| sal_uInt16 i; |
| |
| for ( i=0; i<MAX_OPT && bEqual; i++ ) bEqual = (aOptArr [i] == rOpt.aOptArr[i]); |
| for ( i=0; i<MAX_TYPE && bEqual; i++ ) bEqual = (aModeArr[i] == rOpt.aModeArr[i]); |
| |
| bEqual = bEqual && (aGridCol == rOpt.aGridCol); |
| bEqual = bEqual && (aGridColName == rOpt.aGridColName); |
| bEqual = bEqual && (aGridOpt == rOpt.aGridOpt); |
| |
| return bEqual; |
| } |
| |
| //------------------------------------------------------------------------ |
| |
| SvxGridItem* ScViewOptions::CreateGridItem( sal_uInt16 nId /* = SID_ATTR_GRID_OPTIONS */ ) const |
| { |
| SvxGridItem* pItem = new SvxGridItem( nId ); |
| |
| pItem->SetFldDrawX ( aGridOpt.GetFldDrawX() ); |
| pItem->SetFldDivisionX ( aGridOpt.GetFldDivisionX() ); |
| pItem->SetFldDrawY ( aGridOpt.GetFldDrawY() ); |
| pItem->SetFldDivisionY ( aGridOpt.GetFldDivisionY() ); |
| pItem->SetFldSnapX ( aGridOpt.GetFldSnapX() ); |
| pItem->SetFldSnapY ( aGridOpt.GetFldSnapY() ); |
| pItem->SetUseGridSnap ( aGridOpt.GetUseGridSnap() ); |
| pItem->SetSynchronize ( aGridOpt.GetSynchronize() ); |
| pItem->SetGridVisible ( aGridOpt.GetGridVisible() ); |
| pItem->SetEqualGrid ( aGridOpt.GetEqualGrid() ); |
| |
| return pItem; |
| } |
| |
| //======================================================================== |
| // ScTpViewItem - Daten fuer die ViewOptions-TabPage |
| //======================================================================== |
| |
| //UNUSED2008-05 ScTpViewItem::ScTpViewItem( sal_uInt16 nWhichP ) : SfxPoolItem( nWhichP ) |
| //UNUSED2008-05 { |
| //UNUSED2008-05 } |
| |
| //------------------------------------------------------------------------ |
| |
| ScTpViewItem::ScTpViewItem( sal_uInt16 nWhichP, const ScViewOptions& rOpt ) |
| : SfxPoolItem ( nWhichP ), |
| theOptions ( rOpt ) |
| { |
| } |
| |
| //------------------------------------------------------------------------ |
| |
| ScTpViewItem::ScTpViewItem( const ScTpViewItem& rItem ) |
| : SfxPoolItem ( rItem ), |
| theOptions ( rItem.theOptions ) |
| { |
| } |
| |
| //------------------------------------------------------------------------ |
| |
| __EXPORT ScTpViewItem::~ScTpViewItem() |
| { |
| } |
| |
| //------------------------------------------------------------------------ |
| |
| String __EXPORT ScTpViewItem::GetValueText() const |
| { |
| return String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM("ScTpViewItem") ); |
| } |
| |
| //------------------------------------------------------------------------ |
| |
| int __EXPORT ScTpViewItem::operator==( const SfxPoolItem& rItem ) const |
| { |
| DBG_ASSERT( SfxPoolItem::operator==( rItem ), "unequal Which or Type" ); |
| |
| const ScTpViewItem& rPItem = (const ScTpViewItem&)rItem; |
| |
| return ( theOptions == rPItem.theOptions ); |
| } |
| |
| //------------------------------------------------------------------------ |
| |
| SfxPoolItem* __EXPORT ScTpViewItem::Clone( SfxItemPool * ) const |
| { |
| return new ScTpViewItem( *this ); |
| } |
| |
| //================================================================== |
| // Config Item containing view options |
| //================================================================== |
| |
| #define CFGPATH_LAYOUT "Office.Calc/Layout" |
| |
| #define SCLAYOUTOPT_GRIDLINES 0 |
| #define SCLAYOUTOPT_GRIDCOLOR 1 |
| #define SCLAYOUTOPT_PAGEBREAK 2 |
| #define SCLAYOUTOPT_GUIDE 3 |
| #define SCLAYOUTOPT_SIMPLECONT 4 |
| #define SCLAYOUTOPT_LARGECONT 5 |
| #define SCLAYOUTOPT_COLROWHDR 6 |
| #define SCLAYOUTOPT_HORISCROLL 7 |
| #define SCLAYOUTOPT_VERTSCROLL 8 |
| #define SCLAYOUTOPT_SHEETTAB 9 |
| #define SCLAYOUTOPT_OUTLINE 10 |
| #define SCLAYOUTOPT_COUNT 11 |
| |
| #define CFGPATH_DISPLAY "Office.Calc/Content/Display" |
| |
| #define SCDISPLAYOPT_FORMULA 0 |
| #define SCDISPLAYOPT_ZEROVALUE 1 |
| #define SCDISPLAYOPT_NOTETAG 2 |
| #define SCDISPLAYOPT_VALUEHI 3 |
| #define SCDISPLAYOPT_ANCHOR 4 |
| #define SCDISPLAYOPT_TEXTOVER 5 |
| #define SCDISPLAYOPT_OBJECTGRA 6 |
| #define SCDISPLAYOPT_CHART 7 |
| #define SCDISPLAYOPT_DRAWING 8 |
| #define SCDISPLAYOPT_COUNT 9 |
| |
| #define CFGPATH_GRID "Office.Calc/Grid" |
| |
| #define SCGRIDOPT_RESOLU_X 0 |
| #define SCGRIDOPT_RESOLU_Y 1 |
| #define SCGRIDOPT_SUBDIV_X 2 |
| #define SCGRIDOPT_SUBDIV_Y 3 |
| #define SCGRIDOPT_OPTION_X 4 |
| #define SCGRIDOPT_OPTION_Y 5 |
| #define SCGRIDOPT_SNAPTOGRID 6 |
| #define SCGRIDOPT_SYNCHRON 7 |
| #define SCGRIDOPT_VISIBLE 8 |
| #define SCGRIDOPT_SIZETOGRID 9 |
| #define SCGRIDOPT_COUNT 10 |
| |
| |
| Sequence<OUString> ScViewCfg::GetLayoutPropertyNames() |
| { |
| static const char* aPropNames[] = |
| { |
| "Line/GridLine", // SCLAYOUTOPT_GRIDLINES |
| "Line/GridLineColor", // SCLAYOUTOPT_GRIDCOLOR |
| "Line/PageBreak", // SCLAYOUTOPT_PAGEBREAK |
| "Line/Guide", // SCLAYOUTOPT_GUIDE |
| "Line/SimpleControlPoint", // SCLAYOUTOPT_SIMPLECONT |
| "Line/LargeControlPoint", // SCLAYOUTOPT_LARGECONT |
| "Window/ColumnRowHeader", // SCLAYOUTOPT_COLROWHDR |
| "Window/HorizontalScroll", // SCLAYOUTOPT_HORISCROLL |
| "Window/VerticalScroll", // SCLAYOUTOPT_VERTSCROLL |
| "Window/SheetTab", // SCLAYOUTOPT_SHEETTAB |
| "Window/OutlineSymbol" // SCLAYOUTOPT_OUTLINE |
| }; |
| Sequence<OUString> aNames(SCLAYOUTOPT_COUNT); |
| OUString* pNames = aNames.getArray(); |
| for(int i = 0; i < SCLAYOUTOPT_COUNT; i++) |
| pNames[i] = OUString::createFromAscii(aPropNames[i]); |
| |
| return aNames; |
| } |
| |
| Sequence<OUString> ScViewCfg::GetDisplayPropertyNames() |
| { |
| static const char* aPropNames[] = |
| { |
| "Formula", // SCDISPLAYOPT_FORMULA |
| "ZeroValue", // SCDISPLAYOPT_ZEROVALUE |
| "NoteTag", // SCDISPLAYOPT_NOTETAG |
| "ValueHighlighting", // SCDISPLAYOPT_VALUEHI |
| "Anchor", // SCDISPLAYOPT_ANCHOR |
| "TextOverflow", // SCDISPLAYOPT_TEXTOVER |
| "ObjectGraphic", // SCDISPLAYOPT_OBJECTGRA |
| "Chart", // SCDISPLAYOPT_CHART |
| "DrawingObject" // SCDISPLAYOPT_DRAWING |
| }; |
| Sequence<OUString> aNames(SCDISPLAYOPT_COUNT); |
| OUString* pNames = aNames.getArray(); |
| for(int i = 0; i < SCDISPLAYOPT_COUNT; i++) |
| pNames[i] = OUString::createFromAscii(aPropNames[i]); |
| |
| return aNames; |
| } |
| |
| Sequence<OUString> ScViewCfg::GetGridPropertyNames() |
| { |
| static const char* aPropNames[] = |
| { |
| "Resolution/XAxis/NonMetric", // SCGRIDOPT_RESOLU_X |
| "Resolution/YAxis/NonMetric", // SCGRIDOPT_RESOLU_Y |
| "Subdivision/XAxis", // SCGRIDOPT_SUBDIV_X |
| "Subdivision/YAxis", // SCGRIDOPT_SUBDIV_Y |
| "Option/XAxis/NonMetric", // SCGRIDOPT_OPTION_X |
| "Option/YAxis/NonMetric", // SCGRIDOPT_OPTION_Y |
| "Option/SnapToGrid", // SCGRIDOPT_SNAPTOGRID |
| "Option/Synchronize", // SCGRIDOPT_SYNCHRON |
| "Option/VisibleGrid", // SCGRIDOPT_VISIBLE |
| "Option/SizeToGrid" // SCGRIDOPT_SIZETOGRID |
| }; |
| Sequence<OUString> aNames(SCGRIDOPT_COUNT); |
| OUString* pNames = aNames.getArray(); |
| for(int i = 0; i < SCGRIDOPT_COUNT; i++) |
| pNames[i] = OUString::createFromAscii(aPropNames[i]); |
| |
| // adjust for metric system |
| if (ScOptionsUtil::IsMetricSystem()) |
| { |
| pNames[SCGRIDOPT_RESOLU_X] = OUString::createFromAscii( "Resolution/XAxis/Metric" ); |
| pNames[SCGRIDOPT_RESOLU_Y] = OUString::createFromAscii( "Resolution/YAxis/Metric" ); |
| pNames[SCGRIDOPT_OPTION_X] = OUString::createFromAscii( "Option/XAxis/Metric" ); |
| pNames[SCGRIDOPT_OPTION_Y] = OUString::createFromAscii( "Option/YAxis/Metric" ); |
| } |
| |
| return aNames; |
| } |
| |
| |
| ScViewCfg::ScViewCfg() : |
| aLayoutItem( OUString::createFromAscii( CFGPATH_LAYOUT ) ), |
| aDisplayItem( OUString::createFromAscii( CFGPATH_DISPLAY ) ), |
| aGridItem( OUString::createFromAscii( CFGPATH_GRID ) ) |
| { |
| sal_Int32 nIntVal = 0; |
| |
| Sequence<OUString> aNames = GetLayoutPropertyNames(); |
| Sequence<Any> aValues = aLayoutItem.GetProperties(aNames); |
| aLayoutItem.EnableNotification(aNames); |
| const Any* pValues = aValues.getConstArray(); |
| DBG_ASSERT(aValues.getLength() == aNames.getLength(), "GetProperties failed"); |
| if(aValues.getLength() == aNames.getLength()) |
| { |
| for(int nProp = 0; nProp < aNames.getLength(); nProp++) |
| { |
| DBG_ASSERT(pValues[nProp].hasValue(), "property value missing"); |
| if(pValues[nProp].hasValue()) |
| { |
| switch(nProp) |
| { |
| case SCLAYOUTOPT_GRIDCOLOR: |
| if ( pValues[nProp] >>= nIntVal ) |
| SetGridColor( Color(nIntVal), EMPTY_STRING ); |
| break; |
| case SCLAYOUTOPT_GRIDLINES: |
| SetOption( VOPT_GRID, ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) ); |
| break; |
| case SCLAYOUTOPT_PAGEBREAK: |
| SetOption( VOPT_PAGEBREAKS, ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) ); |
| break; |
| case SCLAYOUTOPT_GUIDE: |
| SetOption( VOPT_HELPLINES, ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) ); |
| break; |
| case SCLAYOUTOPT_SIMPLECONT: |
| // content is reversed |
| SetOption( VOPT_SOLIDHANDLES, !ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) ); |
| break; |
| case SCLAYOUTOPT_LARGECONT: |
| SetOption( VOPT_BIGHANDLES, ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) ); |
| break; |
| case SCLAYOUTOPT_COLROWHDR: |
| SetOption( VOPT_HEADER, ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) ); |
| break; |
| case SCLAYOUTOPT_HORISCROLL: |
| SetOption( VOPT_HSCROLL, ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) ); |
| break; |
| case SCLAYOUTOPT_VERTSCROLL: |
| SetOption( VOPT_VSCROLL, ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) ); |
| break; |
| case SCLAYOUTOPT_SHEETTAB: |
| SetOption( VOPT_TABCONTROLS, ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) ); |
| break; |
| case SCLAYOUTOPT_OUTLINE: |
| SetOption( VOPT_OUTLINER, ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) ); |
| break; |
| } |
| } |
| } |
| } |
| aLayoutItem.SetCommitLink( LINK( this, ScViewCfg, LayoutCommitHdl ) ); |
| |
| aNames = GetDisplayPropertyNames(); |
| aValues = aDisplayItem.GetProperties(aNames); |
| aDisplayItem.EnableNotification(aNames); |
| pValues = aValues.getConstArray(); |
| DBG_ASSERT(aValues.getLength() == aNames.getLength(), "GetProperties failed"); |
| if(aValues.getLength() == aNames.getLength()) |
| { |
| for(int nProp = 0; nProp < aNames.getLength(); nProp++) |
| { |
| DBG_ASSERT(pValues[nProp].hasValue(), "property value missing"); |
| if(pValues[nProp].hasValue()) |
| { |
| switch(nProp) |
| { |
| case SCDISPLAYOPT_FORMULA: |
| SetOption( VOPT_FORMULAS, ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) ); |
| break; |
| case SCDISPLAYOPT_ZEROVALUE: |
| SetOption( VOPT_NULLVALS, ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) ); |
| break; |
| case SCDISPLAYOPT_NOTETAG: |
| SetOption( VOPT_NOTES, ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) ); |
| break; |
| case SCDISPLAYOPT_VALUEHI: |
| SetOption( VOPT_SYNTAX, ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) ); |
| break; |
| case SCDISPLAYOPT_ANCHOR: |
| SetOption( VOPT_ANCHOR, ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) ); |
| break; |
| case SCDISPLAYOPT_TEXTOVER: |
| SetOption( VOPT_CLIPMARKS, ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) ); |
| break; |
| case SCDISPLAYOPT_OBJECTGRA: |
| if ( pValues[nProp] >>= nIntVal ) |
| { |
| //#i80528# adapt to new range eventually |
| if((sal_Int32)VOBJ_MODE_HIDE < nIntVal) nIntVal = (sal_Int32)VOBJ_MODE_SHOW; |
| |
| SetObjMode( VOBJ_TYPE_OLE, (ScVObjMode)nIntVal); |
| } |
| break; |
| case SCDISPLAYOPT_CHART: |
| if ( pValues[nProp] >>= nIntVal ) |
| { |
| //#i80528# adapt to new range eventually |
| if((sal_Int32)VOBJ_MODE_HIDE < nIntVal) nIntVal = (sal_Int32)VOBJ_MODE_SHOW; |
| |
| SetObjMode( VOBJ_TYPE_CHART, (ScVObjMode)nIntVal); |
| } |
| break; |
| case SCDISPLAYOPT_DRAWING: |
| if ( pValues[nProp] >>= nIntVal ) |
| { |
| //#i80528# adapt to new range eventually |
| if((sal_Int32)VOBJ_MODE_HIDE < nIntVal) nIntVal = (sal_Int32)VOBJ_MODE_SHOW; |
| |
| SetObjMode( VOBJ_TYPE_DRAW, (ScVObjMode)nIntVal); |
| } |
| break; |
| } |
| } |
| } |
| } |
| aDisplayItem.SetCommitLink( LINK( this, ScViewCfg, DisplayCommitHdl ) ); |
| |
| ScGridOptions aGrid = GetGridOptions(); //! initialization necessary? |
| aNames = GetGridPropertyNames(); |
| aValues = aGridItem.GetProperties(aNames); |
| aGridItem.EnableNotification(aNames); |
| pValues = aValues.getConstArray(); |
| DBG_ASSERT(aValues.getLength() == aNames.getLength(), "GetProperties failed"); |
| if(aValues.getLength() == aNames.getLength()) |
| { |
| for(int nProp = 0; nProp < aNames.getLength(); nProp++) |
| { |
| DBG_ASSERT(pValues[nProp].hasValue(), "property value missing"); |
| if(pValues[nProp].hasValue()) |
| { |
| switch(nProp) |
| { |
| case SCGRIDOPT_RESOLU_X: |
| if (pValues[nProp] >>= nIntVal) aGrid.SetFldDrawX( nIntVal ); |
| break; |
| case SCGRIDOPT_RESOLU_Y: |
| if (pValues[nProp] >>= nIntVal) aGrid.SetFldDrawY( nIntVal ); |
| break; |
| case SCGRIDOPT_SUBDIV_X: |
| if (pValues[nProp] >>= nIntVal) aGrid.SetFldDivisionX( nIntVal ); |
| break; |
| case SCGRIDOPT_SUBDIV_Y: |
| if (pValues[nProp] >>= nIntVal) aGrid.SetFldDivisionY( nIntVal ); |
| break; |
| case SCGRIDOPT_OPTION_X: |
| if (pValues[nProp] >>= nIntVal) aGrid.SetFldSnapX( nIntVal ); |
| break; |
| case SCGRIDOPT_OPTION_Y: |
| if (pValues[nProp] >>= nIntVal) aGrid.SetFldSnapY( nIntVal ); |
| break; |
| case SCGRIDOPT_SNAPTOGRID: |
| aGrid.SetUseGridSnap( ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) ); |
| break; |
| case SCGRIDOPT_SYNCHRON: |
| aGrid.SetSynchronize( ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) ); |
| break; |
| case SCGRIDOPT_VISIBLE: |
| aGrid.SetGridVisible( ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) ); |
| break; |
| case SCGRIDOPT_SIZETOGRID: |
| aGrid.SetEqualGrid( ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) ); |
| break; |
| } |
| } |
| } |
| } |
| SetGridOptions( aGrid ); |
| aGridItem.SetCommitLink( LINK( this, ScViewCfg, GridCommitHdl ) ); |
| } |
| |
| IMPL_LINK( ScViewCfg, LayoutCommitHdl, void *, EMPTYARG ) |
| { |
| Sequence<OUString> aNames = GetLayoutPropertyNames(); |
| Sequence<Any> aValues(aNames.getLength()); |
| Any* pValues = aValues.getArray(); |
| |
| for(int nProp = 0; nProp < aNames.getLength(); nProp++) |
| { |
| switch(nProp) |
| { |
| case SCLAYOUTOPT_GRIDCOLOR: |
| pValues[nProp] <<= (sal_Int32) GetGridColor().GetColor(); |
| break; |
| case SCLAYOUTOPT_GRIDLINES: |
| ScUnoHelpFunctions::SetBoolInAny( pValues[nProp], GetOption( VOPT_GRID ) ); |
| break; |
| case SCLAYOUTOPT_PAGEBREAK: |
| ScUnoHelpFunctions::SetBoolInAny( pValues[nProp], GetOption( VOPT_PAGEBREAKS ) ); |
| break; |
| case SCLAYOUTOPT_GUIDE: |
| ScUnoHelpFunctions::SetBoolInAny( pValues[nProp], GetOption( VOPT_HELPLINES ) ); |
| break; |
| case SCLAYOUTOPT_SIMPLECONT: |
| // content is reversed |
| ScUnoHelpFunctions::SetBoolInAny( pValues[nProp], !GetOption( VOPT_SOLIDHANDLES ) ); |
| break; |
| case SCLAYOUTOPT_LARGECONT: |
| ScUnoHelpFunctions::SetBoolInAny( pValues[nProp], GetOption( VOPT_BIGHANDLES ) ); |
| break; |
| case SCLAYOUTOPT_COLROWHDR: |
| ScUnoHelpFunctions::SetBoolInAny( pValues[nProp], GetOption( VOPT_HEADER ) ); |
| break; |
| case SCLAYOUTOPT_HORISCROLL: |
| ScUnoHelpFunctions::SetBoolInAny( pValues[nProp], GetOption( VOPT_HSCROLL ) ); |
| break; |
| case SCLAYOUTOPT_VERTSCROLL: |
| ScUnoHelpFunctions::SetBoolInAny( pValues[nProp], GetOption( VOPT_VSCROLL ) ); |
| break; |
| case SCLAYOUTOPT_SHEETTAB: |
| ScUnoHelpFunctions::SetBoolInAny( pValues[nProp], GetOption( VOPT_TABCONTROLS ) ); |
| break; |
| case SCLAYOUTOPT_OUTLINE: |
| ScUnoHelpFunctions::SetBoolInAny( pValues[nProp], GetOption( VOPT_OUTLINER ) ); |
| break; |
| } |
| } |
| aLayoutItem.PutProperties(aNames, aValues); |
| |
| return 0; |
| } |
| |
| IMPL_LINK( ScViewCfg, DisplayCommitHdl, void *, EMPTYARG ) |
| { |
| Sequence<OUString> aNames = GetDisplayPropertyNames(); |
| Sequence<Any> aValues(aNames.getLength()); |
| Any* pValues = aValues.getArray(); |
| |
| for(int nProp = 0; nProp < aNames.getLength(); nProp++) |
| { |
| switch(nProp) |
| { |
| case SCDISPLAYOPT_FORMULA: |
| ScUnoHelpFunctions::SetBoolInAny( pValues[nProp], GetOption( VOPT_FORMULAS ) ); |
| break; |
| case SCDISPLAYOPT_ZEROVALUE: |
| ScUnoHelpFunctions::SetBoolInAny( pValues[nProp], GetOption( VOPT_NULLVALS ) ); |
| break; |
| case SCDISPLAYOPT_NOTETAG: |
| ScUnoHelpFunctions::SetBoolInAny( pValues[nProp], GetOption( VOPT_NOTES ) ); |
| break; |
| case SCDISPLAYOPT_VALUEHI: |
| ScUnoHelpFunctions::SetBoolInAny( pValues[nProp], GetOption( VOPT_SYNTAX ) ); |
| break; |
| case SCDISPLAYOPT_ANCHOR: |
| ScUnoHelpFunctions::SetBoolInAny( pValues[nProp], GetOption( VOPT_ANCHOR ) ); |
| break; |
| case SCDISPLAYOPT_TEXTOVER: |
| ScUnoHelpFunctions::SetBoolInAny( pValues[nProp], GetOption( VOPT_CLIPMARKS ) ); |
| break; |
| case SCDISPLAYOPT_OBJECTGRA: |
| pValues[nProp] <<= (sal_Int32) GetObjMode( VOBJ_TYPE_OLE ); |
| break; |
| case SCDISPLAYOPT_CHART: |
| pValues[nProp] <<= (sal_Int32) GetObjMode( VOBJ_TYPE_CHART ); |
| break; |
| case SCDISPLAYOPT_DRAWING: |
| pValues[nProp] <<= (sal_Int32) GetObjMode( VOBJ_TYPE_DRAW ); |
| break; |
| } |
| } |
| aDisplayItem.PutProperties(aNames, aValues); |
| |
| return 0; |
| } |
| |
| IMPL_LINK( ScViewCfg, GridCommitHdl, void *, EMPTYARG ) |
| { |
| const ScGridOptions& rGrid = GetGridOptions(); |
| |
| Sequence<OUString> aNames = GetGridPropertyNames(); |
| Sequence<Any> aValues(aNames.getLength()); |
| Any* pValues = aValues.getArray(); |
| |
| for(int nProp = 0; nProp < aNames.getLength(); nProp++) |
| { |
| switch(nProp) |
| { |
| case SCGRIDOPT_RESOLU_X: |
| pValues[nProp] <<= (sal_Int32) rGrid.GetFldDrawX(); |
| break; |
| case SCGRIDOPT_RESOLU_Y: |
| pValues[nProp] <<= (sal_Int32) rGrid.GetFldDrawY(); |
| break; |
| case SCGRIDOPT_SUBDIV_X: |
| pValues[nProp] <<= (sal_Int32) rGrid.GetFldDivisionX(); |
| break; |
| case SCGRIDOPT_SUBDIV_Y: |
| pValues[nProp] <<= (sal_Int32) rGrid.GetFldDivisionY(); |
| break; |
| case SCGRIDOPT_OPTION_X: |
| pValues[nProp] <<= (sal_Int32) rGrid.GetFldSnapX(); |
| break; |
| case SCGRIDOPT_OPTION_Y: |
| pValues[nProp] <<= (sal_Int32) rGrid.GetFldSnapY(); |
| break; |
| case SCGRIDOPT_SNAPTOGRID: |
| ScUnoHelpFunctions::SetBoolInAny( pValues[nProp], rGrid.GetUseGridSnap() ); |
| break; |
| case SCGRIDOPT_SYNCHRON: |
| ScUnoHelpFunctions::SetBoolInAny( pValues[nProp], rGrid.GetSynchronize() ); |
| break; |
| case SCGRIDOPT_VISIBLE: |
| ScUnoHelpFunctions::SetBoolInAny( pValues[nProp], rGrid.GetGridVisible() ); |
| break; |
| case SCGRIDOPT_SIZETOGRID: |
| ScUnoHelpFunctions::SetBoolInAny( pValues[nProp], rGrid.GetEqualGrid() ); |
| break; |
| } |
| } |
| aGridItem.PutProperties(aNames, aValues); |
| |
| return 0; |
| } |
| |
| void ScViewCfg::SetOptions( const ScViewOptions& rNew ) |
| { |
| *(ScViewOptions*)this = rNew; |
| aLayoutItem.SetModified(); |
| aDisplayItem.SetModified(); |
| aGridItem.SetModified(); |
| } |
| |
| |