diff options
Diffstat (limited to 'vcl/inc/vcl/dialog.hxx')
-rw-r--r-- | vcl/inc/vcl/dialog.hxx | 164 |
1 files changed, 164 insertions, 0 deletions
diff --git a/vcl/inc/vcl/dialog.hxx b/vcl/inc/vcl/dialog.hxx new file mode 100644 index 000000000000..f34db3a2a5db --- /dev/null +++ b/vcl/inc/vcl/dialog.hxx @@ -0,0 +1,164 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: dialog.hxx,v $ + * $Revision: 1.3 $ + * + * 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 _SV_DIALOG_HXX +#define _SV_DIALOG_HXX + +#include <vcl/sv.h> +#include <vcl/dllapi.h> +#include <vcl/syswin.hxx> + +// parameter to pass to the dialogue constructor if really no parent is wanted +// whereas NULL chooses the deafult dialogue parent +#define DIALOG_NO_PARENT ((Window*)0xffffffff) + +// ---------- +// - Dialog - +// ---------- + +struct DialogImpl; + +class VCL_DLLPUBLIC Dialog : public SystemWindow +{ +private: + Window* mpDialogParent; + Dialog* mpPrevExecuteDlg; + DialogImpl* mpDialogImpl; + long mnMousePositioned; + BOOL mbInExecute; + BOOL mbOldSaveBack; + BOOL mbInClose; + BOOL mbModalMode; + + SAL_DLLPRIVATE void ImplInitDialogData(); + SAL_DLLPRIVATE void ImplInitSettings(); + +//#if 0 // _SOLAR__PRIVATE + // Copy assignment is forbidden and not implemented. + SAL_DLLPRIVATE Dialog (const Dialog &); + SAL_DLLPRIVATE Dialog & operator= (const Dialog &); + +protected: + using Window::ImplInit; + SAL_DLLPRIVATE void ImplInit( Window* pParent, WinBits nStyle ); + SAL_DLLPRIVATE void ImplDialogRes( const ResId& rResId ); + SAL_DLLPRIVATE void ImplCenterDialog(); + +public: + SAL_DLLPRIVATE BOOL IsInClose() const { return mbInClose; } +//#endif + +protected: + Dialog( WindowType nType ); + virtual void Draw( OutputDevice* pDev, const Point& rPos, const Size& rSize, ULONG nFlags ); + +public: + Dialog( Window* pParent, WinBits nStyle = WB_STDDIALOG ); + Dialog( Window* pParent, const ResId& rResId ); + virtual ~Dialog(); + + virtual long Notify( NotifyEvent& rNEvt ); + virtual void StateChanged( StateChangedType nStateChange ); + virtual void DataChanged( const DataChangedEvent& rDCEvt ); + + virtual BOOL Close(); + + virtual short Execute(); + BOOL IsInExecute() const { return mbInExecute; } + + //////////////////////////////////////// + // Dialog::Execute replacement API +public: + // Link impl: DECL_LINK( MyEndDialogHdl, Dialog* ); <= param is dialog just ended + virtual void StartExecuteModal( const Link& rEndDialogHdl ); + BOOL IsStartedModal() const; + long GetResult() const; +private: + BOOL ImplStartExecuteModal(); + void ImplEndExecuteModal(); +public: + + // Dialog::Execute replacement API + //////////////////////////////////////// + + void EndDialog( long nResult = 0 ); + static void EndAllDialogs( Window* pParent=NULL ); + + void GetDrawWindowBorder( sal_Int32& rLeftBorder, sal_Int32& rTopBorder, + sal_Int32& rRightBorder, sal_Int32& rBottomBorder ) const; + + void SetModalInputMode( BOOL bModal ); + void SetModalInputMode( BOOL bModal, BOOL bSubModalDialogs ); + BOOL IsModalInputMode() const { return mbModalMode; } + + void GrabFocusToFirstControl(); +}; + +// ------------------ +// - ModelessDialog - +// ------------------ + +class VCL_DLLPUBLIC ModelessDialog : public Dialog +{ +//#if 0 // _SOLAR__PRIVATE + // Copy assignment is forbidden and not implemented. + SAL_DLLPRIVATE ModelessDialog (const ModelessDialog &); + SAL_DLLPRIVATE ModelessDialog & operator= (const ModelessDialog &); +//#endif + +public: + ModelessDialog( Window* pParent, WinBits nStyle = WB_STDMODELESS ); + ModelessDialog( Window* pParent, const ResId& rResId ); +}; + +// --------------- +// - ModalDialog - +// --------------- + +class VCL_DLLPUBLIC ModalDialog : public Dialog +{ +public: + ModalDialog( Window* pParent, WinBits nStyle = WB_STDMODAL ); + ModalDialog( Window* pParent, const ResId& rResId ); + +private: + using Window::Show; + void Show( BOOL bVisible = TRUE ); + using Window::Hide; + void Hide(); + +//#if 0 // _SOLAR__PRIVATE + // Copy assignment is forbidden and not implemented. + SAL_DLLPRIVATE ModalDialog (const ModalDialog &); + SAL_DLLPRIVATE ModalDialog & operator= (const ModalDialog &); +//#endif +}; + +#endif // _SV_DIALOG_HXX |