summaryrefslogtreecommitdiff
path: root/extensions
diff options
context:
space:
mode:
authorRob Snelders <programming@ertai.nl>2011-10-20 21:25:46 +0200
committerStephan Bergmann <sbergman@redhat.com>2011-10-20 23:04:13 +0200
commit638804f7e2c26047da15af26dfb8eb35b9ee0feb (patch)
treeeb4f9723e24b263ceb9a62e1175e0542d0f6efd6 /extensions
parentfecde94354a46463d346a1a78962f39a5a6f9eb8 (diff)
Added a scanbutton to the scan-dialog
Diffstat (limited to 'extensions')
-rw-r--r--extensions/inc/pch/precompiled_extensions.hxx2
-rw-r--r--extensions/source/scanner/sanedlg.cxx17
-rw-r--r--extensions/source/scanner/sanedlg.hrc1
-rw-r--r--extensions/source/scanner/sanedlg.hxx7
-rw-r--r--extensions/source/scanner/sanedlg.src7
-rw-r--r--extensions/source/scanner/scanner.cxx8
-rw-r--r--extensions/source/scanner/scanner.hxx7
-rw-r--r--extensions/source/scanner/scanunx.cxx46
-rw-r--r--extensions/source/scanner/scanwin.cxx2
-rw-r--r--extensions/source/scanner/scn.component2
10 files changed, 69 insertions, 30 deletions
diff --git a/extensions/inc/pch/precompiled_extensions.hxx b/extensions/inc/pch/precompiled_extensions.hxx
index 4582abbdb282..7b266a1a7e6e 100644
--- a/extensions/inc/pch/precompiled_extensions.hxx
+++ b/extensions/inc/pch/precompiled_extensions.hxx
@@ -271,7 +271,7 @@
#include "com/sun/star/registry/XSimpleRegistry.hpp"
#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 39b88620d5d9..c83406fec628 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, 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 ) ),
@@ -86,7 +88,8 @@ SaneDlg::SaneDlg( Window* pParent, Sane& rSane ) :
maStringEdit( this, SaneResId( RID_SCAN_STRING_OPTION_EDT ) ),
maNumericEdit( this, SaneResId( RID_SCAN_NUMERIC_OPTION_EDT ) ),
maOptionBox( this, SaneResId( RID_SCAN_OPTION_BOX ) ),
- mpRange( 0 )
+ mpRange( 0 ),
+ doScan( false )
{
if( Sane::IsSane() )
{
@@ -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,14 @@ 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 );
+ doScan = (pButton == &maScanButton);
}
else if( pButton == &maCancelButton )
{
@@ -1376,4 +1382,9 @@ sal_Bool SaneDlg::SetAdjustedNumericalValue(
return sal_True;
}
+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 ca893122c9a9..2c20ad1c6fd3 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 c3f72eafaebe..b7fe581293e0 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;
+ 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;
+ 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&, bool );
~SaneDlg();
virtual short Execute();
+ bool getDoScan();
};
diff --git a/extensions/source/scanner/sanedlg.src b/extensions/source/scanner/sanedlg.src
index 961f0ed39cf1..fc17d3e219f4 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 e833c4f1d56d..ea5e49e132f9 100644
--- a/extensions/source/scanner/scanner.cxx
+++ b/extensions/source/scanner/scanner.cxx
@@ -59,7 +59,7 @@ ScannerManager::~ScannerManager()
ANY SAL_CALL ScannerManager::queryInterface( const Type& rType ) throw( RuntimeException )
{
const ANY aRet( cppu::queryInterface( rType,
- static_cast< XScannerManager* >( this ),
+ static_cast< XScannerManager2* >( this ),
static_cast< AWT::XBitmap* >( this ) ) );
return( aRet.hasValue() ? aRet : OWeakObject::queryInterface( rType ) );
@@ -104,4 +104,10 @@ SEQ( OUString ) ScannerManager::getSupportedServiceNames_Static() throw ()
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 abe2ae3694c8..f1b5ab509332 100644
--- a/extensions/source/scanner/scanner.hxx
+++ b/extensions/source/scanner/scanner.hxx
@@ -39,7 +39,7 @@
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
#include <com/sun/star/lang/XEventListener.hpp>
#include <com/sun/star/lang/EventObject.hpp>
-#include <com/sun/star/scanner/XScannerManager.hpp>
+#include <com/sun/star/scanner/XScannerManager2.hpp>
#include <com/sun/star/scanner/ScannerException.hpp>
using namespace cppu;
@@ -61,7 +61,7 @@ using ::rtl::OUString;
// - ScannerManager -
// ------------------
-class ScannerManager : public OWeakObject, XScannerManager, AWT::XBitmap
+class ScannerManager : public OWeakObject, XScannerManager2, AWT::XBitmap
{
protected:
@@ -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 1f481f668a7e..286f40bb1e28 100644
--- a/extensions/source/scanner/scanunx.cxx
+++ b/extensions/source/scanner/scanunx.cxx
@@ -278,34 +278,42 @@ 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;
+ bool bRet;
+ bool bScan;
+ {
+ osl::MutexGuard aGuard( theSaneProtector::get() );
+ sanevec &rSanes = theSanes::get().m_aSanes;
#if OSL_DEBUG_LEVEL > 1
- fprintf( stderr, "ScannerManager::configureScanner\n" );
+ fprintf( stderr, "ScannerManager::configureScanner\n" );
#endif
- if( scanner_context.InternalData < 0 || (sal_uLong)scanner_context.InternalData >= rSanes.size() )
- throw ScannerException(
- ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Scanner does not exist")),
- REF( XScannerManager )( this ),
- ScanError_InvalidContext
+ if( scanner_context.InternalData < 0 || (sal_uLong)scanner_context.InternalData >= rSanes.size() )
+ throw ScannerException(
+ ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Scanner does not exist")),
+ REF( XScannerManager )( this ),
+ ScanError_InvalidContext
);
- boost::shared_ptr<SaneHolder> pHolder = rSanes[scanner_context.InternalData];
- if( pHolder->m_bBusy )
- throw ScannerException(
- ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Scanner is busy")),
- REF( XScannerManager )( this ),
- ScanError_ScanInProgress
+ boost::shared_ptr<SaneHolder> pHolder = rSanes[scanner_context.InternalData];
+ if( pHolder->m_bBusy )
+ throw ScannerException(
+ ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Scanner is busy")),
+ REF( XScannerManager )( this ),
+ ScanError_ScanInProgress
);
- pHolder->m_bBusy = true;
- SaneDlg aDlg( NULL, pHolder->m_aSane );
- sal_Bool bRet = (sal_Bool)aDlg.Execute();
- pHolder->m_bBusy = false;
+ pHolder->m_bBusy = true;
+ SaneDlg aDlg( NULL, pHolder->m_aSane, listener.is() );
+ bRet = aDlg.Execute();
+ 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 5f6d47e44e48..7a7c86bf8676 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 >& )
throw( ScannerException )
{
osl::MutexGuard aGuard( maProtector );
diff --git a/extensions/source/scanner/scn.component b/extensions/source/scanner/scn.component
index d7daf3ae36d4..076b745bd56e 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">
+ <implementation name="com.sun.star.scanner.ScannerManager">
<service name="com.sun.star.scanner.ScannerManager"/>
</implementation>
</component>