| /************************************************************** |
| * |
| * 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_sd.hxx" |
| #include <com/sun/star/presentation/FadeEffect.hpp> |
| |
| #include <svx/dialogs.hrc> |
| |
| #include "sdattr.hxx" |
| #include "strings.hrc" |
| |
| #define _SD_DIACTRL_CXX |
| #include "diactrl.hxx" |
| |
| #include "sdresid.hxx" |
| #include "app.hrc" |
| #include "res_bmp.hrc" |
| #include <sfx2/dispatch.hxx> |
| #include <sfx2/viewfrm.hxx> |
| #include <sfx2/app.hxx> |
| |
| using namespace ::com::sun::star; |
| |
| SFX_IMPL_TOOLBOX_CONTROL( SdTbxCtlDiaPages, SfxUInt16Item ) |
| |
| |
| //======================================================================== |
| // SdPagesField |
| //======================================================================== |
| |
| SdPagesField::SdPagesField( Window* pParent, |
| const uno::Reference< frame::XFrame >& rFrame, |
| WinBits nBits ) : |
| SvxMetricField ( pParent, rFrame, nBits ), |
| m_xFrame ( rFrame ) |
| { |
| String aStr( SdResId( STR_SLIDE_PLURAL ) ); |
| SetCustomUnitText( aStr ); |
| |
| // Groesse setzen |
| aStr.AppendAscii( RTL_CONSTASCII_STRINGPARAM( "XXX" ) ); |
| Size aSize( GetTextWidth( aStr )+20, GetTextHeight()+6 ); |
| |
| |
| SetSizePixel( aSize ); |
| |
| // Parameter des MetricFields setzen |
| SetUnit( FUNIT_CUSTOM ); |
| SetMin( 1 ); |
| SetFirst( 1 ); |
| SetMax( 15 ); |
| SetLast( 15 ); |
| SetSpinSize( 1 ); |
| SetDecimalDigits( 0 ); |
| Show(); |
| } |
| |
| // ----------------------------------------------------------------------- |
| |
| SdPagesField::~SdPagesField() |
| { |
| } |
| |
| // ----------------------------------------------------------------------- |
| |
| void SdPagesField::UpdatePagesField( const SfxUInt16Item* pItem ) |
| { |
| if( pItem ) |
| { |
| long nValue = (long) pItem->GetValue(); |
| SetValue( nValue ); |
| if( nValue == 1 ) |
| SetCustomUnitText( String( SdResId( STR_SLIDE_SINGULAR ) ) ); |
| else |
| SetCustomUnitText( String( SdResId( STR_SLIDE_PLURAL ) ) ); |
| } |
| else |
| SetText( String() ); |
| } |
| |
| // ----------------------------------------------------------------------- |
| |
| void SdPagesField::Modify() |
| { |
| SfxUInt16Item aItem( SID_PAGES_PER_ROW, (sal_uInt16) GetValue() ); |
| |
| ::uno::Any a; |
| ::uno::Sequence< ::beans::PropertyValue > aArgs( 1 ); |
| aArgs[0].Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PagesPerRow" )); |
| aItem.QueryValue( a ); |
| aArgs[0].Value = a; |
| SfxToolBoxControl::Dispatch( ::uno::Reference< ::frame::XDispatchProvider >( m_xFrame->getController(), ::uno::UNO_QUERY ), |
| rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ".uno:PagesPerRow" )), |
| aArgs ); |
| /* |
| rBindings.GetDispatcher()->Execute( |
| SID_PAGES_PER_ROW, SFX_CALLMODE_SLOT | SFX_CALLMODE_RECORD, &aItem, 0L, 0L ); |
| */ |
| } |
| |
| /************************************************************************* |
| |* |
| |* SdTbxCtlDiaPages |
| |* |
| \************************************************************************/ |
| |
| SdTbxCtlDiaPages::SdTbxCtlDiaPages( sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx ) : |
| SfxToolBoxControl( nSlotId, nId, rTbx ) |
| { |
| } |
| |
| //======================================================================== |
| |
| SdTbxCtlDiaPages::~SdTbxCtlDiaPages() |
| { |
| } |
| |
| //======================================================================== |
| |
| void SdTbxCtlDiaPages::StateChanged( sal_uInt16, |
| SfxItemState eState, const SfxPoolItem* pState ) |
| { |
| SdPagesField* pFld = (SdPagesField*) GetToolBox().GetItemWindow( GetId() ); |
| DBG_ASSERT( pFld, "Window not found" ); |
| |
| if ( eState == SFX_ITEM_DISABLED ) |
| { |
| pFld->Disable(); |
| pFld->SetText( String() ); |
| } |
| else |
| { |
| pFld->Enable(); |
| |
| const SfxUInt16Item* pItem = 0; |
| if ( eState == SFX_ITEM_AVAILABLE ) |
| { |
| pItem = dynamic_cast< const SfxUInt16Item* >( pState ); |
| DBG_ASSERT( pItem, "sd::SdTbxCtlDiaPages::StateChanged(), wrong item type!" ); |
| } |
| |
| pFld->UpdatePagesField( pItem ); |
| } |
| } |
| |
| //======================================================================== |
| |
| Window* SdTbxCtlDiaPages::CreateItemWindow( Window* pParent ) |
| { |
| return new SdPagesField( pParent, m_xFrame ); |
| } |
| |
| |
| |