blob: e8879d2260b3411debb3c99dec361c98b8fd3d26 [file] [log] [blame]
/**************************************************************
*
* 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"
#undef SC_DLLIMPLEMENTATION
//------------------------------------------------------------------
#include <svx/dlgutil.hxx>
#include <svx/drawitem.hxx>
#include <svx/xtable.hxx>
#include "appoptio.hxx"
#include "scmod.hxx"
#include "scitems.hxx"
#include "tpview.hxx"
#include "global.hxx"
#include "viewopti.hxx"
#include "tabvwsh.hxx"
#include "uiitems.hxx"
#include "scresid.hxx"
#include "docsh.hxx"
#include "sc.hrc" // -> Slot-IDs
#include "optdlg.hrc"
#include "globstr.hrc"
#include "opredlin.hxx"
#include "opredlin.hrc"
//------------------------------------------------------------------
ScRedlineOptionsTabPage::ScRedlineOptionsTabPage( Window* pParent,
const SfxItemSet& rSet )
: SfxTabPage(pParent, ScResId(RID_SCPAGE_OPREDLINE), rSet),
aContentFT ( this, ScResId(FT_CONTENT )),
aContentColorLB ( this, ScResId(CLB_CONTENT )),
aRemoveFT ( this, ScResId(FT_REMOVE )),
aRemoveColorLB ( this, ScResId(CLB_REMOVE )),
aInsertFT ( this, ScResId(FT_INSERT )),
aInsertColorLB ( this, ScResId(CLB_INSERT )),
aMoveFT ( this, ScResId(FT_MOVE )),
aMoveColorLB ( this, ScResId(CLB_MOVE )),
aChangedGB ( this, ScResId(GB_COLORCHGS)),
aAuthorStr (ScResId(STR_AUTHOR))
{
FreeResource();
Link aLk = LINK(this, ScRedlineOptionsTabPage, ColorHdl);
aContentColorLB.SetSelectHdl( aLk );
aMoveColorLB.SetSelectHdl( aLk );
aInsertColorLB.SetSelectHdl( aLk );
aRemoveColorLB.SetSelectHdl( aLk );
}
/*-----------------------------------------------------------------------
Beschreibung:
-----------------------------------------------------------------------*/
__EXPORT ScRedlineOptionsTabPage::~ScRedlineOptionsTabPage()
{
}
/*-----------------------------------------------------------------------
Beschreibung:
-----------------------------------------------------------------------*/
SfxTabPage* __EXPORT ScRedlineOptionsTabPage::Create( Window* pParent, const SfxItemSet& rSet )
{
return new ScRedlineOptionsTabPage( pParent, rSet );
}
/*-----------------------------------------------------------------------
Beschreibung:
-----------------------------------------------------------------------*/
sal_Bool __EXPORT ScRedlineOptionsTabPage::FillItemSet( SfxItemSet& /* rSet */ )
{
ScAppOptions aAppOptions=SC_MOD()->GetAppOptions();
sal_uLong nNew=0;
sal_uInt16 nPos=0;
nPos = aContentColorLB.GetSelectEntryPos();
if (nPos != LISTBOX_ENTRY_NOTFOUND)
{
nPos = aContentColorLB.GetSelectEntryPos();
if (nPos!=0)
nNew= aContentColorLB.GetEntryColor(nPos).GetColor();
else
nNew= COL_TRANSPARENT;
aAppOptions.SetTrackContentColor(nNew);
}
nPos = aMoveColorLB.GetSelectEntryPos();
if (nPos != LISTBOX_ENTRY_NOTFOUND)
{
nPos = aMoveColorLB.GetSelectEntryPos();
if (nPos!=0)
nNew= aMoveColorLB.GetEntryColor(nPos).GetColor();
else
nNew= COL_TRANSPARENT;
aAppOptions.SetTrackMoveColor(nNew);
}
nPos = aInsertColorLB.GetSelectEntryPos();
if (nPos != LISTBOX_ENTRY_NOTFOUND)
{
nPos = aInsertColorLB.GetSelectEntryPos();
if (nPos!=0)
nNew= aInsertColorLB.GetEntryColor(nPos).GetColor();
else
nNew= COL_TRANSPARENT;
aAppOptions.SetTrackInsertColor(nNew);
}
nPos = aRemoveColorLB.GetSelectEntryPos();
if (nPos != LISTBOX_ENTRY_NOTFOUND)
{
nPos = aRemoveColorLB.GetSelectEntryPos();
if (nPos!=0)
nNew= aRemoveColorLB.GetEntryColor(nPos).GetColor();
else
nNew= COL_TRANSPARENT;
aAppOptions.SetTrackDeleteColor(nNew);
}
SC_MOD()->SetAppOptions(aAppOptions);
// Repaint (wenn alles ueber Items laufen wuerde, wie es sich gehoert,
// waere das nicht noetig...)
ScDocShell* pDocSh = PTR_CAST(ScDocShell, SfxObjectShell::Current());
if (pDocSh)
pDocSh->PostPaintGridAll();
return sal_False;
}
/*-----------------------------------------------------------------------
Beschreibung:
-----------------------------------------------------------------------*/
void __EXPORT ScRedlineOptionsTabPage::Reset( const SfxItemSet& /* rSet */ )
{
XColorListSharedPtr aColorTbl = XColorList::GetStdColorList();
aContentColorLB.InsertEntry(aAuthorStr);
aMoveColorLB.InsertEntry(aAuthorStr);
aInsertColorLB.InsertEntry(aAuthorStr);
aRemoveColorLB.InsertEntry(aAuthorStr);
aContentColorLB.SetUpdateMode( sal_False);
aMoveColorLB.SetUpdateMode( sal_False);
aInsertColorLB.SetUpdateMode( sal_False);
aRemoveColorLB.SetUpdateMode( sal_False);
for( sal_uInt16 i = 0; i < aColorTbl->Count(); ++i )
{
XColorEntry* pEntry = aColorTbl->GetColor( i );
Color aColor = pEntry->GetColor();
String sName = pEntry->GetName();
aContentColorLB.InsertEntry( aColor, sName );
aMoveColorLB.InsertEntry( aColor, sName );
aInsertColorLB.InsertEntry( aColor, sName );
aRemoveColorLB.InsertEntry( aColor, sName );
}
aContentColorLB.SetUpdateMode( sal_True );
aMoveColorLB.SetUpdateMode( sal_True );
aInsertColorLB.SetUpdateMode( sal_True );
aRemoveColorLB.SetUpdateMode( sal_True );
ScAppOptions aAppOptions=SC_MOD()->GetAppOptions();
sal_uLong nColor = aAppOptions.GetTrackContentColor();
if (nColor == COL_TRANSPARENT)
aContentColorLB.SelectEntryPos(0);
else
aContentColorLB.SelectEntry(Color(nColor));
nColor = aAppOptions.GetTrackMoveColor();
if (nColor == COL_TRANSPARENT)
aMoveColorLB.SelectEntryPos(0);
else
aMoveColorLB.SelectEntry(Color(nColor));
nColor = aAppOptions.GetTrackInsertColor();
if (nColor == COL_TRANSPARENT)
aInsertColorLB.SelectEntryPos(0);
else
aInsertColorLB.SelectEntry(Color(nColor));
nColor = aAppOptions.GetTrackDeleteColor();
if (nColor == COL_TRANSPARENT)
aRemoveColorLB.SelectEntryPos(0);
else
aRemoveColorLB.SelectEntry(Color(nColor));
}
IMPL_LINK( ScRedlineOptionsTabPage, ColorHdl, ColorListBox *, EMPTYARG )
{
/*
SvxFontPrevWindow *pPrev;
ListBox *pLB;
if (pColorLB == &aInsertColorLB)
{
pPrev = &aInsertPreviewWN;
pLB = &aInsertLB;
}
else
{
pPrev = &aDeletedPreviewWN;
pLB = &aDeletedLB;
}
SvxFont& rFont = pPrev->GetFont();
sal_uInt16 nPos = pLB->GetSelectEntryPos();
if (nPos == LISTBOX_ENTRY_NOTFOUND)
nPos = 0;
CharAttr *pAttr = (CharAttr *)pLB->GetEntryData(nPos);
if (pAttr->nItemId == SID_ATTR_BRUSH)
{
rFont.SetColor(Color(COL_BLACK));
nPos = pColorLB->GetSelectEntryPos();
if (nPos && nPos != LISTBOX_ENTRY_NOTFOUND)
{
Brush aBrush(Color(pColorLB->GetSelectEntryColor()));
pPrev->SetBrush(aBrush);
}
else
{
Brush aBrush(Color(COL_LIGHTGRAY));
pPrev->SetBrush(aBrush);
}
}
else
{
nPos = pColorLB->GetSelectEntryPos();
if (nPos && nPos != LISTBOX_ENTRY_NOTFOUND)
rFont.SetColor(pColorLB->GetEntryColor(nPos));
else
rFont.SetColor(Color(COL_RED));
}
pPrev->Invalidate();
*/
return 0;
}