LanguageTool: don't crash if REST protocol isn't set
[LibreOffice.git] / uui / source / iahndl.hxx
blobdf2bdd054b47d36503ef57a3b8d387798bf3afa2
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
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/.
9 * This file incorporates work covered by the following license notice:
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 .
20 #pragma once
22 #include <rtl/ustring.hxx>
24 #include <com/sun/star/uno/Reference.hxx>
25 #include <com/sun/star/uno/Sequence.hxx>
26 #include <com/sun/star/uno/XComponentContext.hpp>
28 #include <com/sun/star/beans/Optional.hpp>
29 #include <com/sun/star/task/InteractionClassification.hpp>
31 #include <vcl/errcode.hxx>
32 #include <unotools/resmgr.hxx>
34 #include <unordered_map>
35 #include <vector>
37 namespace com::sun::star {
38 namespace awt {
39 class XWindow;
41 namespace embed {
42 class XStorage;
44 namespace lang {
45 class XMultiServiceFactory;
47 namespace security {
48 struct DocumentSignatureInformation;
50 namespace task {
51 class XInteractionContinuation;
52 class XInteractionHandler2;
53 class XInteractionRequest;
55 namespace ucb {
56 class NameClashResolveRequest;
60 struct InteractionHandlerData
62 /** The UNO service name to use to instantiate the content provider.
64 OUString ServiceName;
67 typedef std::vector< InteractionHandlerData > InteractionHandlerDataList;
69 typedef std::unordered_map< OUString, OUString > StringHashMap;
71 class UUIInteractionHelper
73 private:
74 css::uno::Reference< css::uno::XComponentContext > m_xContext;
75 css::uno::Reference< css::awt::XWindow > m_xWindowParam;
76 const OUString m_aContextParam;
77 StringHashMap m_aTypedCustomHandlers;
78 UUIInteractionHelper(UUIInteractionHelper const &) = delete;
79 UUIInteractionHelper& operator =(UUIInteractionHelper const &) = delete;
81 public:
82 UUIInteractionHelper(
83 css::uno::Reference< css::uno::XComponentContext > const & rxContext,
84 css::uno::Reference< css::awt::XWindow > const & rxWindow,
85 const OUString & rContextParam);
86 explicit UUIInteractionHelper(
87 css::uno::Reference< css::uno::XComponentContext > const & rxContext);
89 const css::uno::Reference<css::awt::XWindow> & GetParentWindow() const { return m_xWindowParam; }
90 void SetParentWindow(const css::uno::Reference<css::awt::XWindow>& rWindow) { m_xWindowParam = rWindow; }
92 ~UUIInteractionHelper();
94 bool handleRequest( css::uno::Reference< css::task::XInteractionRequest > const & rRequest);
96 css::beans::Optional< OUString >
97 getStringFromRequest(
98 css::uno::Reference< css::task::XInteractionRequest > const & rRequest);
100 // Helper.
101 static OUString
102 replaceMessageWithArguments(
103 const OUString& aMessage,
104 std::vector< OUString > const & rArguments );
106 const css::uno::Reference< css::uno::XComponentContext >&
107 getORB() const
108 { return m_xContext; }
109 private:
110 bool
111 handleRequest_impl(
112 css::uno::Reference< css::task::XInteractionRequest > const & rRequest,
113 bool bObtainErrorStringOnly,
114 bool & bHasErrorString,
115 OUString & rErrorString);
117 static void handlerequest(void* pHandleData, void* pInteractionHandler);
119 css::beans::Optional< OUString >
120 getStringFromRequest_impl(
121 css::uno::Reference< css::task::XInteractionRequest > const & rRequest);
123 static void getstringfromrequest(void* pHandleData, void* pInteractionHandler);
125 const css::uno::Reference< css::awt::XWindow>&
126 getParentXWindow() const;
128 css::uno::Reference< css::task::XInteractionHandler2 >
129 getInteractionHandler() const;
131 bool handleTypedHandlerImplementations(
132 css::uno::Reference< css::task::XInteractionRequest > const & rRequest
135 bool
136 tryOtherInteractionHandler(
137 css::uno::Reference< css::task::XInteractionRequest > const & rRequest);
139 void
140 getInteractionHandlerList(InteractionHandlerDataList &rdataList);
142 static bool
143 isInformationalErrorMessageRequest(
144 css::uno::Sequence<
145 css::uno::Reference< css::task::XInteractionContinuation > > const & rContinuations);
147 bool
148 handleInteractiveIOException(
149 css::uno::Reference< css::task::XInteractionRequest > const & rRequest,
150 bool bObtainErrorStringOnly,
151 bool & bHasErrorString,
152 OUString & rErrorString);
154 bool
155 handleAuthenticationRequest(
156 css::uno::Reference< css::task::XInteractionRequest > const & rRequest);
158 bool
159 handleCertificateValidationRequest(
160 css::uno::Reference< css::task::XInteractionRequest > const & rRequest);
162 void
163 handleNameClashResolveRequest(
164 css::ucb::NameClashResolveRequest const & rRequest,
165 css::uno::Sequence<
166 css::uno::Reference< css::task::XInteractionContinuation > > const & rContinuations);
168 bool
169 handleMasterPasswordRequest(
170 css::uno::Reference< css::task::XInteractionRequest > const & rRequest);
172 bool
173 handlePasswordRequest(
174 css::uno::Reference< css::task::XInteractionRequest > const & rRequest);
176 bool
177 handleNoSuchFilterRequest(
178 css::uno::Reference< css::task::XInteractionRequest > const & rRequest);
180 bool
181 handleFilterOptionsRequest(
182 css::uno::Reference<
183 css::task::XInteractionRequest > const & rRequest);
185 void
186 handleErrorHandlerRequest(
187 css::task::InteractionClassification eClassification,
188 ErrCode nErrorCode,
189 std::vector< OUString > const & rArguments,
190 css::uno::Sequence<
191 css::uno::Reference< css::task::XInteractionContinuation > > const & rContinuations,
192 bool bObtainErrorStringOnly,
193 bool & bHasErrorString,
194 OUString & rErrorString);
196 void
197 handleGenericErrorRequest(
198 ErrCode nErrorCode,
199 css::uno::Sequence<
200 css::uno::Reference< css::task::XInteractionContinuation > > const & rContinuations,
201 bool bObtainErrorStringOnly,
202 bool & bHasErrorString,
203 OUString & rErrorString);
205 void
206 handleMacroConfirmRequest(
207 const OUString& aDocumentURL,
208 const css::uno::Reference< css::embed::XStorage >& xZipStorage,
209 const OUString& aDocumentVersion,
210 const css::uno::Sequence< css::security::DocumentSignatureInformation >& aSignInfo,
211 css::uno::Sequence<
212 css::uno::Reference< css::task::XInteractionContinuation > > const & rContinuations);
214 void
215 handleBrokenPackageRequest(
216 std::vector< OUString > const & rArguments,
217 css::uno::Sequence<
218 css::uno::Reference< css::task::XInteractionContinuation > > const & rContinuations,
219 bool bObtainErrorStringOnly,
220 bool & bHasErrorString,
221 OUString & rErrorString);
223 bool handleLockedDocumentRequest(
224 css::uno::Reference< css::task::XInteractionRequest > const & rRequest);
226 bool handleChangedByOthersRequest(
227 css::uno::Reference<
228 css::task::XInteractionRequest > const & rRequest);
230 bool handleLockFileProblemRequest(
231 css::uno::Reference< css::task::XInteractionRequest > const & rRequest);
233 bool handleReloadEditableRequest(
234 css::uno::Reference<css::task::XInteractionRequest> const& rRequest);
236 bool handleCustomRequest(
237 const css::uno::Reference< css::task::XInteractionRequest >& i_rRequest,
238 const OUString& i_rServiceName
239 ) const;
241 void
242 handleAuthFallbackRequest(
243 const OUString & instructions,
244 const OUString & url,
245 css::uno::Sequence< css::uno::Reference< css::task::XInteractionContinuation > > const & rContinuations );
248 class ErrorResource
250 const std::pair<TranslateId, ErrCode>* m_pStringArray;
251 const std::locale& m_rResLocale;
252 public:
253 explicit ErrorResource(const std::pair<TranslateId, ErrCode>* pStringArray, const std::locale& rResLocale)
254 : m_pStringArray(pStringArray)
255 , m_rResLocale(rResLocale)
258 bool getString(ErrCode nErrorCode, OUString &rString) const;
261 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */