Kaydet (Commit) e11a80d0 authored tarafından Matúš Kukan's avatar Matúš Kukan

svx: Use constructor feature for RecoveryUI.

Change-Id: I8c7ae37ff6f06615726810392db0a0955e159d30
üst 82093a20
...@@ -19,29 +19,120 @@ ...@@ -19,29 +19,120 @@
#include <config_folders.h> #include <config_folders.h>
#include "recoveryui.hxx" #include <docrecovery.hxx>
#include "docrecovery.hxx" #include <com/sun/star/beans/NamedValue.hpp>
#include <com/sun/star/lang/XInitialization.hpp>
#include <com/sun/star/frame/Desktop.hpp> #include <com/sun/star/frame/Desktop.hpp>
#include <com/sun/star/frame/XFramesSupplier.hpp> #include <com/sun/star/frame/XFramesSupplier.hpp>
#include <com/sun/star/beans/NamedValue.hpp> #include <com/sun/star/frame/XSynchronousDispatch.hpp>
#include <com/sun/star/lang/XServiceInfo.hpp>
#include <com/sun/star/task/XStatusIndicatorFactory.hpp>
#include <cppuhelper/implbase2.hxx>
#include <osl/file.hxx> #include <osl/file.hxx>
#include <rtl/bootstrap.hxx> #include <rtl/bootstrap.hxx>
#include <comphelper/processfactory.hxx> #include <comphelper/processfactory.hxx>
#include <cppuhelper/supportsservice.hxx> #include <cppuhelper/supportsservice.hxx>
#include <vcl/svapp.hxx> #include <vcl/svapp.hxx>
#include <vcl/window.hxx>
#include <boost/scoped_ptr.hpp> #include <boost/scoped_ptr.hpp>
#include <officecfg/Office/Recovery.hxx> #include <officecfg/Office/Recovery.hxx>
namespace svx namespace svxdr = ::svx::DocRecovery;
using namespace ::osl;
namespace {
class RecoveryUI : public ::cppu::WeakImplHelper2< css::lang::XServiceInfo ,
css::frame::XSynchronousDispatch > // => XDispatch!
{ {
//-------------------------------------------
// const, types, etcpp.
private:
namespace svxdr = ::svx::DocRecovery; /** @short TODO */
enum EJob
{
E_JOB_UNKNOWN,
E_DO_EMERGENCY_SAVE,
E_DO_RECOVERY,
E_DO_CRASHREPORT
};
using namespace ::rtl; //-------------------------------------------
using namespace ::osl; // member
private:
/** @short TODO */
css::uno::Reference< css::uno::XComponentContext > m_xContext;
/** @short TODO */
Window* m_pParentWindow;
/** @short TODO */
RecoveryUI::EJob m_eJob;
/** @short TODO */
css::uno::Reference< css::task::XStatusIndicatorFactory > m_xProgressFactory;
//-------------------------------------------
// interface
public:
//---------------------------------------
/** @short TODO */
RecoveryUI(const css::uno::Reference< css::uno::XComponentContext >& xContext);
//---------------------------------------
/** @short TODO */
virtual ~RecoveryUI();
//---------------------------------------
// css.lang.XServiceInfo
virtual OUString SAL_CALL getImplementationName()
throw(css::uno::RuntimeException);
virtual sal_Bool SAL_CALL supportsService(const OUString& sServiceName)
throw(css::uno::RuntimeException);
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames()
throw(css::uno::RuntimeException);
//---------------------------------------
virtual com::sun::star::uno::Any SAL_CALL dispatchWithReturnValue(const css::util::URL& aURL,
const css::uno::Sequence< css::beans::PropertyValue >& lArguments )
throw(css::uno::RuntimeException);
//---------------------------------------
// css.frame.XDispatch
virtual void SAL_CALL dispatch(const css::util::URL& aURL ,
const css::uno::Sequence< css::beans::PropertyValue >& lArguments)
throw(css::uno::RuntimeException);
virtual void SAL_CALL addStatusListener(const css::uno::Reference< css::frame::XStatusListener >& xListener,
const css::util::URL& aURL )
throw(css::uno::RuntimeException);
virtual void SAL_CALL removeStatusListener(const css::uno::Reference< css::frame::XStatusListener >& xListener,
const css::util::URL& aURL )
throw(css::uno::RuntimeException);
//-------------------------------------------
// helper
private:
EJob impl_classifyJob(const css::util::URL& aURL);
sal_Bool impl_doEmergencySave();
void impl_doRecovery();
void impl_showAllRecoveredDocs();
void impl_doCrashReport();
};
RecoveryUI::RecoveryUI(const css::uno::Reference< css::uno::XComponentContext >& xContext) RecoveryUI::RecoveryUI(const css::uno::Reference< css::uno::XComponentContext >& xContext)
: m_xContext (xContext ) : m_xContext (xContext )
...@@ -57,7 +148,7 @@ RecoveryUI::~RecoveryUI() ...@@ -57,7 +148,7 @@ RecoveryUI::~RecoveryUI()
OUString SAL_CALL RecoveryUI::getImplementationName() OUString SAL_CALL RecoveryUI::getImplementationName()
throw(css::uno::RuntimeException) throw(css::uno::RuntimeException)
{ {
return RecoveryUI::st_getImplementationName(); return OUString("com.sun.star.comp.svx.RecoveryUI");
} }
sal_Bool SAL_CALL RecoveryUI::supportsService(const OUString& sServiceName) sal_Bool SAL_CALL RecoveryUI::supportsService(const OUString& sServiceName)
...@@ -69,7 +160,9 @@ sal_Bool SAL_CALL RecoveryUI::supportsService(const OUString& sServiceName) ...@@ -69,7 +160,9 @@ sal_Bool SAL_CALL RecoveryUI::supportsService(const OUString& sServiceName)
css::uno::Sequence< OUString > SAL_CALL RecoveryUI::getSupportedServiceNames() css::uno::Sequence< OUString > SAL_CALL RecoveryUI::getSupportedServiceNames()
throw(css::uno::RuntimeException) throw(css::uno::RuntimeException)
{ {
return RecoveryUI::st_getSupportedServiceNames(); css::uno::Sequence< OUString > lServiceNames(1);
lServiceNames[0] = "com.sun.star.dialog.RecoveryUI";
return lServiceNames;
} }
css::uno::Any SAL_CALL RecoveryUI::dispatchWithReturnValue(const css::util::URL& aURL, css::uno::Any SAL_CALL RecoveryUI::dispatchWithReturnValue(const css::util::URL& aURL,
...@@ -132,24 +225,6 @@ void SAL_CALL RecoveryUI::removeStatusListener(const css::uno::Reference< css::f ...@@ -132,24 +225,6 @@ void SAL_CALL RecoveryUI::removeStatusListener(const css::uno::Reference< css::f
OSL_FAIL("RecoveryUI::removeStatusListener()\nNot implemented yet!"); OSL_FAIL("RecoveryUI::removeStatusListener()\nNot implemented yet!");
} }
OUString RecoveryUI::st_getImplementationName()
{
return OUString("com.sun.star.comp.svx.RecoveryUI");
}
css::uno::Sequence< OUString > RecoveryUI::st_getSupportedServiceNames()
{
css::uno::Sequence< OUString > lServiceNames(1);
lServiceNames[0] = "com.sun.star.dialog.RecoveryUI";
return lServiceNames;
}
css::uno::Reference< css::uno::XInterface > SAL_CALL RecoveryUI::st_createInstance(const css::uno::Reference< css::lang::XMultiServiceFactory >& xSMGR)
{
RecoveryUI* pNew = new RecoveryUI(comphelper::getComponentContext(xSMGR));
return css::uno::Reference< css::uno::XInterface >(static_cast< css::lang::XServiceInfo* >(pNew));
}
static OUString GetCrashConfigDir() static OUString GetCrashConfigDir()
{ {
...@@ -160,7 +235,7 @@ static OUString GetCrashConfigDir() ...@@ -160,7 +235,7 @@ static OUString GetCrashConfigDir()
#else #else
OUString ustrValue = "$SYSUSERCONFIG"; OUString ustrValue = "$SYSUSERCONFIG";
#endif #endif
Bootstrap::expandMacros( ustrValue ); rtl::Bootstrap::expandMacros( ustrValue );
#if defined(WNT) #if defined(WNT)
ustrValue += "/user/crashdata"; ustrValue += "/user/crashdata";
...@@ -342,6 +417,17 @@ void RecoveryUI::impl_showAllRecoveredDocs() ...@@ -342,6 +417,17 @@ void RecoveryUI::impl_showAllRecoveredDocs()
} }
} }
} // namespace svx }
extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL
com_sun_star_comp_svx_RecoveryUI_implementation_getFactory(
css::uno::XComponentContext *context, uno_Sequence * arguments)
{
assert(arguments != 0 && arguments->nElements == 0); (void) arguments;
css::uno::Reference<css::uno::XInterface> x(
static_cast<cppu::OWeakObject *>(new RecoveryUI(context)));
x->acquire();
return x.get();
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
...@@ -26,7 +26,6 @@ ...@@ -26,7 +26,6 @@
#include <svx/xtable.hxx> #include <svx/xtable.hxx>
#include "svx/unoshcol.hxx" #include "svx/unoshcol.hxx"
#include "recoveryui.hxx"
using namespace ::com::sun::star; using namespace ::com::sun::star;
using namespace ::rtl; using namespace ::rtl;
...@@ -257,13 +256,6 @@ SAL_DLLPUBLIC_EXPORT void * SAL_CALL svx_component_getFactory ( ...@@ -257,13 +256,6 @@ SAL_DLLPUBLIC_EXPORT void * SAL_CALL svx_component_getFactory (
SvxShapeCollection_createInstance, SvxShapeCollection_createInstance,
SvxShapeCollection::getSupportedServiceNames_Static() ); SvxShapeCollection::getSupportedServiceNames_Static() );
} }
else if( svx::RecoveryUI::st_getImplementationName().equalsAscii( pImplName ) )
{
xFactory = ::cppu::createSingleFactory( reinterpret_cast< lang::XMultiServiceFactory * >( pServiceManager ),
svx::RecoveryUI::st_getImplementationName(),
svx::RecoveryUI::st_createInstance,
svx::RecoveryUI::st_getSupportedServiceNames() );
}
if( xFactory.is()) if( xFactory.is())
{ {
......
...@@ -28,7 +28,8 @@ ...@@ -28,7 +28,8 @@
<service name="com.sun.star.comp.svx.FindbarDispatcher"/> <service name="com.sun.star.comp.svx.FindbarDispatcher"/>
<service name="com.sun.star.frame.ProtocolHandler"/> <service name="com.sun.star.frame.ProtocolHandler"/>
</implementation> </implementation>
<implementation name="com.sun.star.comp.svx.RecoveryUI"> <implementation name="com.sun.star.comp.svx.RecoveryUI"
constructor="com_sun_star_comp_svx_RecoveryUI_implementation_getFactory">
<service name="com.sun.star.dialog.RecoveryUI"/> <service name="com.sun.star.dialog.RecoveryUI"/>
</implementation> </implementation>
<implementation name="com.sun.star.drawing.EnhancedCustomShapeEngine"> <implementation name="com.sun.star.drawing.EnhancedCustomShapeEngine">
......
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