summaryrefslogtreecommitdiff
path: root/cui/source/tabpages/backgrnd.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'cui/source/tabpages/backgrnd.cxx')
-rw-r--r--cui/source/tabpages/backgrnd.cxx1893
1 files changed, 0 insertions, 1893 deletions
diff --git a/cui/source/tabpages/backgrnd.cxx b/cui/source/tabpages/backgrnd.cxx
deleted file mode 100644
index aa603154b..000000000
--- a/cui/source/tabpages/backgrnd.cxx
+++ /dev/null
@@ -1,1893 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * 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.
- *
- * 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).
- *
- * 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.
- *
- ************************************************************************/
-
-// include ---------------------------------------------------------------
-#include <unotools/pathoptions.hxx>
-#include <vcl/msgbox.hxx>
-#include <tools/urlobj.hxx>
-#include <sfx2/objsh.hxx>
-#include <sfx2/docfile.hxx>
-#include <svtools/wallitem.hxx>
-#include <svl/cntwall.hxx>
-#include <sfx2/cntids.hrc>
-#include <svx/dialogs.hrc>
-
-#define _SVX_BACKGRND_CXX
-
-#include <cuires.hrc>
-#include "backgrnd.hrc"
-#include <svx/dialmgr.hxx>
-#include <editeng/memberids.hrc>
-#include <editeng/editrids.hrc>
-#include <editeng/eerdll.hxx>
-
-// Tabellenhintergrund
-#define TBL_DEST_CELL 0
-#define TBL_DEST_ROW 1
-#define TBL_DEST_TBL 2
-
-#include <editeng/brshitem.hxx>
-#include "backgrnd.hxx"
-
-#include <svx/xtable.hxx>
-#include <sfx2/opengrf.hxx>
-#include <svx/svxerr.hxx>
-#include <svx/drawitem.hxx>
-#include <dialmgr.hxx>
-#include <svx/htmlmode.hxx>
-#include <svtools/controldims.hrc>
-#include <svx/flagsdef.hxx>
-#include <svl/intitem.hxx>
-#include <sfx2/request.hxx>
-using namespace ::com::sun::star;
-// static ----------------------------------------------------------------
-
-static sal_uInt16 pRanges[] =
-{
- SID_VIEW_FLD_PIC, SID_VIEW_FLD_PIC,
- SID_ATTR_BRUSH, SID_ATTR_BRUSH,
- SID_ATTR_BRUSH_CHAR, SID_ATTR_BRUSH_CHAR,
- 0
-};
-
-struct SvxBackgroundTable_Impl
-{
- SvxBrushItem* pCellBrush;
- SvxBrushItem* pRowBrush;
- SvxBrushItem* pTableBrush;
- sal_uInt16 nCellWhich;
- sal_uInt16 nRowWhich;
- sal_uInt16 nTableWhich;
- sal_uInt16 nActPos;
-
- SvxBackgroundTable_Impl() :
- pCellBrush(NULL), pRowBrush(NULL), pTableBrush(NULL),
- nCellWhich(0), nRowWhich(0), nTableWhich(0) {}
-};
-
-struct SvxBackgroundPara_Impl
-{
- SvxBrushItem* pParaBrush;
- SvxBrushItem* pCharBrush;
-
- sal_uInt16 nActPos;
-
- SvxBackgroundPara_Impl() :
- pParaBrush(NULL), pCharBrush(NULL) {}
-};
-
-struct SvxBackgroundPage_Impl
-{
- Timer* pLoadTimer;
- sal_Bool bIsImportDlgInExecute;
-
- SvxBackgroundPage_Impl() :
- pLoadTimer(NULL), bIsImportDlgInExecute(sal_False) {}
-};
-
-inline sal_uInt8 lcl_PercentToTransparency(long nPercent)
-{
- //0xff must not be returned!
- return sal_uInt8(nPercent ? (50 + 0xfe * nPercent) / 100 : 0);
-}
-inline sal_uInt8 lcl_TransparencyToPercent(sal_uInt8 nTrans)
-{
- return (nTrans * 100 + 127) / 254;
-}
-void lcl_SetTransparency(SvxBrushItem& rBrush, long nTransparency)
-{
- uno::Any aTransparency;
- aTransparency <<= (sal_Int8)nTransparency;
- rBrush.PutValue(aTransparency, MID_GRAPHIC_TRANSPARENCY);
-}
-//-------------------------------------------------------------------------
-
-sal_uInt16 GetItemId_Impl( ValueSet& rValueSet, const Color& rCol )
-{
- sal_Bool bFound = sal_False;
- sal_uInt16 nCount = rValueSet.GetItemCount();
- sal_uInt16 n = 1;
-
- while ( !bFound && n <= nCount )
- {
- Color aValCol = rValueSet.GetItemColor(n);
-
- bFound = ( aValCol.GetRed() == rCol.GetRed()
- && aValCol.GetGreen() == rCol.GetGreen()
- && aValCol.GetBlue() == rCol.GetBlue() );
-
- if ( !bFound )
- n++;
- }
- return bFound ? n : 0;
-}
-
-// class BackgroundPreview -----------------------------------------------
-
-/* [Beschreibung]
-
- Vorschaufenster f"ur Brush oder Bitmap
-*/
-
-class BackgroundPreviewImpl : public Window
-{
-public:
- BackgroundPreviewImpl( Window* pParent,
- const ResId& rResId, sal_Bool bIsBmpPreview );
- ~BackgroundPreviewImpl();
-
- void NotifyChange( const Color& rColor );
- void NotifyChange( const Bitmap* pBitmap );
-
-protected:
- virtual void Paint( const Rectangle& rRect );
- virtual void DataChanged( const DataChangedEvent& rDCEvt );
-
-private:
- const sal_Bool bIsBmp;
- Bitmap* pBitmap;
- Point aDrawPos;
- Size aDrawSize;
- Rectangle aDrawRect;
- sal_uInt8 nTransparency;
-};
-
-//-----------------------------------------------------------------------
-
-BackgroundPreviewImpl::BackgroundPreviewImpl
-(
- Window* pParent,
- const ResId& rResId,
- sal_Bool bIsBmpPreview
-) :
-
- Window( pParent, rResId ),
-
- bIsBmp ( bIsBmpPreview ),
- pBitmap ( NULL ),
- aDrawRect( Point(0,0), GetOutputSizePixel() ),
- nTransparency(0)
-
-{
- SetBorderStyle(WINDOW_BORDER_MONO);
- Paint( aDrawRect );
-}
-
-//-----------------------------------------------------------------------
-
-BackgroundPreviewImpl::~BackgroundPreviewImpl()
-{
- delete pBitmap;
-}
-
-//-----------------------------------------------------------------------
-void BackgroundPreviewImpl::NotifyChange( const Color& rColor )
-{
- if ( !bIsBmp )
- {
- const static Color aTranspCol( COL_TRANSPARENT );
-
- nTransparency = lcl_TransparencyToPercent( rColor.GetTransparency() );
-
- SetFillColor( rColor == aTranspCol ? GetSettings().GetStyleSettings().GetFieldColor() : (Color) rColor.GetRGBColor() );
- Paint( aDrawRect );
- }
-}
-
-//-----------------------------------------------------------------------
-
-void BackgroundPreviewImpl::NotifyChange( const Bitmap* pNewBitmap )
-{
- if ( bIsBmp && (pNewBitmap || pBitmap) )
- {
- if ( pNewBitmap && pBitmap )
- *pBitmap = *pNewBitmap;
- else if ( pNewBitmap && !pBitmap )
- pBitmap = new Bitmap( *pNewBitmap );
- else if ( !pNewBitmap )
- DELETEZ( pBitmap );
-
- if ( pBitmap )
- {
- Size aSize = GetOutputSizePixel();
- // InnerSize == Size without one pixel border
- Size aInnerSize = aSize;
- aInnerSize.Width() -= 2;
- aInnerSize.Height() -= 2;
- aDrawSize = pBitmap->GetSizePixel();
-
- // bitmap bigger than preview window?
- if ( aDrawSize.Width() > aInnerSize.Width() )
- {
- aDrawSize.Height() = aDrawSize.Height() * aInnerSize.Width() / aDrawSize.Width();
- if ( aDrawSize.Height() > aInnerSize.Height() )
- {
- aDrawSize.Width() = aDrawSize.Height();
- aDrawSize.Height() = aInnerSize.Height();
- }
- else
- aDrawSize.Width() = aInnerSize.Width();
- }
- else if ( aDrawSize.Height() > aInnerSize.Height() )
- {
- aDrawSize.Width() = aDrawSize.Width() * aInnerSize.Height() / aDrawSize.Height();
- if ( aDrawSize.Width() > aInnerSize.Width() )
- {
- aDrawSize.Height() = aDrawSize.Width();
- aDrawSize.Width() = aInnerSize.Width();
- }
- else
- aDrawSize.Height() = aInnerSize.Height();
- }
-
- aDrawPos.X() = (aSize.Width() - aDrawSize.Width()) / 2;
- aDrawPos.Y() = (aSize.Height() - aDrawSize.Height()) / 2;
- }
- Invalidate( aDrawRect );
- Update();
- }
-}
-
-//-----------------------------------------------------------------------
-
-void BackgroundPreviewImpl::Paint( const Rectangle& )
-{
- const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
- SetBackground(Wallpaper(rStyleSettings.GetWindowColor()));
- SetLineColor();
- if(bIsBmp)
- SetFillColor( Color(COL_TRANSPARENT) );
- DrawRect( aDrawRect );
- if ( bIsBmp )
- {
- if ( pBitmap )
- DrawBitmap( aDrawPos, aDrawSize, *pBitmap );
- else
- {
- Size aSize = GetOutputSizePixel();
- DrawLine( Point(0,0), Point(aSize.Width(),aSize.Height()) );
- DrawLine( Point(0,aSize.Height()), Point(aSize.Width(),0) );
- }
- }
-}
-
-void BackgroundPreviewImpl::DataChanged( const DataChangedEvent& rDCEvt )
-{
- if ( (rDCEvt.GetType() == DATACHANGED_SETTINGS) &&
- (rDCEvt.GetFlags() & SETTINGS_STYLE) )
- {
- Invalidate();
- }
- Window::DataChanged( rDCEvt );
-}
-
-// class SvxBackgroundTabPage --------------------------------------------
-
-#define HDL(hdl) LINK(this,SvxBackgroundTabPage,hdl)
-
-SvxBackgroundTabPage::SvxBackgroundTabPage( Window* pParent,
- const SfxItemSet& rCoreSet ) :
-
- SvxTabPage( pParent, CUI_RES( RID_SVXPAGE_BACKGROUND ), rCoreSet ),
-
- aSelectTxt ( this, CUI_RES( FT_SELECTOR ) ),
- aLbSelect ( this, CUI_RES( LB_SELECTOR ) ),
- aStrBrowse ( CUI_RES( STR_BROWSE ) ),
- aStrUnlinked ( CUI_RES( STR_UNLINKED ) ),
- aTblDesc ( this, CUI_RES( FT_TBL_DESC ) ),
- aTblLBox ( this, CUI_RES( LB_TBL_BOX ) ),
- aParaLBox ( this, CUI_RES( LB_PARA_BOX ) ),
-
- aBorderWin ( this, CUI_RES(CT_BORDER) ),
- aBackgroundColorSet ( &aBorderWin, CUI_RES( SET_BGDCOLOR ) ),
- aBackgroundColorBox ( this, CUI_RES( GB_BGDCOLOR ) ),
- pPreviewWin1 ( new BackgroundPreviewImpl( this, CUI_RES( WIN_PREVIEW1 ), sal_False ) ),
-
- aColTransFT ( this, CUI_RES( FT_COL_TRANS ) ),
- aColTransMF ( this, CUI_RES( MF_COL_TRANS ) ),
- aBtnPreview ( this, CUI_RES( BTN_PREVIEW ) ),
- aGbFile ( this, CUI_RES( GB_FILE ) ),
- aBtnBrowse ( this, CUI_RES( BTN_BROWSE ) ),
- aBtnLink ( this, CUI_RES( BTN_LINK ) ),
- aGbPosition ( this, CUI_RES( GB_POSITION ) ),
- aBtnPosition ( this, CUI_RES( BTN_POSITION ) ),
- aBtnArea ( this, CUI_RES( BTN_AREA ) ),
- aBtnTile ( this, CUI_RES( BTN_TILE ) ),
- aWndPosition ( this, CUI_RES( WND_POSITION ), RP_MM ),
- aFtFile ( this, CUI_RES( FT_FILE ) ),
- aGraphTransFL ( this, CUI_RES( FL_GRAPH_TRANS ) ),
- aGraphTransMF ( this, CUI_RES( MF_GRAPH_TRANS ) ),
- pPreviewWin2 ( new BackgroundPreviewImpl(
- this, CUI_RES( WIN_PREVIEW2 ), sal_True ) ),
-
- nHtmlMode ( 0 ),
- bAllowShowSelector ( sal_True ),
- bIsGraphicValid ( sal_False ),
- bLinkOnly ( sal_False ),
- bResized ( sal_False ),
- bColTransparency ( sal_False ),
- bGraphTransparency ( sal_False ),
-
- pPageImpl ( new SvxBackgroundPage_Impl ),
- pImportDlg ( NULL ),
- pTableBck_Impl ( NULL ),
- pParaBck_Impl ( NULL )
-
-{
- // diese Page braucht ExchangeSupport
- SetExchangeSupport();
-
- const SfxPoolItem* pItem;
- SfxObjectShell* pShell;
-
- if ( SFX_ITEM_SET == rCoreSet.GetItemState( SID_HTML_MODE, sal_False, &pItem )
- || ( 0 != ( pShell = SfxObjectShell::Current()) &&
- 0 != ( pItem = pShell->GetItem( SID_HTML_MODE ) ) ) )
- {
- nHtmlMode = ((SfxUInt16Item*)pItem)->GetValue();
- }
-
- FillColorValueSets_Impl();
-
- aBackgroundColorSet.SetSelectHdl( HDL(BackgroundColorHdl_Impl) );
- FreeResource();
-
- aBtnBrowse.SetAccessibleRelationMemberOf(&aGbFile);
- aWndPosition.SetAccessibleRelationMemberOf(&aGbPosition);
- aWndPosition.SetAccessibleRelationLabeledBy(&aBtnPosition);
- aBackgroundColorSet.SetAccessibleRelationLabeledBy(&aBackgroundColorBox);
-}
-
-//------------------------------------------------------------------------
-
-SvxBackgroundTabPage::~SvxBackgroundTabPage()
-{
- delete pPreviewWin1;
- delete pPreviewWin2;
- delete pPageImpl->pLoadTimer;
- delete pPageImpl;
- delete pImportDlg;
-
- if( pTableBck_Impl)
- {
- delete pTableBck_Impl->pCellBrush;
- delete pTableBck_Impl->pRowBrush;
- delete pTableBck_Impl->pTableBrush;
- delete pTableBck_Impl;
- }
-
- if(pParaBck_Impl)
- {
- delete pParaBck_Impl->pParaBrush;
- delete pParaBck_Impl->pCharBrush;
- delete pParaBck_Impl;
- }
-}
-
-//------------------------------------------------------------------------
-
-sal_uInt16* SvxBackgroundTabPage::GetRanges()
-
-/* [Beschreibung]
-
- gibt den Bereich der Which-Werte zur"uck
-*/
-
-{
- return pRanges;
-}
-
-//------------------------------------------------------------------------
-
-SfxTabPage* SvxBackgroundTabPage::Create( Window* pParent,
- const SfxItemSet& rAttrSet )
-
-/* [Beschreibung]
-
- Create-Methode f"ur den TabDialog
-*/
-
-{
- return ( new SvxBackgroundTabPage( pParent, rAttrSet ) );
-}
-
-//------------------------------------------------------------------------
-
-void SvxBackgroundTabPage::Reset( const SfxItemSet& rSet )
-{
-// os: So ein Unsinn! Irgendwo laesst sich so ein Item immer finden,
-// es muss aber im rSet vorhanden sein!
-// const SfxPoolItem* pX = GetOldItem( rSet, SID_VIEW_FLD_PIC );
-// if( pX && pX->ISA(SfxWallpaperItem))
- if(SFX_ITEM_AVAILABLE <= rSet.GetItemState(GetWhich(SID_VIEW_FLD_PIC), sal_False))
- {
- ResetFromWallpaperItem( rSet );
- return;
- }
-
- // Zustand des Vorschau-Buttons durch UserData persistent
- String aUserData = GetUserData();
- aBtnPreview.Check( aUserData.Len() && sal_Unicode('1') == aUserData.GetChar( 0 ) );
-
- // nach Reset kein ShowSelector() mehr aufrufen d"urfen
- bAllowShowSelector = sal_False;
-
-
- // Input-BrushItem besorgen und auswerten
- const SvxBrushItem* pBgdAttr = NULL;
- sal_uInt16 nSlot = SID_ATTR_BRUSH;
- const SfxPoolItem* pItem;
- sal_uInt16 nDestValue = USHRT_MAX;
-
- if ( SFX_ITEM_SET == rSet.GetItemState( SID_BACKGRND_DESTINATION,
- sal_False, &pItem ) )
- {
- nDestValue = ((const SfxUInt16Item*)pItem)->GetValue();
- aTblLBox.SelectEntryPos(nDestValue);
-
- switch ( nDestValue )
- {
- case TBL_DEST_CELL:
- nSlot = SID_ATTR_BRUSH;
- break;
- case TBL_DEST_ROW:
- nSlot = SID_ATTR_BRUSH_ROW;
- break;
- case TBL_DEST_TBL:
- nSlot = SID_ATTR_BRUSH_TABLE;
- break;
- }
- }
- else if( SFX_ITEM_SET == rSet.GetItemState(
- SID_PARA_BACKGRND_DESTINATION, sal_False, &pItem ) )
- {
- nDestValue = ((const SfxUInt16Item*)pItem)->GetValue();
- // ist gerade Zeichen aktiviert?
- sal_uInt16 nParaSel = aParaLBox.GetSelectEntryPos();
- if(1 == nParaSel)
- {
- // dann war das ein "Standard" - Aufruf
- nDestValue = nParaSel;
- }
- aParaLBox.SelectEntryPos(nDestValue);
-
- switch ( nDestValue )
- {
- case PARA_DEST_PARA:
- nSlot = SID_ATTR_BRUSH;
- break;
- case PARA_DEST_CHAR:
- nSlot = SID_ATTR_BRUSH_CHAR;
- break;
- }
- }
- //#111173# the destination item is missing when the parent style has been changed
- if(USHRT_MAX == nDestValue && (aParaLBox.IsVisible()||aTblLBox.IsVisible()))
- nDestValue = 0;
- sal_uInt16 nWhich = GetWhich( nSlot );
-
- if ( rSet.GetItemState( nWhich, sal_False ) >= SFX_ITEM_AVAILABLE )
- pBgdAttr = (const SvxBrushItem*)&( rSet.Get( nWhich ) );
-
- aBtnTile.Check();
-
- if ( pBgdAttr )
- {
- FillControls_Impl(*pBgdAttr, aUserData);
- aBgdColor = ( (SvxBrushItem*)pBgdAttr )->GetColor();
- }
- else
- {
- aSelectTxt.Hide();
- aLbSelect.Hide();
- aLbSelect.SelectEntryPos( 0 );
- ShowColorUI_Impl();
-
- const SfxPoolItem* pOld = GetOldItem( rSet, SID_ATTR_BRUSH );
-
- if ( pOld )
- aBgdColor = ( (SvxBrushItem*)pOld )->GetColor();
- }
-
- if ( nDestValue != USHRT_MAX )
- {
- if(aTblLBox.IsVisible())
- {
- sal_uInt16 nValue = aTblLBox.GetSelectEntryPos();
-
- if ( pTableBck_Impl )
- {
- DELETEZ( pTableBck_Impl->pCellBrush);
- DELETEZ( pTableBck_Impl->pRowBrush);
- DELETEZ( pTableBck_Impl->pTableBrush);
- }
- else
- pTableBck_Impl = new SvxBackgroundTable_Impl();
-
- pTableBck_Impl->nActPos = nValue;
-
- nWhich = GetWhich( SID_ATTR_BRUSH );
- if ( rSet.GetItemState( nWhich, sal_False ) >= SFX_ITEM_AVAILABLE )
- {
- pBgdAttr = (const SvxBrushItem*)&( rSet.Get( nWhich ) );
- pTableBck_Impl->pCellBrush = new SvxBrushItem(*pBgdAttr);
- }
- pTableBck_Impl->nCellWhich = nWhich;
-
- if ( rSet.GetItemState( SID_ATTR_BRUSH_ROW, sal_False ) >= SFX_ITEM_AVAILABLE )
- {
- pBgdAttr = (const SvxBrushItem*)&( rSet.Get( SID_ATTR_BRUSH_ROW ) );
- pTableBck_Impl->pRowBrush = new SvxBrushItem(*pBgdAttr);
- }
- pTableBck_Impl->nRowWhich = SID_ATTR_BRUSH_ROW;
-
- if ( rSet.GetItemState( SID_ATTR_BRUSH_TABLE, sal_False ) >= SFX_ITEM_AVAILABLE )
- {
- pBgdAttr = (const SvxBrushItem*)&( rSet.Get( SID_ATTR_BRUSH_TABLE ) );
- pTableBck_Impl->pTableBrush = new SvxBrushItem(*pBgdAttr);
- }
- pTableBck_Impl->nTableWhich = SID_ATTR_BRUSH_TABLE;
-
- TblDestinationHdl_Impl(&aTblLBox);
- aTblLBox.SaveValue();
- }
- else
- {
- sal_uInt16 nValue = aParaLBox.GetSelectEntryPos();
-
- if ( pParaBck_Impl )
- {
- delete pParaBck_Impl->pParaBrush;
- delete pParaBck_Impl->pCharBrush;
- }
- else
- pParaBck_Impl = new SvxBackgroundPara_Impl();
-
- pParaBck_Impl->nActPos = nValue;
-
- nWhich = GetWhich( SID_ATTR_BRUSH );
- if ( rSet.GetItemState( nWhich, sal_False ) >= SFX_ITEM_AVAILABLE )
- {
- pBgdAttr = (const SvxBrushItem*)&( rSet.Get( nWhich ) );
- pParaBck_Impl->pParaBrush = new SvxBrushItem(*pBgdAttr);
- }
-
- nWhich = GetWhich( SID_ATTR_BRUSH_CHAR );
- rSet.GetItemState( nWhich, sal_True );
- rSet.GetItemState( nWhich, sal_False );
- if ( rSet.GetItemState( nWhich, sal_True ) > SFX_ITEM_AVAILABLE )
- {
- pBgdAttr = (const SvxBrushItem*)&( rSet.Get( nWhich ) );
- pParaBck_Impl->pCharBrush = new SvxBrushItem(*pBgdAttr);
- }
- else
- pParaBck_Impl->pCharBrush = new SvxBrushItem(SID_ATTR_BRUSH_CHAR);
-
- ParaDestinationHdl_Impl(&aParaLBox);
- aParaLBox.SaveValue();
- }
- }
- if(!bResized)
- {
- if(!aLbSelect.IsVisible() && !aTblLBox.IsVisible() && !aParaLBox.IsVisible())
- {
- long nY(LogicToPixel(Point(11,14), MAP_APPFONT).X());
- long nX(LogicToPixel(Point(11,14), MAP_APPFONT).Y());
- Point aPos(aBorderWin.GetPosPixel());
- aPos.X() = nX;
- aPos.Y() = nY;
- aBorderWin.SetPosPixel(aPos);
- aPos = pPreviewWin1->GetPosPixel();
- aPos.Y() = nY;
- pPreviewWin1->SetPosPixel(aPos);
- aBackgroundColorBox.Hide();
- aBackgroundColorSet.SetAccessibleRelationLabeledBy(&aBackgroundColorSet);
- }
- }
-}
-
-void SvxBackgroundTabPage::ResetFromWallpaperItem( const SfxItemSet& rSet )
-{
- ShowSelector();
-
- // Zustand des Vorschau-Buttons durch UserData persistent
- String aUserData = GetUserData();
- aBtnPreview.Check( aUserData.Len() && sal_Unicode('1') == aUserData.GetChar( 0 ) );
-
- // Input-BrushItem besorgen und auswerten
- const SvxBrushItem* pBgdAttr = NULL;
- sal_uInt16 nSlot = SID_VIEW_FLD_PIC;
- sal_uInt16 nWhich = GetWhich( nSlot );
- SvxBrushItem* pTemp = 0;
- const CntWallpaperItem* pItem = 0;
-
- if ( rSet.GetItemState( nWhich, sal_False ) >= SFX_ITEM_AVAILABLE )
- {
- pItem = (const CntWallpaperItem*)&rSet.Get( nWhich );
- pTemp = new SvxBrushItem( *pItem, nWhich );
- pBgdAttr = pTemp;
- }
-
- aBtnTile.Check();
-
- if ( pBgdAttr )
- {
- FillControls_Impl(*pBgdAttr, aUserData);
- // Auch bei Anzeige der Grafik, soll die Brush erhalten bleiben
- if( aBgdColor != pBgdAttr->GetColor() )
- {
- aBgdColor = pBgdAttr->GetColor();
- sal_uInt16 nCol = GetItemId_Impl( aBackgroundColorSet, aBgdColor );
- aBackgroundColorSet.SelectItem( nCol );
- pPreviewWin1->NotifyChange( aBgdColor );
- }
- }
- else
- {
- aLbSelect.SelectEntryPos( 0 );
- ShowColorUI_Impl();
-
- const SfxPoolItem* pOld = GetOldItem( rSet, SID_VIEW_FLD_PIC );
- if ( pOld )
- aBgdColor = Color( ((CntWallpaperItem*)pOld)->GetColor() );
- }
-
- // We now have always a link to the background
- bLinkOnly = sal_True;
- aBtnLink.Check( sal_True );
- aBtnLink.Show( sal_False );
-// if( !pItem || !pItem->GetWallpaper(sal_False).IsBitmap() )
-// aBtnLink.Check();
-
- delete pTemp;
-}
-
-
-
-//------------------------------------------------------------------------
-
-void SvxBackgroundTabPage::FillUserData()
-
-/* [Beschreibung]
-
- Beim Destruieren einer SfxTabPage wird diese virtuelle Methode gerufen,
- damit die TabPage interne Informationen sichern kann.
-
- In diesem Fall wird der Zustand des Vorschau-Buttons gesichert.
-*/
-
-{
- SetUserData( String( aBtnPreview.IsChecked() ? sal_Unicode('1') : sal_Unicode('0') ) );
-}
-
-//------------------------------------------------------------------------
-
-sal_Bool SvxBackgroundTabPage::FillItemSet( SfxItemSet& rCoreSet )
-{
- if ( pPageImpl->pLoadTimer && pPageImpl->pLoadTimer->IsActive() )
- {
- pPageImpl->pLoadTimer->Stop();
- LoadTimerHdl_Impl( pPageImpl->pLoadTimer );
- }
-// os: So ein Unsinn! Irgendwo laesst sich so ein Item immer finden,
-// es muss aber im rSet vorhanden sein!
-
-// const SfxPoolItem* pX = GetOldItem( rCoreSet, SID_VIEW_FLD_PIC );
-// if( pX && pX->ISA(SfxWallpaperItem))
- if(SFX_ITEM_AVAILABLE <= rCoreSet.GetItemState(GetWhich(SID_VIEW_FLD_PIC), sal_False))
- return FillItemSetWithWallpaperItem( rCoreSet, SID_VIEW_FLD_PIC );
-
- sal_Bool bModified = sal_False;
- sal_uInt16 nSlot = SID_ATTR_BRUSH;
-
- if ( aTblLBox.IsVisible() )
- {
- switch( aTblLBox.GetSelectEntryPos() )
- {
- case TBL_DEST_CELL:
- nSlot = SID_ATTR_BRUSH;
- break;
- case TBL_DEST_ROW:
- nSlot = SID_ATTR_BRUSH_ROW;
- break;
- case TBL_DEST_TBL:
- nSlot = SID_ATTR_BRUSH_TABLE;
- break;
- }
- }
- else if(aParaLBox.GetData() == &aParaLBox)
- {
- switch(aParaLBox.GetSelectEntryPos())
- {
- case PARA_DEST_PARA:
- nSlot = SID_ATTR_BRUSH;
- break;
- case PARA_DEST_CHAR:
- nSlot = SID_ATTR_BRUSH_CHAR;
- break;
- }
- }
- sal_uInt16 nWhich = GetWhich( nSlot );
-
- const SfxPoolItem* pOld = GetOldItem( rCoreSet, nSlot );
- SfxItemState eOldItemState = rCoreSet.GetItemState(nSlot, sal_False);
- const SfxItemSet& rOldSet = GetItemSet();
-
- sal_Bool bGraphTransparencyChanged = bGraphTransparency && (aGraphTransMF.GetText() != aGraphTransMF.GetSavedValue());
- if ( pOld )
- {
- const SvxBrushItem& rOldItem = (const SvxBrushItem&)*pOld;
- SvxGraphicPosition eOldPos = rOldItem.GetGraphicPos();
- const sal_Bool bIsBrush = ( 0 == aLbSelect.GetSelectEntryPos() );
-
- // transparency has to be set if enabled, the color not already set to "No fill" and
- if( bColTransparency &&
- aBgdColor.GetTransparency() < 0xff)
- {
- aBgdColor.SetTransparency(lcl_PercentToTransparency(static_cast<long>(aColTransMF.GetValue())));
- }
- if ( ( (GPOS_NONE == eOldPos) && bIsBrush )
- || ( (GPOS_NONE != eOldPos) && !bIsBrush ) ) // Brush <-> Bitmap gewechselt?
- {
- // Hintergrund-Art wurde nicht gewechselt:
-
- if ( (GPOS_NONE == eOldPos) || !aLbSelect.IsVisible() )
- {
- // Brush-Behandlung:
- if ( rOldItem.GetColor() != aBgdColor ||
- (SFX_ITEM_AVAILABLE >= eOldItemState && !aBackgroundColorSet.IsNoSelection()))
- {
- bModified = sal_True;
- rCoreSet.Put( SvxBrushItem( aBgdColor, nWhich ) );
- }
- else if ( SFX_ITEM_DEFAULT == rOldSet.GetItemState( nWhich, sal_False ) )
- rCoreSet.ClearItem( nWhich );
- }
- else
- {
- // Bitmap-Behandlung:
-
- SvxGraphicPosition eNewPos = GetGraphicPosition_Impl();
- const sal_Bool bIsLink = aBtnLink.IsChecked();
- const sal_Bool bWasLink = (NULL != rOldItem.GetGraphicLink() );
-
-
- if ( !bIsLink && !bIsGraphicValid )
- bIsGraphicValid = LoadLinkedGraphic_Impl();
-
- if ( bGraphTransparencyChanged ||
- eNewPos != eOldPos
- || bIsLink != bWasLink
- || ( bWasLink && *rOldItem.GetGraphicLink()
- != aBgdGraphicPath )
- || ( !bWasLink && rOldItem.GetGraphic()->GetBitmap()
- != aBgdGraphic.GetBitmap() )
- )
- {
- bModified = sal_True;
-
- SvxBrushItem aTmpBrush(nWhich);
- if ( bIsLink )
- {
- aTmpBrush = SvxBrushItem( aBgdGraphicPath,
- aBgdGraphicFilter,
- eNewPos,
- nWhich );
- }
- else
- aTmpBrush = SvxBrushItem( aBgdGraphic,
- eNewPos,
- nWhich );
- lcl_SetTransparency(aTmpBrush, static_cast<long>(aGraphTransMF.GetValue()));
-
- rCoreSet.Put(aTmpBrush);
- }
- else if ( SFX_ITEM_DEFAULT == rOldSet.GetItemState( nWhich, sal_False ) )
- rCoreSet.ClearItem( nWhich );
- }
- }
- else // Brush <-> Bitmap gewechselt!
- {
- if ( bIsBrush )
- rCoreSet.Put( SvxBrushItem( aBgdColor, nWhich ) );
- else
- {
- SvxBrushItem* pTmpBrush = 0;
- if ( aBtnLink.IsChecked() )
- {
- pTmpBrush = new SvxBrushItem( aBgdGraphicPath,
- aBgdGraphicFilter,
- GetGraphicPosition_Impl(),
- nWhich );
- }
- else
- {
- if ( !bIsGraphicValid )
- bIsGraphicValid = LoadLinkedGraphic_Impl();
-
- if ( bIsGraphicValid )
- pTmpBrush = new SvxBrushItem( aBgdGraphic,
- GetGraphicPosition_Impl(),
- nWhich );
- }
- if(pTmpBrush)
- {
- lcl_SetTransparency(*pTmpBrush, static_cast<long>(aGraphTransMF.GetValue()));
- rCoreSet.Put(*pTmpBrush);
- delete pTmpBrush;
- }
- }
- bModified = ( bIsBrush || aBtnLink.IsChecked() || bIsGraphicValid );
- }
- }
- else if ( SID_ATTR_BRUSH_CHAR == nSlot && aBgdColor != Color( COL_WHITE ) )
- {
- rCoreSet.Put( SvxBrushItem( aBgdColor, nWhich ) );
- bModified = sal_True;
- }
-
- if( aTblLBox.IsVisible() )
- {
- // Der aktuelle Zustand wurde bereits geputtet
- if( nSlot != SID_ATTR_BRUSH && pTableBck_Impl->pCellBrush)
- {
- const SfxPoolItem* pOldCell =
- GetOldItem( rCoreSet, SID_ATTR_BRUSH );
-
- if ( *pTableBck_Impl->pCellBrush != *pOldCell )
- {
- rCoreSet.Put( *pTableBck_Impl->pCellBrush );
- bModified |= sal_True;
- }
- }
-
- if( nSlot != SID_ATTR_BRUSH_ROW && pTableBck_Impl->pRowBrush)
- {
- const SfxPoolItem* pOldRow =
- GetOldItem( rCoreSet, SID_ATTR_BRUSH_ROW );
-
- if ( *pTableBck_Impl->pRowBrush != *pOldRow )
- {
- rCoreSet.Put( *pTableBck_Impl->pRowBrush );
- bModified |= sal_True;
- }
- }
-
- if( nSlot != SID_ATTR_BRUSH_TABLE && pTableBck_Impl->pTableBrush)
- {
- const SfxPoolItem* pOldTable =
- GetOldItem( rCoreSet, SID_ATTR_BRUSH_TABLE );
-
- if ( *pTableBck_Impl->pTableBrush != *pOldTable )
- {
- rCoreSet.Put( *pTableBck_Impl->pTableBrush );
- bModified |= sal_True;
- }
- }
-
- if( aTblLBox.GetSavedValue() != aTblLBox.GetSelectEntryPos() )
- {
- rCoreSet.Put( SfxUInt16Item( SID_BACKGRND_DESTINATION,
- aTblLBox.GetSelectEntryPos() ) );
- bModified |= sal_True;
- }
- }
- else if(aParaLBox.GetData() == &aParaLBox)
- {
- // Der aktuelle Zustand wurde bereits geputtet
- if( nSlot != SID_ATTR_BRUSH && aParaLBox.IsVisible()) // nicht im Suchen-Format-Dialog
- {
- const SfxPoolItem* pOldPara =
- GetOldItem( rCoreSet, SID_ATTR_BRUSH );
-
- if ( *pParaBck_Impl->pParaBrush != *pOldPara )
- {
- rCoreSet.Put( *pParaBck_Impl->pParaBrush );
- bModified |= sal_True;
- }
- }
-
- if( nSlot != SID_ATTR_BRUSH_CHAR )
- {
- const SfxPoolItem* pOldChar =
- GetOldItem( rCoreSet, SID_ATTR_BRUSH_CHAR );
- DBG_ASSERT(pParaBck_Impl, "pParaBck_Impl == NULL ?");
- if ( pOldChar &&
- //#111173# crash report shows that pParaBck_Impl can be NULL, the cause is unknown
- pParaBck_Impl &&
- (*pParaBck_Impl->pCharBrush != *pOldChar ||
- *pParaBck_Impl->pCharBrush != SvxBrushItem(SID_ATTR_BRUSH_CHAR)))
- {
- rCoreSet.Put( *pParaBck_Impl->pCharBrush );
- bModified |= sal_True;
- }
- }
-
- if( aParaLBox.GetSavedValue() != aParaLBox.GetSelectEntryPos() )
- {
- rCoreSet.Put( SfxUInt16Item( SID_BACKGRND_DESTINATION,
- aParaLBox.GetSelectEntryPos() ) );
- bModified |= sal_True;
- }
- }
- return bModified;
-}
-
-sal_Bool SvxBackgroundTabPage::FillItemSetWithWallpaperItem( SfxItemSet& rCoreSet, sal_uInt16 nSlot)
-{
- sal_uInt16 nWhich = GetWhich( nSlot );
- const SfxPoolItem* pOld = GetOldItem( rCoreSet, nSlot );
- const SfxItemSet& rOldSet = GetItemSet();
- DBG_ASSERT(pOld,"FillItemSetWithWallpaperItem: Item not found");
-
- SvxBrushItem rOldItem( (const CntWallpaperItem&)*pOld, nWhich );
- SvxGraphicPosition eOldPos = rOldItem.GetGraphicPos();
- const sal_Bool bIsBrush = ( 0 == aLbSelect.GetSelectEntryPos() );
- sal_Bool bModified = sal_False;
-
- if ( ( (GPOS_NONE == eOldPos) && bIsBrush )
- || ( (GPOS_NONE != eOldPos) && !bIsBrush ) ) // Brush <-> Bitmap gewechselt?
- {
- // Hintergrund-Art wurde nicht gewechselt:
-
- if ( (GPOS_NONE == eOldPos) || !aLbSelect.IsVisible() )
- {
- // Brush-Behandlung:
- if ( rOldItem.GetColor() != aBgdColor )
- {
- bModified = sal_True;
- CntWallpaperItem aItem( nWhich );
- aItem.SetColor( aBgdColor );
- rCoreSet.Put( aItem );
- }
- else if ( SFX_ITEM_DEFAULT == rOldSet.GetItemState( nWhich, sal_False ) )
- rCoreSet.ClearItem( nWhich );
- }
- else
- {
- // Bitmap-Behandlung:
- SvxGraphicPosition eNewPos = GetGraphicPosition_Impl();
-
- int bBitmapChanged = ( ( eNewPos != eOldPos ) ||
- ( *rOldItem.GetGraphicLink() != aBgdGraphicPath ) );
- int bBrushChanged = ( rOldItem.GetColor() != aBgdColor );
- if( bBitmapChanged || bBrushChanged )
- {
- bModified = sal_True;
-
- CntWallpaperItem aItem( nWhich );
- WallpaperStyle eWallStyle = SvxBrushItem::GraphicPos2WallpaperStyle(eNewPos);
- aItem.SetStyle( sal::static_int_cast< sal_uInt16 >( eWallStyle ) );
- aItem.SetColor( aBgdColor );
- aItem.SetBitmapURL( aBgdGraphicPath );
- rCoreSet.Put( aItem );
- }
- else if ( SFX_ITEM_DEFAULT == rOldSet.GetItemState( nWhich, sal_False ) )
- rCoreSet.ClearItem( nWhich );
- }
- }
- else // Brush <-> Bitmap gewechselt!
- {
- CntWallpaperItem aItem( nWhich );
- if ( bIsBrush )
- {
- aItem.SetColor( aBgdColor );
- rCoreSet.Put( aItem );
- }
- else
- {
- WallpaperStyle eWallStyle =
- SvxBrushItem::GraphicPos2WallpaperStyle( GetGraphicPosition_Impl() );
- aItem.SetStyle( sal::static_int_cast< sal_uInt16 >( eWallStyle ) );
- aItem.SetColor( aBgdColor );
- aItem.SetBitmapURL( aBgdGraphicPath );
- rCoreSet.Put( aItem );
- }
-
- bModified = sal_True;
- }
- return bModified;
-}
-
-//-----------------------------------------------------------------------
-
-int SvxBackgroundTabPage::DeactivatePage( SfxItemSet* _pSet )
-
-/* [Beschreibung]
-
- virtuelle Methode, wird beim Deaktivieren gerufen
-*/
-
-{
- if ( pPageImpl->bIsImportDlgInExecute )
- return KEEP_PAGE;
-
- if ( _pSet )
- FillItemSet( *_pSet );
-
- return LEAVE_PAGE;
-}
-
-//-----------------------------------------------------------------------
-
-void SvxBackgroundTabPage::PointChanged( Window* , RECT_POINT )
-{
- // muss implementiert werden, damit Position-Control funktioniert
-}
-
-//-----------------------------------------------------------------------
-
-void SvxBackgroundTabPage::ShowSelector()
-{
- if( bAllowShowSelector)
- {
- aSelectTxt.Show();
- aLbSelect.Show();
- aLbSelect.SetSelectHdl( HDL(SelectHdl_Impl) );
- aBtnLink.SetClickHdl( HDL(FileClickHdl_Impl) );
- aBtnPreview.SetClickHdl( HDL(FileClickHdl_Impl) );
- aBtnBrowse.SetClickHdl( HDL(BrowseHdl_Impl) );
- aBtnArea.SetClickHdl( HDL(RadioClickHdl_Impl) );
- aBtnTile.SetClickHdl( HDL(RadioClickHdl_Impl) );
- aBtnPosition.SetClickHdl( HDL(RadioClickHdl_Impl) );
-
- // Verz"ogertes Laden "uber Timer (wg. UI-Update)
- pPageImpl->pLoadTimer = new Timer;
- pPageImpl->pLoadTimer->SetTimeout( 500 ); // 500ms verz"ogern
- pPageImpl->pLoadTimer->SetTimeoutHdl(
- LINK( this, SvxBackgroundTabPage, LoadTimerHdl_Impl ) );
-
- bAllowShowSelector = sal_False;
-
- if(nHtmlMode & HTMLMODE_ON)
- {
- if(!(nHtmlMode & HTMLMODE_GRAPH_POS))
- aBtnPosition.Enable(sal_False);
- aBtnArea.Enable(sal_False);
- }
- }
-}
-
-//------------------------------------------------------------------------
-
-
-void SvxBackgroundTabPage::RaiseLoadError_Impl()
-{
- SfxErrorContext aContext( ERRCTX_SVX_BACKGROUND,
- String(),
- this,
- RID_SVXERRCTX,
- &CUI_MGR() );
-
- ErrorHandler::HandleError(
- *new StringErrorInfo( ERRCODE_SVX_GRAPHIC_NOTREADABLE,
- aBgdGraphicPath ) );
-}
-
-//------------------------------------------------------------------------
-
-sal_Bool SvxBackgroundTabPage::LoadLinkedGraphic_Impl()
-{
- sal_Bool bResult = ( aBgdGraphicPath.Len() > 0 ) &&
- ( GRFILTER_OK == GraphicFilter::LoadGraphic( aBgdGraphicPath,
- aBgdGraphicFilter,
- aBgdGraphic ) );
- return bResult;
-}
-
-//------------------------------------------------------------------------
-
-
-void SvxBackgroundTabPage::FillColorValueSets_Impl()
-
-/* [Beschreibung]
-
- F"ullen des Farb-Sets
-*/
-
-{
- SfxObjectShell* pDocSh = SfxObjectShell::Current();
- const SfxPoolItem* pItem = NULL;
- XColorTable* pColorTable = NULL;
- const Size aSize15x15 = Size( 15, 15 );
- bool bOwn = false;
-
- if ( pDocSh && ( 0 != ( pItem = pDocSh->GetItem( SID_COLOR_TABLE ) ) ) )
- pColorTable = ( (SvxColorTableItem*)pItem )->GetColorTable();
-
- if ( !pColorTable )
- {
- bOwn = true;
- pColorTable = new XColorTable( SvtPathOptions().GetPalettePath() );
- }
-
- if ( pColorTable )
- {
- short i = 0;
- long nCount = pColorTable->Count();
- XColorEntry* pEntry = NULL;
- Color aColWhite( COL_WHITE );
- String aStrWhite( EditResId( RID_SVXITEMS_COLOR_WHITE ) );
- WinBits nBits = ( aBackgroundColorSet.GetStyle() | WB_ITEMBORDER | WB_NAMEFIELD | WB_NONEFIELD );
- aBackgroundColorSet.SetText( SVX_RESSTR( RID_SVXSTR_TRANSPARENT ) );
- aBackgroundColorSet.SetStyle( nBits );
- aBackgroundColorSet.SetAccessibleName(aBackgroundColorBox.GetText());
- for ( i = 0; i < nCount; i++ )
- {
- pEntry = pColorTable->GetColor(i);
- aBackgroundColorSet.InsertItem( i + 1, pEntry->GetColor(), pEntry->GetName() );
- }
-
- while ( i < 104 )
- {
- aBackgroundColorSet.InsertItem( i + 1, aColWhite, aStrWhite );
- i++;
- }
-
- if ( nCount > 104 )
- {
- aBackgroundColorSet.SetStyle( nBits | WB_VSCROLL );
- }
- }
-
- if ( bOwn )
- delete pColorTable;
-
- aBackgroundColorSet.SetColCount( 8 );
- aBackgroundColorSet.SetLineCount( 13 );
- aBackgroundColorSet.CalcWindowSizePixel( aSize15x15 );
-
-}
-
-//------------------------------------------------------------------------
-
-
-
-//------------------------------------------------------------------------
-
-void SvxBackgroundTabPage::ShowColorUI_Impl()
-
-/* [Beschreibung]
-
- Die Controls f"ur das Einstellen der Grafik ausblenden und die
- Controls f"ur die Farbeinstellung einblenden.
-*/
-
-{
- if( !aBackgroundColorSet.IsVisible() )
- {
- aBackgroundColorSet.Show();
- aBackgroundColorBox.Show();
- aBorderWin.Show();
- pPreviewWin1->Show();
- aBtnBrowse.Hide();
- aFtFile.Hide();
- aBtnLink.Hide();
- aBtnPreview.Hide();
- aGbFile.Hide();
- aBtnPosition.Hide();
- aBtnArea.Hide();
- aBtnTile.Hide();
- aWndPosition.Hide();
- aGbPosition.Hide();
- pPreviewWin2->Hide();
- aGraphTransFL.Show(sal_False);
- aGraphTransMF.Show(sal_False);
- if(bColTransparency)
- {
- aColTransFT.Show();
- aColTransMF.Show();
- }
- }
-}
-
-//------------------------------------------------------------------------
-
-void SvxBackgroundTabPage::ShowBitmapUI_Impl()
-
-/* [Beschreibung]
-
- Die Controls f"ur die Farbeinstellung ausblenden und die
- Controls f"ur das Einstellen der Grafik einblenden.
-*/
-
-{
- if ( aLbSelect.IsVisible() &&
- (
- aBackgroundColorSet.IsVisible()
- || !aBtnBrowse.IsVisible() ) )
- {
- aBackgroundColorSet.Hide();
- aBackgroundColorBox.Hide();
- aBorderWin.Hide();
- pPreviewWin1->Hide();
- aBtnBrowse.Show();
- aFtFile.Show();
-
- if ( !bLinkOnly && ! nHtmlMode & HTMLMODE_ON )
- aBtnLink.Show();
- aBtnPreview.Show();
- aGbFile.Show();
- aBtnPosition.Show();
- aBtnArea.Show();
- aBtnTile.Show();
- aWndPosition.Show();
- aGbPosition.Show();
- pPreviewWin2->Show();
- if(bGraphTransparency)
- {
- aGraphTransFL.Show();
- aGraphTransMF.Show();
- }
- aColTransFT.Show(sal_False);
- aColTransMF.Show(sal_False);
- }
-}
-
-//------------------------------------------------------------------------
-
-void SvxBackgroundTabPage::SetGraphicPosition_Impl( SvxGraphicPosition ePos )
-
-/* [Beschreibung]
-
- Die Controls f"ur die Grafikposition einstellen.
-*/
-
-{
- switch ( ePos )
- {
- case GPOS_AREA:
- {
- aBtnArea.Check();
- aWndPosition.Disable();
- }
- break;
-
- case GPOS_TILED:
- {
- aBtnTile.Check();
- aWndPosition.Disable();
- }
- break;
-
- default:
- {
- aBtnPosition.Check();
- aWndPosition.Enable();
- RECT_POINT eNewPos = RP_MM;
-
- switch ( ePos )
- {
- case GPOS_MM: break;
- case GPOS_LT: eNewPos = RP_LT; break;
- case GPOS_MT: eNewPos = RP_MT; break;
- case GPOS_RT: eNewPos = RP_RT; break;
- case GPOS_LM: eNewPos = RP_LM; break;
- case GPOS_RM: eNewPos = RP_RM; break;
- case GPOS_LB: eNewPos = RP_LB; break;
- case GPOS_MB: eNewPos = RP_MB; break;
- case GPOS_RB: eNewPos = RP_RB; break;
- default: ;//prevent warning
- }
- aWndPosition.SetActualRP( eNewPos );
- }
- break;
- }
- aWndPosition.Invalidate();
-}
-
-//------------------------------------------------------------------------
-
-SvxGraphicPosition SvxBackgroundTabPage::GetGraphicPosition_Impl()
-
-/* [Beschreibung]
-
- Die Position der Grafik zur"uckgeben.
-*/
-
-{
- if ( aBtnTile.IsChecked() )
- return GPOS_TILED;
- else if ( aBtnArea.IsChecked() )
- return GPOS_AREA;
- else
- {
- switch ( aWndPosition.GetActualRP() )
- {
- case RP_LT: return GPOS_LT;
- case RP_MT: return GPOS_MT;
- case RP_RT: return GPOS_RT;
- case RP_LM: return GPOS_LM;
- case RP_MM: return GPOS_MM;
- case RP_RM: return GPOS_RM;
- case RP_LB: return GPOS_LB;
- case RP_MB: return GPOS_MB;
- case RP_RB: return GPOS_RB;
- }
- }
- return GPOS_MM;
-}
-
-//-----------------------------------------------------------------------
-// Handler
-//-----------------------------------------------------------------------
-
-IMPL_LINK( SvxBackgroundTabPage, BackgroundColorHdl_Impl, ValueSet*, EMPTYARG )
-/*
- Handler, called when color selection is changed
-*/
-{
- sal_uInt16 nItemId = aBackgroundColorSet.GetSelectItemId();
- Color aColor = nItemId ? ( aBackgroundColorSet.GetItemColor( nItemId ) ) : Color( COL_TRANSPARENT );
- aBgdColor = aColor;
- pPreviewWin1->NotifyChange( aBgdColor );
- sal_Bool bEnableTransp = aBgdColor.GetTransparency() < 0xff;
- aColTransFT.Enable(bEnableTransp);
- aColTransMF.Enable(bEnableTransp);
- return 0;
-}
-
-//------------------------------------------------------------------------
-
-IMPL_LINK( SvxBackgroundTabPage, SelectHdl_Impl, ListBox*, EMPTYARG )
-{
- if ( 0 == aLbSelect.GetSelectEntryPos() )
- {
- ShowColorUI_Impl();
- aParaLBox.Enable(); // Zeichenhintergrund kann keine Bitmap sein
- }
- else
- {
- ShowBitmapUI_Impl();
- aParaLBox.Enable(sal_False);// Zeichenhintergrund kann keine Bitmap sein
- }
- return 0;
-}
-
-//------------------------------------------------------------------------
-
-IMPL_LINK( SvxBackgroundTabPage, FileClickHdl_Impl, CheckBox*, pBox )
-{
- if ( &aBtnLink == pBox )
- {
- if ( aBtnLink.IsChecked() )
- {
- INetURLObject aObj( aBgdGraphicPath );
- String aFilePath;
- if ( aObj.GetProtocol() == INET_PROT_FILE )
- aFilePath = aObj.getFSysPath( INetURLObject::FSYS_DETECT );
- else
- aFilePath = aBgdGraphicPath;
- aFtFile.SetText( aFilePath );
- }
- else
- aFtFile.SetText( aStrUnlinked );
- }
- else if ( &aBtnPreview == pBox )
- {
- if ( aBtnPreview.IsChecked() )
- {
- if ( !bIsGraphicValid )
- bIsGraphicValid = LoadLinkedGraphic_Impl();
-
- if ( bIsGraphicValid )
- {
- Bitmap aBmp = aBgdGraphic.GetBitmap();
- pPreviewWin2->NotifyChange( &aBmp );
- }
- else
- {
- if ( aBgdGraphicPath.Len() > 0 ) // nur bei gelinkter Grafik
- RaiseLoadError_Impl(); // ein Fehler
- pPreviewWin2->NotifyChange( NULL );
- }
- }
- else
- pPreviewWin2->NotifyChange( NULL );
- }
- return 0;
-}
-
-//------------------------------------------------------------------------
-
-IMPL_LINK( SvxBackgroundTabPage, RadioClickHdl_Impl, RadioButton*, pBtn )
-{
- if ( pBtn == &aBtnPosition )
- {
- if ( !aWndPosition.IsEnabled() )
- {
- aWndPosition.Enable();
- aWndPosition.Invalidate();
- }
- }
- else if ( aWndPosition.IsEnabled() )
- {
- aWndPosition.Disable();
- aWndPosition.Invalidate();
- }
- return 0;
-}
-
-//------------------------------------------------------------------------
-
-IMPL_LINK( SvxBackgroundTabPage, BrowseHdl_Impl, PushButton* , EMPTYARG )
-
-/* [Beschreibung]
-
- Handler, gerufen durch das Dr"ucken des Durchsuchen-Buttons.
- Grafik/Einf"ugen-Dialog erzeugen, Pfad setzen und starten.
-*/
-
-{
- if ( pPageImpl->pLoadTimer->IsActive() )
- return 0;
- sal_Bool bHtml = 0 != ( nHtmlMode & HTMLMODE_ON );
-
- pImportDlg = new SvxOpenGraphicDialog( aStrBrowse );
- if ( bHtml || bLinkOnly )
- pImportDlg->EnableLink(sal_False);
- pImportDlg->SetPath( aBgdGraphicPath, aBtnLink.IsChecked() );
-
- pPageImpl->bIsImportDlgInExecute = sal_True;
- short nErr = pImportDlg->Execute();
- pPageImpl->bIsImportDlgInExecute = sal_False;
-
- if( !nErr )
- {
- if ( bHtml )
- aBtnLink.Check();
- // wenn Verkn"upfen nicht gecheckt ist und die Vorschau auch nicht,
- // dann die Vorschau aktivieren, damit der Anwender sieht,
- // welche Grafik er ausgew"ahlt hat
- if ( !aBtnLink.IsChecked() && !aBtnPreview.IsChecked() )
- aBtnPreview.Check( sal_True );
- // timer-verz"ogertes Laden der Grafik
- pPageImpl->pLoadTimer->Start();
- }
- else
- DELETEZ( pImportDlg );
- return 0;
-}
-
-//-----------------------------------------------------------------------
-
-IMPL_LINK( SvxBackgroundTabPage, LoadTimerHdl_Impl, Timer* , pTimer )
-
-/* [Beschreibung]
-
- Verz"ogertes Laden der Grafik.
- Grafik wird nur dann geladen, wenn sie unterschiedlich zur
- aktuellen Grafik ist.
-*/
-
-{
- if ( pTimer == pPageImpl->pLoadTimer )
- {
- pPageImpl->pLoadTimer->Stop();
-
- if ( pImportDlg )
- {
- INetURLObject aOld( aBgdGraphicPath );
- INetURLObject aNew( pImportDlg->GetPath() );
- if ( !aBgdGraphicPath.Len() || aNew != aOld )
- {
- // neue Datei gew"ahlt
- aBgdGraphicPath = pImportDlg->GetPath();
- aBgdGraphicFilter = pImportDlg->GetCurrentFilter();
- sal_Bool bLink = ( nHtmlMode & HTMLMODE_ON ) || bLinkOnly ? sal_True : pImportDlg->IsAsLink();
- aBtnLink.Check( bLink );
- aBtnLink.Enable();
-
- if ( aBtnPreview.IsChecked() )
- {
- if( !pImportDlg->GetGraphic(aBgdGraphic) )
- {
- bIsGraphicValid = sal_True;
- }
- else
- {
- aBgdGraphicFilter.Erase();
- aBgdGraphicPath.Erase();
- bIsGraphicValid = sal_False;
- }
- }
- else
- bIsGraphicValid = sal_False; // Grafik erst beim Preview-Click laden
-
- if ( aBtnPreview.IsChecked() && bIsGraphicValid )
- {
- Bitmap aBmp = aBgdGraphic.GetBitmap();
- pPreviewWin2->NotifyChange( &aBmp );
- }
- else
- pPreviewWin2->NotifyChange( NULL );
- }
-
- FileClickHdl_Impl( &aBtnLink );
- DELETEZ( pImportDlg );
- }
- }
- return 0;
-}
-
-//-----------------------------------------------------------------------
-
-void SvxBackgroundTabPage::ShowTblControl()
-{
- aTblLBox .SetSelectHdl( HDL(TblDestinationHdl_Impl) );
- aTblLBox .SelectEntryPos(0);
- aTblDesc.Show();
- aTblLBox.Show();
-}
-
-//-----------------------------------------------------------------------
-
-void SvxBackgroundTabPage::ShowParaControl(sal_Bool bCharOnly)
-{
- aParaLBox.SetSelectHdl(HDL(ParaDestinationHdl_Impl));
- aParaLBox.SelectEntryPos(0);
- if(!bCharOnly)
- {
- aTblDesc.Show();
- aParaLBox.Show();
- }
- aParaLBox.SetData(&aParaLBox); // hier erkennt man, dass dieser Mode eingeschaltet ist
-}
-//-----------------------------------------------------------------------
-
-IMPL_LINK( SvxBackgroundTabPage, TblDestinationHdl_Impl, ListBox*, pBox )
-{
- sal_uInt16 nSelPos = pBox->GetSelectEntryPos();
- if( pTableBck_Impl && pTableBck_Impl->nActPos != nSelPos)
- {
- SvxBrushItem** pActItem = new (SvxBrushItem*);
- sal_uInt16 nWhich = 0;
- switch(pTableBck_Impl->nActPos)
- {
- case TBL_DEST_CELL:
- *pActItem = pTableBck_Impl->pCellBrush;
- nWhich = pTableBck_Impl->nCellWhich;
- break;
- case TBL_DEST_ROW:
- *pActItem = pTableBck_Impl->pRowBrush;
- nWhich = pTableBck_Impl->nRowWhich;
- break;
- case TBL_DEST_TBL:
- *pActItem = pTableBck_Impl->pTableBrush;
- nWhich = pTableBck_Impl->nTableWhich;
- break;
- }
- pTableBck_Impl->nActPos = nSelPos;
- if(!*pActItem)
- *pActItem = new SvxBrushItem(nWhich);
- if(0 == aLbSelect.GetSelectEntryPos()) // Brush ausgewaehlt
- {
- **pActItem = SvxBrushItem( aBgdColor, nWhich );
- }
- else
- {
- SvxGraphicPosition eNewPos = GetGraphicPosition_Impl();
- const sal_Bool bIsLink = aBtnLink.IsChecked();
-
- if ( !bIsLink && !bIsGraphicValid )
- bIsGraphicValid = LoadLinkedGraphic_Impl();
-
- if ( bIsLink )
- **pActItem = SvxBrushItem( aBgdGraphicPath,
- aBgdGraphicFilter,
- eNewPos,
- (*pActItem)->Which() );
- else
- **pActItem = SvxBrushItem( aBgdGraphic,
- eNewPos,
- (*pActItem)->Which() );
- }
- switch(nSelPos)
- {
- case TBL_DEST_CELL:
- *pActItem = pTableBck_Impl->pCellBrush;
- aLbSelect.Enable();
- nWhich = pTableBck_Impl->nCellWhich;
- break;
- case TBL_DEST_ROW:
- {
- if((nHtmlMode & HTMLMODE_ON) && !(nHtmlMode & HTMLMODE_SOME_STYLES))
- aLbSelect.Disable();
- *pActItem = pTableBck_Impl->pRowBrush;
- nWhich = pTableBck_Impl->nRowWhich;
- }
- break;
- case TBL_DEST_TBL:
- *pActItem = pTableBck_Impl->pTableBrush;
- aLbSelect.Enable();
- nWhich = pTableBck_Impl->nTableWhich;
- break;
- }
- String aUserData = GetUserData();
- if(!*pActItem)
- *pActItem = new SvxBrushItem(nWhich);
- FillControls_Impl(**pActItem, aUserData);
- delete pActItem;
- }
- return 0;
-}
-
-//-----------------------------------------------------------------------
-
-IMPL_LINK( SvxBackgroundTabPage, ParaDestinationHdl_Impl, ListBox*, pBox )
-{
- sal_uInt16 nSelPos = pBox->GetSelectEntryPos();
- if( pParaBck_Impl && pParaBck_Impl->nActPos != nSelPos)
- {
- SvxBrushItem** pActItem = new (SvxBrushItem*);
- switch(pParaBck_Impl->nActPos)
- {
- case PARA_DEST_PARA:
- *pActItem = pParaBck_Impl->pParaBrush;
- break;
- case PARA_DEST_CHAR:
- *pActItem = pParaBck_Impl->pCharBrush;
- break;
- }
- pParaBck_Impl->nActPos = nSelPos;
- if(0 == aLbSelect.GetSelectEntryPos()) // Brush ausgewaehlt
- {
- sal_uInt16 nWhich = (*pActItem)->Which();
- **pActItem = SvxBrushItem( aBgdColor, nWhich );
- }
- else
- {
- SvxGraphicPosition eNewPos = GetGraphicPosition_Impl();
- const sal_Bool bIsLink = aBtnLink.IsChecked();
-
- if ( !bIsLink && !bIsGraphicValid )
- bIsGraphicValid = LoadLinkedGraphic_Impl();
-
- if ( bIsLink )
- **pActItem = SvxBrushItem( aBgdGraphicPath,
- aBgdGraphicFilter,
- eNewPos,
- (*pActItem)->Which() );
- else
- **pActItem = SvxBrushItem( aBgdGraphic,
- eNewPos,
- (*pActItem)->Which() );
- }
- switch(nSelPos)
- {
- case PARA_DEST_PARA:
- *pActItem = pParaBck_Impl->pParaBrush;
- aLbSelect.Enable();
- break;
- case PARA_DEST_CHAR:
- {
- *pActItem = pParaBck_Impl->pCharBrush;
- aLbSelect.Enable(sal_False);
- }
- break;
- }
- String aUserData = GetUserData();
- FillControls_Impl(**pActItem, aUserData);
- delete pActItem;
- }
- return 0;
-}
-
-//-----------------------------------------------------------------------
-
-void SvxBackgroundTabPage::FillControls_Impl( const SvxBrushItem& rBgdAttr,
- const String& rUserData )
-{
- SvxGraphicPosition ePos = rBgdAttr.GetGraphicPos();
- const Color& rColor = rBgdAttr.GetColor();
- if(bColTransparency)
- {
- aColTransMF.SetValue(lcl_TransparencyToPercent(rColor.GetTransparency()));
- aColTransMF.SaveValue();
- sal_Bool bEnableTransp = rColor.GetTransparency() < 0xff;
- aColTransFT.Enable(bEnableTransp);
- aColTransMF.Enable(bEnableTransp);
- //the default setting should be "no transparency"
- if(!bEnableTransp)
- aColTransMF.SetValue(0);
- }
-
- if ( GPOS_NONE == ePos || !aLbSelect.IsVisible() )
- {
- aLbSelect.SelectEntryPos( 0 );
- ShowColorUI_Impl();
- Color aTrColor( COL_TRANSPARENT );
- aBgdColor = rColor;
-
- sal_uInt16 nCol = ( aTrColor != aBgdColor ) ?
- GetItemId_Impl( aBackgroundColorSet, aBgdColor ) : 0;
-
- if( aTrColor != aBgdColor && nCol == 0)
- {
- aBackgroundColorSet.SetNoSelection();
- }
- else
- {
- aBackgroundColorSet.SelectItem( nCol );
- }
-
- pPreviewWin1->NotifyChange( aBgdColor );
- if ( aLbSelect.IsVisible() ) // Grafikteil initialisieren
- {
- aBgdGraphicFilter.Erase();
- aBgdGraphicPath.Erase();
-
- if ( !rUserData.Len() )
- aBtnPreview.Check( sal_False );
- aBtnLink.Check( sal_False );
- aBtnLink.Disable();
- pPreviewWin2->NotifyChange( NULL );
- SetGraphicPosition_Impl( GPOS_TILED ); // Kacheln als Default
- }
- }
- else
- {
- const String* pStrLink = rBgdAttr.GetGraphicLink();
- const String* pStrFilter = rBgdAttr.GetGraphicFilter();
-
- aLbSelect.SelectEntryPos( 1 );
- ShowBitmapUI_Impl();
-
- if ( pStrLink )
- {
-#ifdef DBG_UTIL
- INetURLObject aObj( *pStrLink );
- DBG_ASSERT( aObj.GetProtocol() != INET_PROT_NOT_VALID, "Invalid URL!" );
-#endif
- aBgdGraphicPath = *pStrLink;
- aBtnLink.Check( sal_True );
- aBtnLink.Enable();
- }
- else
- {
- aBgdGraphicPath.Erase();
- aBtnLink.Check( sal_False );
- aBtnLink.Disable();
- }
-
- if(bGraphTransparency)
- {
- const GraphicObject* pObject = rBgdAttr.GetGraphicObject();
- if(pObject)
- aGraphTransMF.SetValue(lcl_TransparencyToPercent(pObject->GetAttr().GetTransparency()));
- else
- aGraphTransMF.SetValue(0);
- aGraphTransMF.SaveValue();
- }
-
- FileClickHdl_Impl( &aBtnLink );
-
- if ( pStrFilter )
- aBgdGraphicFilter = *pStrFilter;
- else
- aBgdGraphicFilter.Erase();
-
- if ( !pStrLink || aBtnPreview.IsChecked() )
- {
- // Grafik ist im Item vorhanden und muss nicht
- // geladen werden:
-
- const Graphic* pGraphic = rBgdAttr.GetGraphic();
-
- if ( !pGraphic && aBtnPreview.IsChecked() )
- bIsGraphicValid = LoadLinkedGraphic_Impl();
- else if ( pGraphic )
- {
- aBgdGraphic = *pGraphic;
- bIsGraphicValid = sal_True;
-
- if ( !rUserData.Len() )
- aBtnPreview.Check();
- }
- else
- {
- RaiseLoadError_Impl();
- bIsGraphicValid = sal_False;
-
- if ( !rUserData.Len() )
- aBtnPreview.Check( sal_False );
- }
- }
-
- if ( aBtnPreview.IsChecked() && bIsGraphicValid )
- {
- Bitmap aBmp = aBgdGraphic.GetBitmap();
- pPreviewWin2->NotifyChange( &aBmp );
- }
- else
- pPreviewWin2->NotifyChange( NULL );
-
- SetGraphicPosition_Impl( ePos );
- }
-}
-
-void SvxBackgroundTabPage::EnableTransparency(sal_Bool bColor, sal_Bool bGraphic)
-{
- bColTransparency = bColor;
- bGraphTransparency = bGraphic;
- if(bColor)
- {
- aColTransFT.Show();
- aColTransMF.Show();
- }
- if(bGraphic)
- {
- Size aRectSize(aWndPosition.GetSizePixel());
- Point aRectPos(aWndPosition.GetPosPixel());
- Point aFLPos(aGraphTransFL.GetPosPixel());
- Size aTmp(LogicToPixel(Size(RSC_SP_FLGR_SPACE_Y, RSC_SP_FLGR_SPACE_Y), MAP_APPFONT));
- long nRectHeight = aFLPos.Y() - aRectPos.Y() - aTmp.Height();
- aRectSize.Height() = nRectHeight;
- aWndPosition.SetSizePixel(aRectSize);
- aWndPosition.Invalidate();
- }
-}
-
-void SvxBackgroundTabPage::PageCreated (SfxAllItemSet aSet)
-{
- SFX_ITEMSET_ARG (&aSet,pFlagItem,SfxUInt32Item,SID_FLAG_TYPE,sal_False);
- if (pFlagItem)
- {
- sal_uInt32 nFlags=pFlagItem->GetValue();
- if ( ( nFlags & SVX_SHOW_TBLCTL ) == SVX_SHOW_TBLCTL )
- ShowTblControl();
- if ( ( nFlags & SVX_SHOW_PARACTL ) == SVX_SHOW_PARACTL )
- ShowParaControl();
- if ( ( nFlags & SVX_SHOW_SELECTOR ) == SVX_SHOW_SELECTOR )
- ShowSelector();
- if ( ( nFlags & SVX_ENABLE_TRANSPARENCY ) == SVX_ENABLE_TRANSPARENCY )
- EnableTransparency(sal_True, sal_True);
- }
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */