Kaydet (Commit) 87dfa6dd authored tarafından Ariel Constenla-Haile's avatar Ariel Constenla-Haile Kaydeden (comit) Caolán McNamara

Resolves: #i121810# Adapt SfxPrintingHint to work with...

the "new" XDocumentEventBroadcaster

(cherry picked from commit 1bfae56d)

Conflicts:
	sfx2/inc/sfx2/event.hxx
	sfx2/source/view/viewprn.cxx

Change-Id: I6b3e1edc396b82d85fe059e6cdf7ad0009d5b94b
üst bf4ecd61
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
#include "sal/config.h" #include "sal/config.h"
#include "sfx2/dllapi.h" #include "sfx2/dllapi.h"
#include "sfx2/sfx.hrc"
#include <tools/string.hxx> #include <tools/string.hxx>
#include <svl/hint.hxx> #include <svl/hint.hxx>
#include <unotools/eventcfg.hxx> #include <unotools/eventcfg.hxx>
...@@ -29,6 +30,9 @@ ...@@ -29,6 +30,9 @@
#include <com/sun/star/uno/Sequence.hxx> #include <com/sun/star/uno/Sequence.hxx>
#include <com/sun/star/beans/PropertyValue.hpp> #include <com/sun/star/beans/PropertyValue.hpp>
#include <com/sun/star/frame/XController2.hpp> #include <com/sun/star/frame/XController2.hpp>
#include <com/sun/star/view/PrintableState.hpp>
namespace css = ::com::sun::star;
class SfxObjectShell; class SfxObjectShell;
...@@ -62,22 +66,22 @@ public: ...@@ -62,22 +66,22 @@ public:
class SFX2_DLLPUBLIC SfxViewEventHint : public SfxEventHint class SFX2_DLLPUBLIC SfxViewEventHint : public SfxEventHint
{ {
::com::sun::star::uno::Reference< ::com::sun::star::frame::XController2 > xViewController; ::com::sun::star::uno::Reference< css::frame::XController2 > xViewController;
public: public:
TYPEINFO(); TYPEINFO();
SfxViewEventHint( sal_uInt16 nId, const OUString& aName, SfxObjectShell *pObj, const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XController >& xController ) SfxViewEventHint( sal_uInt16 nId, const OUString& aName, SfxObjectShell *pObj, const css::uno::Reference< css::frame::XController >& xController )
: SfxEventHint( nId, aName, pObj ) : SfxEventHint( nId, aName, pObj )
, xViewController( xController, ::com::sun::star::uno::UNO_QUERY ) , xViewController( xController, css::uno::UNO_QUERY )
{} {}
SfxViewEventHint( sal_uInt16 nId, const OUString& aName, SfxObjectShell *pObj, const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XController2 >& xController ) SfxViewEventHint( sal_uInt16 nId, const OUString& aName, SfxObjectShell *pObj, const css::uno::Reference< css::frame::XController2 >& xController )
: SfxEventHint( nId, aName, pObj ) : SfxEventHint( nId, aName, pObj )
, xViewController( xController ) , xViewController( xController )
{} {}
::com::sun::star::uno::Reference< ::com::sun::star::frame::XController2 > GetController() const css::uno::Reference< css::frame::XController2 > GetController() const
{ return xViewController; } { return xViewController; }
}; };
...@@ -112,23 +116,35 @@ public: ...@@ -112,23 +116,35 @@ public:
}; };
class Printer; class Printer;
class SfxPrintingHint : public SfxHint
class SfxPrintingHint : public SfxViewEventHint
{ {
sal_Int32 nWhich; sal_Int32 mnPrintableState;
com::sun::star::uno::Sequence < com::sun::star::beans::PropertyValue > aOpts; com::sun::star::uno::Sequence < com::sun::star::beans::PropertyValue > aOpts;
public: public:
TYPEINFO(); TYPEINFO();
SfxPrintingHint( sal_Int32 nEvent, const com::sun::star::uno::Sequence < com::sun::star::beans::PropertyValue >& rOpts )
: nWhich( nEvent ) SfxPrintingHint(
, aOpts( rOpts ) sal_Int32 nEvent,
{} const css::uno::Sequence < css::beans::PropertyValue >& rOpts,
SfxObjectShell *pObj,
SfxPrintingHint( sal_Int32 nEvent ) const css::uno::Reference< css::frame::XController2 >& xController )
: nWhich( nEvent ) : SfxViewEventHint(
{} SFX_EVENT_PRINTDOC,
GlobalEventConfig::GetEventName( STR_EVENT_PRINTDOC ),
sal_Int32 GetWhich() const { return nWhich; } pObj,
const com::sun::star::uno::Sequence < com::sun::star::beans::PropertyValue >& GetOptions() { return aOpts; } xController )
, mnPrintableState( nEvent )
, aOpts( rOpts )
{}
SfxPrintingHint( sal_Int32 nEvent )
: SfxViewEventHint( SFX_EVENT_PRINTDOC, rtl::OUString(), 0, css::uno::Reference< css::frame::XController >() )
, mnPrintableState( nEvent )
{}
sal_Int32 GetWhich() const { return mnPrintableState; }
const css::uno::Sequence < css::beans::PropertyValue >& GetOptions() { return aOpts; }
}; };
#endif #endif
......
...@@ -54,6 +54,8 @@ ...@@ -54,6 +54,8 @@
#include <sfx2/objsh.hxx> #include <sfx2/objsh.hxx>
#include <sfx2/event.hxx> #include <sfx2/event.hxx>
#define SFX_PRINTABLESTATE_CANCELJOB -2
using namespace ::com::sun::star; using namespace ::com::sun::star;
using namespace ::com::sun::star::uno; using namespace ::com::sun::star::uno;
...@@ -137,7 +139,7 @@ void SAL_CALL SfxPrintJob_Impl::cancelJob() throw (RuntimeException) ...@@ -137,7 +139,7 @@ void SAL_CALL SfxPrintJob_Impl::cancelJob() throw (RuntimeException)
{ {
// FIXME: how to cancel PrintJob via API?! // FIXME: how to cancel PrintJob via API?!
if( m_pData->m_pObjectShell.Is() ) if( m_pData->m_pObjectShell.Is() )
m_pData->m_pObjectShell->Broadcast( SfxPrintingHint( -2 ) ); m_pData->m_pObjectShell->Broadcast( SfxPrintingHint( SFX_PRINTABLESTATE_CANCELJOB ) );
} }
SfxPrintHelper::SfxPrintHelper() SfxPrintHelper::SfxPrintHelper()
...@@ -792,7 +794,7 @@ void IMPL_PrintListener_DataContainer::Notify( SfxBroadcaster& rBC, const SfxHin ...@@ -792,7 +794,7 @@ void IMPL_PrintListener_DataContainer::Notify( SfxBroadcaster& rBC, const SfxHin
SfxPrintingHint* pPrintHint = PTR_CAST( SfxPrintingHint, &rHint ); SfxPrintingHint* pPrintHint = PTR_CAST( SfxPrintingHint, &rHint );
if ( &rBC != m_pObjectShell if ( &rBC != m_pObjectShell
|| !pPrintHint || !pPrintHint
|| pPrintHint->GetWhich() == -2 ) // -2 : CancelPrintJob || pPrintHint->GetWhich() == SFX_PRINTABLESTATE_CANCELJOB )
return; return;
if ( pPrintHint->GetWhich() == com::sun::star::view::PrintableState_JOB_STARTED ) if ( pPrintHint->GetWhich() == com::sun::star::view::PrintableState_JOB_STARTED )
......
...@@ -19,7 +19,6 @@ ...@@ -19,7 +19,6 @@
#include <com/sun/star/document/XDocumentProperties.hpp> #include <com/sun/star/document/XDocumentProperties.hpp>
#include <com/sun/star/view/PrintableState.hpp>
#include "com/sun/star/view/XRenderable.hpp" #include "com/sun/star/view/XRenderable.hpp"
#include <svl/itempool.hxx> #include <svl/itempool.hxx>
...@@ -55,7 +54,7 @@ ...@@ -55,7 +54,7 @@
using namespace com::sun::star; using namespace com::sun::star;
using namespace com::sun::star::uno; using namespace com::sun::star::uno;
TYPEINIT1(SfxPrintingHint, SfxHint); TYPEINIT1(SfxPrintingHint, SfxViewEventHint);
// ----------------------------------------------------------------------- // -----------------------------------------------------------------------
class SfxPrinterController : public vcl::PrinterController, public SfxListener class SfxPrinterController : public vcl::PrinterController, public SfxListener
...@@ -321,9 +320,15 @@ void SfxPrinterController::jobStarted() ...@@ -321,9 +320,15 @@ void SfxPrinterController::jobStarted()
now.GetDay(), now.GetMonth(), now.GetYear() ) ); now.GetDay(), now.GetMonth(), now.GetYear() ) );
SFX_APP()->NotifyEvent( SfxEventHint(SFX_EVENT_PRINTDOC, GlobalEventConfig::GetEventName( STR_EVENT_PRINTDOC ), mpObjectShell ) ); SFX_APP()->NotifyEvent( SfxEventHint(SFX_EVENT_PRINTDOC, GlobalEventConfig::GetEventName( STR_EVENT_PRINTDOC ), mpObjectShell ) );
// FIXME: how to get all print options incl. AdditionalOptions easily?
uno::Sequence < beans::PropertyValue > aOpts; uno::Sequence < beans::PropertyValue > aOpts;
mpObjectShell->Broadcast( SfxPrintingHint( view::PrintableState_JOB_STARTED, aOpts ) ); aOpts = getJobProperties( aOpts );
uno::Reference< frame::XController2 > xController;
if ( mpViewShell )
xController.set( mpViewShell->GetController(), uno::UNO_QUERY );
mpObjectShell->Broadcast( SfxPrintingHint(
view::PrintableState_JOB_STARTED, aOpts, mpObjectShell, xController ) );
} }
} }
......
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