blob: 5a7aa3a0f42bef6064188fe082c2c59561b3c5ae [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.
*
*************************************************************/
#ifndef _SFXCTRLITEM_HXX
#define _SFXCTRLITEM_HXX
#include "sal/config.h"
#include "sfx2/dllapi.h"
#include "sal/types.h"
#include <svl/poolitem.hxx>
class SfxPoolItem;
class SfxBindings;
class SvStream;
class SFX2_DLLPUBLIC SfxControllerItem
{
private:
sal_uInt16 nId;
SfxControllerItem* pNext; // zu benachrichtigendes weiteres ControllerItem
SfxBindings* pBindings;
protected:
//#if defined( DBG_UTIL ) && defined( _SOLAR__PRIVATE )
#if defined( DBG_UTIL )
SAL_DLLPRIVATE void CheckConfigure_Impl( sal_uIntPtr nType );
#endif
public:
SfxBindings & GetBindings() {
DBG_ASSERT(pBindings, "keine Bindings");
return *pBindings;
}
const SfxBindings & GetBindings() const {
DBG_ASSERT(pBindings, "keine Bindings");
return *pBindings;
}
SfxControllerItem(); // fuer arrays
SfxControllerItem( sal_uInt16 nId, SfxBindings & );
virtual ~SfxControllerItem();
void Bind( sal_uInt16 nNewId, SfxBindings * = 0); // in SfxBindings registrieren
void UnBind();
void ReBind();
sal_Bool IsBound() const;
void UpdateSlot();
void ClearCache();
void SetBindings(SfxBindings &rBindings) { pBindings = &rBindings; }
SfxControllerItem* GetItemLink();
SfxControllerItem* ChangeItemLink( SfxControllerItem* pNewLink );
void SetId( sal_uInt16 nItemId );
sal_uInt16 GetId() const { return nId; }
virtual void StateChanged( sal_uInt16 nSID, SfxItemState eState,
const SfxPoolItem* pState );
virtual void DeleteFloatingWindow();
SfxMapUnit GetCoreMetric() const;
static SfxItemState GetItemState( const SfxPoolItem* pState );
//#if 0 // _SOLAR__PRIVATE
SAL_DLLPRIVATE sal_Bool IsBindable_Impl() const
{ return pBindings != NULL; }
SAL_DLLPRIVATE void BindInternal_Impl( sal_uInt16 nNewId, SfxBindings* );
//#endif
};
//====================================================================
class SFX2_DLLPUBLIC SfxStatusForwarder: public SfxControllerItem
{
SfxControllerItem* pMaster;
protected:
virtual void StateChanged( sal_uInt16 nSID, SfxItemState eState,
const SfxPoolItem* pState );
public:
SfxStatusForwarder( sal_uInt16 nSlotId,
SfxControllerItem&rMaster );
};
#endif