LibreOffice Module vcl (master) 1
abstdlg.hxx
Go to the documentation of this file.
1/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2/*
3 * This file is part of the LibreOffice project.
4 *
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 *
9 * This file incorporates work covered by the following license notice:
10 *
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 */
19#ifndef INCLUDED_VCL_ABSTDLG_HXX
20#define INCLUDED_VCL_ABSTDLG_HXX
21
22#include <sal/types.h>
23#include <rtl/ustring.hxx>
24#include <vcl/dllapi.h>
25#include <vcl/vclptr.hxx>
27#include <vector>
28#include <functional>
29#include <memory>
30
31namespace com::sun::star::uno { template <class interface_type> class Reference; }
32
33namespace com::sun::star::frame { class XModel; }
34
35class Dialog;
36class BitmapEx;
37class SdrObjGroup;
38namespace weld
39{
40 class Dialog;
41 class DialogController;
42 class Window;
43}
44
51{
52protected:
53 virtual ~VclAbstractDialog() override;
54public:
55 virtual short Execute() = 0;
56
57 struct AsyncContext {
58 // for the case where the owner is the dialog itself, and the dialog is an unwelded VclPtr based dialog
60 // for the case where the dialog is welded, and owned by a DialogController
61 std::shared_ptr<weld::DialogController> mxOwnerDialogController;
62 // for the case where the dialog is welded, and is running async without a DialogController
63 std::shared_ptr<weld::Dialog> mxOwnerSelf;
64 std::function<void(sal_Int32)> maEndDialogFn;
65 bool isSet() const { return !!maEndDialogFn; }
66 };
67
68 bool StartExecuteAsync(const std::function<void(sal_Int32)> &rEndDialogFn)
69 {
70 AsyncContext aCtx;
71 aCtx.mxOwner = this;
72 aCtx.maEndDialogFn = rEndDialogFn;
73 return StartExecuteAsync(aCtx);
74 }
75
77 virtual bool StartExecuteAsync(AsyncContext &);
78
79 // Screenshot interface
80 virtual std::vector<OUString> getAllPageUIXMLDescriptions() const;
81 virtual bool selectPageByUIXMLDescription(const OUString& rUIXMLDescription);
82 virtual BitmapEx createScreenshot() const;
83 virtual OUString GetScreenshotId() const { return {}; };
84};
85
87{
88protected:
89 virtual ~VclAbstractTerminatedDialog() override = default;
90public:
91 virtual void EndDialog(sal_Int32 nResult) = 0;
92};
93
95{
96protected:
97 virtual ~AbstractPasswordToOpenModifyDialog() override = default;
98public:
99 virtual OUString GetPasswordToOpen() const = 0;
100 virtual OUString GetPasswordToModify() const = 0;
101 virtual bool IsRecommendToOpenReadonly() const = 0;
102 virtual void Response(sal_Int32) = 0;
103 virtual void AllowEmpty() = 0;
104};
105
107{
108protected:
109 virtual ~AbstractScreenshotAnnotationDlg() override = default;
110};
111
113{
114protected:
115 virtual ~AbstractSignatureLineDialog() override = default;
116};
117
119{
120protected:
121 virtual ~AbstractSignSignatureLineDialog() override = default;
122};
123
125{
126protected:
127 virtual ~AbstractQrCodeGenDialog() override = default;
128};
129
131{
132protected:
133 virtual ~AbstractAdditionsDialog() override = default;
134};
135
138{
139protected:
140 virtual ~AbstractDiagramDialog() override = default;
141};
142
144{
145public:
146 virtual ~VclAbstractDialogFactory(); // needed for export of vtable
148 // The Id is an implementation detail of the factory
149 virtual VclPtr<VclAbstractDialog> CreateVclDialog(weld::Window* pParent, sal_uInt32 nId) = 0;
150
151 // creates instance of PasswordToOpenModifyDialog from cui
152 virtual VclPtr<AbstractPasswordToOpenModifyDialog> CreatePasswordToOpenModifyDialog(weld::Window * pParent, sal_uInt16 nMaxPasswdLen, bool bIsPasswordToModify) = 0;
153
154 // creates instance of SignatureDialog from cui
157 const css::uno::Reference<css::frame::XModel> xModel,
158 bool bEditExisting)
159 = 0;
160
161 // creates instance of SignSignatureDialog from cui
164 const css::uno::Reference<css::frame::XModel> xModel)
165 = 0;
166
167 // creates instance of QrCodeDialog from cui
170 const css::uno::Reference<css::frame::XModel> xModel,
171 bool bEditExisting)
172 = 0;
173
174 // creates instance of ScreenshotAnnotationDlg from cui
176 weld::Dialog& rParentDialog) = 0;
177
178 // create additions dialog
180 CreateAdditionsDialog(weld::Window* pParent, const OUString& sAdditionsTag) = 0;
181
183 weld::Window* pParent,
184 SdrObjGroup& rDiagram) = 0;
185
186#ifdef _WIN32
188 CreateFileExtCheckDialog(weld::Window* _pParent, const OUString& sTitle, const OUString& sMsg)
189 = 0;
190#endif
191};
192
193#endif
194
195/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
virtual ~AbstractAdditionsDialog() override=default
Edit Diagram dialog.
Definition: abstdlg.hxx:138
virtual ~AbstractDiagramDialog() override=default
virtual OUString GetPasswordToModify() const =0
virtual void Response(sal_Int32)=0
virtual bool IsRecommendToOpenReadonly() const =0
virtual ~AbstractPasswordToOpenModifyDialog() override=default
virtual OUString GetPasswordToOpen() const =0
virtual ~AbstractQrCodeGenDialog() override=default
virtual ~AbstractScreenshotAnnotationDlg() override=default
virtual ~AbstractSignSignatureLineDialog() override=default
virtual ~AbstractSignatureLineDialog() override=default
virtual VclPtr< AbstractScreenshotAnnotationDlg > CreateScreenshotAnnotationDlg(weld::Dialog &rParentDialog)=0
virtual VclPtr< AbstractSignSignatureLineDialog > CreateSignSignatureLineDialog(weld::Window *pParent, const css::uno::Reference< css::frame::XModel > xModel)=0
virtual VclPtr< AbstractDiagramDialog > CreateDiagramDialog(weld::Window *pParent, SdrObjGroup &rDiagram)=0
virtual VclPtr< AbstractPasswordToOpenModifyDialog > CreatePasswordToOpenModifyDialog(weld::Window *pParent, sal_uInt16 nMaxPasswdLen, bool bIsPasswordToModify)=0
virtual VclPtr< AbstractSignatureLineDialog > CreateSignatureLineDialog(weld::Window *pParent, const css::uno::Reference< css::frame::XModel > xModel, bool bEditExisting)=0
virtual VclPtr< AbstractAdditionsDialog > CreateAdditionsDialog(weld::Window *pParent, const OUString &sAdditionsTag)=0
virtual VclPtr< AbstractQrCodeGenDialog > CreateQrCodeGenDialog(weld::Window *pParent, const css::uno::Reference< css::frame::XModel > xModel, bool bEditExisting)=0
virtual VclPtr< VclAbstractDialog > CreateVclDialog(weld::Window *pParent, sal_uInt32 nId)=0
Some things multiple-inherit from VclAbstractDialog and OutputDevice, so we need to use virtual inher...
Definition: abstdlg.hxx:51
virtual OUString GetScreenshotId() const
Definition: abstdlg.hxx:83
bool StartExecuteAsync(const std::function< void(sal_Int32)> &rEndDialogFn)
Definition: abstdlg.hxx:68
virtual short Execute()=0
virtual void EndDialog(sal_Int32 nResult)=0
virtual ~VclAbstractTerminatedDialog() override=default
virtual BitmapEx createScreenshot() const override
virtual std::vector< OUString > getAllPageUIXMLDescriptions() const override
virtual bool selectPageByUIXMLDescription(const OUString &rUIXMLDescription) override
#define VCL_DLLPUBLIC
Definition: dllapi.h:29
Reference
void Create(SwFormatVertOrient &rItem, SvStream &rStrm, sal_uInt16 nVersionAbusedAsSize)
std::function< void(sal_Int32)> maEndDialogFn
Definition: abstdlg.hxx:64
std::shared_ptr< weld::Dialog > mxOwnerSelf
Definition: abstdlg.hxx:63
std::shared_ptr< weld::DialogController > mxOwnerDialogController
Definition: abstdlg.hxx:61
VclPtr< VclReferenceBase > mxOwner
Definition: abstdlg.hxx:59