Hi Stephan,

I tried to add the XScannerManager2. But when I try with this patch then the menu-items are disabled. I have tried to search where the problem was but I canĀ“t find it. Can you help me?

M.V.G.
Rob Snelders

On 13-10-11 16:59, Stephan Bergmann wrote:
On 10/12/2011 06:32 PM, Rob Snelders wrote:
Can somebody add this patch to the git?

Hi Rob,

sorry for stepping in so late, just apparently missed your great patch
somehow. One thing I'm uneasy with is changing (published)
XScannerManager.idl incompatibly. The standard routine for doing such
API changes would be to introduce a new interface, say XScannerManager2
(that may or may not derive from XScannerManager, depending on what's
more convenient) and a new method with another name there. This may
appear a lot of work for dubious benefit (does anybody out there
actually use the old interface, so would break?) -- which it is...
Still, if you were happy with such a change (and I could lend you a
helping hand latest next week when I'm back in Hamburg), that would keep
us in line with our existing compatibility practice.

So, if you do not object, I'll see to get this integrated with the
proposed change (either if you do the change yourself, or else I can do
it with a little more delay).

Thanks a lot for your patience,
-Stephan
_______________________________________________
LibreOffice mailing list
LibreOffice@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice
>From e000495fa09833d57f3897a4e08acc43df6f6e60 Mon Sep 17 00:00:00 2001
From: Rob Snelders <programm...@ertai.nl>
Date: Wed, 19 Oct 2011 22:19:16 +0200
Subject: [PATCH] Added a scanbutton to the scan-dialog

---
 extensions/inc/pch/precompiled_extensions.hxx |    1 +
 extensions/source/scanner/sanedlg.cxx         |   16 ++++++++++++++--
 extensions/source/scanner/sanedlg.hrc         |    1 +
 extensions/source/scanner/sanedlg.hxx         |    7 ++++++-
 extensions/source/scanner/sanedlg.src         |    7 +++++++
 extensions/source/scanner/scanner.cxx         |   10 ++++++++--
 extensions/source/scanner/scanner.hxx         |    3 ++-
 extensions/source/scanner/scanunx.cxx         |    9 +++++++--
 extensions/source/scanner/scanwin.cxx         |    2 +-
 extensions/source/scanner/scn.component       |    4 ++--
 offapi/UnoApi_offapi.mk                       |    2 ++
 sd/inc/pch/precompiled_sd.hxx                 |    1 +
 sd/source/ui/inc/DrawViewShell.hxx            |    4 ++--
 sd/source/ui/view/drviews8.cxx                |    2 +-
 sd/source/ui/view/drviewsa.cxx                |    4 ++--
 sw/inc/pch/precompiled_sw.hxx                 |    1 +
 sw/inc/swmodule.hxx                           |    6 +++---
 sw/source/ui/app/swmodule.cxx                 |    8 ++++----
 sw/source/ui/uiview/uivwimp.cxx               |   12 +++++++-----
 sw/source/ui/uiview/view.cxx                  |    4 ++--
 20 files changed, 74 insertions(+), 30 deletions(-)

diff --git a/extensions/inc/pch/precompiled_extensions.hxx b/extensions/inc/pch/precompiled_extensions.hxx
index 4582abb..abf2a4d 100644
--- a/extensions/inc/pch/precompiled_extensions.hxx
+++ b/extensions/inc/pch/precompiled_extensions.hxx
@@ -272,6 +272,7 @@
 #include "com/sun/star/resource/XResourceBundleLoader.hpp"
 #include "com/sun/star/scanner/ScannerException.hpp"
 #include "com/sun/star/scanner/XScannerManager.hpp"
+#include "com/sun/star/scanner/XScannerManager2.hpp"
 #include "com/sun/star/script/ContextInformation.hpp"
 #include "com/sun/star/script/FailReason.hpp"
 #include "com/sun/star/script/FinishEngineEvent.hpp"
diff --git a/extensions/source/scanner/sanedlg.cxx b/extensions/source/scanner/sanedlg.cxx
index 39b8862..acec566 100644
--- a/extensions/source/scanner/sanedlg.cxx
+++ b/extensions/source/scanner/sanedlg.cxx
@@ -48,16 +48,18 @@ ResId SaneResId( sal_uInt32 nID )
     return ResId( nID, *pResMgr );
 }
 
-SaneDlg::SaneDlg( Window* pParent, Sane& rSane ) :
+SaneDlg::SaneDlg( Window* pParent, Sane& rSane, sal_Bool bScanEnabled ) :
         ModalDialog( pParent, SaneResId( RID_SANE_DIALOG ) ),
         mrSane( rSane ),
         mbIsDragging( sal_False ),
+        mbScanEnabled( bScanEnabled ),
         mbDragDrawn( sal_False ),
         maMapMode( MAP_APPFONT ),
         maOKButton( this, SaneResId( RID_SCAN_OK ) ),
         maCancelButton( this, SaneResId( RID_SCAN_CANCEL ) ),
         maDeviceInfoButton( this, SaneResId( RID_DEVICEINFO_BTN ) ),
         maPreviewButton( this, SaneResId( RID_PREVIEW_BTN ) ),
+        maScanButton( this, SaneResId( RID_SCAN_BTN ) ),
         maButtonOption( this, SaneResId( RID_SCAN_BUTTON_OPTION_BTN ) ),
         maOptionsTxt( this, SaneResId( RID_SCAN_OPTION_TXT ) ),
         maOptionTitle( this, SaneResId( RID_SCAN_OPTIONTITLE_TXT ) ),
@@ -88,6 +90,7 @@ SaneDlg::SaneDlg( Window* pParent, Sane& rSane ) :
         maOptionBox( this, SaneResId( RID_SCAN_OPTION_BOX ) ),
         mpRange( 0 )
 {
+    doScan = sal_False;
     if( Sane::IsSane() )
     {
         InitDevices(); // opens first sane device
@@ -97,6 +100,7 @@ SaneDlg::SaneDlg( Window* pParent, Sane& rSane ) :
 
     maDeviceInfoButton.SetClickHdl( LINK( this, SaneDlg, ClickBtnHdl ) );
     maPreviewButton.SetClickHdl( LINK( this, SaneDlg, ClickBtnHdl ) );
+    maScanButton.SetClickHdl( LINK( this, SaneDlg, ClickBtnHdl ) );
     maButtonOption.SetClickHdl( LINK( this, SaneDlg, ClickBtnHdl ) );
     maDeviceBox.SetSelectHdl( LINK( this, SaneDlg, SelectHdl ) );
     maOptionBox.SetSelectHdl( LINK( this, SaneDlg, OptionsBoxSelectHdl ) );
@@ -189,6 +193,7 @@ void SaneDlg::InitFields()
     maReslBox.Clear();
     maMinTopLeft = Point( 0, 0 );
     maMaxBottomRight = Point( PREVIEW_WIDTH,  PREVIEW_HEIGHT );
+    maScanButton.Show( mbScanEnabled );
 
     if( ! mrSane.IsOpen() )
         return;
@@ -476,13 +481,15 @@ IMPL_LINK( SaneDlg, ClickBtnHdl, Button*, pButton )
             ReloadSaneOptionsHdl( NULL );
         }
     }
-    if( pButton == &maOKButton )
+    if( pButton == &maOKButton || pButton == &maScanButton )
     {
         double fRes = (double)maReslBox.GetValue();
         SetAdjustedNumericalValue( "resolution", fRes );
         UpdateScanArea( sal_True );
         SaveState();
         EndDialog( mrSane.IsOpen() ? 1 : 0 );
+        if (pButton == &maScanButton)
+            doScan = sal_True;
     }
     else if( pButton == &maCancelButton )
     {
@@ -1376,4 +1383,9 @@ sal_Bool SaneDlg::SetAdjustedNumericalValue(
     return sal_True;
 }
 
+sal_Bool SaneDlg::getDoScan()
+{
+    return doScan;
+}
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/extensions/source/scanner/sanedlg.hrc b/extensions/source/scanner/sanedlg.hrc
index ca89312..1e468c9 100644
--- a/extensions/source/scanner/sanedlg.hrc
+++ b/extensions/source/scanner/sanedlg.hrc
@@ -62,6 +62,7 @@
 #define RID_SCAN_BITMAP_MINUS             32
 #define RID_SCAN_ADVANCED_BOX             33
 #define RID_SCAN_ADVANCED_TXT             34
+#define RID_SCAN_BTN			  35
 
 #define RID_SANE_DEVICEINFO_TXT         1001
 #define RID_SANE_SCANERROR_TXT          1002
diff --git a/extensions/source/scanner/sanedlg.hxx b/extensions/source/scanner/sanedlg.hxx
index c3f72ea..b43e2a1 100644
--- a/extensions/source/scanner/sanedlg.hxx
+++ b/extensions/source/scanner/sanedlg.hxx
@@ -53,6 +53,7 @@ private:
     Point           maMinTopLeft, maMaxBottomRight;
     sal_Bool            mbDragEnable;
     sal_Bool            mbIsDragging;
+    sal_Bool        mbScanEnabled;
     int             mnDragMode;
     sal_Bool            mbDragDrawn;
     DragDirection   meDragDirection;
@@ -65,6 +66,7 @@ private:
     CancelButton    maCancelButton;
     PushButton      maDeviceInfoButton;
     PushButton      maPreviewButton;
+    PushButton      maScanButton;
     PushButton      maButtonOption;
 
     FixedText       maOptionsTxt;
@@ -107,6 +109,8 @@ private:
     double*         mpRange;
     double          mfMin, mfMax;
 
+    sal_Bool        doScan;
+
     DECL_LINK( ClickBtnHdl, Button* );
     DECL_LINK( SelectHdl, ListBox* );
     DECL_LINK( ModifyHdl, Edit* );
@@ -141,10 +145,11 @@ private:
     virtual void MouseButtonDown( const MouseEvent& rMEvt );
     virtual void MouseButtonUp( const MouseEvent& rMEvt );
 public:
-    SaneDlg( Window*, Sane& );
+    SaneDlg( Window*, Sane&, sal_Bool );
     ~SaneDlg();
 
     virtual short Execute();
+    sal_Bool getDoScan();
 };
 
 
diff --git a/extensions/source/scanner/sanedlg.src b/extensions/source/scanner/sanedlg.src
index 961f0ed..fc17d3e 100644
--- a/extensions/source/scanner/sanedlg.src
+++ b/extensions/source/scanner/sanedlg.src
@@ -59,6 +59,13 @@ ModalDialog RID_SANE_DIALOG
         Size = MAP_APPFONT ( 55 , 22 ) ;
         Text [ en-US ] = "Create\nPreview" ;
     };
+    PushButton RID_SCAN_BTN
+    {
+        HelpID = "extensions:PushButton:RID_SANE_DIALOG:RID_SCAN_BTN";
+        Pos = MAP_APPFONT ( THIRD_COLUMN , 98 ) ;
+        Size = MAP_APPFONT ( 55 , 14 ) ;
+        Text [ en-US ] = "Scan" ;
+    };
     FixedLine RID_PREVIEW_BOX
     {
         Pos = MAP_APPFONT ( PREVIEW_UPPER_LEFT - 5 , PREVIEW_UPPER_TOP - 8 ) ;
diff --git a/extensions/source/scanner/scanner.cxx b/extensions/source/scanner/scanner.cxx
index e833c4f..6992b75 100644
--- a/extensions/source/scanner/scanner.cxx
+++ b/extensions/source/scanner/scanner.cxx
@@ -90,7 +90,7 @@ SEQ( sal_Int8 ) SAL_CALL ScannerManager::getMaskDIB() throw()
 
 OUString ScannerManager::getImplementationName_Static() throw()
 {
-    return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.scanner.ScannerManager" ) );
+    return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.scanner.ScannerManager2" ) );
 }
 
 // -----------------------------------------------------------------------------
@@ -99,9 +99,15 @@ SEQ( OUString ) ScannerManager::getSupportedServiceNames_Static() throw ()
 {
     SEQ( OUString ) aSNS( 1 );
 
-    aSNS.getArray()[0] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.scanner.ScannerManager" ) );
+    aSNS.getArray()[0] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.scanner.ScannerManager2" ) );
 
     return aSNS;
 }
 
+sal_Bool SAL_CALL ScannerManager::configureScanner( ScannerContext& rContext )
+    throw( ScannerException )
+{
+    return configureScannerAndScan( rContext, NULL );
+}
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/extensions/source/scanner/scanner.hxx b/extensions/source/scanner/scanner.hxx
index abe2ae3..434e492 100644
--- a/extensions/source/scanner/scanner.hxx
+++ b/extensions/source/scanner/scanner.hxx
@@ -83,7 +83,8 @@ public:
 
     // XScannerManager
     virtual SEQ( ScannerContext ) SAL_CALL  getAvailableScanners() throw();
-    virtual sal_Bool SAL_CALL                   configureScanner( ScannerContext& scanner_context ) throw( ScannerException );
+    virtual sal_Bool SAL_CALL               configureScanner( ScannerContext& scanner_context ) throw( ScannerException );
+    virtual sal_Bool SAL_CALL               configureScannerAndScan( ScannerContext& scanner_context, const REF( com::sun::star::lang::XEventListener )& rxListener ) throw( ScannerException );
     virtual void SAL_CALL                   startScan( const ScannerContext& scanner_context, const REF( com::sun::star::lang::XEventListener )& rxListener ) throw( ScannerException );
     virtual ScanError SAL_CALL              getError( const ScannerContext& scanner_context ) throw( ScannerException );
     virtual REF( AWT::XBitmap ) SAL_CALL    getBitmap( const ScannerContext& scanner_context ) throw( ScannerException );
diff --git a/extensions/source/scanner/scanunx.cxx b/extensions/source/scanner/scanunx.cxx
index 1f481f6..9980fd4 100644
--- a/extensions/source/scanner/scanunx.cxx
+++ b/extensions/source/scanner/scanunx.cxx
@@ -278,7 +278,8 @@ SEQ( ScannerContext ) ScannerManager::getAvailableScanners() throw()
 
 // -----------------------------------------------------------------------------
 
-sal_Bool ScannerManager::configureScanner( ScannerContext& scanner_context ) throw( ScannerException )
+sal_Bool ScannerManager::configureScannerAndScan( ScannerContext& scanner_context,
+					   const REF( com::sun::star::lang::XEventListener )& listener ) throw( ScannerException )
 {
     osl::MutexGuard aGuard( theSaneProtector::get() );
     sanevec &rSanes = theSanes::get().m_aSanes;
@@ -303,10 +304,14 @@ sal_Bool ScannerManager::configureScanner( ScannerContext& scanner_context ) thr
             );
 
     pHolder->m_bBusy = true;
-    SaneDlg aDlg( NULL, pHolder->m_aSane );
+    SaneDlg aDlg( NULL, pHolder->m_aSane, (listener != NULL) );
     sal_Bool bRet = (sal_Bool)aDlg.Execute();
+    sal_Bool bScan = aDlg.getDoScan();
     pHolder->m_bBusy = false;
 
+    if ( bScan )
+	startScan( scanner_context, listener );
+
     return bRet;
 }
 
diff --git a/extensions/source/scanner/scanwin.cxx b/extensions/source/scanner/scanwin.cxx
index 5f6d47e..a57b1c8 100644
--- a/extensions/source/scanner/scanwin.cxx
+++ b/extensions/source/scanner/scanwin.cxx
@@ -1004,7 +1004,7 @@ SEQ( ScannerContext ) SAL_CALL ScannerManager::getAvailableScanners() throw()
 
 // -----------------------------------------------------------------------------
 
-sal_Bool SAL_CALL ScannerManager::configureScanner( ScannerContext& rContext )
+sal_Bool SAL_CALL ScannerManager::configureScannerAndScan( ScannerContext& rContext, const uno::Reference< lang::XEventListener >& rxListener )
     throw( ScannerException )
 {
     osl::MutexGuard aGuard( maProtector );
diff --git a/extensions/source/scanner/scn.component b/extensions/source/scanner/scn.component
index d7daf3a..53b88c9 100644
--- a/extensions/source/scanner/scn.component
+++ b/extensions/source/scanner/scn.component
@@ -28,7 +28,7 @@
 
 <component loader="com.sun.star.loader.SharedLibrary"
     xmlns="http://openoffice.org/2010/uno-components";>
-  <implementation name="com.sun.star.scanner.ScannerManager">
-    <service name="com.sun.star.scanner.ScannerManager"/>
+  <implementation name="com.sun.star.scanner.ScannerManager2">
+    <service name="com.sun.star.scanner.ScannerManager2"/>
   </implementation>
 </component>
diff --git a/offapi/UnoApi_offapi.mk b/offapi/UnoApi_offapi.mk
index a956fb0..e3bc6e2 100644
--- a/offapi/UnoApi_offapi.mk
+++ b/offapi/UnoApi_offapi.mk
@@ -850,6 +850,7 @@ $(eval $(call gb_UnoApiTarget_add_idlfiles_noheader,offapi,offapi/com/sun/star/s
 ))
 $(eval $(call gb_UnoApiTarget_add_idlfiles_noheader,offapi,offapi/com/sun/star/scanner,\
 	ScannerManager \
+	ScannerManager2 \
 ))
 $(eval $(call gb_UnoApiTarget_add_idlfiles_noheader,offapi,offapi/com/sun/star/script/browse,\
 	BrowseNode \
@@ -2957,6 +2958,7 @@ $(eval $(call gb_UnoApiTarget_add_idlfiles,offapi,offapi/com/sun/star/scanner,\
 	ScannerContext \
 	ScannerException \
 	XScannerManager \
+	XScannerManager2 \
 ))
 $(eval $(call gb_UnoApiTarget_add_idlfiles,offapi,offapi/com/sun/star/script,\
 	LibraryNotLoadedException \
diff --git a/sd/inc/pch/precompiled_sd.hxx b/sd/inc/pch/precompiled_sd.hxx
index d691226..e5cc132 100644
--- a/sd/inc/pch/precompiled_sd.hxx
+++ b/sd/inc/pch/precompiled_sd.hxx
@@ -294,6 +294,7 @@
 #include "com/sun/star/registry/XRegistryKey.hpp"
 #include "com/sun/star/rendering/XSpriteCanvas.hpp"
 #include "com/sun/star/scanner/XScannerManager.hpp"
+#include "com/sun/star/scanner/XScannerManager2.hpp"
 #include "com/sun/star/sdbc/XResultSet.hpp"
 #include "com/sun/star/sdbc/XRow.hpp"
 #include "com/sun/star/style/LineSpacing.hpp"
diff --git a/sd/source/ui/inc/DrawViewShell.hxx b/sd/source/ui/inc/DrawViewShell.hxx
index 5e7a345..57b3238 100644
--- a/sd/source/ui/inc/DrawViewShell.hxx
+++ b/sd/source/ui/inc/DrawViewShell.hxx
@@ -36,7 +36,7 @@
 #include "TabControl.hxx"
 #include "pres.hxx"
 #include <com/sun/star/lang/XEventListener.hpp>
-#include <com/sun/star/scanner/XScannerManager.hpp>
+#include <com/sun/star/scanner/XScannerManager2.hpp>
 #include <unotools/caserotate.hxx>
 
 class SdPage;
@@ -451,7 +451,7 @@ private:
         SdPage* pPage,
         const sal_Int32 nInsertPosition = -1);
 
-    ::com::sun::star::uno::Reference< ::com::sun::star::scanner::XScannerManager >  mxScannerManager;
+    ::com::sun::star::uno::Reference< ::com::sun::star::scanner::XScannerManager2 > mxScannerManager;
     ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >      mxScannerListener;
     TransferableClipboardListener*                                                  mpClipEvtLstnr;
     sal_Bool                                                                            mbPastePossible;
diff --git a/sd/source/ui/view/drviews8.cxx b/sd/source/ui/view/drviews8.cxx
index b12c10e..726e9be 100644
--- a/sd/source/ui/view/drviews8.cxx
+++ b/sd/source/ui/view/drviews8.cxx
@@ -360,7 +360,7 @@ void DrawViewShell::FuTemp01(SfxRequest& rReq)
                     if( aContexts.getLength() )
                     {
                         ::com::sun::star::scanner::ScannerContext aContext( aContexts.getConstArray()[ 0 ] );
-                        mxScannerManager->configureScanner( aContext );
+                        mxScannerManager->configureScannerAndScan( aContext, mxScannerListener );
                     }
                 }
                 catch(...)
diff --git a/sd/source/ui/view/drviewsa.cxx b/sd/source/ui/view/drviewsa.cxx
index 5f7c07e..fb384b2 100644
--- a/sd/source/ui/view/drviewsa.cxx
+++ b/sd/source/ui/view/drviewsa.cxx
@@ -393,8 +393,8 @@ void DrawViewShell::Construct(DrawDocShell* pDocSh, PageKind eInitialPageKind)
 
     if( xMgr.is() )
     {
-        mxScannerManager = ::com::sun::star::uno::Reference< ::com::sun::star::scanner::XScannerManager >(
-                           xMgr->createInstance( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.scanner.ScannerManager" )) ),
+        mxScannerManager = ::com::sun::star::uno::Reference< ::com::sun::star::scanner::XScannerManager2 >(
+                           xMgr->createInstance( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.scanner.ScannerManager2" )) ),
                            ::com::sun::star::uno::UNO_QUERY );
 
         if( mxScannerManager.is() )
diff --git a/sw/inc/pch/precompiled_sw.hxx b/sw/inc/pch/precompiled_sw.hxx
index d577822..53136b3 100644
--- a/sw/inc/pch/precompiled_sw.hxx
+++ b/sw/inc/pch/precompiled_sw.hxx
@@ -272,6 +272,7 @@
 #include "com/sun/star/packages/zip/ZipIOException.hpp"
 #include "com/sun/star/scanner/ScannerContext.hpp"
 #include "com/sun/star/scanner/XScannerManager.hpp"
+#include "com/sun/star/scanner/XScannerManager2.hpp"
 #include "com/sun/star/script/XEventAttacher.hpp"
 #include "com/sun/star/script/XEventAttacherManager.hpp"
 #include "com/sun/star/script/XLibraryContainer.hpp"
diff --git a/sw/inc/swmodule.hxx b/sw/inc/swmodule.hxx
index dd2b27c..7639237 100644
--- a/sw/inc/swmodule.hxx
+++ b/sw/inc/swmodule.hxx
@@ -72,7 +72,7 @@ struct SwDBData;
 #define VIEWOPT_DEST_VIEW_ONLY  3 //ViewOptions are set only at ::com::sun::star::sdbcx::View, not at the appl.
 
 namespace com{ namespace sun{ namespace star{ namespace scanner{
-    class XScannerManager;
+    class XScannerManager2;
 }}}}
 
 class SW_DLLPUBLIC SwModule: public SfxModule, public SfxListener, public utl::ConfigurationListener
@@ -113,7 +113,7 @@ class SW_DLLPUBLIC SwModule: public SfxModule, public SfxListener, public utl::C
     ::com::sun::star::uno::Reference<
         ::com::sun::star::linguistic2::XLinguServiceEventListener > xLngSvcEvtListener;
     ::com::sun::star::uno::Reference<
-        ::com::sun::star::scanner::XScannerManager >    m_xScannerManager;
+        ::com::sun::star::scanner::XScannerManager2 >    m_xScannerManager;
     ::com::sun::star::uno::Reference<
         ::com::sun::star::linguistic2::XLanguageGuessing >  m_xLanguageGuesser;
 
@@ -242,7 +242,7 @@ public:
     void    CreateLngSvcEvtListener();
 
     ::com::sun::star::uno::Reference<
-        ::com::sun::star::scanner::XScannerManager >
+        ::com::sun::star::scanner::XScannerManager2 >
             GetScannerManager();
 
     ::com::sun::star::uno::Reference<
diff --git a/sw/source/ui/app/swmodule.cxx b/sw/source/ui/app/swmodule.cxx
index 0e50081..fdde311 100644
--- a/sw/source/ui/app/swmodule.cxx
+++ b/sw/source/ui/app/swmodule.cxx
@@ -65,7 +65,7 @@
 #include <svx/extrusioncolorcontrol.hxx>
 #include <svx/fontworkgallery.hxx>
 #include <svx/modctrl.hxx>
-#include <com/sun/star/scanner/XScannerManager.hpp>
+#include <com/sun/star/scanner/XScannerManager2.hpp>
 #include <com/sun/star/container/XSet.hpp>
 #include <comphelper/processfactory.hxx>
 #include <docsh.hxx>
@@ -215,7 +215,7 @@ SwModule::SwModule( SfxObjectFactory* pWebFact,
     // at the view options.
     GetColorConfig();
 }
-uno::Reference< scanner::XScannerManager >
+uno::Reference< scanner::XScannerManager2 >
 SwModule::GetScannerManager()
 {
     if (!m_xScannerManager.is())
@@ -225,10 +225,10 @@ SwModule::GetScannerManager()
         if( xMgr.is() )
         {
             m_xScannerManager =
-                uno::Reference< scanner::XScannerManager >(
+                uno::Reference< scanner::XScannerManager2 >(
                     xMgr->createInstance(
                         rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
-                            "com.sun.star.scanner.ScannerManager")) ),
+                            "com.sun.star.scanner.ScannerManager2")) ),
                     uno::UNO_QUERY );
         }
     }
diff --git a/sw/source/ui/uiview/uivwimp.cxx b/sw/source/ui/uiview/uivwimp.cxx
index aff53fe..cbd8a81 100644
--- a/sw/source/ui/uiview/uivwimp.cxx
+++ b/sw/source/ui/uiview/uivwimp.cxx
@@ -33,7 +33,7 @@
 #include "globals.hrc"
 
 #include <tools/shl.hxx>
-#include <com/sun/star/scanner/XScannerManager.hpp>
+#include <com/sun/star/scanner/XScannerManager2.hpp>
 #include <com/sun/star/datatransfer/clipboard/XClipboardNotifier.hpp>
 #include <com/sun/star/datatransfer/clipboard/XClipboard.hpp>
 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
@@ -131,19 +131,21 @@ void SwView_Impl::ExecuteScan( SfxRequest& rReq )
         case SID_TWAIN_SELECT:
         {
             sal_Bool bDone = sal_False;
-            Reference< XScannerManager > xScanMgr = SW_MOD()->GetScannerManager();
+            Reference< XScannerManager2 > xScanMgr = SW_MOD()->GetScannerManager();
 
             if( xScanMgr.is() )
             {
                 try
                 {
-                    const Sequence< ScannerContext >
+                	SwScannerEventListener& rListener = GetScannerEventListener();
+			const Sequence< ScannerContext >
                         aContexts( xScanMgr->getAvailableScanners() );
 
                     if( aContexts.getLength() )
                     {
+                        Reference< XEventListener > xLstner = &rListener;
                         ScannerContext aContext( aContexts.getConstArray()[ 0 ] );
-                        bDone = xScanMgr->configureScanner( aContext );
+                        bDone = xScanMgr->configureScannerAndScan( aContext, xLstner );
                     }
                 }
                 catch(...)
@@ -164,7 +166,7 @@ void SwView_Impl::ExecuteScan( SfxRequest& rReq )
         {
             sal_Bool bDone = sal_False;
 
-            Reference< XScannerManager > xScanMgr = SW_MOD()->GetScannerManager();
+            Reference< XScannerManager2 > xScanMgr = SW_MOD()->GetScannerManager();
             if( xScanMgr.is() )
             {
                 SwScannerEventListener& rListener = GetScannerEventListener();
diff --git a/sw/source/ui/uiview/view.cxx b/sw/source/ui/uiview/view.cxx
index 14eaf04..8fe2a81 100755
--- a/sw/source/ui/uiview/view.cxx
+++ b/sw/source/ui/uiview/view.cxx
@@ -98,7 +98,7 @@
 #include <editeng/unolingu.hxx>
 #include <com/sun/star/frame/FrameSearchFlag.hpp>
 #include <com/sun/star/scanner/ScannerContext.hpp>
-#include <com/sun/star/scanner/XScannerManager.hpp>
+#include <com/sun/star/scanner/XScannerManager2.hpp>
 #include <toolkit/unohlp.hxx>
 #include <rtl/ustrbuf.hxx>
 #include <xmloff/xmluconv.hxx>
@@ -1684,7 +1684,7 @@ void SwView::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
 
 void SwView::ScannerEventHdl( const EventObject& /*rEventObject*/ )
 {
-    uno::Reference< XScannerManager > xScanMgr = SW_MOD()->GetScannerManager();
+    uno::Reference< XScannerManager2 > xScanMgr = SW_MOD()->GetScannerManager();
     if( xScanMgr.is() )
     {
         const ScannerContext    aContext( xScanMgr->getAvailableScanners().getConstArray()[ 0 ] );
-- 
1.7.0.4

_______________________________________________
LibreOffice mailing list
LibreOffice@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice

Reply via email to