diff options
Diffstat (limited to 'vcl/inc/vcl')
-rw-r--r-- | vcl/inc/vcl/arrange.hxx | 56 | ||||
-rw-r--r-- | vcl/inc/vcl/pdfwriter.hxx | 87 | ||||
-rw-r--r-- | vcl/inc/vcl/prndlg.hxx | 10 | ||||
-rw-r--r-- | vcl/inc/vcl/salframe.hxx | 1 | ||||
-rw-r--r-- | vcl/inc/vcl/salobj.hxx | 2 | ||||
-rw-r--r-- | vcl/inc/vcl/svdata.hxx | 2 | ||||
-rw-r--r-- | vcl/inc/vcl/window.h | 9 | ||||
-rwxr-xr-x[-rw-r--r--] | vcl/inc/vcl/window.hxx | 72 | ||||
-rw-r--r-- | vcl/inc/vcl/wpropset.hxx | 66 |
9 files changed, 243 insertions, 62 deletions
diff --git a/vcl/inc/vcl/arrange.hxx b/vcl/inc/vcl/arrange.hxx index f98197231be9..327494b216e4 100644 --- a/vcl/inc/vcl/arrange.hxx +++ b/vcl/inc/vcl/arrange.hxx @@ -76,11 +76,13 @@ namespace vcl Element( Window* i_pWin, boost::shared_ptr<WindowArranger> const & i_pChild = boost::shared_ptr<WindowArranger>(), - sal_Int32 i_nExpandPriority = 0 + sal_Int32 i_nExpandPriority = 0, + const Size& i_rMinSize = Size() ) : m_pElement( i_pWin ) , m_pChild( i_pChild ) , m_nExpandPriority( i_nExpandPriority ) + , m_aMinSize( i_rMinSize ) , m_bHidden( false ) , m_nLeftBorder( 0 ) , m_nTopBorder( 0 ) @@ -101,12 +103,19 @@ namespace vcl Rectangle m_aManagedArea; long m_nOuterBorder; + rtl::OUString m_aIdentifier; + virtual Element* getElement( size_t i_nIndex ) = 0; const Element* getConstElement( size_t i_nIndex ) const { return const_cast<WindowArranger*>(this)->getElement( i_nIndex ); } public: + static long getDefaultBorder(); + + static long getBorderValue( long nBorder ) + { return nBorder >= 0 ? nBorder : -nBorder * getDefaultBorder(); } + WindowArranger( WindowArranger* i_pParent = NULL ) : m_pParentWindow( i_pParent ? i_pParent->m_pParentWindow : NULL ) , m_pParentArranger( i_pParent ) @@ -141,6 +150,9 @@ namespace vcl virtual bool isVisible() const; // true if any element is visible + virtual com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue > getProperties() const; + virtual void setProperties( const com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue >& ); + sal_Int32 getExpandPriority( size_t i_nIndex ) const { const Element* pEle = getConstElement( i_nIndex ); @@ -173,6 +185,19 @@ namespace vcl } } + void getBorders( size_t i_nIndex, long* i_pLeft = NULL, long* i_pTop = NULL, long* i_pRight = NULL, long* i_pBottom = NULL ) const + { + const Element* pEle = getConstElement( i_nIndex ); + if( pEle ) + { + if( i_pLeft ) *i_pLeft = pEle->m_nLeftBorder; + if( i_pTop ) *i_pTop = pEle->m_nTopBorder; + if( i_pRight ) *i_pRight = pEle->m_nRightBorder; + if( i_pBottom ) *i_pBottom = pEle->m_nBottomBorder; + } + } + + void show( bool i_bShow = true, bool i_bImmediateUpdate = true ); void setManagedArea( const Rectangle& i_rArea ) @@ -187,6 +212,12 @@ namespace vcl m_nOuterBorder = i_nBorder; resize(); } + + const rtl::OUString getIdentifier() const + { return m_aIdentifier; } + + void setIdentifier( const rtl::OUString& i_rId ) + { m_aIdentifier = i_rId; } }; class VCL_DLLPUBLIC RowOrColumn : public WindowArranger @@ -204,7 +235,7 @@ namespace vcl public: RowOrColumn( WindowArranger* i_pParent = NULL, - bool bColumn = true, long i_nBorderWidth = 5 ) + bool bColumn = true, long i_nBorderWidth = -1 ) : WindowArranger( i_pParent ) , m_nBorderWidth( i_nBorderWidth ) , m_bColumn( bColumn ) @@ -218,7 +249,7 @@ namespace vcl // add a managed window at the given index // an index smaller than zero means add the window at the end - size_t addWindow( Window*, sal_Int32 i_nExpandPrio = 0, size_t i_nIndex = ~0 ); + size_t addWindow( Window*, sal_Int32 i_nExpandPrio = 0, const Size& i_rMinSize = Size(), size_t i_nIndex = ~0 ); void remove( Window* ); size_t addChild( boost::shared_ptr<WindowArranger> const &, sal_Int32 i_nExpandPrio = 0, size_t i_nIndex = ~0 ); @@ -248,7 +279,7 @@ namespace vcl } public: - LabeledElement( WindowArranger* i_pParent = NULL, int i_nLabelStyle = 0, long i_nDistance = 5 ) + LabeledElement( WindowArranger* i_pParent = NULL, int i_nLabelStyle = 0, long i_nDistance = -1 ) : WindowArranger( i_pParent ) , m_nDistance( i_nDistance ) , m_nLabelColumnWidth( 0 ) @@ -278,7 +309,7 @@ namespace vcl { long getLabelWidth() const; public: - LabelColumn( WindowArranger* i_pParent = NULL, long i_nBorderWidth = 5 ) + LabelColumn( WindowArranger* i_pParent = NULL, long i_nBorderWidth = -1 ) : RowOrColumn( i_pParent, true, i_nBorderWidth ) {} virtual ~LabelColumn(); @@ -288,7 +319,7 @@ namespace vcl // returns the index of the added label size_t addRow( Window* i_pLabel, boost::shared_ptr<WindowArranger> const& i_rElement, long i_nIndent = 0 ); - size_t addRow( Window* i_pLabel, Window* i_pElement, long i_nIndent = 0 ); + size_t addRow( Window* i_pLabel, Window* i_pElement, long i_nIndent = 0, const Size& i_rElementMinSize = Size() ); }; class VCL_DLLPUBLIC Indenter : public WindowArranger @@ -301,7 +332,7 @@ namespace vcl { return i_nIndex == 0 ? &m_aElement : NULL; } public: - Indenter( WindowArranger* i_pParent = NULL, long i_nIndent = 15 ) + Indenter( WindowArranger* i_pParent = NULL, long i_nIndent = 3*getDefaultBorder() ) : WindowArranger( i_pParent ) , m_nIndent( i_nIndent ) {} @@ -370,9 +401,10 @@ namespace vcl MatrixElement( Window* i_pWin, sal_uInt32 i_nX, sal_uInt32 i_nY, boost::shared_ptr<WindowArranger> const & i_pChild = boost::shared_ptr<WindowArranger>(), - sal_Int32 i_nExpandPriority = 0 + sal_Int32 i_nExpandPriority = 0, + const Size& i_rMinSize = Size() ) - : WindowArranger::Element( i_pWin, i_pChild, i_nExpandPriority ) + : WindowArranger::Element( i_pWin, i_pChild, i_nExpandPriority, i_rMinSize ) , m_nX( i_nX ) , m_nY( i_nY ) { @@ -397,8 +429,8 @@ namespace vcl public: MatrixArranger( WindowArranger* i_pParent = NULL, - long i_nBorderX = 5, - long i_nBorderY = 5 ) + long i_nBorderX = -1, + long i_nBorderY = -1 ) : WindowArranger( i_pParent ) , m_nBorderX( i_nBorderX ) , m_nBorderY( i_nBorderY ) @@ -411,7 +443,7 @@ namespace vcl virtual size_t countElements() const { return m_aElements.size(); } // add a managed window at the given matrix position - size_t addWindow( Window*, sal_uInt32 i_nX, sal_uInt32 i_nY, sal_Int32 i_nExpandPrio = 0 ); + size_t addWindow( Window*, sal_uInt32 i_nX, sal_uInt32 i_nY, sal_Int32 i_nExpandPrio = 0, const Size& i_rMinSize = Size() ); void remove( Window* ); size_t addChild( boost::shared_ptr<WindowArranger> const &, sal_uInt32 i_nX, sal_uInt32 i_nY, sal_Int32 i_nExpandPrio = 0 ); diff --git a/vcl/inc/vcl/pdfwriter.hxx b/vcl/inc/vcl/pdfwriter.hxx index 27dbbfc80c72..52e4b5014120 100644 --- a/vcl/inc/vcl/pdfwriter.hxx +++ b/vcl/inc/vcl/pdfwriter.hxx @@ -38,7 +38,8 @@ #include <vcl/font.hxx> #include <vcl/graphictools.hxx> -#include <com/sun/star/io/XOutputStream.hpp> +#include "com/sun/star/io/XOutputStream.hpp" +#include "com/sun/star/beans/XMaterialHolder.hpp" #include <list> #include <vector> @@ -64,16 +65,6 @@ namespace vcl class PDFExtOutDevData; -struct PDFDocInfo -{ - String Title; // document title - String Author; // document author - String Subject; // subject - String Keywords; // keywords - String Creator; // application that created the original document - String Producer; // OpenOffice -}; - struct PDFNote { String Title; // optional title for the popup containing the note @@ -471,7 +462,7 @@ public: FitVisible, ActionZoom }; -// These emuns are treated as integer while reading/writing to configuration +// These enums are treated as integer while reading/writing to configuration enum PDFPageLayout { DefaultLayout, @@ -492,20 +483,35 @@ public: /* The following structure describes the permissions used in PDF security */ - struct PDFSecPermissions + struct PDFEncryptionProperties { -//for both 40 and 128 bit security, see 3.5.2 PDF v 1.4 table 3.15, v 1.5 and v 1.6 table 3.20. - bool CanPrintTheDocument; + + bool Security128bit; // true to select 128 bit encryption, false for 40 bit + //for both 40 and 128 bit security, see 3.5.2 PDF v 1.4 table 3.15, v 1.5 and v 1.6 table 3.20. + bool CanPrintTheDocument; bool CanModifyTheContent; bool CanCopyOrExtract; bool CanAddOrModify; -//for revision 3 (bit 128 security) only + //for revision 3 (bit 128 security) only bool CanFillInteractive; bool CanExtractForAccessibility; bool CanAssemble; bool CanPrintFull; -//permission default set for 128 bit, accessibility only - PDFSecPermissions() : + + // encryption will only happen if EncryptionKey is not empty + // EncryptionKey is actually a construct out of OValue, UValue and DocumentIdentifier + // if these do not match, behavior is undefined, most likely an invalid PDF will be produced + // OValue, UValue, EncryptionKey and DocumentIdentifier can be computed from + // PDFDocInfo, Owner password and User password used the InitEncryption method which + // implements the algorithms described in the PDF reference chapter 3.5: Encryption + std::vector<sal_uInt8> OValue; + std::vector<sal_uInt8> UValue; + std::vector<sal_uInt8> EncryptionKey; + std::vector<sal_uInt8> DocumentIdentifier; + + //permission default set for 128 bit, accessibility only + PDFEncryptionProperties() : + Security128bit ( true ), CanPrintTheDocument ( false ), CanModifyTheContent ( false ), CanCopyOrExtract ( false ), @@ -515,6 +521,20 @@ The following structure describes the permissions used in PDF security CanAssemble ( false ), CanPrintFull ( false ) {} + + + bool Encrypt() const + { return ! OValue.empty() && ! UValue.empty() && ! DocumentIdentifier.empty(); } + }; + + struct PDFDocInfo + { + String Title; // document title + String Author; // document author + String Subject; // subject + String Keywords; // keywords + String Creator; // application that created the original document + String Producer; // OpenOffice }; struct PDFWriterContext @@ -573,12 +593,8 @@ The following structure describes the permissions used in PDF security sal_Int32 InitialPage; sal_Int32 OpenBookmarkLevels; // -1 means all levels - struct PDFSecPermissions AccessPermissions; - - bool Encrypt; // main encryption flag, must be true to encript - bool Security128bit; // true to select 128 bit encryption, false for 40 bit - rtl::OUString OwnerPassword; // owner password for PDF, in clear text - rtl::OUString UserPassword; // user password for PDF, in clear text + PDFWriter::PDFEncryptionProperties Encryption; + PDFWriter::PDFDocInfo DocumentInfo; com::sun::star::lang::Locale DocumentLocale; // defines the document default language sal_uInt32 DPIx, DPIy; // how to handle MapMode( MAP_PIXEL ) @@ -609,15 +625,13 @@ The following structure describes the permissions used in PDF security FirstPageLeft( false ), InitialPage( 1 ), OpenBookmarkLevels( -1 ), - AccessPermissions( ), - Encrypt( false ), - Security128bit( true ), + Encryption(), DPIx( 0 ), DPIy( 0 ) {} }; - PDFWriter( const PDFWriterContext& rContext ); + PDFWriter( const PDFWriterContext& rContext, const com::sun::star::uno::Reference< com::sun::star::beans::XMaterialHolder >& ); ~PDFWriter(); /** Returns an OutputDevice for formatting @@ -661,17 +675,6 @@ The following structure describes the permissions used in PDF security }; void PlayMetafile( const GDIMetaFile&, const PlayMetafileContext&, vcl::PDFExtOutDevData* pDevDat = NULL ); - /* - * set document info; due to the use of document information in building the PDF document ID, must be called before - * emitting anything. - */ - void SetDocInfo( const PDFDocInfo& rInfo ); - - /* - * get currently set document info - */ - const PDFDocInfo& GetDocInfo() const; - /* sets the document locale originally passed with the context to a new value * only affects the output if used before calling <code>Emit/code>. */ @@ -689,6 +692,12 @@ The following structure describes the permissions used in PDF security PDFVersion GetVersion() const; + static com::sun::star::uno::Reference< com::sun::star::beans::XMaterialHolder > + InitEncryption( const rtl::OUString& i_rOwnerPassword, + const rtl::OUString& i_rUserPassword, + bool b128Bit + ); + /* functions for graphics state */ /* flag values: see vcl/outdev.hxx */ void Push( USHORT nFlags = 0xffff ); diff --git a/vcl/inc/vcl/prndlg.hxx b/vcl/inc/vcl/prndlg.hxx index d53354c40b4a..1d16a2241485 100644 --- a/vcl/inc/vcl/prndlg.hxx +++ b/vcl/inc/vcl/prndlg.hxx @@ -128,7 +128,6 @@ namespace vcl // border around each page CheckBox maBorderCB; - vcl::RowOrColumn maLayout; boost::shared_ptr< vcl::RowOrColumn > mxBrochureDep; boost::shared_ptr< vcl::LabeledElement >mxPagesBtnLabel; @@ -144,7 +143,7 @@ namespace vcl void showAdvancedControls( bool ); - virtual void Resize(); + // virtual void Resize(); }; class JobTabPage : public TabPage @@ -176,7 +175,6 @@ namespace vcl long mnCollateUIMode; - vcl::RowOrColumn maLayout; boost::shared_ptr<vcl::RowOrColumn> mxPrintRange; boost::shared_ptr<vcl::WindowArranger> mxDetails; @@ -186,7 +184,7 @@ namespace vcl void readFromSettings(); void storeToSettings(); - virtual void Resize(); + // virtual void Resize(); void setupLayout(); }; @@ -199,7 +197,6 @@ namespace vcl CheckBox maCollateSingleJobsBox; CheckBox maReverseOrderBox; - vcl::RowOrColumn maLayout; boost::shared_ptr<vcl::RowOrColumn> mxOptGroup; OutputOptPage( Window*, const ResId& ); @@ -208,7 +205,7 @@ namespace vcl void readFromSettings(); void storeToSettings(); - virtual void Resize(); + // virtual void Resize(); void setupLayout(); }; @@ -253,7 +250,6 @@ namespace vcl rtl::OUString maPrintText; rtl::OUString maDefPrtText; - vcl::RowOrColumn maLayout; boost::shared_ptr<vcl::RowOrColumn> mxPreviewCtrls; Size maDetailsCollapsedSize; diff --git a/vcl/inc/vcl/salframe.hxx b/vcl/inc/vcl/salframe.hxx index 08548d7dda40..d82a2099f315 100644 --- a/vcl/inc/vcl/salframe.hxx +++ b/vcl/inc/vcl/salframe.hxx @@ -270,7 +270,6 @@ public: // done setting up the clipregion virtual void EndSetClipRegion() = 0; - // Callbacks (indepent part in vcl/source/window/winproc.cxx) // for default message handling return 0 void SetCallback( Window* pWindow, SALFRAMEPROC pProc ) diff --git a/vcl/inc/vcl/salobj.hxx b/vcl/inc/vcl/salobj.hxx index e453bf5c6f87..adf0e0a3d45d 100644 --- a/vcl/inc/vcl/salobj.hxx +++ b/vcl/inc/vcl/salobj.hxx @@ -73,6 +73,8 @@ public: virtual const SystemEnvData* GetSystemData() const = 0; + virtual void InterceptChildWindowKeyDown( sal_Bool bIntercept ) = 0; + void SetCallback( void* pInst, SALOBJECTPROC pProc ) { m_pInst = pInst; m_pCallback = pProc; } long CallCallback( USHORT nEvent, const void* pEvent ) diff --git a/vcl/inc/vcl/svdata.hxx b/vcl/inc/vcl/svdata.hxx index a4ce806a7e8a..67aa6806be49 100644 --- a/vcl/inc/vcl/svdata.hxx +++ b/vcl/inc/vcl/svdata.hxx @@ -167,6 +167,8 @@ struct ImplSVAppData BOOL mbDialogCancel; // TRUE: Alle Dialog::Execute()-Aufrufe werden mit return FALSE sofort beendet BOOL mbNoYield; // Application::Yield will not wait for events if the queue is empty // essentially that makes it the same as Application::Reschedule + long mnDefaultLayoutBorder; // default value in pixel for layout distances used + // in window arrangers /** Controls whether showing any IME status window is toggled on or off. diff --git a/vcl/inc/vcl/window.h b/vcl/inc/vcl/window.h index ff76874de11a..73b6f1078ca9 100644 --- a/vcl/inc/vcl/window.h +++ b/vcl/inc/vcl/window.h @@ -99,7 +99,10 @@ namespace dnd { class XDropTarget; } } } } } -namespace vcl { struct ControlLayoutData; } +namespace vcl { + struct ControlLayoutData; + struct ExtWindowImpl; +} @@ -237,6 +240,7 @@ public: ImplDelData* mpFirstDel; void* mpUserData; + vcl::ExtWindowImpl* mpExtImpl; Cursor* mpCursor; Pointer maPointer; Fraction maZoom; @@ -353,7 +357,8 @@ public: mbDisableAccessibleLabelForRelation:1, mbDisableAccessibleLabeledByRelation:1, mbHelpTextDynamic:1, - mbFakeFocusSet:1; + mbFakeFocusSet:1, + mbInterceptChildWindowKeyDown:1; ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > mxDNDListenerContainer; }; diff --git a/vcl/inc/vcl/window.hxx b/vcl/inc/vcl/window.hxx index d209becfb4ae..fa136f6d514d 100644..100755 --- a/vcl/inc/vcl/window.hxx +++ b/vcl/inc/vcl/window.hxx @@ -50,6 +50,7 @@ #include <rtl/ustring.hxx> #include <cppuhelper/weakref.hxx> #include <com/sun/star/uno/Reference.hxx> +#include <boost/shared_ptr.hpp> class VirtualDevice; struct ImplDelData; @@ -94,6 +95,13 @@ namespace accessibility { namespace com { namespace sun { namespace star { +namespace beans { + struct PropertyValue; +}}}} + +namespace com { +namespace sun { +namespace star { namespace rendering { class XCanvas; class XSpriteCanvas; @@ -121,7 +129,11 @@ namespace dnd { class XDropTarget; } } } } } -namespace vcl { struct ControlLayoutData; } +namespace vcl { + struct ControlLayoutData; + class WindowArranger; + struct ExtWindowImpl; +} namespace svt { class PopupWindowControllerImpl; } @@ -475,6 +487,10 @@ public: SAL_DLLPRIVATE BOOL ImplUpdatePos(); SAL_DLLPRIVATE void ImplUpdateSysObjPos(); SAL_DLLPRIVATE WindowImpl* ImplGetWindowImpl() const { return mpWindowImpl; } + SAL_DLLPRIVATE void ImplFreeExtWindowImpl(); + // creates ExtWindowImpl on demand, but may return NULL (e.g. if mbInDtor) + SAL_DLLPRIVATE vcl::ExtWindowImpl* ImplGetExtWindowImpl() const; + SAL_DLLPRIVATE void ImplDeleteOwnedChildren(); /** check whether a font is suitable for UI The font to be tested will be checked whether it could display a @@ -540,6 +556,7 @@ public: SAL_DLLPRIVATE BOOL ImplRegisterAccessibleNativeFrame(); SAL_DLLPRIVATE void ImplRevokeAccessibleNativeFrame(); SAL_DLLPRIVATE void ImplCallResize(); + SAL_DLLPRIVATE void ImplExtResize(); SAL_DLLPRIVATE void ImplCallMove(); SAL_DLLPRIVATE Rectangle ImplOutputToUnmirroredAbsoluteScreenPixel( const Rectangle& rRect ) const; SAL_DLLPRIVATE void ImplMirrorFramePos( Point &pt ) const; @@ -1097,8 +1114,61 @@ public: */ void doLazyDelete(); + // let the window intercept the KeyDown messages of the system children + void InterceptChildWindowKeyDown( sal_Bool bIntercept ); + virtual XubString GetSurroundingText() const; virtual Selection GetSurroundingTextSelection() const; + + // ExtImpl + + // layouting + boost::shared_ptr< vcl::WindowArranger > getLayout(); + + /* add a child Window + addWindow will do the following things + - insert the passed window into the child list (equivalent to i_pWin->SetParent( this )) + - mark the window as "owned", meaning that the added Window will be destroyed by + the parent's desctructor. + This means: do not pass in member windows or stack objects here. Do not cause + the destructor of the added window to be called in any way. + + to avoid ownership pass i_bTakeOwnership as "false" + */ + void addWindow( Window* i_pWin, bool i_bTakeOwnership = true ); + + /* remove a child Window + the remove window functions will + - reparent the searched window (equivalent to i_pWin->SetParent( i_pNewParent )) + - return a pointer to the removed window or NULL if i_pWin was not found + caution: ownership passes to the new parent or the caller, if the new parent was NULL + */ + Window* removeWindow( Window* i_pWin, Window* i_pNewParent = NULL ); + + /* return the identifier of this window + */ + const rtl::OUString& getIdentifier() const; + /* set an identifier + identifiers have only loosely defined rules per se + in context of Window they must be unique over the window + hierarchy you'd like to find them again using the findWindow method + */ + void setIdentifier( const rtl::OUString& ); + + /* returns the first found descendant that matches + the passed identifier or NULL + */ + Window* findWindow( const rtl::OUString& ) const; + + /* get/set properties + this will contain window properties (like visible, enabled) + as well as properties of derived classes (e.g. text of Edit fields) + */ + virtual com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue > getProperties() const; + /* + */ + virtual void setProperties( const com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue >& ); + }; diff --git a/vcl/inc/vcl/wpropset.hxx b/vcl/inc/vcl/wpropset.hxx new file mode 100644 index 000000000000..409b629496e6 --- /dev/null +++ b/vcl/inc/vcl/wpropset.hxx @@ -0,0 +1,66 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef VCL_WPROPSET_HXX +#define VCL_WPROPSET_HXX + +#include "vcl/dllapi.h" + +#include "tools/link.hxx" +#include "vcl/arrange.hxx" + +#include "com/sun/star/beans/XPropertySet.hpp" + +class VclWindowEvent; + +namespace vcl +{ + class WindowPropertySetData; + class WindowPropertySetListener; + + class VCL_DLLPUBLIC WindowPropertySet + { + WindowPropertySetData* mpImpl; + + void addWindowToSet( Window* ); + void addLayoutToSet( const boost::shared_ptr<WindowArranger>& ); + void setupProperties(); + + DECL_LINK( ChildEventListener, VclWindowEvent* ); + + void propertyChange( const com::sun::star::beans::PropertyChangeEvent& ); + friend class vcl::WindowPropertySetListener; + + public: + WindowPropertySet( Window* i_pTopWindow, bool i_bTakeOwnership ); + ~WindowPropertySet(); + + com::sun::star::uno::Reference< com::sun::star::beans::XPropertySet > getPropertySet() const; + }; +} + +#endif |