summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--framework/Library_fwk.mk2
-rw-r--r--framework/inc/services.h1
-rw-r--r--framework/source/register/registerservices.cxx2
-rw-r--r--framework/source/services/backingwindow.hxx132
-rw-r--r--framework/util/fwk.component3
-rw-r--r--include/sfx2/droptargetlistener.hxx79
-rw-r--r--sfx2/Library_sfx.mk3
-rw-r--r--sfx2/inc/backingcomp.hxx (renamed from framework/inc/services/backingcomp.hxx)18
-rw-r--r--sfx2/source/appl/appuno.cxx2
-rw-r--r--sfx2/source/control/droptargetlistener.cxx222
-rw-r--r--sfx2/source/dialog/backingcomp.cxx (renamed from framework/source/services/backingcomp.cxx)51
-rw-r--r--sfx2/source/dialog/backingwindow.cxx (renamed from framework/source/services/backingwindow.cxx)3
-rw-r--r--sfx2/source/dialog/backingwindow.hxx130
-rw-r--r--sfx2/util/sfx.component3
14 files changed, 463 insertions, 188 deletions
diff --git a/framework/Library_fwk.mk b/framework/Library_fwk.mk
index 2133a9483362..007404918c4f 100644
--- a/framework/Library_fwk.mk
+++ b/framework/Library_fwk.mk
@@ -108,8 +108,6 @@ $(eval $(call gb_Library_add_exception_objects,fwk,\
framework/source/register/registerservices \
framework/source/services/ContextChangeEventMultiplexer \
framework/source/services/autorecovery \
- framework/source/services/backingcomp \
- framework/source/services/backingwindow \
framework/source/services/desktop \
framework/source/services/frame \
framework/source/services/modulemanager \
diff --git a/framework/inc/services.h b/framework/inc/services.h
index b7fa4ca479fe..2f759c5b8095 100644
--- a/framework/inc/services.h
+++ b/framework/inc/services.h
@@ -83,7 +83,6 @@ namespace framework{
#define IMPLEMENTATIONNAME_MODULEMANAGER DECLARE_ASCII("com.sun.star.comp.framework.ModuleManager" )
#define IMPLEMENTATIONNAME_MODULEUICONFIGURATIONMANAGERSUPPLIER DECLARE_ASCII("com.sun.star.comp.framework.ModuleUIConfigurationManagerSupplier" )
#define IMPLEMENTATIONNAME_MENUBARFACTORY DECLARE_ASCII("com.sun.star.comp.framework.MenuBarFactory" )
-#define IMPLEMENTATIONNAME_STARTMODULE DECLARE_ASCII("com.sun.star.comp.framework.BackingComp" )
#define IMPLEMENTATIONNAME_WINDOWSTATECONFIGURATION DECLARE_ASCII("com.sun.star.comp.framework.WindowStateConfiguration" )
#define IMPLEMENTATIONNAME_TOOLBARFACTORY DECLARE_ASCII("com.sun.star.comp.framework.ToolBarFactory" )
#define IMPLEMENTATIONNAME_ADDONSTOOLBARFACTORY DECLARE_ASCII("com.sun.star.comp.framework.AddonsToolBarFactory" )
diff --git a/framework/source/register/registerservices.cxx b/framework/source/register/registerservices.cxx
index 8ec134ccb726..bf3105b08d33 100644
--- a/framework/source/register/registerservices.cxx
+++ b/framework/source/register/registerservices.cxx
@@ -40,7 +40,6 @@
#include <services/modulemanager.hxx>
#include <jobs/jobexecutor.hxx>
#include <jobs/jobdispatch.hxx>
-#include <services/backingcomp.hxx>
#include <services/layoutmanager.hxx>
#include <uifactory/uielementfactorymanager.hxx>
#include <uifactory/uicontrollerfactory.hxx>
@@ -79,7 +78,6 @@ COMPONENTGETFACTORY ( fwk,
IFFACTORY( ::framework::Frame ) else
IFFACTORY( ::framework::JobExecutor ) else
IFFACTORY( ::framework::JobDispatch ) else
- IFFACTORY( ::framework::BackingComp ) else
IFFACTORY( ::framework::LayoutManager ) else
IFFACTORY( ::framework::UIElementFactoryManager ) else
IFFACTORY( ::framework::PopupMenuControllerFactory ) else
diff --git a/framework/source/services/backingwindow.hxx b/framework/source/services/backingwindow.hxx
deleted file mode 100644
index 1c58f9e6949b..000000000000
--- a/framework/source/services/backingwindow.hxx
+++ /dev/null
@@ -1,132 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * 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 .
- */
-
-#ifndef FRAMEWORK_BACKINGWINDOW_HXX
-#define FRAMEWORK_BACKINGWINDOW_HXX
-
-#include <rtl/ustring.hxx>
-
-#include <vcl/builder.hxx>
-#include <vcl/button.hxx>
-#include <vcl/menubtn.hxx>
-#include <vcl/bitmapex.hxx>
-#include <vcl/toolbox.hxx>
-#include <vcl/layout.hxx>
-
-#include <svtools/acceleratorexecute.hxx>
-#include <unotools/moduleoptions.hxx>
-
-#include <com/sun/star/uno/XComponentContext.hpp>
-#include <com/sun/star/frame/XUIControllerFactory.hpp>
-#include <com/sun/star/frame/XPopupMenuController.hpp>
-#include <com/sun/star/awt/XPopupMenu.hpp>
-#include <com/sun/star/frame/XDispatchProvider.hpp>
-#include <com/sun/star/frame/XDesktop.hpp>
-#include <com/sun/star/frame/XFrame.hpp>
-#include <com/sun/star/frame/XTerminateListener.hpp>
-#include <com/sun/star/document/XEventListener.hpp>
-#include <com/sun/star/document/XEventBroadcaster.hpp>
-#include <com/sun/star/util/XURLTransformer.hpp>
-#include <com/sun/star/ui/dialogs/XFilePicker.hpp>
-#include <com/sun/star/ui/dialogs/XFilePickerControlAccess.hpp>
-#include <com/sun/star/ui/dialogs/XFilterManager.hpp>
-#include <com/sun/star/ui/dialogs/TemplateDescription.hpp>
-#include <com/sun/star/ui/dialogs/ExecutableDialogResults.hpp>
-
-#include <set>
-
-class MnemonicGenerator;
-
-namespace framework
-{
- class BackingWindow : public Window, public VclBuilderContainer
- {
- com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > mxContext;
- com::sun::star::uno::Reference<com::sun::star::frame::XDispatchProvider > mxDesktopDispatchProvider;
- com::sun::star::uno::Reference<com::sun::star::frame::XFrame> mxFrame;
- com::sun::star::uno::Reference< com::sun::star::frame::XUIControllerFactory > mxPopupMenuFactory;
- com::sun::star::uno::Reference< com::sun::star::frame::XPopupMenuController > mxPopupMenuController;
- com::sun::star::uno::Reference< com::sun::star::awt::XPopupMenu > mxPopupMenu;
-
- PushButton* mpWriterButton;
- PushButton* mpCalcButton;
- PushButton* mpImpressButton;
- MenuButton* mpOpenButton;
- PushButton* mpDrawButton;
- PushButton* mpDBButton;
- PushButton* mpMathButton;
- PushButton* mpTemplateButton;
-
- PushButton* mpExtensionsButton;
- PushButton* mpInfoButton;
- PushButton* mpTplRepButton;
-
- VclGrid* mpStartCenterContainer;
-
- BitmapEx maBackgroundLeft;
- BitmapEx maBackgroundMiddle;
- BitmapEx maBackgroundRight;
-
- Rectangle maStartCentButtons;
-
- bool mbInitControls;
- sal_Int32 mnHideExternalLinks;
- svt::AcceleratorExecute* mpAccExec;
-
- int mnSCWidth;
- int mnSCHeight;
-
- void setupButton( PushButton* pButton, const OUString& rURL, const std::set<OUString>& rURLS,
- SvtModuleOptions& rOpt, SvtModuleOptions::EModule eMod );
-
- void setupExternalLink( PushButton* pButton );
-
- void dispatchURL( const OUString& i_rURL,
- const OUString& i_rTarget = OUString( "_default" ),
- const com::sun::star::uno::Reference< com::sun::star::frame::XDispatchProvider >& i_xProv = com::sun::star::uno::Reference< com::sun::star::frame::XDispatchProvider >(),
- const com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue >& = com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue >()
- );
-
- DECL_LINK( ClickHdl, Button* );
- DECL_LINK( ExtLinkClickHdl, Button* );
- DECL_LINK( ActivateHdl, Button* );
- DECL_LINK( WindowEventListener, VclSimpleEvent* );
-
- void initControls();
- void initBackground();
- void prepareRecentFileMenu();
-
- public:
- BackingWindow( Window* pParent );
- ~BackingWindow();
-
- virtual void Paint( const Rectangle& rRect );
- virtual void Resize();
- virtual long Notify( NotifyEvent& rNEvt );
-
- virtual Size GetOptimalSize() const;
-
- void setOwningFrame( const com::sun::star::uno::Reference< com::sun::star::frame::XFrame >& xFrame );
- };
-
-}
-
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/framework/util/fwk.component b/framework/util/fwk.component
index f46b712626a1..27e44bdb7d8a 100644
--- a/framework/util/fwk.component
+++ b/framework/util/fwk.component
@@ -28,9 +28,6 @@
<implementation name="com.sun.star.comp.framework.AutoRecovery">
<service name="com.sun.star.frame.AutoRecovery"/>
</implementation>
- <implementation name="com.sun.star.comp.framework.BackingComp">
- <service name="com.sun.star.frame.StartModule"/>
- </implementation>
<implementation name="com.sun.star.comp.framework.ControlMenuController">
<service name="com.sun.star.frame.PopupMenuController"/>
</implementation>
diff --git a/include/sfx2/droptargetlistener.hxx b/include/sfx2/droptargetlistener.hxx
new file mode 100644
index 000000000000..102a39353fbd
--- /dev/null
+++ b/include/sfx2/droptargetlistener.hxx
@@ -0,0 +1,79 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * 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 .
+ */
+
+#ifndef _SXF_DROPTARGETLISTENER_HXX
+#define _SXF_DROPTARGETLISTENER_HXX
+
+#include <com/sun/star/datatransfer/dnd/XDropTargetListener.hpp>
+#include <com/sun/star/frame/XFrame.hpp>
+
+#include <cppuhelper/implbase1.hxx>
+
+#include <sot/exchange.hxx>
+#include <tools/string.hxx>
+
+class DropTargetListener : public ::cppu::WeakImplHelper1< ::com::sun::star::datatransfer::dnd::XDropTargetListener >
+{
+ //___________________________________________
+ // member
+ private:
+
+ /// uno service manager to create necessary services
+ css::uno::Reference< css::uno::XComponentContext > m_xContext;
+ /// weakreference to target frame (Don't use a hard reference. Owner can't delete us then!)
+ css::uno::WeakReference< css::frame::XFrame > m_xTargetFrame;
+ /// drag/drop info
+ DataFlavorExVector* m_pFormats;
+
+ //___________________________________________
+ // c++ interface
+ public:
+
+ DropTargetListener( const css::uno::Reference< css::uno::XComponentContext >& xContext ,
+ const css::uno::Reference< css::frame::XFrame >& xFrame );
+ ~DropTargetListener( );
+
+ //___________________________________________
+ // uno interface
+ public:
+
+ // XEventListener
+ virtual void SAL_CALL disposing ( const css::lang::EventObject& Source ) throw(css::uno::RuntimeException);
+
+ // XDropTargetListener
+ virtual void SAL_CALL drop ( const css::datatransfer::dnd::DropTargetDropEvent& dtde ) throw(css::uno::RuntimeException);
+ virtual void SAL_CALL dragEnter ( const css::datatransfer::dnd::DropTargetDragEnterEvent& dtdee ) throw(css::uno::RuntimeException);
+ virtual void SAL_CALL dragExit ( const css::datatransfer::dnd::DropTargetEvent& dte ) throw(css::uno::RuntimeException);
+ virtual void SAL_CALL dragOver ( const css::datatransfer::dnd::DropTargetDragEvent& dtde ) throw(css::uno::RuntimeException);
+ virtual void SAL_CALL dropActionChanged( const css::datatransfer::dnd::DropTargetDragEvent& dtde ) throw(css::uno::RuntimeException);
+
+ //___________________________________________
+ // internal helper
+ private:
+
+ void implts_BeginDrag ( const css::uno::Sequence< css::datatransfer::DataFlavor >& rSupportedDataFlavors );
+ void implts_EndDrag ( );
+ sal_Bool implts_IsDropFormatSupported( SotFormatStringId nFormat );
+ void implts_OpenFile ( const String& rFilePath );
+
+}; // class DropTargetListener
+
+#endif // _SXF_DROPTARGETLISTENER_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sfx2/Library_sfx.mk b/sfx2/Library_sfx.mk
index 52660b77b158..1c5f507300b8 100644
--- a/sfx2/Library_sfx.mk
+++ b/sfx2/Library_sfx.mk
@@ -129,6 +129,7 @@ $(eval $(call gb_Library_add_exception_objects,sfx,\
sfx2/source/config/evntconf \
sfx2/source/control/bindings \
sfx2/source/control/ctrlitem \
+ sfx2/source/control/droptargetlistener \
sfx2/source/control/minfitem \
sfx2/source/control/msg \
sfx2/source/control/msgpool \
@@ -150,6 +151,8 @@ $(eval $(call gb_Library_add_exception_objects,sfx,\
sfx2/source/control/thumbnailview \
sfx2/source/control/unoctitm \
sfx2/source/dialog/alienwarn \
+ sfx2/source/dialog/backingcomp \
+ sfx2/source/dialog/backingwindow \
sfx2/source/dialog/basedlgs \
sfx2/source/dialog/checkin \
sfx2/source/dialog/dialoghelper \
diff --git a/framework/inc/services/backingcomp.hxx b/sfx2/inc/backingcomp.hxx
index 734291c7b72e..16a2ae7b6346 100644
--- a/framework/inc/services/backingcomp.hxx
+++ b/sfx2/inc/backingcomp.hxx
@@ -17,12 +17,8 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#ifndef __FRAMEWORK_SERVICES_BACKINGCOMP_HXX_
-#define __FRAMEWORK_SERVICES_BACKINGCOMP_HXX_
-
-#include <threadhelp/threadhelpbase.hxx>
-#include <general.h>
-#include <stdtypes.h>
+#ifndef __SFX2_DIALOG_BACKINGCOMP_HXX_
+#define __SFX2_DIALOG_BACKINGCOMP_HXX_
#include <com/sun/star/lang/XTypeProvider.hpp>
#include <com/sun/star/lang/XServiceInfo.hpp>
@@ -44,9 +40,6 @@
//__________________________________________
// definition
-namespace framework
-{
-
//__________________________________________
/**
implements the backing component.
@@ -64,15 +57,12 @@ class BackingComp : public css::lang::XTypeProvider
, public css::lang::XInitialization
, public css::frame::XController // => XComponent
, public css::awt::XKeyListener // => XEventListener
- // attention! Must be the first base class to guarantee right initialize lock ...
- , private ThreadHelpBase
, public ::cppu::OWeakObject
{
//______________________________________
// member
private:
-
/** the global uno service manager.
Must be used to create own needed services. */
css::uno::Reference< css::uno::XComponentContext > m_xContext;
@@ -143,8 +133,6 @@ class BackingComp : public css::lang::XTypeProvider
static css::uno::Reference< css::lang::XSingleServiceFactory > SAL_CALL impl_createFactory ( const css::uno::Reference< css::lang::XMultiServiceFactory >& xSMGR );
};
-} // namespace framework
-
-#endif // __FRAMEWORK_SERVICES_BACKINGCOMP_HXX_
+#endif // __SFX2_DIALOG_BACKINGCOMP_HXX_
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sfx2/source/appl/appuno.cxx b/sfx2/source/appl/appuno.cxx
index 4d1fcc16bafd..089946aeddfb 100644
--- a/sfx2/source/appl/appuno.cxx
+++ b/sfx2/source/appl/appuno.cxx
@@ -23,6 +23,7 @@
#include "sfx2/appuno.hxx"
+#include "backingcomp.hxx"
#include "SfxDocumentMetaData.hxx"
#include "appbaslib.hxx"
#include "doctemplates.hxx"
@@ -2275,6 +2276,7 @@ SFX2_DLLPUBLIC void* SAL_CALL sfx_component_getFactory(
// !!! ATTENTION !!!
// Write no ";" at end of line and dont forget "else" ! (see macro)
//=============================================================================
+ IF_NAME_CREATECOMPONENTFACTORY( BackingComp )
IF_NAME_CREATECOMPONENTFACTORY( SfxGlobalEvents_Impl )
IF_NAME_CREATECOMPONENTFACTORY( SfxFrameLoader_Impl )
IF_NAME_CREATECOMPONENTFACTORY( SfxMacroLoader )
diff --git a/sfx2/source/control/droptargetlistener.cxx b/sfx2/source/control/droptargetlistener.cxx
new file mode 100644
index 000000000000..cb40283250b7
--- /dev/null
+++ b/sfx2/source/control/droptargetlistener.cxx
@@ -0,0 +1,222 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * 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 .
+ */
+
+#include <sfx2/droptargetlistener.hxx>
+
+#include <com/sun/star/datatransfer/dnd/DNDConstants.hpp>
+#include <com/sun/star/frame/XDispatch.hpp>
+#include <com/sun/star/frame/XDispatchProvider.hpp>
+#include <com/sun/star/beans/PropertyValue.hpp>
+#include <com/sun/star/util/URLTransformer.hpp>
+#include <com/sun/star/util/XURLTransformer.hpp>
+
+#include <svtools/transfer.hxx>
+#include <unotools/localfilehelper.hxx>
+#include <sot/filelist.hxx>
+#include <comphelper/processfactory.hxx>
+
+#include <osl/file.hxx>
+#include <vcl/svapp.hxx>
+
+const OUString SPECIALTARGET_DEFAULT("_default");
+
+DropTargetListener::DropTargetListener( const css::uno::Reference< css::uno::XComponentContext >& xContext,
+ const css::uno::Reference< css::frame::XFrame >& xFrame )
+ : m_xContext ( xContext )
+ , m_xTargetFrame ( xFrame )
+ , m_pFormats ( new DataFlavorExVector )
+{
+}
+
+// -----------------------------------------------------------------------------
+
+DropTargetListener::~DropTargetListener()
+{
+ m_xTargetFrame.clear();
+ m_xContext.clear();
+ delete m_pFormats;
+ m_pFormats = NULL;
+}
+
+// -----------------------------------------------------------------------------
+
+void SAL_CALL DropTargetListener::disposing( const css::lang::EventObject& ) throw( css::uno::RuntimeException )
+{
+ m_xTargetFrame.clear();
+ m_xContext.clear();
+}
+
+// -----------------------------------------------------------------------------
+
+void SAL_CALL DropTargetListener::drop( const css::datatransfer::dnd::DropTargetDropEvent& dtde ) throw( css::uno::RuntimeException )
+{
+ const sal_Int8 nAction = dtde.DropAction;
+
+ try
+ {
+ if ( css::datatransfer::dnd::DNDConstants::ACTION_NONE != nAction )
+ {
+ TransferableDataHelper aHelper( dtde.Transferable );
+ sal_Bool bFormatFound = sal_False;
+ FileList aFileList;
+
+ // at first check filelist format
+ if ( aHelper.GetFileList( SOT_FORMAT_FILE_LIST, aFileList ) )
+ {
+ sal_uLong i, nCount = aFileList.Count();
+ for ( i = 0; i < nCount; ++i )
+ implts_OpenFile( aFileList.GetFile(i) );
+ bFormatFound = sal_True;
+ }
+
+ // then, if necessary, the file format
+ String aFilePath;
+ if ( !bFormatFound && aHelper.GetString( SOT_FORMAT_FILE, aFilePath ) )
+ implts_OpenFile( aFilePath );
+ }
+ dtde.Context->dropComplete( css::datatransfer::dnd::DNDConstants::ACTION_NONE != nAction );
+ }
+ catch( const ::com::sun::star::uno::Exception& )
+ {
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void SAL_CALL DropTargetListener::dragEnter( const css::datatransfer::dnd::DropTargetDragEnterEvent& dtdee ) throw( css::uno::RuntimeException )
+{
+ try
+ {
+ implts_BeginDrag( dtdee.SupportedDataFlavors );
+ }
+ catch( const ::com::sun::star::uno::Exception& )
+ {
+ }
+
+ dragOver( dtdee );
+}
+
+// -----------------------------------------------------------------------------
+
+void SAL_CALL DropTargetListener::dragExit( const css::datatransfer::dnd::DropTargetEvent& ) throw( css::uno::RuntimeException )
+{
+ try
+ {
+ implts_EndDrag();
+ }
+ catch( const ::com::sun::star::uno::Exception& )
+ {
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void SAL_CALL DropTargetListener::dragOver( const css::datatransfer::dnd::DropTargetDragEvent& dtde ) throw( css::uno::RuntimeException )
+{
+ try
+ {
+ sal_Bool bAccept = ( implts_IsDropFormatSupported( SOT_FORMAT_FILE ) ||
+ implts_IsDropFormatSupported( SOT_FORMAT_FILE_LIST ) );
+
+ if ( !bAccept )
+ dtde.Context->rejectDrag();
+ else
+ dtde.Context->acceptDrag( css::datatransfer::dnd::DNDConstants::ACTION_COPY );
+ }
+ catch( const ::com::sun::star::uno::Exception& )
+ {
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void SAL_CALL DropTargetListener::dropActionChanged( const css::datatransfer::dnd::DropTargetDragEvent& ) throw( css::uno::RuntimeException )
+{
+}
+
+void DropTargetListener::implts_BeginDrag( const css::uno::Sequence< css::datatransfer::DataFlavor >& rSupportedDataFlavors )
+{
+ /* SAFE { */
+ SolarMutexGuard aGuard;
+ m_pFormats->clear();
+ TransferableDataHelper::FillDataFlavorExVector(rSupportedDataFlavors,*m_pFormats);
+ /* } SAFE */
+}
+
+void DropTargetListener::implts_EndDrag()
+{
+ /* SAFE { */
+ SolarMutexGuard aGuard;
+ m_pFormats->clear();
+ /* } SAFE */
+}
+
+sal_Bool DropTargetListener::implts_IsDropFormatSupported( SotFormatStringId nFormat )
+{
+ /* SAFE { */
+ SolarMutexGuard aGuard;
+ DataFlavorExVector::iterator aIter( m_pFormats->begin() ), aEnd( m_pFormats->end() );
+ sal_Bool bRet = sal_False;
+
+ while ( aIter != aEnd )
+ {
+ if ( nFormat == (*aIter++).mnSotId )
+ {
+ bRet = sal_True;
+ aIter = aEnd;
+ }
+ }
+
+ return bRet;
+ /* } SAFE */
+}
+
+void DropTargetListener::implts_OpenFile( const String& rFilePath )
+{
+ OUString aFileURL;
+ if ( !::utl::LocalFileHelper::ConvertPhysicalNameToURL( rFilePath, aFileURL ) )
+ aFileURL = rFilePath;
+
+ ::osl::FileStatus aStatus( osl_FileStatus_Mask_FileURL );
+ ::osl::DirectoryItem aItem;
+ if( ::osl::FileBase::E_None == ::osl::DirectoryItem::get( aFileURL, aItem ) &&
+ ::osl::FileBase::E_None == aItem.getFileStatus( aStatus ) )
+ aFileURL = aStatus.getFileURL();
+
+ // open file
+ /* SAFE { */
+ SolarMutexGuard aGuard;
+ css::uno::Reference< css::frame::XFrame > xTargetFrame( m_xTargetFrame.get(), css::uno::UNO_QUERY );
+ css::uno::Reference< css::util::XURLTransformer > xParser ( css::util::URLTransformer::create(m_xContext) );
+
+ if (xTargetFrame.is() && xParser.is())
+ {
+ css::util::URL aURL;
+ aURL.Complete = aFileURL;
+ xParser->parseStrict(aURL);
+
+ css::uno::Reference < css::frame::XDispatchProvider > xProvider( xTargetFrame, css::uno::UNO_QUERY );
+ css::uno::Reference< css::frame::XDispatch > xDispatcher = xProvider->queryDispatch( aURL, SPECIALTARGET_DEFAULT, 0 );
+ if ( xDispatcher.is() )
+ xDispatcher->dispatch( aURL, css::uno::Sequence < css::beans::PropertyValue >() );
+ }
+ /* } SAFE */
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/framework/source/services/backingcomp.cxx b/sfx2/source/dialog/backingcomp.cxx
index 89a757de7192..6b7cd16d249b 100644
--- a/framework/source/services/backingcomp.cxx
+++ b/sfx2/source/dialog/backingcomp.cxx
@@ -17,16 +17,11 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#include "services/backingcomp.hxx"
+#include "backingcomp.hxx"
#include "backingwindow.hxx"
-#include <threadhelp/readguard.hxx>
-#include <threadhelp/writeguard.hxx>
-#include <classes/droptargetlistener.hxx>
-#include <targets.h>
-#include <properties.h>
-#include <services.h>
+#include <sfx2/droptargetlistener.hxx>
#include <helpid.hrc>
@@ -58,16 +53,18 @@
#include <unotools/bootstrap.hxx>
-namespace framework
-{
+const char SERVICENAME_FRAMECONTROLLER[] = "com.sun.star.frame.Controller";
+const char IMPLEMENTATIONNAME_STARTMODULE[] = "com.sun.star.comp.sfx2.BackingComp";
+const char FRAME_PROPNAME_LAYOUTMANAGER[] = "LayoutManager";
+const char HID_BACKINGWINDOW[] = "FWK_HID_BACKINGWINDOW";
+const char SPECIALTARGET_MENUBAR[] = "_menubar";
//_______________________________________________
//_______________________________________________
BackingComp::BackingComp( const css::uno::Reference< css::uno::XComponentContext >& xContext )
- : ThreadHelpBase (&Application::GetSolarMutex() )
- , m_xContext (xContext )
+ : m_xContext(xContext)
{
}
@@ -116,10 +113,9 @@ css::uno::Any SAL_CALL BackingComp::queryInterface( /*IN*/ const css::uno::Type&
if (!aResult.hasValue())
{
/* SAFE { */
- ReadGuard aReadLock(m_aLock);
+ SolarMutexGuard aGuard;
if (m_xWindow.is())
aResult = m_xWindow->queryInterface(aType);
- aReadLock.unlock();
/* } SAFE */
}
@@ -177,10 +173,8 @@ css::uno::Sequence< css::uno::Type > SAL_CALL BackingComp::getTypes()
if (!pTypeCollection)
{
/* LOCAL SAFE { */
- ReadGuard aReadLock(m_aLock);
+ SolarMutexGuard aGuard;
css::uno::Reference< css::lang::XTypeProvider > xProvider(m_xWindow, css::uno::UNO_QUERY);
- aReadLock.unlock();
- /* } LOCAL SAFE */
css::uno::Sequence< css::uno::Type > lWindowTypes;
if (xProvider.is())
@@ -195,6 +189,7 @@ css::uno::Sequence< css::uno::Type > SAL_CALL BackingComp::getTypes()
lWindowTypes);
pTypeCollection = &aTypeCollection;
+ /* } LOCAL SAFE */
}
/* } GLOBAL SAFE */
}
@@ -307,7 +302,7 @@ css::uno::Sequence< OUString > SAL_CALL BackingComp::getSupportedServiceNames()
OUString BackingComp::impl_getStaticImplementationName()
{
- return IMPLEMENTATIONNAME_STARTMODULE;
+ return OUString( IMPLEMENTATIONNAME_STARTMODULE );
}
//_______________________________________________
@@ -439,7 +434,7 @@ void SAL_CALL BackingComp::attachFrame( /*IN*/ const css::uno::Reference< css::f
throw (css::uno::RuntimeException)
{
/* SAFE */
- WriteGuard aWriteLock(m_aLock);
+ SolarMutexGuard aGuard;
// check some required states
if (m_xFrame.is())
@@ -459,7 +454,7 @@ void SAL_CALL BackingComp::attachFrame( /*IN*/ const css::uno::Reference< css::f
m_xFrame = xFrame;
// establish drag&drop mode
- ::framework::DropTargetListener* pDropListener = new ::framework::DropTargetListener( m_xContext, m_xFrame);
+ DropTargetListener* pDropListener = new DropTargetListener( m_xContext, m_xFrame);
m_xDropTargetListener = css::uno::Reference< css::datatransfer::dnd::XDropTargetListener >(static_cast< ::cppu::OWeakObject* >(pDropListener), css::uno::UNO_QUERY);
css::uno::Reference< css::awt::XToolkit2 > xToolkit = css::awt::Toolkit::create( m_xContext );
@@ -489,7 +484,7 @@ void SAL_CALL BackingComp::attachFrame( /*IN*/ const css::uno::Reference< css::f
if (xLayoutManager.is())
{
xLayoutManager->lock();
- xLayoutManager->createElement( DECLARE_ASCII( "private:resource/menubar/menubar" ));
+ xLayoutManager->createElement("private:resource/menubar/menubar");
xLayoutManager->unlock();
}
@@ -504,7 +499,6 @@ void SAL_CALL BackingComp::attachFrame( /*IN*/ const css::uno::Reference< css::f
if( pBack )
pBack->setOwningFrame( m_xFrame );
- aWriteLock.unlock();
/* } SAFE */
}
@@ -580,7 +574,7 @@ css::uno::Reference< css::frame::XFrame > SAL_CALL BackingComp::getFrame()
throw (css::uno::RuntimeException)
{
/* SAFE { */
- ReadGuard aReadLock(m_aLock);
+ SolarMutexGuard aGuard;
return m_xFrame;
/* } SAFE */
}
@@ -631,7 +625,7 @@ void SAL_CALL BackingComp::disposing( /*IN*/ const css::lang::EventObject& aEven
// keyPressed() for further details.
/* SAFE { */
- WriteGuard aWriteLock(m_aLock);
+ SolarMutexGuard aGuard;
if (!aEvent.Source.is() || aEvent.Source!=m_xWindow || !m_xWindow.is())
throw css::uno::RuntimeException(
@@ -640,7 +634,6 @@ void SAL_CALL BackingComp::disposing( /*IN*/ const css::lang::EventObject& aEven
m_xWindow = css::uno::Reference< css::awt::XWindow >();
- aWriteLock.unlock();
/* } SAFE */
}
@@ -658,11 +651,11 @@ void SAL_CALL BackingComp::dispose()
throw(css::uno::RuntimeException)
{
/* SAFE { */
- WriteGuard aWriteLock(m_aLock);
+ SolarMutexGuard aGuard;
// kill the menu
css::util::URL aURL;
- aURL.Complete = DECLARE_ASCII(".uno:close");
+ aURL.Complete = OUString(".uno:close");
css::uno::Reference< css::util::XURLTransformer > xParser = css::util::URLTransformer::create(m_xContext);
if (xParser.is())
xParser->parseStrict(aURL);
@@ -706,7 +699,6 @@ void SAL_CALL BackingComp::dispose()
m_xFrame.clear();
m_xContext.clear();
- aWriteLock.unlock();
/* } SAFE */
}
@@ -769,7 +761,7 @@ void SAL_CALL BackingComp::initialize( /*IN*/ const css::uno::Sequence< css::uno
throw(css::uno::Exception, css::uno::RuntimeException)
{
/* SAFE { */
- WriteGuard aWriteLock(m_aLock);
+ SolarMutexGuard aGuard;
if (m_xWindow.is())
throw css::uno::Exception(
@@ -806,7 +798,6 @@ void SAL_CALL BackingComp::initialize( /*IN*/ const css::uno::Sequence< css::uno
m_xWindow->setVisible(sal_True);
- aWriteLock.unlock();
/* } SAFE */
}
@@ -837,6 +828,4 @@ void SAL_CALL BackingComp::keyReleased( /*IN*/ const css::awt::KeyEvent& )
*/
}
-} // namespace framework
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/framework/source/services/backingwindow.cxx b/sfx2/source/dialog/backingwindow.cxx
index 3043e02d1b0f..be49bd2cf463 100644
--- a/framework/source/services/backingwindow.cxx
+++ b/sfx2/source/dialog/backingwindow.cxx
@@ -18,7 +18,6 @@
*/
#include "backingwindow.hxx"
-#include <services.h>
#include <vcl/svapp.hxx>
#include <vcl/virdev.hxx>
@@ -45,7 +44,6 @@ using namespace ::com::sun::star::beans;
using namespace ::com::sun::star::frame;
using namespace ::com::sun::star::uno;
using namespace ::com::sun::star;
-using namespace framework;
const char RECENT_FILE_LIST[] = ".uno:RecentFileList";
@@ -57,6 +55,7 @@ const char BASE_URL[] = "private:factory/sdatabase?Interactive";
const char MATH_URL[] = "private:factory/smath";
const char TEMPLATE_URL[] = "slot:5500";
const char OPEN_URL[] = ".uno:Open";
+const char SERVICENAME_CFGREADACCESS[] = "com.sun.star.configuration.ConfigurationAccess";
const int nItemId_Extensions = 1;
const int nItemId_Info = 3;
diff --git a/sfx2/source/dialog/backingwindow.hxx b/sfx2/source/dialog/backingwindow.hxx
new file mode 100644
index 000000000000..287a77778bad
--- /dev/null
+++ b/sfx2/source/dialog/backingwindow.hxx
@@ -0,0 +1,130 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * 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 .
+ */
+
+#ifndef SFX2_BACKINGWINDOW_HXX
+#define SFX2_BACKINGWINDOW_HXX
+
+#include <rtl/ustring.hxx>
+
+#include <vcl/builder.hxx>
+#include <vcl/button.hxx>
+#include <vcl/menubtn.hxx>
+#include <vcl/bitmapex.hxx>
+#include <vcl/toolbox.hxx>
+#include <vcl/layout.hxx>
+
+#include <svtools/acceleratorexecute.hxx>
+#include <unotools/moduleoptions.hxx>
+
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <com/sun/star/frame/XUIControllerFactory.hpp>
+#include <com/sun/star/frame/XPopupMenuController.hpp>
+#include <com/sun/star/awt/XPopupMenu.hpp>
+#include <com/sun/star/frame/XDispatchProvider.hpp>
+#include <com/sun/star/frame/XDesktop.hpp>
+#include <com/sun/star/frame/XFrame.hpp>
+#include <com/sun/star/frame/XTerminateListener.hpp>
+#include <com/sun/star/document/XEventListener.hpp>
+#include <com/sun/star/document/XEventBroadcaster.hpp>
+#include <com/sun/star/util/XURLTransformer.hpp>
+#include <com/sun/star/ui/dialogs/XFilePicker.hpp>
+#include <com/sun/star/ui/dialogs/XFilePickerControlAccess.hpp>
+#include <com/sun/star/ui/dialogs/XFilterManager.hpp>
+#include <com/sun/star/ui/dialogs/TemplateDescription.hpp>
+#include <com/sun/star/ui/dialogs/ExecutableDialogResults.hpp>
+
+#include <set>
+
+class MnemonicGenerator;
+
+class BackingWindow
+ : public Window
+ , public VclBuilderContainer
+{
+ com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > mxContext;
+ com::sun::star::uno::Reference<com::sun::star::frame::XDispatchProvider > mxDesktopDispatchProvider;
+ com::sun::star::uno::Reference<com::sun::star::frame::XFrame> mxFrame;
+ com::sun::star::uno::Reference< com::sun::star::frame::XUIControllerFactory > mxPopupMenuFactory;
+ com::sun::star::uno::Reference< com::sun::star::frame::XPopupMenuController > mxPopupMenuController;
+ com::sun::star::uno::Reference< com::sun::star::awt::XPopupMenu > mxPopupMenu;
+
+ PushButton* mpWriterButton;
+ PushButton* mpCalcButton;
+ PushButton* mpImpressButton;
+ MenuButton* mpOpenButton;
+ PushButton* mpDrawButton;
+ PushButton* mpDBButton;
+ PushButton* mpMathButton;
+ PushButton* mpTemplateButton;
+
+ PushButton* mpExtensionsButton;
+ PushButton* mpInfoButton;
+ PushButton* mpTplRepButton;
+
+ VclGrid* mpStartCenterContainer;
+
+ BitmapEx maBackgroundLeft;
+ BitmapEx maBackgroundMiddle;
+ BitmapEx maBackgroundRight;
+
+ Rectangle maStartCentButtons;
+
+ bool mbInitControls;
+ sal_Int32 mnHideExternalLinks;
+ svt::AcceleratorExecute* mpAccExec;
+
+ int mnSCWidth;
+ int mnSCHeight;
+
+ void setupButton( PushButton* pButton, const OUString& rURL, const std::set<OUString>& rURLS,
+ SvtModuleOptions& rOpt, SvtModuleOptions::EModule eMod );
+
+ void setupExternalLink( PushButton* pButton );
+
+ void dispatchURL( const OUString& i_rURL,
+ const OUString& i_rTarget = OUString( "_default" ),
+ const com::sun::star::uno::Reference< com::sun::star::frame::XDispatchProvider >& i_xProv = com::sun::star::uno::Reference< com::sun::star::frame::XDispatchProvider >(),
+ const com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue >& = com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue >()
+ );
+
+ DECL_LINK( ClickHdl, Button* );
+ DECL_LINK( ExtLinkClickHdl, Button* );
+ DECL_LINK( ActivateHdl, Button* );
+ DECL_LINK( WindowEventListener, VclSimpleEvent* );
+
+ void initControls();
+ void initBackground();
+ void prepareRecentFileMenu();
+
+public:
+ BackingWindow( Window* pParent );
+ ~BackingWindow();
+
+ virtual void Paint( const Rectangle& rRect );
+ virtual void Resize();
+ virtual long Notify( NotifyEvent& rNEvt );
+
+ virtual Size GetOptimalSize() const;
+
+ void setOwningFrame( const com::sun::star::uno::Reference< com::sun::star::frame::XFrame >& xFrame );
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sfx2/util/sfx.component b/sfx2/util/sfx.component
index 0de2629eb110..dc3150988622 100644
--- a/sfx2/util/sfx.component
+++ b/sfx2/util/sfx.component
@@ -19,6 +19,9 @@
<component loader="com.sun.star.loader.SharedLibrary" prefix="sfx"
xmlns="http://openoffice.org/2010/uno-components">
+ <implementation name="com.sun.star.comp.sfx2.BackingComp">
+ <service name="com.sun.star.frame.StartModule"/>
+ </implementation>
<implementation name="SfxDocumentMetaData">
<service name="com.sun.star.document.DocumentProperties"/>
</implementation>