summaryrefslogtreecommitdiff
path: root/sfx2/source/toolbox
diff options
context:
space:
mode:
authorAriel Constenla-Haile <arielch@apache.org>2013-05-25 22:11:58 +0000
committerCaolán McNamara <caolanm@redhat.com>2013-06-24 11:25:34 +0100
commita1748501d81425d26d09509eec2fd141f2f28f05 (patch)
treeef1f7e42eb8d8afd660741229d6d628c7127667a /sfx2/source/toolbox
parenta089ed2bf90fdb293c8502e4ab47cbbe027234f8 (diff)
Kill SfxAppToolBoxControl_Impl
(cherry picked from commit 273121f8d7e277e35c8e5a8aad46ef0c103ebc03) Conflicts: sfx2/inc/sfx2/mnuitem.hxx sfx2/inc/sfx2/tbxctrl.hxx sfx2/source/appl/appreg.cxx sfx2/source/menu/mnuitem.cxx sfx2/source/toolbox/tbxitem.cxx Change-Id: I6d0750d89ad009f82c5552d971537b78e45426f2 Silence warning C4706 (cherry picked from commit 0b373b3e4c45d09c40a8949e9366adb9b991de4b) Change-Id: Id497469eba8288565145c47c84b7938a1316c21a
Diffstat (limited to 'sfx2/source/toolbox')
-rw-r--r--sfx2/source/toolbox/tbxitem.cxx357
1 files changed, 0 insertions, 357 deletions
diff --git a/sfx2/source/toolbox/tbxitem.cxx b/sfx2/source/toolbox/tbxitem.cxx
index b8913eb5e597..e5b188b3c592 100644
--- a/sfx2/source/toolbox/tbxitem.cxx
+++ b/sfx2/source/toolbox/tbxitem.cxx
@@ -108,7 +108,6 @@ using namespace ::com::sun::star::ui;
//====================================================================
SFX_IMPL_TOOLBOX_CONTROL_ARG(SfxToolBoxControl, SfxStringItem, sal_True);
-SFX_IMPL_TOOLBOX_CONTROL(SfxAppToolBoxControl_Impl, SfxStringItem);
SFX_IMPL_TOOLBOX_CONTROL(SfxRecentFilesToolBoxControl, SfxStringItem);
static Window* GetTopMostParentSystemWindow( Window* pWindow )
@@ -1392,362 +1391,6 @@ void SfxPopupWindow::Delete()
//--------------------------------------------------------------------
-SfxAppToolBoxControl_Impl::SfxAppToolBoxControl_Impl( sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rBox )
- : SfxToolBoxControl( nSlotId, nId, rBox )
- , pMenu( 0 )
-{
- rBox.SetHelpId( nId, HID_TBXCONTROL_FILENEW );
- rBox.SetItemBits( nId, rBox.GetItemBits( nId ) | TIB_DROPDOWN);
-
- // Determine the current background color of the menus
- const StyleSettings& rSettings = Application::GetSettings().GetStyleSettings();
- m_nSymbolsStyle = rSettings.GetSymbolsStyle();
- m_bShowMenuImages = rSettings.GetUseImagesInMenus();
-
- SetImage( String() );
-}
-
-SfxAppToolBoxControl_Impl::~SfxAppToolBoxControl_Impl()
-{
- delete pMenu;
-}
-
-//_____________________________________________________
-/*
- it return the existing state of the given URL in the popupmenu of this toolbox control.
-
- If the given URL can be located as an action command of one menu item of the
- popup menu of this control, we return sal_True. Otherwhise we return sal_False.
- Further we return a fallback URL, in case we have to return sal_False. Because
- the outside code must select a valid item of the popup menu everytime ...
- and we define it here. By the way this m ethod was written to handle
- error situations gracefully. E.g. it can be called during creation time
- but then we have no valid menu. For this case we know another fallback URL.
- Then we return the private:factory/ URL of the default factory.
-
- @param *pMenu
- pounts to the popup menu, on which item we try to locate the given URL
- Can be NULL! Search will be supressed then.
-
- @param sURL
- the URL for searching
-
- @param pFallback
- contains the fallback URL in case we return FALSE
- Must point to valid memory!
-
- @param pImage
- contains the image of the menu for the URL.
-
- @return sal_True - if URL could be located as an item of the popup menu.
- sal_False - otherwise.
-*/
-sal_Bool Impl_ExistURLInMenu( const PopupMenu *pMenu ,
- String &sURL ,
- String *pFallback ,
- Image *pImage )
-{
- sal_Bool bValidFallback = sal_False;
- if (pMenu && sURL.Len())
- {
- sal_uInt16 c = pMenu->GetItemCount();
- for (sal_uInt16 p=0; p<c; ++p)
- {
- sal_uInt16 nId = pMenu->GetItemId(p);
- String aCmd( pMenu->GetItemCommand(nId) );
-
- if (!bValidFallback && aCmd.Len())
- {
- *pFallback = aCmd;
- bValidFallback = sal_True;
- }
-
- if (aCmd.Search(sURL)==0)//match even if the menu command is more detailed (maybe an additional query) #i28667#
- {
- sURL = aCmd;
- *pImage = pMenu->GetItemImage( nId );
- return sal_True;
- }
- }
- }
-
- if (!bValidFallback)
- {
- *pFallback = "private:factory/" + SvtModuleOptions().GetDefaultModuleName();
- }
-
- return sal_False;
-}
-
-long Select_Impl( void* pHdl, void* pVoid );
-
-SfxPopupWindow* SfxAppToolBoxControl_Impl::CreatePopupWindow()
-{
- ToolBox& rBox = GetToolBox();
- ::Rectangle aRect( rBox.GetItemRect( GetId() ) );
-
- if ( !pMenu )
- {
- ::framework::MenuConfiguration aConf( m_xContext );
- if ( m_aCommandURL == ".uno:AddDirect" )
- pMenu = aConf.CreateBookmarkMenu( m_xFrame, BOOKMARK_NEWMENU );
- else
- pMenu = aConf.CreateBookmarkMenu( m_xFrame, BOOKMARK_WIZARDMENU );
- }
-
- if ( pMenu )
- {
- pMenu->SetSelectHdl( Link( NULL, Select_Impl ) );
- pMenu->SetActivateHdl( LINK( this, SfxAppToolBoxControl_Impl, Activate ));
- rBox.SetItemDown( GetId(), sal_True );
- sal_uInt16 nSelected = pMenu->Execute( &rBox, aRect, POPUPMENU_EXECUTE_DOWN );
- if ( nSelected )
- {
- aLastURL = pMenu->GetItemCommand( nSelected );
- SetImage( pMenu->GetItemCommand( nSelected ) );
- }
-
- rBox.SetItemDown( GetId(), sal_False );
- }
-
- return 0;
-}
-
-void SfxAppToolBoxControl_Impl::SetImage( const String &rURL )
-{
- /* We accept URL's here only, which exist as items of our internal popup menu.
- All other ones will be ignored and a fallback is used ... */
- String aURL = rURL;
- String sFallback;
- Image aMenuImage;
- sal_Bool bValid = Impl_ExistURLInMenu(pMenu,aURL,&sFallback,&aMenuImage);
- if (!bValid)
- aURL = sFallback;
-
- sal_Bool bBig = SvtMiscOptions().AreCurrentSymbolsLarge();
- Image aImage = SvFileInformationManager::GetImageNoDefault( INetURLObject( aURL ), bBig );
- if ( !aImage )
- aImage = !!aMenuImage ? aMenuImage :
- SvFileInformationManager::GetImage( INetURLObject( aURL ), bBig );
- Size aBigSize( GetToolBox().GetDefaultImageSize() );
- if ( bBig && aImage.GetSizePixel() != aBigSize )
- {
- BitmapEx aScaleBmpEx( aImage.GetBitmapEx() );
- aScaleBmpEx.Scale( aBigSize, BMP_SCALE_BESTQUALITY );
- GetToolBox().SetItemImage( GetId(), Image( aScaleBmpEx ) );
- }
- else
- GetToolBox().SetItemImage( GetId(), aImage );
- aLastURL = aURL;
-}
-
-void SfxAppToolBoxControl_Impl::StateChanged
-(
- sal_uInt16 nSlotId,
- SfxItemState eState,
- const SfxPoolItem* pState
-)
-{
- if ( pState && pState->ISA(SfxStringItem) )
- {
- // Important step for following SetImage() call!
- // It needs the valid pMenu item to fullfill it's specification
- // to check for supported URLs ...
- if ( !pMenu )
- {
- ::framework::MenuConfiguration aConf( m_xContext );
- // This toolbox controller is used for two popup menus (new documents and wizards!). Create the correct
- // popup menu according to the slot ID our controller has been initialized with.
- if ( nSlotId == SID_NEWDOCDIRECT )
- pMenu = aConf.CreateBookmarkMenu( m_xFrame, BOOKMARK_NEWMENU );
- else
- pMenu = aConf.CreateBookmarkMenu( m_xFrame, BOOKMARK_WIZARDMENU );
- }
-
- GetToolBox().EnableItem( GetId(), eState != SFX_ITEM_DISABLED );
- SetImage(((const SfxStringItem*)pState)->GetValue());
- }
- else
- SfxToolBoxControl::StateChanged( nSlotId, eState, pState );
-}
-
-//--------------------------------------------------------------------
-
-void SfxAppToolBoxControl_Impl::Select( sal_Bool bMod1 )
-{
- if( aLastURL.Len() )
- {
- URL aTargetURL;
- Reference< XDispatch > xDispatch;
- Reference< XDispatchProvider > xDispatchProvider( getFrameInterface(), UNO_QUERY );
-
- if ( xDispatchProvider.is() )
- {
- aTargetURL.Complete = aLastURL;
- getURLTransformer()->parseStrict( aTargetURL );
-
- OUString aTarget( OUString("_default"));
- if ( pMenu )
- {
- ::framework::MenuConfiguration::Attributes* pMenuAttributes =
- (::framework::MenuConfiguration::Attributes*)pMenu->GetUserValue( pMenu->GetCurItemId() );
-
- if ( pMenuAttributes )
- aTarget = pMenuAttributes->aTargetFrame;
- }
-
- xDispatch = xDispatchProvider->queryDispatch( aTargetURL, aTarget, 0 );
-
- if ( xDispatch.is() )
- {
- Sequence< PropertyValue > aArgs( 1 );
-
- aArgs[0].Name = OUString("Referer");
- aArgs[0].Value = makeAny( OUString(SFX_REFERER_USER ) );
-
- ExecuteInfo* pExecuteInfo = new ExecuteInfo;
- pExecuteInfo->xDispatch = xDispatch;
- pExecuteInfo->aTargetURL = aTargetURL;
- pExecuteInfo->aArgs = aArgs;
- Application::PostUserEvent( STATIC_LINK(0, SfxAppToolBoxControl_Impl, ExecuteHdl_Impl), pExecuteInfo );
- }
- }
- }
- else
- SfxToolBoxControl::Select( bMod1 );
-}
-
-//--------------------------------------------------------------------
-long Select_Impl( void* /*pHdl*/, void* pVoid )
-{
- Menu* pMenu = (Menu*)pVoid;
- String aURL( pMenu->GetItemCommand( pMenu->GetCurItemId() ) );
-
- if( !aURL.Len() )
- return 0;
-
- Reference < ::com::sun::star::frame::XDesktop2 > xDesktop =
- ::com::sun::star::frame::Desktop::create( ::comphelper::getProcessComponentContext() );
-
- URL aTargetURL;
- aTargetURL.Complete = aURL;
- Reference < XURLTransformer > xTrans( URLTransformer::create( ::comphelper::getProcessComponentContext() ) );
- xTrans->parseStrict( aTargetURL );
-
- Reference < XDispatch > xDisp;
- if ( aTargetURL.Protocol.compareToAscii("slot:") == COMPARE_EQUAL )
- xDisp = xDesktop->queryDispatch( aTargetURL, OUString(), 0 );
- else
- {
- OUString aTargetFrame( OUString("_blank") );
- ::framework::MenuConfiguration::Attributes* pMenuAttributes =
- (::framework::MenuConfiguration::Attributes*)pMenu->GetUserValue( pMenu->GetCurItemId() );
-
- if ( pMenuAttributes )
- aTargetFrame = pMenuAttributes->aTargetFrame;
-
- xDisp = xDesktop->queryDispatch( aTargetURL, aTargetFrame , 0 );
- }
-
- if ( xDisp.is() )
- {
- SfxAppToolBoxControl_Impl::ExecuteInfo* pExecuteInfo = new SfxAppToolBoxControl_Impl::ExecuteInfo;
- pExecuteInfo->xDispatch = xDisp;
- pExecuteInfo->aTargetURL = aTargetURL;
- pExecuteInfo->aArgs = Sequence< PropertyValue >();
- Application::PostUserEvent( STATIC_LINK( 0, SfxAppToolBoxControl_Impl, ExecuteHdl_Impl), pExecuteInfo );
- }
-
- return sal_True;
-}
-
-IMPL_LINK( SfxAppToolBoxControl_Impl, Activate, Menu *, pActMenu )
-{
- if ( pActMenu )
- {
- const StyleSettings& rSettings = Application::GetSettings().GetStyleSettings();
- sal_uIntPtr nSymbolsStyle = rSettings.GetSymbolsStyle();
- sal_Bool bShowMenuImages = rSettings.GetUseImagesInMenus();
-
- if (( nSymbolsStyle != m_nSymbolsStyle ) ||
- ( bShowMenuImages != m_bShowMenuImages ))
- {
- m_nSymbolsStyle = nSymbolsStyle;
- m_bShowMenuImages = bShowMenuImages;
-
- sal_uInt16 nCount = pActMenu->GetItemCount();
- for ( sal_uInt16 nSVPos = 0; nSVPos < nCount; nSVPos++ )
- {
- sal_uInt16 nId = pActMenu->GetItemId( nSVPos );
- if ( pActMenu->GetItemType( nSVPos ) != MENUITEM_SEPARATOR )
- {
- if ( bShowMenuImages )
- {
- sal_Bool bImageSet = sal_False;
- OUString aImageId;
- ::framework::MenuConfiguration::Attributes* pMenuAttributes =
- (::framework::MenuConfiguration::Attributes*)pMenu->GetUserValue( nId );
-
- if ( pMenuAttributes )
- aImageId = pMenuAttributes->aImageId; // Retrieve image id from menu attributes
-
- if ( !aImageId.isEmpty() )
- {
- Reference< ::com::sun::star::frame::XFrame > xFrame;
- Image aImage = GetImage( xFrame, aImageId, false );
- if ( !!aImage )
- {
- bImageSet = sal_True;
- pActMenu->SetItemImage( nId, aImage );
- }
- }
-
- String aCmd( pActMenu->GetItemCommand( nId ) );
- if ( !bImageSet && aCmd.Len() )
- {
- Image aImage = SvFileInformationManager::GetImage(
- INetURLObject(aCmd), false );
- if ( !!aImage )
- pActMenu->SetItemImage( nId, aImage );
- }
- }
- else
- pActMenu->SetItemImage( nId, Image() );
- }
- }
- }
-
- return sal_True;
- }
-
- return sal_False;
-}
-
-//--------------------------------------------------------------------
-
-IMPL_STATIC_LINK_NOINSTANCE( SfxAppToolBoxControl_Impl, ExecuteHdl_Impl, ExecuteInfo*, pExecuteInfo )
-{
-/* i62706: Don't catch all exceptions. We hide all problems here and are not able
- to handle them on higher levels.
- try
- {
-*/
- // Asynchronous execution as this can lead to our own destruction!
- // Framework can recycle our current frame and the layout manager disposes all user interface
- // elements if a component gets detached from its frame!
- pExecuteInfo->xDispatch->dispatch( pExecuteInfo->aTargetURL, pExecuteInfo->aArgs );
- delete pExecuteInfo;
- return 0;
-}
-
-//--------------------------------------------------------------------
-
-void SfxAppToolBoxControl_Impl::Click( )
-{
-}
-
-//--------------------------------------------------------------------
-
SfxRecentFilesToolBoxControl::SfxRecentFilesToolBoxControl( sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rBox )
: SfxToolBoxControl( nSlotId, nId, rBox )
{