Modified: openoffice/trunk/main/sdext/source/minimizer/unodialog.cxx URL: http://svn.apache.org/viewvc/openoffice/trunk/main/sdext/source/minimizer/unodialog.cxx?rev=1468299&r1=1468298&r2=1468299&view=diff ============================================================================== --- openoffice/trunk/main/sdext/source/minimizer/unodialog.cxx (original) +++ openoffice/trunk/main/sdext/source/minimizer/unodialog.cxx Tue Apr 16 03:55:34 2013 @@ -25,20 +25,23 @@ #include "precompiled_sdext.hxx" #include "unodialog.hxx" -#include <com/sun/star/text/XTextRange.hpp> -#include <com/sun/star/drawing/XShapes.hpp> + +#include <com/sun/star/awt/MessageBoxButtons.hpp> +#include <com/sun/star/awt/XVclWindowPeer.hpp> +#include <com/sun/star/awt/PosSize.hpp> +#include <com/sun/star/awt/XMessageBoxFactory.hpp> +#include <com/sun/star/awt/XStyleSettingsSupplier.hpp> #include <com/sun/star/container/XIndexAccess.hpp> -#include <com/sun/star/view/XSelectionSupplier.hpp> -#include <com/sun/star/view/XControlAccess.hpp> +#include <com/sun/star/drawing/XShapes.hpp> #include <com/sun/star/frame/XDispatch.hpp> -#include <com/sun/star/awt/XMessageBoxFactory.hpp> -#include <com/sun/star/awt/MessageBoxButtons.hpp> +#include <com/sun/star/text/XTextRange.hpp> +#include <com/sun/star/view/XControlAccess.hpp> +#include <com/sun/star/view/XSelectionSupplier.hpp> // ------------- // - UnoDialog - // ------------- -using namespace ::rtl; using namespace ::com::sun::star::awt; using namespace ::com::sun::star::uno; using namespace ::com::sun::star::util; @@ -48,44 +51,58 @@ using namespace ::com::sun::star::frame; using namespace ::com::sun::star::beans; using namespace ::com::sun::star::script; -UnoDialog::UnoDialog( const Reference< XComponentContext > &rxMSF, Reference< XFrame >& rxFrame ) : - mxMSF( rxMSF ), - mxController( rxFrame->getController() ), - mxDialogModel( mxMSF->getServiceManager()->createInstanceWithContext( OUString( RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.awt.UnoControlDialogModel" ) ), mxMSF ), UNO_QUERY_THROW ), +using ::rtl::OUString; + +UnoDialog::UnoDialog( + const Reference< XComponentContext > &rxContext, + const Reference< XWindowPeer >& rxParent ) : + mxContext( rxContext ), + mxParent( rxParent ), + mxDialogModel( mxContext->getServiceManager()->createInstanceWithContext( OUString( RTL_CONSTASCII_USTRINGPARAM( + "com.sun.star.awt.UnoControlDialogModel" ) ), mxContext ), UNO_QUERY_THROW ), mxDialogModelMultiPropertySet( mxDialogModel, UNO_QUERY_THROW ), mxDialogModelPropertySet( mxDialogModel, UNO_QUERY_THROW ), mxDialogModelMSF( mxDialogModel, UNO_QUERY_THROW ), mxDialogModelNameContainer( mxDialogModel, UNO_QUERY_THROW ), mxDialogModelNameAccess( mxDialogModel, UNO_QUERY_THROW ), mxControlModel( mxDialogModel, UNO_QUERY_THROW ), - mxDialog( mxMSF->getServiceManager()->createInstanceWithContext( OUString( RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.awt.UnoControlDialog" ) ), mxMSF ), UNO_QUERY_THROW ), + mxDialog( mxContext->getServiceManager()->createInstanceWithContext( OUString( RTL_CONSTASCII_USTRINGPARAM( + "com.sun.star.awt.UnoControlDialog" ) ), mxContext ), UNO_QUERY_THROW ), mxControl( mxDialog, UNO_QUERY_THROW ), mbStatus( sal_False ) { + OSL_TRACE("UnoDialog::UnoDialog"); mxControl->setModel( mxControlModel ); mxDialogControlContainer = Reference< XControlContainer >( mxDialog, UNO_QUERY_THROW ); - mxDialogComponent = Reference< XComponent >( mxDialog, UNO_QUERY_THROW ); - mxDialogWindow = Reference< XWindow >( mxDialog, UNO_QUERY_THROW ); - - Reference< XFrame > xFrame( mxController->getFrame() ); - Reference< XWindow > xContainerWindow( xFrame->getContainerWindow() ); - mxWindowPeer = Reference< XWindowPeer >( xContainerWindow, UNO_QUERY_THROW ); - createWindowPeer( mxWindowPeer ); + mxDialogWindow = Reference< XWindow >( mxDialog, UNO_QUERY ); + mxDialogWindowPeer = createWindowPeer(); } // ----------------------------------------------------------------------------- UnoDialog::~UnoDialog() { - + OSL_TRACE("UnoDialog::~UnoDialog"); + Reference< XComponent > xComponent( mxDialog, UNO_QUERY ); + if ( xComponent.is() ) + { + xComponent->dispose(); + } } // ----------------------------------------------------------------------------- +void UnoDialog::setTitle( const rtl::OUString &rTitle ) +{ + if ( rTitle.getLength() ) + { + mxDialog->setTitle( rTitle ); + } +} + void UnoDialog::execute() { + OSL_TRACE("UnoDialog::execute"); mxDialogWindow->setEnable( sal_True ); mxDialogWindow->setVisible( sal_True ); mxDialog->execute(); @@ -93,22 +110,55 @@ void UnoDialog::execute() void UnoDialog::endExecute( sal_Bool bStatus ) { + OSL_TRACE("UnoDialog::endExecute"); mbStatus = bStatus; mxDialog->endExecute(); } +void UnoDialog::centerDialog() +{ + Reference< XWindow > xParent( mxParent, UNO_QUERY ); + if ( !xParent.is() ) + return; + + Rectangle aParentPosSize = xParent->getPosSize(); + Rectangle aWinPosSize = mxDialogWindow->getPosSize(); + Point aWinPos((aParentPosSize.Width - aWinPosSize.Width) / 2, + (aParentPosSize.Height - aWinPosSize.Height) / 2); + + if ( ( aWinPos.X + aWinPosSize.Width ) > ( aParentPosSize.X + aParentPosSize.Width ) ) + aWinPos.X = aParentPosSize.X + aParentPosSize.Width - aWinPosSize.Width; + + if ( ( aWinPos.Y + aWinPosSize.Height ) > ( aParentPosSize.Y + aParentPosSize.Height ) ) + aWinPos.Y = aParentPosSize.Y + aParentPosSize.Height - aWinPosSize.Height; + + mxDialogWindow->setPosSize( aWinPos.X, aWinPos.Y, + aWinPosSize.Width, + aWinPosSize.Height, + PosSize::POS ); +} + // ----------------------------------------------------------------------------- -Reference< XWindowPeer > UnoDialog::createWindowPeer( Reference< XWindowPeer > xParentPeer ) +Reference< XWindowPeer > UnoDialog::createWindowPeer() throw ( Exception ) { - mxDialogWindow->setVisible( sal_False ); - Reference< XToolkit > xToolkit( mxMSF->getServiceManager()->createInstanceWithContext( OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.Toolkit" ) ), mxMSF ), UNO_QUERY_THROW ); - if ( !xParentPeer.is() ) - xParentPeer = xToolkit->getDesktopWindow(); + mxDialogWindow->setVisible( sal_False ); + + // reuse the parent's toolkit + Reference< XToolkit > xToolkit; + if ( mxParent.is() ) + xToolkit.set( mxParent->getToolkit() ); + + if ( !xToolkit.is() ) + xToolkit.set( mxContext->getServiceManager()->createInstanceWithContext( + OUString( RTL_CONSTASCII_USTRINGPARAM( + "com.sun.star.awt.Toolkit" ) ), mxContext ), + UNO_QUERY_THROW ); + mxReschedule = Reference< XReschedule >( xToolkit, UNO_QUERY ); - mxControl->createPeer( xToolkit, xParentPeer ); -// xWindowPeer = xControl.getPeer(); + mxControl->createPeer( xToolkit, mxParent ); + return mxControl->getPeer(); } @@ -153,14 +203,9 @@ sal_Bool UnoDialog::isHighContrast() sal_Bool bHighContrast = sal_False; try { - sal_Int32 nBackgroundColor = 0; - if ( mxDialogModelPropertySet->getPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "BackgroundColor" ) ) ) >>= nBackgroundColor ) - { - sal_uInt8 nLum( static_cast< sal_uInt8 >( ( static_cast< sal_uInt8 >( nBackgroundColor >> 16 ) * 28 + - static_cast< sal_uInt8 >( nBackgroundColor >> 8 ) * 151 + - static_cast< sal_uInt8 >( nBackgroundColor ) * 77 ) >> 8 ) ); - bHighContrast = nLum <= 38; - } + Reference< XStyleSettingsSupplier > xStyleSettingsSuppl( mxDialogWindow, UNO_QUERY_THROW ); + Reference< XStyleSettings > xStyleSettings( xStyleSettingsSuppl->getStyleSettings() ); + bHighContrast = xStyleSettings->getHighContrastMode(); } catch( Exception& ) {
Modified: openoffice/trunk/main/sdext/source/minimizer/unodialog.hxx URL: http://svn.apache.org/viewvc/openoffice/trunk/main/sdext/source/minimizer/unodialog.hxx?rev=1468299&r1=1468298&r2=1468299&view=diff ============================================================================== --- openoffice/trunk/main/sdext/source/minimizer/unodialog.hxx (original) +++ openoffice/trunk/main/sdext/source/minimizer/unodialog.hxx Tue Apr 16 03:55:34 2013 @@ -26,9 +26,7 @@ #include <com/sun/star/uno/Sequence.h> #include <com/sun/star/lang/XSingleServiceFactory.hpp> -#ifndef _COM_SUN_STAR_LANG_XMULTI_COMPONENT_FACTORY_HPP_ #include <com/sun/star/lang/XMultiServiceFactory.hpp> -#endif #include <com/sun/star/container/XIndexContainer.hpp> #include <com/sun/star/frame/XController.hpp> #include <com/sun/star/frame/XFrame.hpp> @@ -53,9 +51,6 @@ #include <com/sun/star/awt/XReschedule.hpp> #include <com/sun/star/awt/XDialog.hpp> #include <com/sun/star/awt/Size.hpp> -#include <cppuhelper/implbase1.hxx> -#include <cppuhelper/implbase2.hxx> -#include <cppuhelper/implbase3.hxx> // ------------- // - UnoDialog - @@ -67,23 +62,24 @@ class UnoDialog { public : - UnoDialog( const com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >& rxMSF, com::sun::star::uno::Reference< com::sun::star::frame::XFrame >& rxFrame ); - ~UnoDialog(); + UnoDialog( const com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >& rxContext, + const com::sun::star::uno::Reference< com::sun::star::awt::XWindowPeer >& rxParent); + virtual ~UnoDialog(); + void execute(); + void endExecute( sal_Bool bStatus ); + void setTitle( const rtl::OUString &rTitle); + +protected: + void setVisible( const rtl::OUString& rName, sal_Bool bVisible ); + sal_Int32 getMapsFromPixels( sal_Int32 nPixels ) const; + sal_Bool isHighContrast(); + void centerDialog(); - void execute(); - void endExecute( sal_Bool bStatus ); - - com::sun::star::uno::Reference< com::sun::star::awt::XWindowPeer > createWindowPeer( com::sun::star::uno::Reference< com::sun::star::awt::XWindowPeer > xParentPeer ) - throw ( com::sun::star::uno::Exception ); + com::sun::star::uno::Reference< com::sun::star::awt::XWindowPeer > createWindowPeer() throw ( com::sun::star::uno::Exception ); com::sun::star::uno::Reference< com::sun::star::uno::XInterface > insertControlModel( const rtl::OUString& rServiceName, const rtl::OUString& rName, const com::sun::star::uno::Sequence< rtl::OUString >& rPropertyNames, const com::sun::star::uno::Sequence< com::sun::star::uno::Any >& rPropertyValues ); - void setVisible( const rtl::OUString& rName, sal_Bool bVisible ); - - sal_Bool isHighContrast(); - - sal_Int32 getMapsFromPixels( sal_Int32 nPixels ) const; com::sun::star::uno::Reference< com::sun::star::awt::XButton > insertButton( const rtl::OUString& rName, com::sun::star::uno::Reference< com::sun::star::awt::XActionListener > xActionListener, const com::sun::star::uno::Sequence< rtl::OUString >& rPropertyNames, @@ -112,15 +108,13 @@ public : void setControlProperty( const rtl::OUString& rControlName, const rtl::OUString& rPropertyName, const com::sun::star::uno::Any& rPropertyValue ); com::sun::star::uno::Any getControlProperty( const rtl::OUString& rControlName, const rtl::OUString& rPropertyName ); -#if 0 - void showMessageBox( const rtl::OUString& rTitle, const rtl::OUString& rMessage, sal_Bool bErrorBox ) const; -#endif void enableControl( const rtl::OUString& rControlName ); void disableControl( const rtl::OUString& rControlName ); - com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > mxMSF; - com::sun::star::uno::Reference< com::sun::star::frame::XController > mxController; - com::sun::star::uno::Reference< com::sun::star::awt::XReschedule > mxReschedule; +protected: + + com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > mxContext; + com::sun::star::uno::Reference< com::sun::star::awt::XWindowPeer > mxParent; com::sun::star::uno::Reference< com::sun::star::uno::XInterface > mxDialogModel; com::sun::star::uno::Reference< com::sun::star::beans::XMultiPropertySet > mxDialogModelMultiPropertySet; @@ -128,18 +122,16 @@ public : com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory > mxDialogModelMSF; com::sun::star::uno::Reference< com::sun::star::container::XNameContainer > mxDialogModelNameContainer; com::sun::star::uno::Reference< com::sun::star::container::XNameAccess > mxDialogModelNameAccess; - com::sun::star::uno::Reference< com::sun::star::awt::XControlModel > mxControlModel; - com::sun::star::uno::Reference< com::sun::star::awt::XDialog > mxDialog; com::sun::star::uno::Reference< com::sun::star::awt::XControl > mxControl; - com::sun::star::uno::Reference< com::sun::star::awt::XWindowPeer > mxWindowPeer; + sal_Bool mbStatus; com::sun::star::uno::Reference< com::sun::star::awt::XControlContainer > mxDialogControlContainer; - com::sun::star::uno::Reference< com::sun::star::lang::XComponent > mxDialogComponent; com::sun::star::uno::Reference< com::sun::star::awt::XWindow > mxDialogWindow; + com::sun::star::uno::Reference< com::sun::star::awt::XWindowPeer > mxDialogWindowPeer; - sal_Bool mbStatus; + com::sun::star::uno::Reference< com::sun::star::awt::XReschedule > mxReschedule; }; #endif // UNODIALOG_HXX Modified: openoffice/trunk/main/set_soenv.in URL: http://svn.apache.org/viewvc/openoffice/trunk/main/set_soenv.in?rev=1468299&r1=1468298&r2=1468299&view=diff ============================================================================== --- openoffice/trunk/main/set_soenv.in (original) +++ openoffice/trunk/main/set_soenv.in Tue Apr 16 03:55:34 2013 @@ -1676,7 +1676,6 @@ ToFile( "ENABLE_CAIRO", "@ENABLE_CA ToFile( "ENABLE_CAIRO_CANVAS", "@ENABLE_CAIRO_CANVAS@", "e" ); ToFile( "ENABLE_OPENGL", "@ENABLE_OPENGL@", "e" ); ToFile( "ENABLE_PDFIMPORT", "@ENABLE_PDFIMPORT@", "e" ); -ToFile( "ENABLE_MINIMIZER", "@ENABLE_MINIMIZER@","e" ); ToFile( "ENABLE_PRESENTER_SCREEN","@ENABLE_PRESENTER_SCREEN@","e" ); ToFile( "ENABLE_REPORTBUILDER","@ENABLE_REPORTBUILDER@","e" ); ToFile( "SYSTEM_JFREEREPORT","@SYSTEM_JFREEREPORT@","e" );
