/************************************************************** * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * *************************************************************/ #ifndef _SV_DIALOG_HXX #define _SV_DIALOG_HXX #include #include #include // 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; sal_Bool mbInExecute; sal_Bool mbOldSaveBack; sal_Bool mbInClose; sal_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 &); DECL_DLLPRIVATE_LINK( ImplAsyncCloseHdl, void* ); 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 sal_Bool IsInClose() const { return mbInClose; } //#endif protected: Dialog( WindowType nType ); virtual void Draw( OutputDevice* pDev, const Point& rPos, const Size& rSize, sal_uLong nFlags ); public: explicit Dialog( Window* pParent, WinBits nStyle = WB_STDDIALOG ); explicit Dialog( Window* pParent, const ResId& ); virtual ~Dialog(); virtual long Notify( NotifyEvent& rNEvt ); virtual void StateChanged( StateChangedType nStateChange ); virtual void DataChanged( const DataChangedEvent& rDCEvt ); virtual sal_Bool Close(); virtual short Execute(); sal_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 ); sal_Bool IsStartedModal() const; long GetResult() const; private: sal_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( sal_Bool bModal ); void SetModalInputMode( sal_Bool bModal, sal_Bool bSubModalDialogs ); sal_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: explicit ModelessDialog( Window* pParent, WinBits nStyle = WB_STDMODELESS ); explicit ModelessDialog( Window* pParent, const ResId& ); }; // --------------- // - ModalDialog - // --------------- class VCL_DLLPUBLIC ModalDialog : public Dialog { public: explicit ModalDialog( Window* pParent, WinBits nStyle = WB_STDMODAL ); explicit ModalDialog( Window* pParent, const ResId& ); private: using Window::Show; void Show( sal_Bool bVisible = sal_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