Files
libreoffice/sfx2/source/dialog/tplcitem.cxx
Rüdiger Timm 7450e4d6f7 INTEGRATION: CWS ooo19126 (1.5.436); FILE MERGED
2005/09/05 15:22:59 rt 1.5.436.1: #i54170# Change license header: remove SISSL
2005-09-07 17:34:19 +00:00

194 lines
6.5 KiB
C++

/*************************************************************************
*
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: tplcitem.cxx,v $
*
* $Revision: 1.6 $
*
* last change: $Author: rt $ $Date: 2005-09-07 18:34:19 $
*
* The Contents of this file are made available subject to
* the terms of GNU Lesser General Public License Version 2.1.
*
*
* GNU Lesser General Public License Version 2.1
* =============================================
* Copyright 2005 by Sun Microsystems, Inc.
* 901 San Antonio Road, Palo Alto, CA 94303, USA
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2.1, as published by the Free Software Foundation.
*
* This library 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 for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA
*
************************************************************************/
// INCLUDE ---------------------------------------------------------------
#include <svtools/intitem.hxx>
#ifndef GCC
#pragma hdrstop
#endif
#include "templdlg.hxx"
#include "bindings.hxx"
#include "tplpitem.hxx"
#include "tplcitem.hxx"
#include "templdgi.hxx"
#include "sfx.hrc"
#include "dialog.hrc"
// STATIC DATA -----------------------------------------------------------
// Konstruktor
SfxTemplateControllerItem::SfxTemplateControllerItem(
USHORT nId, // ID
SfxCommonTemplateDialog_Impl &rDlg, // Controller-Instanz, dem dieses Item zugeordnet ist.
SfxBindings &rBindings):
SfxControllerItem(nId, rBindings),
rTemplateDlg(rDlg),
nWaterCanState(0xff),
nUserEventId(0)
{
}
// -----------------------------------------------------------------------
SfxTemplateControllerItem::~SfxTemplateControllerItem()
{
if(nUserEventId)
Application::RemoveUserEvent(nUserEventId);
}
// -----------------------------------------------------------------------
// Benachrichtigung "uber Status"anderung; wird an den
// im Konstruktor "ubergebenen Controller propagiert
void SfxTemplateControllerItem::StateChanged( USHORT nSID, SfxItemState eState,
const SfxPoolItem* pItem )
{
switch(nSID)
{
case SID_STYLE_FAMILY1:
case SID_STYLE_FAMILY2:
case SID_STYLE_FAMILY3:
case SID_STYLE_FAMILY4:
case SID_STYLE_FAMILY5:
{
FASTBOOL bAvailable = SFX_ITEM_AVAILABLE == eState;
if ( !bAvailable )
rTemplateDlg.SetFamilyState(GetId(), 0);
else {
const SfxTemplateItem *pStateItem = PTR_CAST(
SfxTemplateItem, pItem);
DBG_ASSERT(pStateItem != 0, "SfxTemplateItem erwartet");
rTemplateDlg.SetFamilyState( GetId(), pStateItem );
}
BOOL bDisable = eState == SFX_ITEM_DISABLED;
// Familie Disablen
USHORT nFamily = 0;
switch( GetId())
{
case SID_STYLE_FAMILY1:
nFamily = 1; break;
case SID_STYLE_FAMILY2:
nFamily = 2; break;
case SID_STYLE_FAMILY3:
nFamily = 3; break;
case SID_STYLE_FAMILY4:
nFamily = 4; break;
case SID_STYLE_FAMILY5:
nFamily = 5; break;
default: DBG_ERROR("unbekannte StyleFamily"); break;
}
rTemplateDlg.EnableFamilyItem( nFamily, !bDisable );
break;
}
case SID_STYLE_WATERCAN:
{
if ( eState == SFX_ITEM_DISABLED )
nWaterCanState = 0xff;
else if( eState == SFX_ITEM_AVAILABLE )
{
const SfxBoolItem *pStateItem = PTR_CAST(SfxBoolItem, pItem);
DBG_ASSERT(pStateItem != 0, "BoolItem erwartet");
nWaterCanState = pStateItem->GetValue() ? 1 : 0;
}
//not necessary if the last event is still on the way
if(!nUserEventId)
nUserEventId = Application::PostUserEvent( STATIC_LINK(
this, SfxTemplateControllerItem, SetWaterCanStateHdl_Impl ) );
break;
}
case SID_STYLE_EDIT:
rTemplateDlg.EnableEdit( SFX_ITEM_DISABLED != eState );
break;
case SID_STYLE_DELETE:
rTemplateDlg.EnableDel( SFX_ITEM_DISABLED != eState );
break;
case SID_STYLE_NEW_BY_EXAMPLE:
rTemplateDlg.EnableExample_Impl(
GetId(), SFX_ITEM_DISABLED != eState );
break;
case SID_STYLE_UPDATE_BY_EXAMPLE:
{
rTemplateDlg.EnableExample_Impl(
GetId(), eState != SFX_ITEM_DISABLED );
// Das Select Disabled dann, falls enabled und Style Readonly
/* String aStr = rTemplateDlg.GetSelectedEntry();
if( aStr.Len() ) rTemplateDlg.SelectStyle( aStr ); */
break;
}
case SID_STYLE_NEW:
{
rTemplateDlg.EnableNew( SFX_ITEM_DISABLED != eState );
break;
}
case SID_STYLE_DRAGHIERARCHIE:
{
rTemplateDlg.EnableTreeDrag( SFX_ITEM_DISABLED != eState );
break;
}
case SID_STYLE_FAMILY :
{
const SfxUInt16Item *pStateItem = PTR_CAST( SfxUInt16Item, pItem);
if (pStateItem)
rTemplateDlg.SetFamily( pStateItem->GetValue() );
break;
}
}
}
/* -----------------------------05.09.2001 10:48------------------------------
---------------------------------------------------------------------------*/
IMPL_STATIC_LINK(SfxTemplateControllerItem, SetWaterCanStateHdl_Impl,
SfxTemplateControllerItem*, EMPTYARG)
{
pThis->nUserEventId = 0;
SfxBoolItem* pState = 0;
switch(pThis->nWaterCanState)
{
case 0 :
case 1 :
pState = new SfxBoolItem(SID_STYLE_WATERCAN, pThis->nWaterCanState ? TRUE : FALSE);
break;
}
pThis->rTemplateDlg.SetWaterCanState(pState);
delete pState;
return 0;
}