1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski #ifndef FORMS_SOURCE_RICHTEXT_RTATTRIBUTES_HXX 25*b1cdbd2cSJim Jagielski #define FORMS_SOURCE_RICHTEXT_RTATTRIBUTES_HXX 26*b1cdbd2cSJim Jagielski 27*b1cdbd2cSJim Jagielski #include <tools/solar.h> 28*b1cdbd2cSJim Jagielski #include <sal/types.h> 29*b1cdbd2cSJim Jagielski #include <svl/poolitem.hxx> 30*b1cdbd2cSJim Jagielski 31*b1cdbd2cSJim Jagielski //........................................................................ 32*b1cdbd2cSJim Jagielski namespace frm 33*b1cdbd2cSJim Jagielski { 34*b1cdbd2cSJim Jagielski //........................................................................ 35*b1cdbd2cSJim Jagielski 36*b1cdbd2cSJim Jagielski //==================================================================== 37*b1cdbd2cSJim Jagielski //= misc 38*b1cdbd2cSJim Jagielski //==================================================================== 39*b1cdbd2cSJim Jagielski /// the id of an attribute 40*b1cdbd2cSJim Jagielski typedef sal_Int32 AttributeId; 41*b1cdbd2cSJim Jagielski /// the "which id" of an item in an SfxItemSet 42*b1cdbd2cSJim Jagielski typedef sal_uInt16 WhichId; 43*b1cdbd2cSJim Jagielski /// a SFX slot id 44*b1cdbd2cSJim Jagielski typedef sal_uInt16 SfxSlotId; 45*b1cdbd2cSJim Jagielski /// a script type 46*b1cdbd2cSJim Jagielski typedef sal_uInt16 ScriptType; 47*b1cdbd2cSJim Jagielski 48*b1cdbd2cSJim Jagielski //==================================================================== 49*b1cdbd2cSJim Jagielski //= AttributeCheckState 50*b1cdbd2cSJim Jagielski //==================================================================== 51*b1cdbd2cSJim Jagielski enum AttributeCheckState 52*b1cdbd2cSJim Jagielski { 53*b1cdbd2cSJim Jagielski eChecked, 54*b1cdbd2cSJim Jagielski eUnchecked, 55*b1cdbd2cSJim Jagielski eIndetermined 56*b1cdbd2cSJim Jagielski }; 57*b1cdbd2cSJim Jagielski 58*b1cdbd2cSJim Jagielski //==================================================================== 59*b1cdbd2cSJim Jagielski //= AttributeState 60*b1cdbd2cSJim Jagielski //==================================================================== 61*b1cdbd2cSJim Jagielski struct AttributeState 62*b1cdbd2cSJim Jagielski { 63*b1cdbd2cSJim Jagielski private: 64*b1cdbd2cSJim Jagielski SfxItemHandle* pItemHandle; 65*b1cdbd2cSJim Jagielski 66*b1cdbd2cSJim Jagielski public: 67*b1cdbd2cSJim Jagielski AttributeCheckState eSimpleState; 68*b1cdbd2cSJim Jagielski 69*b1cdbd2cSJim Jagielski //................................................................ 70*b1cdbd2cSJim Jagielski inline AttributeState( ); 71*b1cdbd2cSJim Jagielski inline explicit AttributeState( AttributeCheckState _eCheckState ); 72*b1cdbd2cSJim Jagielski inline AttributeState( const AttributeState& _rSource ); 73*b1cdbd2cSJim Jagielski 74*b1cdbd2cSJim Jagielski inline AttributeState& operator=( const AttributeState& _rSource ); 75*b1cdbd2cSJim Jagielski 76*b1cdbd2cSJim Jagielski inline bool operator==( const AttributeState& _rRHS ); 77*b1cdbd2cSJim Jagielski 78*b1cdbd2cSJim Jagielski inline const SfxPoolItem* getItem() const; 79*b1cdbd2cSJim Jagielski inline void setItem( const SfxPoolItem* _pItem ); 80*b1cdbd2cSJim Jagielski }; 81*b1cdbd2cSJim Jagielski 82*b1cdbd2cSJim Jagielski //==================================================================== 83*b1cdbd2cSJim Jagielski //= AttributeState (inline implementation) 84*b1cdbd2cSJim Jagielski //==================================================================== 85*b1cdbd2cSJim Jagielski //................................................................ AttributeState()86*b1cdbd2cSJim Jagielski inline AttributeState::AttributeState( ) 87*b1cdbd2cSJim Jagielski :pItemHandle( NULL ) 88*b1cdbd2cSJim Jagielski ,eSimpleState( eIndetermined ) 89*b1cdbd2cSJim Jagielski { 90*b1cdbd2cSJim Jagielski } 91*b1cdbd2cSJim Jagielski 92*b1cdbd2cSJim Jagielski //................................................................ AttributeState(AttributeCheckState _eCheckState)93*b1cdbd2cSJim Jagielski inline AttributeState::AttributeState( AttributeCheckState _eCheckState ) 94*b1cdbd2cSJim Jagielski :pItemHandle( NULL ) 95*b1cdbd2cSJim Jagielski ,eSimpleState( _eCheckState ) 96*b1cdbd2cSJim Jagielski { 97*b1cdbd2cSJim Jagielski } 98*b1cdbd2cSJim Jagielski 99*b1cdbd2cSJim Jagielski //................................................................ AttributeState(const AttributeState & _rSource)100*b1cdbd2cSJim Jagielski inline AttributeState::AttributeState( const AttributeState& _rSource ) 101*b1cdbd2cSJim Jagielski :pItemHandle( NULL ) 102*b1cdbd2cSJim Jagielski ,eSimpleState( eIndetermined ) 103*b1cdbd2cSJim Jagielski { 104*b1cdbd2cSJim Jagielski operator=( _rSource ); 105*b1cdbd2cSJim Jagielski } 106*b1cdbd2cSJim Jagielski 107*b1cdbd2cSJim Jagielski //................................................................ operator =(const AttributeState & _rSource)108*b1cdbd2cSJim Jagielski inline AttributeState& AttributeState::operator=( const AttributeState& _rSource ) 109*b1cdbd2cSJim Jagielski { 110*b1cdbd2cSJim Jagielski if ( &_rSource == this ) 111*b1cdbd2cSJim Jagielski return *this; 112*b1cdbd2cSJim Jagielski 113*b1cdbd2cSJim Jagielski eSimpleState = _rSource.eSimpleState; 114*b1cdbd2cSJim Jagielski setItem( _rSource.getItem() ); 115*b1cdbd2cSJim Jagielski return *this; 116*b1cdbd2cSJim Jagielski } 117*b1cdbd2cSJim Jagielski 118*b1cdbd2cSJim Jagielski //................................................................ getItem() const119*b1cdbd2cSJim Jagielski inline const SfxPoolItem* AttributeState::getItem() const 120*b1cdbd2cSJim Jagielski { 121*b1cdbd2cSJim Jagielski return pItemHandle ? &pItemHandle->GetItem() : NULL; 122*b1cdbd2cSJim Jagielski } 123*b1cdbd2cSJim Jagielski 124*b1cdbd2cSJim Jagielski //................................................................ setItem(const SfxPoolItem * _pItem)125*b1cdbd2cSJim Jagielski inline void AttributeState::setItem( const SfxPoolItem* _pItem ) 126*b1cdbd2cSJim Jagielski { 127*b1cdbd2cSJim Jagielski if ( pItemHandle ) 128*b1cdbd2cSJim Jagielski delete pItemHandle; 129*b1cdbd2cSJim Jagielski if ( _pItem ) 130*b1cdbd2cSJim Jagielski pItemHandle = new SfxItemHandle( *const_cast< SfxPoolItem* >( _pItem ) ); 131*b1cdbd2cSJim Jagielski else 132*b1cdbd2cSJim Jagielski pItemHandle = NULL; 133*b1cdbd2cSJim Jagielski } 134*b1cdbd2cSJim Jagielski 135*b1cdbd2cSJim Jagielski //................................................................ operator ==(const AttributeState & _rRHS)136*b1cdbd2cSJim Jagielski inline bool AttributeState::operator==( const AttributeState& _rRHS ) 137*b1cdbd2cSJim Jagielski { 138*b1cdbd2cSJim Jagielski if ( eSimpleState != _rRHS.eSimpleState ) 139*b1cdbd2cSJim Jagielski return false; 140*b1cdbd2cSJim Jagielski 141*b1cdbd2cSJim Jagielski if ( pItemHandle && !_rRHS.pItemHandle ) 142*b1cdbd2cSJim Jagielski return false; 143*b1cdbd2cSJim Jagielski 144*b1cdbd2cSJim Jagielski if ( !pItemHandle && _rRHS.pItemHandle ) 145*b1cdbd2cSJim Jagielski return false; 146*b1cdbd2cSJim Jagielski 147*b1cdbd2cSJim Jagielski if ( !pItemHandle && !_rRHS.pItemHandle ) 148*b1cdbd2cSJim Jagielski return true; 149*b1cdbd2cSJim Jagielski 150*b1cdbd2cSJim Jagielski return ( pItemHandle->GetItem() == _rRHS.pItemHandle->GetItem() ); 151*b1cdbd2cSJim Jagielski } 152*b1cdbd2cSJim Jagielski 153*b1cdbd2cSJim Jagielski //==================================================================== 154*b1cdbd2cSJim Jagielski //= IMultiAttributeDispatcher 155*b1cdbd2cSJim Jagielski //==================================================================== 156*b1cdbd2cSJim Jagielski class IMultiAttributeDispatcher 157*b1cdbd2cSJim Jagielski { 158*b1cdbd2cSJim Jagielski public: 159*b1cdbd2cSJim Jagielski virtual AttributeState getState( AttributeId _nAttributeId ) const = 0; 160*b1cdbd2cSJim Jagielski virtual void executeAttribute( AttributeId _nAttributeId, const SfxPoolItem* _pArgument ) = 0; 161*b1cdbd2cSJim Jagielski }; 162*b1cdbd2cSJim Jagielski 163*b1cdbd2cSJim Jagielski //........................................................................ 164*b1cdbd2cSJim Jagielski } // namespace frm 165*b1cdbd2cSJim Jagielski //........................................................................ 166*b1cdbd2cSJim Jagielski 167*b1cdbd2cSJim Jagielski #endif // FORMS_SOURCE_RICHTEXT_RTATTRIBUTES_HXX 168*b1cdbd2cSJim Jagielski 169