1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 24 // MARKER(update_precomp.py): autogen include statement, do not remove 25 #include "precompiled_sfx2.hxx" 26 27 #ifndef GCC 28 #endif 29 30 #include <sfx2/objsh.hxx> 31 //#include "objshimp.hxx" 32 #include <sfx2/objitem.hxx> 33 #include <com/sun/star/lang/XUnoTunnel.hpp> 34 35 //==================================================================== 36 37 TYPEINIT1_AUTOFACTORY(SfxObjectShellItem,SfxPoolItem) 38 TYPEINIT1_AUTOFACTORY(SfxObjectItem,SfxPoolItem) 39 40 //========================================================================= 41 42 int SfxObjectShellItem::operator==( const SfxPoolItem &rItem ) const 43 { 44 return PTR_CAST(SfxObjectShellItem, &rItem)->pObjSh == pObjSh; 45 } 46 47 //-------------------------------------------------------------------- 48 49 String SfxObjectShellItem::GetValueText() const 50 { 51 return String(); 52 } 53 54 //-------------------------------------------------------------------- 55 56 SfxPoolItem* SfxObjectShellItem::Clone( SfxItemPool *) const 57 { 58 return new SfxObjectShellItem( Which(), pObjSh ); 59 } 60 61 //-------------------------------------------------------------------- 62 63 sal_Bool SfxObjectShellItem::QueryValue( com::sun::star::uno::Any& rVal, sal_uInt8 /*nMemberId*/ ) const 64 { 65 if ( pObjSh ) 66 { 67 // This item MUST provide a model. Please don't change this, there are UNO-based 68 // implementations which need it!! 69 rVal <<= pObjSh->GetModel(); 70 } 71 else 72 { 73 rVal <<= ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel >(); 74 } 75 return sal_True; 76 } 77 78 //-------------------------------------------------------------------- 79 80 sal_Bool SfxObjectShellItem::PutValue( const com::sun::star::uno::Any& rVal, sal_uInt8 /*nMemberId*/ ) 81 { 82 // This item MUST have a model. Please don't change this, there are UNO-based 83 // implementations which need it!! 84 ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > xModel; 85 86 if ( rVal >>= xModel ) 87 { 88 if ( xModel.is() ) 89 { 90 ::com::sun::star::uno::Reference< ::com::sun::star::lang::XUnoTunnel > xTunnel( 91 xModel, ::com::sun::star::uno::UNO_QUERY ); 92 if ( xTunnel.is() ) 93 { 94 ::com::sun::star::uno::Sequence < sal_Int8 > aSeq( (sal_Int8*) SvGlobalName( SFX_GLOBAL_CLASSID ).GetBytes(), 16 ); 95 sal_Int64 nHandle = xTunnel->getSomething( aSeq ); 96 if ( nHandle ) 97 { 98 pObjSh = reinterpret_cast< SfxObjectShell* >(sal::static_int_cast<sal_IntPtr>( nHandle )); 99 return sal_True; 100 } 101 } 102 } 103 104 pObjSh = 0; 105 return sal_True; 106 } 107 108 return sal_False; 109 } 110 111 //========================================================================= 112 113 SfxObjectItem::SfxObjectItem( sal_uInt16 nWhichId, SfxShell *pSh ) 114 : SfxPoolItem( nWhichId ), 115 _pSh( pSh ) 116 {} 117 118 //-------------------------------------------------------------------- 119 120 int SfxObjectItem::operator==( const SfxPoolItem &rItem ) const 121 { 122 SfxObjectItem *pOther = PTR_CAST(SfxObjectItem, &rItem); 123 return pOther->_pSh == _pSh; 124 } 125 126 //-------------------------------------------------------------------- 127 128 SfxPoolItem* SfxObjectItem::Clone( SfxItemPool *) const 129 { 130 return new SfxObjectItem( Which(), _pSh ); 131 } 132