20#include <com/sun/star/document/ChangedByOthersRequest.hpp>
21#include <com/sun/star/document/LockedDocumentRequest.hpp>
22#include <com/sun/star/document/LockedOnSavingRequest.hpp>
23#include <com/sun/star/document/LockFileIgnoreRequest.hpp>
24#include <com/sun/star/document/LockFileCorruptRequest.hpp>
25#include <com/sun/star/document/OwnLockOnDocumentRequest.hpp>
26#include <com/sun/star/document/ReloadEditableRequest.hpp>
27#include <com/sun/star/task/XInteractionApprove.hpp>
28#include <com/sun/star/task/XInteractionDisapprove.hpp>
29#include <com/sun/star/task/XInteractionAbort.hpp>
30#include <com/sun/star/task/XInteractionRequest.hpp>
31#include <com/sun/star/task/XInteractionRetry.hpp>
35#include <officecfg/Office/Common.hxx>
49#define UUI_DOC_LOAD_LOCK 0
50#define UUI_DOC_OWN_LOAD_LOCK 1
51#define UUI_DOC_SAVE_LOCK 2
52#define UUI_DOC_OWN_SAVE_LOCK 3
58void handleReloadEditableRequest_(
60 uno::Sequence<uno::Reference<task::XInteractionContinuation>>
const& rContinuations)
62 uno::Reference<task::XInteractionApprove> xApprove;
63 uno::Reference<task::XInteractionAbort> xAbort;
66 if (!xApprove.is() || !xAbort.is())
73 std::vector<OUString>
aArguments { aDocumentURL };
79 int nResult = aDialog.
run();
88handleLockedDocumentRequest_(
90 const OUString& aDocumentURL,
91 const OUString& aInfo,
92 uno::Sequence< uno::Reference< task::XInteractionContinuation > >
const &
96 uno::Reference< task::XInteractionApprove > xApprove;
97 uno::Reference< task::XInteractionDisapprove > xDisapprove;
98 uno::Reference< task::XInteractionAbort > xAbort;
100 uno::Reference< task::XInteractionRetry > xRetry;
101 getContinuations(rContinuations, &xApprove, &xDisapprove, &xAbort, &xRetry);
103 if ( !xApprove.is() || !xDisapprove.is() || !xAbort.is() )
110 OUString aHiddenData;
111 std::vector< OUString >
aArguments { aDocumentURL };
113 bool bAllowOverride = xRetry.is() && officecfg::Office::Common::Misc::AllowOverrideLocking::get();
122 aHiddenData =
Translate::get(STR_OPENLOCKED_HIDDEN_DATA, aResLocale);
127 nResult = aDialog.
run();
135 aMessage =
Translate::get(bAllowOverride ? STR_OVERWRITE_IGNORELOCK_MSG : STR_TRYLATER_MSG,
141 nResult = aDialog.
run();
148 ? STR_ALREADYOPEN_SAVE_MSG
149 : STR_ALREADYOPEN_MSG,
155 nResult = aDialog.
run();
160 else if ( nResult ==
RET_NO )
161 xDisapprove->select();
162 else if ( nResult ==
RET_IGNORE && xRetry.is() )
169handleChangedByOthersRequest_(
171 uno::Sequence< uno::Reference< task::XInteractionContinuation > >
const &
174 uno::Reference< task::XInteractionApprove > xApprove;
175 uno::Reference< task::XInteractionAbort > xAbort;
178 if ( !xApprove.is() || !xAbort.is() )
184 sal_Int32 nResult = aDialog.
run();
192const sal_uInt16 UUI_DOC_CreateErrDlg = 0;
193const sal_uInt16 UUI_DOC_CorruptErrDlg = 1;
198handleLockFileProblemRequest_(
200 uno::Sequence< uno::Reference< task::XInteractionContinuation > >
const &
201 rContinuations, sal_uInt16 nWhichDlg )
203 uno::Reference< task::XInteractionApprove > xApprove;
204 uno::Reference< task::XInteractionAbort > xAbort;
207 if ( !xApprove.is() || !xAbort.is() )
215 if (nWhichDlg == UUI_DOC_CreateErrDlg)
218 nResult = aDialog.
run();
223 nResult = aDialog.
run();
236 uno::Reference< task::XInteractionRequest >
const & rRequest)
238 uno::Any aAnyRequest(rRequest->getRequest());
240 document::LockedDocumentRequest aLockedDocumentRequest;
241 if (aAnyRequest >>= aLockedDocumentRequest )
245 aLockedDocumentRequest.DocumentURL,
246 aLockedDocumentRequest.UserInfo,
247 rRequest->getContinuations(),
252 document::OwnLockOnDocumentRequest aOwnLockOnDocumentRequest;
253 if (aAnyRequest >>= aOwnLockOnDocumentRequest )
257 aOwnLockOnDocumentRequest.DocumentURL,
258 aOwnLockOnDocumentRequest.TimeInfo,
259 rRequest->getContinuations(),
260 aOwnLockOnDocumentRequest.IsStoring
266 document::LockedOnSavingRequest aLockedOnSavingRequest;
267 if (aAnyRequest >>= aLockedOnSavingRequest )
271 aLockedOnSavingRequest.DocumentURL,
272 aLockedOnSavingRequest.UserInfo,
273 rRequest->getContinuations(),
282 uno::Reference< task::XInteractionRequest >
const & rRequest)
284 uno::Any aAnyRequest(rRequest->getRequest());
286 document::ChangedByOthersRequest aChangedByOthersRequest;
287 if (aAnyRequest >>= aChangedByOthersRequest )
291 rRequest->getContinuations());
300 uno::Reference< task::XInteractionRequest >
const & rRequest)
302 uno::Any aAnyRequest(rRequest->getRequest());
304 document::LockFileIgnoreRequest aLockFileIgnoreRequest;
305 if (aAnyRequest >>= aLockFileIgnoreRequest )
309 rRequest->getContinuations(), UUI_DOC_CreateErrDlg);
313 document::LockFileCorruptRequest aLockFileCorruptRequest;
314 if (aAnyRequest >>= aLockFileCorruptRequest )
318 rRequest->getContinuations(), UUI_DOC_CorruptErrDlg);
326 uno::Reference<task::XInteractionRequest>
const& rRequest)
328 uno::Any aAnyRequest(rRequest->getRequest());
330 document::ReloadEditableRequest aReloadEditableRequest;
331 if (aAnyRequest >>= aReloadEditableRequest)
334 handleReloadEditableRequest_(
336 rRequest->getContinuations());
static weld::Window * GetFrameWeld(const css::uno::Reference< css::awt::XWindow > &rWindow)
bool handleReloadEditableRequest(css::uno::Reference< css::task::XInteractionRequest > const &rRequest)
bool handleLockedDocumentRequest(css::uno::Reference< css::task::XInteractionRequest > const &rRequest)
bool handleChangedByOthersRequest(css::uno::Reference< css::task::XInteractionRequest > const &rRequest)
static OUString replaceMessageWithArguments(const OUString &aMessage, std::vector< OUString > const &rArguments)
bool handleLockFileProblemRequest(css::uno::Reference< css::task::XInteractionRequest > const &rRequest)
const css::uno::Reference< css::awt::XWindow > & getParentXWindow() const
void getContinuations(css::uno::Sequence< css::uno::Reference< css::task::XInteractionContinuation > > const &rContinuations, css::uno::Reference< t1 > *pContinuation1, css::uno::Reference< t2 > *pContinuation2)
#define UUI_DOC_LOAD_LOCK
#define UUI_DOC_SAVE_LOCK
#define UUI_DOC_OWN_LOAD_LOCK
#define UUI_DOC_OWN_SAVE_LOCK
Sequence< PropertyValue > aArguments
std::locale Create(std::string_view aPrefixName, const LanguageTag &rLocale)
OUString get(TranslateId sContextAndId, const std::locale &loc)