Files
libreoffice/sw/source/ui/config/viewopt.cxx

554 lines
18 KiB
C++
Raw Normal View History

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2000-09-18 16:15:01 +00:00
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
2000-09-18 16:15:01 +00:00
*
* Copyright 2000, 2010 Oracle and/or its affiliates.
2000-09-18 16:15:01 +00:00
*
* OpenOffice.org - a multi-platform office productivity suite
2000-09-18 16:15:01 +00:00
*
* This file is part of OpenOffice.org.
2000-09-18 16:15:01 +00:00
*
* OpenOffice.org is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 3
* only, as published by the Free Software Foundation.
2000-09-18 16:15:01 +00:00
*
* OpenOffice.org is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License version 3 for more details
* (a copy is included in the LICENSE file that accompanied this code).
2000-09-18 16:15:01 +00:00
*
* You should have received a copy of the GNU Lesser General Public License
* version 3 along with OpenOffice.org. If not, see
* <http://www.openoffice.org/license.html>
* for a copy of the LGPLv3 License.
2000-09-18 16:15:01 +00:00
*
************************************************************************/
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_sw.hxx"
2000-09-18 16:15:01 +00:00
#include <svx/htmlmode.hxx>
2010-01-13 22:25:07 +01:00
#include <svtools/htmlcfg.hxx>
2000-09-18 16:15:01 +00:00
#include <svx/svxids.hrc>
#include <editeng/svxenum.hxx>
#include <editeng/svxacorr.hxx>
2000-11-20 08:07:00 +00:00
#include <unotools/localedatawrapper.hxx>
2001-07-05 12:48:54 +00:00
#include <vcl/region.hxx>
#include <vcl/outdev.hxx>
#include <vcl/window.hxx>
2002-04-12 09:39:11 +00:00
#include <swmodule.hxx>
2000-11-20 08:07:00 +00:00
#include <swtypes.hxx>
#include <viewopt.hxx>
#include <wdocsh.hxx>
#include <swrect.hxx>
#include <crstate.hxx>
#include <svtools/colorcfg.hxx>
#include <svtools/accessibilityoptions.hxx>
#include <unotools/syslocale.hxx>
2000-09-18 16:15:01 +00:00
#include <editeng/acorrcfg.hxx>
2000-09-18 16:15:01 +00:00
#ifdef DBG_UTIL
2000-09-18 16:15:01 +00:00
BOOL SwViewOption::bTest9 = FALSE; //DrawingLayerNotLoading
#endif
Color SwViewOption::aDocBoundColor(COL_LIGHTGRAY);
Color SwViewOption::aObjectBoundColor(COL_LIGHTGRAY);
Color SwViewOption::aDocColor(COL_LIGHTGRAY);
Color SwViewOption::aAppBackgroundColor(COL_LIGHTGRAY);
Color SwViewOption::aTableBoundColor(COL_LIGHTGRAY);
Color SwViewOption::aIndexShadingsColor(COL_LIGHTGRAY);
Color SwViewOption::aLinksColor(COL_BLUE);
Color SwViewOption::aVisitedLinksColor(COL_RED);
Color SwViewOption::aDirectCursorColor(COL_BLUE);
Color SwViewOption::aTextGridColor(COL_LIGHTGRAY);
2002-04-12 09:39:11 +00:00
Color SwViewOption::aSpellColor(COL_LIGHTRED);
Color SwViewOption::aSmarttagColor(COL_LIGHTMAGENTA);
Color SwViewOption::aFontColor(COL_BLACK);
Color SwViewOption::aFieldShadingsColor(COL_LIGHTGRAY);
Color SwViewOption::aSectionBoundColor(COL_LIGHTGRAY);
Color SwViewOption::aPageBreakColor(COL_BLUE);
Color SwViewOption::aScriptIndicatorColor(COL_GREEN);
2002-04-12 09:39:11 +00:00
sal_Int32 SwViewOption::nAppearanceFlags = VIEWOPT_DOC_BOUNDARIES|VIEWOPT_OBJECT_BOUNDARIES;
2000-09-18 16:15:01 +00:00
USHORT SwViewOption::nPixelTwips = 0; //ein Pixel auf dem Bildschirm
#define LINEBREAK_SIZE 12, 8
#define TAB_SIZE 12, 6
#define MIN_BLANKWIDTH 40
#define MIN_BLANKHEIGHT 40
#define MIN_TABWIDTH 120
#define MIN_TABHEIGHT 200
static const char __FAR_DATA aPostItStr[] = " ";
BOOL SwViewOption::IsEqualFlags( const SwViewOption &rOpt ) const
{
return nCoreOptions == rOpt.nCoreOptions
&& nCore2Options == rOpt.nCore2Options
&& aSnapSize == rOpt.aSnapSize
&& mnViewLayoutColumns == rOpt.mnViewLayoutColumns
2000-09-18 16:15:01 +00:00
&& nDivisionX == rOpt.GetDivisionX()
&& nDivisionY == rOpt.GetDivisionY()
&& nPagePrevRow == rOpt.GetPagePrevRow()
&& nPagePrevCol == rOpt.GetPagePrevCol()
&& aRetoucheColor == rOpt.GetRetoucheColor()
&& bFormView == rOpt.IsFormView()
&& mbViewLayoutBookMode == rOpt.mbViewLayoutBookMode
CWS-TOOLING: integrate CWS sw31bf02 2009-01-26 08:39:59 +0100 fme r266900 : #i93190# placeholder field should be checked in IsEqualsFlags as well 2009-01-21 17:32:32 +0100 ama r266695 : CWS-TOOLING: rebase CWS sw31bf02 to trunk@266428 (milestone: DEV300:m39) 2009-01-19 09:26:02 +0100 ama r266475 : Fix #i96109#: Bracket mismatch 2009-01-19 09:08:47 +0100 ama r266473 : Fix #i96391#: Wrong default parameter 2009-01-19 09:07:13 +0100 ama r266472 : Fix #i96112#: Bracket mismatch 2009-01-19 08:51:42 +0100 ama r266471 : Fix #i96113#: Bracket mismatch 2009-01-16 15:07:01 +0100 ama r266421 : Fix #i93105#: export 0x14 2009-01-16 09:07:02 +0100 ama r266400 : Fix #i96111#: Wrong condition 2009-01-16 08:49:47 +0100 ama r266399 : Fix #i99110#: Wrong condition 2009-01-12 15:54:46 +0100 ama r266164 : Fix #i17949#: Ctrl+A if document starts with a section 2009-01-09 15:39:44 +0100 ama r266091 : Fix #i93144#: Crash during update of TOC 2009-01-09 14:40:20 +0100 ama r266086 : Fix #i90072#: Shorten undo strings 2008-12-10 16:34:57 +0100 fme r265203 : #i73332# Crash with section endnotes 2008-12-10 15:04:29 +0100 fme r265194 : #i93190# Omit painting of placeholder fields during pdf export 2008-12-09 16:46:54 +0100 fme r265115 : #i96167# haggi - reset view options before disposing view 2008-12-09 16:17:13 +0100 fme r265114 : #i96167# Added missing word coun invalidation on splitting node in second half 2008-12-09 15:49:19 +0100 fme r265108 : #i91740# Write actual text only for hyphen portions 2008-12-09 14:52:13 +0100 fme r265090 : #91483# Disable some Insert menu entries in case cursor is located in hidden text
2009-02-13 11:19:56 +00:00
&& bShowPlaceHolderFields == rOpt.bShowPlaceHolderFields
&& bIdle == rOpt.bIdle
#ifdef DBG_UTIL
2000-09-18 16:15:01 +00:00
// korrespondieren zu den Angaben in ui/config/cfgvw.src
&& bTest1 == rOpt.IsTest1()
&& bTest2 == rOpt.IsTest2()
&& bTest3 == rOpt.IsTest3()
&& bTest4 == rOpt.IsTest4()
&& bTest5 == rOpt.IsTest5()
&& bTest6 == rOpt.IsTest6()
&& bTest7 == rOpt.IsTest7()
&& bTest8 == rOpt.IsTest8()
&& bTest10 == rOpt.IsTest10()
#endif
;
}
void SwViewOption::DrawRect( OutputDevice *pOut,
const SwRect &rRect, long nCol ) const
{
if ( pOut->GetOutDevType() != OUTDEV_PRINTER )
{
const Color aCol( nCol );
const Color aOldColor( pOut->GetFillColor() );
pOut->SetFillColor( aCol );
pOut->DrawRect( rRect.SVRect() );
pOut->SetFillColor( aOldColor );
}
else
DrawRectPrinter( pOut, rRect );
}
void SwViewOption::DrawRectPrinter( OutputDevice *pOut,
const SwRect &rRect ) const
{
Color aOldColor(pOut->GetLineColor());
Color aOldFillColor( pOut->GetFillColor() );
pOut->SetLineColor( Color(COL_BLACK) );
pOut->SetFillColor( Color(COL_TRANSPARENT ));
pOut->DrawRect( rRect.SVRect() );
pOut->SetFillColor( aOldFillColor );
pOut->SetLineColor( aOldColor );
}
USHORT SwViewOption::GetPostItsWidth( const OutputDevice *pOut ) const
{
ASSERT( pOut, "no Outdev" );
return USHORT(pOut->GetTextWidth( String::CreateFromAscii(aPostItStr )));
}
void SwViewOption::PaintPostIts( OutputDevice *pOut, const SwRect &rRect, sal_Bool bIsScript ) const
2000-09-18 16:15:01 +00:00
{
if( pOut && bIsScript )
2000-09-18 16:15:01 +00:00
{
Color aOldLineColor( pOut->GetLineColor() );
2000-09-18 16:15:01 +00:00
pOut->SetLineColor( Color(COL_GRAY ) );
// Wir ziehen ueberall zwei Pixel ab, damit es schick aussieht
USHORT nPix = GetPixelTwips() * 2;
if( rRect.Width() <= 2 * nPix || rRect.Height() <= 2 * nPix )
nPix = 0;
const Point aTopLeft( rRect.Left() + nPix, rRect.Top() + nPix );
const Point aBotRight( rRect.Right() - nPix, rRect.Bottom() - nPix );
const SwRect aRect( aTopLeft, aBotRight );
DrawRect( pOut, aRect, aScriptIndicatorColor.GetColor() );
pOut->SetLineColor( aOldLineColor );
2000-09-18 16:15:01 +00:00
}
}
SwViewOption::SwViewOption() :
aRetoucheColor( COL_TRANSPARENT ),
mnViewLayoutColumns( 0 ),
2000-09-18 16:15:01 +00:00
nPagePrevRow( 1 ),
nPagePrevCol( 2 ),
nShdwCrsrFillMode( FILL_TAB ),
2000-09-18 16:15:01 +00:00
bReadonly(FALSE),
bStarOneSetting(FALSE),
bIsPagePreview(FALSE),
bSelectionInReadonly(FALSE),
// --> FME 2004-06-29 #114856# Formular view
bFormView(FALSE),
// <--
bBookview(FALSE),
mbViewLayoutBookMode(FALSE),
bShowPlaceHolderFields( sal_True ),
nZoom( 100 ),
eZoom( SVX_ZOOM_PERCENT ),
nTblDest(TBL_DEST_CELL)
2000-09-18 16:15:01 +00:00
{
// Initialisierung ist jetzt etwas einfacher
// alle Bits auf 0
nCoreOptions = VIEWOPT_1_HARDBLANK | VIEWOPT_1_SOFTHYPH |
VIEWOPT_1_REF |
VIEWOPT_1_GRAPHIC |
2000-09-18 16:15:01 +00:00
VIEWOPT_1_TABLE | VIEWOPT_1_DRAW | VIEWOPT_1_CONTROL |
VIEWOPT_1_PAGEBACK |
2000-09-18 16:15:01 +00:00
VIEWOPT_1_SOLIDMARKHDL | VIEWOPT_1_POSTITS;
nCore2Options = VIEWOPT_CORE2_BLACKFONT | VIEWOPT_CORE2_HIDDENPARA;
nUIOptions = VIEWOPT_2_MODIFIED | VIEWOPT_2_GRFKEEPZOOM |VIEWOPT_2_ANY_RULER;
2000-09-18 16:15:01 +00:00
CWS-TOOLING: integrate CWS oj18 2009-08-21 15:08:49 +0200 oj r275263 : wrong check 2009-08-21 08:56:01 +0200 oj r275215 : missing not 2009-08-20 07:27:13 +0200 oj r275164 : use new method from global 2009-08-19 10:22:35 +0200 oj r275138 : call GetLocale instead of pLocale 2009-08-18 10:39:32 +0200 oj r275082 : missing header include 2009-08-18 10:09:44 +0200 oj r275081 : new methods at global 2009-08-18 10:09:00 +0200 oj r275080 : unused var 2009-08-18 08:59:04 +0200 oj r275078 : move files from classes to xml 2009-08-17 14:58:16 +0200 oj r275056 : CWS-TOOLING: rebase CWS oj18 to trunk@275001 (milestone: DEV300:m55) 2009-08-17 13:29:44 +0200 oj r275047 : compile error 2009-08-17 13:27:47 +0200 oj r275045 : compile error 2009-08-17 11:44:54 +0200 oj r275040 : add dep 2009-07-22 14:26:05 +0200 oj r274240 : move unused services into fwl 2009-07-22 14:25:35 +0200 oj r274239 : move unused services into fwl 2009-07-22 13:47:45 +0200 oj r274233 : remove some unused code 2009-07-22 09:06:20 +0200 oj r274219 : export dbtoolsclient dbcharsethelper for sc 2009-07-22 08:48:58 +0200 oj r274218 : create NumberFormatter on demand 2009-07-22 08:39:23 +0200 oj r274217 : change char to sal_Char 2009-07-22 07:33:34 +0200 oj r274214 : export dbtoolsclient dbcharsethelper for sc 2009-07-22 07:30:04 +0200 oj r274213 : late init of numberformatter and breakiterator 2009-07-22 07:28:55 +0200 oj r274212 : export dbtoolsclient dbcharsethelper for sc 2009-07-21 13:43:28 +0200 oj r274196 : check if quick start is enbaled 2009-07-21 13:40:09 +0200 oj r274195 : check config entry for UiEventsLogger 2009-07-21 13:37:40 +0200 oj r274194 : code refactoring, remove of duplicate code and some late inits and removale of not needed files 2009-07-21 13:35:38 +0200 oj r274193 : code refactoring, remove of duplicate code and some late inits and removale of not needed files 2009-07-21 13:33:41 +0200 oj r274192 : doc meta data will now be created on demand 2009-07-21 13:13:40 +0200 oj r274187 : load ldap functions on demand 2009-07-21 13:03:17 +0200 oj r274183 : late init of TransliterationImpl 2009-07-21 12:36:10 +0200 oj r274180 : late init of charClass
2009-09-08 04:57:32 +00:00
if(MEASURE_METRIC != SvtSysLocale().GetLocaleData().getMeasurementSystemEnum())
2000-09-18 16:15:01 +00:00
aSnapSize.Width() = aSnapSize.Height() = 720; // 1/2"
else
aSnapSize.Width() = aSnapSize.Height() = 567; // 1 cm
nDivisionX = nDivisionY = 1;
bSelectionInReadonly = SW_MOD()->GetAccessibilityOptions().IsSelectionInReadonly();
2000-09-18 16:15:01 +00:00
bIdle = true;
#ifdef DBG_UTIL
2000-09-18 16:15:01 +00:00
// korrespondieren zu den Angaben in ui/config/cfgvw.src
bTest1 = bTest2 = bTest3 = bTest4 =
bTest5 = bTest6 = bTest7 = bTest8 = bTest10 = FALSE;
#endif
}
SwViewOption::SwViewOption(const SwViewOption& rVOpt)
{
bReadonly = FALSE;
bSelectionInReadonly = FALSE;
// --> FME 2004-06-29 #114856# Formular view
bFormView = rVOpt.bFormView;
// <--
2000-09-18 16:15:01 +00:00
nZoom = rVOpt.nZoom ;
aSnapSize = rVOpt.aSnapSize ;
mnViewLayoutColumns = rVOpt.mnViewLayoutColumns ;
2000-09-18 16:15:01 +00:00
nDivisionX = rVOpt.nDivisionX ;
nDivisionY = rVOpt.nDivisionY ;
nPagePrevRow = rVOpt.nPagePrevRow;
nPagePrevCol = rVOpt.nPagePrevCol;
2002-05-07 09:57:47 +00:00
bIsPagePreview = rVOpt.bIsPagePreview;
2000-09-18 16:15:01 +00:00
eZoom = rVOpt.eZoom ;
nTblDest = rVOpt.nTblDest ;
nUIOptions = rVOpt.nUIOptions ;
nCoreOptions = rVOpt.nCoreOptions ;
nCore2Options = rVOpt.nCore2Options ;
aRetoucheColor = rVOpt.GetRetoucheColor();
sSymbolFont = rVOpt.sSymbolFont;
nShdwCrsrFillMode = rVOpt.nShdwCrsrFillMode;
bStarOneSetting = rVOpt.bStarOneSetting;
bBookview = rVOpt.bBookview;
mbViewLayoutBookMode = rVOpt.mbViewLayoutBookMode;
bShowPlaceHolderFields = rVOpt.bShowPlaceHolderFields;
bIdle = rVOpt.bIdle;
2000-09-18 16:15:01 +00:00
#ifdef DBG_UTIL
2000-09-18 16:15:01 +00:00
bTest1 = rVOpt.bTest1 ;
bTest2 = rVOpt.bTest2 ;
bTest3 = rVOpt.bTest3 ;
bTest4 = rVOpt.bTest4 ;
bTest5 = rVOpt.bTest5 ;
bTest6 = rVOpt.bTest6 ;
bTest7 = rVOpt.bTest7 ;
bTest8 = rVOpt.bTest8 ;
bTest10 = rVOpt.bTest10 ;
#endif
}
SwViewOption& SwViewOption::operator=( const SwViewOption &rVOpt )
{
// --> DVO FME 2004-06-29 #114856# Formular view
bFormView = rVOpt.bFormView ;
// <--
2000-09-18 16:15:01 +00:00
nZoom = rVOpt.nZoom ;
aSnapSize = rVOpt.aSnapSize ;
mnViewLayoutColumns = rVOpt.mnViewLayoutColumns ;
2000-09-18 16:15:01 +00:00
nDivisionX = rVOpt.nDivisionX ;
nDivisionY = rVOpt.nDivisionY ;
nPagePrevRow = rVOpt.nPagePrevRow;
nPagePrevCol = rVOpt.nPagePrevCol;
bIsPagePreview = rVOpt.bIsPagePreview;
2000-09-18 16:15:01 +00:00
eZoom = rVOpt.eZoom ;
nTblDest = rVOpt.nTblDest ;
nUIOptions = rVOpt.nUIOptions ;
nCoreOptions = rVOpt.nCoreOptions;
nCore2Options = rVOpt.nCore2Options;
aRetoucheColor = rVOpt.GetRetoucheColor();
sSymbolFont = rVOpt.sSymbolFont;
nShdwCrsrFillMode = rVOpt.nShdwCrsrFillMode;
bStarOneSetting = rVOpt.bStarOneSetting;
bBookview = rVOpt.bBookview;
mbViewLayoutBookMode = rVOpt.mbViewLayoutBookMode;
bShowPlaceHolderFields = rVOpt.bShowPlaceHolderFields;
bIdle = rVOpt.bIdle;
2000-09-18 16:15:01 +00:00
#ifdef DBG_UTIL
2000-09-18 16:15:01 +00:00
bTest1 = rVOpt.bTest1 ;
bTest2 = rVOpt.bTest2 ;
bTest3 = rVOpt.bTest3 ;
bTest4 = rVOpt.bTest4 ;
bTest5 = rVOpt.bTest5 ;
bTest6 = rVOpt.bTest6 ;
bTest7 = rVOpt.bTest7 ;
bTest8 = rVOpt.bTest8 ;
bTest10 = rVOpt.bTest10 ;
#endif
return *this;
}
SwViewOption::~SwViewOption()
{
}
void SwViewOption::Init( Window *pWin )
{
if( !nPixelTwips && pWin )
{
nPixelTwips = (USHORT)pWin->PixelToLogic( Size(1,1) ).Height();
}
}
BOOL SwViewOption::IsAutoCompleteWords() const
{
const SvxSwAutoFmtFlags& rFlags = SvxAutoCorrCfg::Get()->GetAutoCorrect()->GetSwFlags();
2000-09-18 16:15:01 +00:00
return /*rFlags.bAutoCompleteWords &&*/ rFlags.bAutoCmpltCollectWords;
}
AuthorCharAttr::AuthorCharAttr() :
nItemId (SID_ATTR_CHAR_UNDERLINE),
nAttr (UNDERLINE_SINGLE),
nColor (COL_TRANSPARENT)
{
}
USHORT GetHtmlMode(const SwDocShell* pShell)
{
USHORT nRet = 0;
if(!pShell || PTR_CAST(SwWebDocShell, pShell))
{
nRet = HTMLMODE_ON;
SvxHtmlOptions* pHtmlOpt = SvxHtmlOptions::Get();
2000-09-18 16:15:01 +00:00
switch ( pHtmlOpt->GetExportMode() )
{
case HTML_CFG_MSIE_40:
nRet |= HTMLMODE_PARA_BORDER|HTMLMODE_SMALL_CAPS|
HTMLMODE_SOME_STYLES|
HTMLMODE_FULL_STYLES|HTMLMODE_GRAPH_POS|
HTMLMODE_FULL_ABS_POS|HTMLMODE_SOME_ABS_POS;
break;
case HTML_CFG_NS40:
nRet |= HTMLMODE_PARA_BORDER|HTMLMODE_SOME_STYLES|
HTMLMODE_FRM_COLUMNS|HTMLMODE_BLINK|HTMLMODE_GRAPH_POS|
HTMLMODE_SOME_ABS_POS;
break;
case HTML_CFG_WRITER:
nRet |= HTMLMODE_PARA_BORDER|HTMLMODE_SMALL_CAPS|
HTMLMODE_SOME_STYLES|
HTMLMODE_FRM_COLUMNS|HTMLMODE_FULL_STYLES|
HTMLMODE_BLINK|HTMLMODE_DROPCAPS|HTMLMODE_GRAPH_POS|
HTMLMODE_FULL_ABS_POS|HTMLMODE_SOME_ABS_POS;
break;
case HTML_CFG_HTML32:
break;
}
}
return nRet;
}
Color& SwViewOption::GetDocColor()
{
return aDocColor;
}
Color& SwViewOption::GetDocBoundariesColor()
{
return aDocBoundColor;
}
Color& SwViewOption::GetObjectBoundariesColor()
{
return aObjectBoundColor;
}
Color& SwViewOption::GetAppBackgroundColor()
{
return aAppBackgroundColor;
}
Color& SwViewOption::GetTableBoundariesColor()
{
return aTableBoundColor;
}
Color& SwViewOption::GetIndexShadingsColor()
{
return aIndexShadingsColor;
}
Color& SwViewOption::GetLinksColor()
{
return aLinksColor;
}
Color& SwViewOption::GetVisitedLinksColor()
{
return aVisitedLinksColor;
}
Color& SwViewOption::GetDirectCursorColor()
{
return aDirectCursorColor;
}
Color& SwViewOption::GetTextGridColor()
{
return aTextGridColor;
}
2002-04-12 09:39:11 +00:00
Color& SwViewOption::GetSpellColor()
{
return aSpellColor;
}
Color& SwViewOption::GetSmarttagColor()
{
return aSmarttagColor;
}
Color& SwViewOption::GetFontColor()
{
return aFontColor;
}
Color& SwViewOption::GetFieldShadingsColor()
{
return aFieldShadingsColor;
}
Color& SwViewOption::GetSectionBoundColor()
{
return aSectionBoundColor;
}
Color& SwViewOption::GetPageBreakColor()
{
return aPageBreakColor;
}
void SwViewOption::ApplyColorConfigValues(const svtools::ColorConfig& rConfig )
{
aDocColor.SetColor(rConfig.GetColorValue(svtools::DOCCOLOR).nColor);
svtools::ColorConfigValue aValue = rConfig.GetColorValue(svtools::DOCBOUNDARIES);
aDocBoundColor.SetColor(aValue.nColor);
nAppearanceFlags = 0;
if(aValue.bIsVisible)
nAppearanceFlags |= VIEWOPT_DOC_BOUNDARIES;
aAppBackgroundColor.SetColor(rConfig.GetColorValue(svtools::APPBACKGROUND).nColor);
aValue = rConfig.GetColorValue(svtools::OBJECTBOUNDARIES);
aObjectBoundColor.SetColor(aValue.nColor);
if(aValue.bIsVisible)
nAppearanceFlags |= VIEWOPT_OBJECT_BOUNDARIES;
aValue = rConfig.GetColorValue(svtools::TABLEBOUNDARIES);
aTableBoundColor.SetColor(aValue.nColor);
if(aValue.bIsVisible)
nAppearanceFlags |= VIEWOPT_TABLE_BOUNDARIES;
aValue = rConfig.GetColorValue(svtools::WRITERIDXSHADINGS);
aIndexShadingsColor.SetColor(aValue.nColor);
if(aValue.bIsVisible)
nAppearanceFlags |= VIEWOPT_INDEX_SHADINGS;
aValue = rConfig.GetColorValue(svtools::LINKS);
aLinksColor.SetColor(aValue.nColor);
if(aValue.bIsVisible)
nAppearanceFlags |= VIEWOPT_LINKS;
aValue = rConfig.GetColorValue(svtools::LINKSVISITED);
aVisitedLinksColor.SetColor(aValue.nColor);
if(aValue.bIsVisible)
nAppearanceFlags |= VIEWOPT_VISITED_LINKS;
aDirectCursorColor.SetColor(rConfig.GetColorValue(svtools::WRITERDIRECTCURSOR).nColor);
aTextGridColor.SetColor(rConfig.GetColorValue(svtools::WRITERTEXTGRID).nColor);
aSpellColor.SetColor(rConfig.GetColorValue(svtools::SPELL).nColor);
aSmarttagColor.SetColor(rConfig.GetColorValue(svtools::SMARTTAGS).nColor);
aFontColor.SetColor(rConfig.GetColorValue(svtools::FONTCOLOR).nColor);
aValue = rConfig.GetColorValue(svtools::WRITERFIELDSHADINGS);
aFieldShadingsColor.SetColor(aValue.nColor);
if(aValue.bIsVisible)
nAppearanceFlags |= VIEWOPT_FIELD_SHADINGS;
aValue = rConfig.GetColorValue(svtools::WRITERSECTIONBOUNDARIES);
aSectionBoundColor.SetColor(aValue.nColor);
if(aValue.bIsVisible)
nAppearanceFlags |= VIEWOPT_SECTION_BOUNDARIES;
aValue = rConfig.GetColorValue(svtools::WRITERPAGEBREAKS);
aPageBreakColor.SetColor(aValue.nColor);
aScriptIndicatorColor.SetColor(rConfig.GetColorValue(svtools::WRITERSCRIPTINDICATOR).nColor);
}
void SwViewOption::SetAppearanceFlag(sal_Int32 nFlag, BOOL bSet, BOOL bSaveInConfig )
{
if(bSet)
nAppearanceFlags |= nFlag;
else
nAppearanceFlags &= ~nFlag;
if(bSaveInConfig)
{
//create an editable svtools::ColorConfig and store the change
svtools::EditableColorConfig aEditableConfig;
struct FlagToConfig_Impl
{
sal_Int32 nFlag;
svtools::ColorConfigEntry eEntry;
};
static const FlagToConfig_Impl aFlags[] =
{
{ VIEWOPT_DOC_BOUNDARIES , svtools::DOCBOUNDARIES },
{ VIEWOPT_OBJECT_BOUNDARIES , svtools::OBJECTBOUNDARIES },
{ VIEWOPT_TABLE_BOUNDARIES , svtools::TABLEBOUNDARIES },
{ VIEWOPT_INDEX_SHADINGS , svtools::WRITERIDXSHADINGS },
{ VIEWOPT_LINKS , svtools::LINKS },
{ VIEWOPT_VISITED_LINKS , svtools::LINKSVISITED },
{ VIEWOPT_FIELD_SHADINGS , svtools::WRITERFIELDSHADINGS },
{ VIEWOPT_SECTION_BOUNDARIES , svtools::WRITERSECTIONBOUNDARIES },
{ 0 , svtools::ColorConfigEntryCount }
};
sal_uInt16 nPos = 0;
while(aFlags[nPos].nFlag)
{
if(0 != (nFlag&aFlags[nPos].nFlag))
{
svtools::ColorConfigValue aValue = aEditableConfig.GetColorValue(aFlags[nPos].eEntry);
aValue.bIsVisible = bSet;
aEditableConfig.SetColorValue(aFlags[nPos].eEntry, aValue);
}
nPos++;
}
}
}
2000-09-18 16:15:01 +00:00
BOOL SwViewOption::IsAppearanceFlag(sal_Int32 nFlag)
2002-04-12 09:39:11 +00:00
{
return 0 != (nAppearanceFlags & nFlag);
2002-04-12 09:39:11 +00:00
}
2000-09-18 16:15:01 +00:00
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */