Kaydet (Commit) 273121f8 authored tarafından Ariel Constenla-Haile's avatar Ariel Constenla-Haile

Kill SfxAppToolBoxControl_Impl

üst c1954d6e
...@@ -37,6 +37,9 @@ struct SfxMenuCtrlFactory; ...@@ -37,6 +37,9 @@ struct SfxMenuCtrlFactory;
#include <tools/string.hxx> #include <tools/string.hxx>
#include <sfx2/ctrlitem.hxx> #include <sfx2/ctrlitem.hxx>
#include <com/sun/star/frame/XDispatch.hpp>
#include <com/sun/star/util/URL.hpp>
class SFX2_DLLPUBLIC SfxMenuControl: public SfxControllerItem class SFX2_DLLPUBLIC SfxMenuControl: public SfxControllerItem
{ {
//friend SvStream& operator<<( SvStream& rStream, const SfxMenuControl& rItem ); //friend SvStream& operator<<( SvStream& rStream, const SfxMenuControl& rItem );
...@@ -165,6 +168,15 @@ public: ...@@ -165,6 +168,15 @@ public:
SFX_DECL_MENU_CONTROL(); SFX_DECL_MENU_CONTROL();
SfxAppMenuControl_Impl( sal_uInt16 nPos, Menu& rMenu, SfxBindings& rBindings ); SfxAppMenuControl_Impl( sal_uInt16 nPos, Menu& rMenu, SfxBindings& rBindings );
~SfxAppMenuControl_Impl(); ~SfxAppMenuControl_Impl();
struct ExecuteInfo
{
::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatch > xDispatch;
::com::sun::star::util::URL aTargetURL;
::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > aArgs;
};
DECL_STATIC_LINK( SfxAppMenuControl_Impl, ExecuteHdl_Impl, ExecuteInfo* );
}; };
//#endif //#endif
......
...@@ -346,46 +346,6 @@ public: ...@@ -346,46 +346,6 @@ public:
//------------------------------------------------------------------------ //------------------------------------------------------------------------
class SfxAppToolBoxControl_Impl : public SfxToolBoxControl
/* [Beschreibung]
Interne Hilfsklasse f"ur um das Popup-Menu <AppMenu_Impl> unter Neu
im SDT zu starten.
*/
{
public:
SFX_DECL_TOOLBOX_CONTROL();
SfxAppToolBoxControl_Impl( sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rBox );
~SfxAppToolBoxControl_Impl();
void SetImage( const String& rFacName );
struct ExecuteInfo
{
::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatch > xDispatch;
::com::sun::star::util::URL aTargetURL;
::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > aArgs;
};
DECL_STATIC_LINK( SfxAppToolBoxControl_Impl, ExecuteHdl_Impl, ExecuteInfo* );
protected:
virtual void Click();
using SfxToolBoxControl::Select;
virtual void Select( sal_Bool );
virtual void StateChanged( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState );
virtual SfxPopupWindow* CreatePopupWindow();
DECL_LINK( Activate, Menu * ); // Needed to support high contrast images
private:
String aLastURL;
sal_Bool bBigImages;
PopupMenu* pMenu;
sal_uIntPtr m_nSymbolsStyle;
sal_Bool m_bWasHiContrastMode;
sal_Bool m_bShowMenuImages;
};
class SfxHistoryToolBoxControl_Impl : public SfxToolBoxControl class SfxHistoryToolBoxControl_Impl : public SfxToolBoxControl
{ {
Timer aTimer; Timer aTimer;
......
...@@ -69,8 +69,6 @@ void SfxApplication::Registrations_Impl() ...@@ -69,8 +69,6 @@ void SfxApplication::Registrations_Impl()
// Controller // Controller
SfxToolBoxControl::RegisterControl(SID_REPEAT); SfxToolBoxControl::RegisterControl(SID_REPEAT);
SfxURLToolBoxControl_Impl::RegisterControl(SID_OPENURL); SfxURLToolBoxControl_Impl::RegisterControl(SID_OPENURL);
SfxAppToolBoxControl_Impl::RegisterControl( SID_NEWDOCDIRECT );
SfxAppToolBoxControl_Impl::RegisterControl( SID_AUTOPILOTMENU );
}; };
//-------------------------------------------------------------------- //--------------------------------------------------------------------
......
...@@ -574,3 +574,62 @@ void SfxUnoMenuControl::Select() ...@@ -574,3 +574,62 @@ void SfxUnoMenuControl::Select()
{ {
pUnoCtrl->Execute(); pUnoCtrl->Execute();
} }
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::XFramesSupplier > xDesktop =
Reference < ::com::sun::star::frame::XFramesSupplier >( ::comphelper::getProcessServiceFactory()->createInstance(
DEFINE_CONST_UNICODE("com.sun.star.frame.Desktop") ), UNO_QUERY );
Reference < ::com::sun::star::frame::XFrame > xFrame( xDesktop, UNO_QUERY );
URL aTargetURL;
aTargetURL.Complete = aURL;
Reference < XURLTransformer > xTrans( ::comphelper::getProcessServiceFactory()->createInstance(
rtl::OUString::createFromAscii("com.sun.star.util.URLTransformer" )),
UNO_QUERY );
xTrans->parseStrict( aTargetURL );
Reference < XDispatchProvider > xProv( xFrame, UNO_QUERY );
Reference < XDispatch > xDisp;
if ( xProv.is() )
{
if ( aTargetURL.Protocol.compareToAscii("slot:") == COMPARE_EQUAL )
xDisp = xProv->queryDispatch( aTargetURL, ::rtl::OUString(), 0 );
else
{
::rtl::OUString aTargetFrame( ::rtl::OUString::createFromAscii( "_blank" ) );
::framework::MenuConfiguration::Attributes* pMenuAttributes =
(::framework::MenuConfiguration::Attributes*)pMenu->GetUserValue( pMenu->GetCurItemId() );
if ( pMenuAttributes )
aTargetFrame = pMenuAttributes->aTargetFrame;
xDisp = xProv->queryDispatch( aTargetURL, aTargetFrame , 0 );
}
}
if ( xDisp.is() )
{
SfxAppMenuControl_Impl::ExecuteInfo* pExecuteInfo = new SfxAppMenuControl_Impl::ExecuteInfo;
pExecuteInfo->xDispatch = xDisp;
pExecuteInfo->aTargetURL = aTargetURL;
pExecuteInfo->aArgs = Sequence< PropertyValue >();
Application::PostUserEvent( STATIC_LINK( 0, SfxAppMenuControl_Impl, ExecuteHdl_Impl), pExecuteInfo );
}
return sal_True;
}
IMPL_STATIC_LINK_NOINSTANCE( SfxAppMenuControl_Impl, ExecuteHdl_Impl, ExecuteInfo*, pExecuteInfo )
{
pExecuteInfo->xDispatch->dispatch( pExecuteInfo->aTargetURL, pExecuteInfo->aArgs );
delete pExecuteInfo;
return 0;
}
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment