summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--desktop/source/lib/lokinteractionhandler.cxx110
-rw-r--r--desktop/source/lib/lokinteractionhandler.hxx3
2 files changed, 57 insertions, 56 deletions
diff --git a/desktop/source/lib/lokinteractionhandler.cxx b/desktop/source/lib/lokinteractionhandler.cxx
index ea872ead048b..5bb164c7d2ca 100644
--- a/desktop/source/lib/lokinteractionhandler.cxx
+++ b/desktop/source/lib/lokinteractionhandler.cxx
@@ -25,7 +25,6 @@
#include <com/sun/star/task/XInteractionAbort.hpp>
#include <com/sun/star/task/XInteractionApprove.hpp>
#include <com/sun/star/task/XInteractionPassword2.hpp>
-#include <com/sun/star/task/DocumentPasswordRequest2.hpp>
#include <../../inc/lib/init.hxx>
@@ -79,76 +78,75 @@ throw (uno::RuntimeException, std::exception)
handleInteractionRequest(xRequest);
}
-sal_Bool SAL_CALL LOKInteractionHandler::handleInteractionRequest(
- const uno::Reference<task::XInteractionRequest>& xRequest)
-throw (uno::RuntimeException, std::exception)
+sal_Bool LOKInteractionHandler::handlePasswordRequest(const uno::Sequence<uno::Reference<task::XInteractionContinuation>> &rContinuations, const task::DocumentPasswordRequest2& passwordRequest)
{
- uno::Sequence<uno::Reference<task::XInteractionContinuation>> const &rContinuations = xRequest->getContinuations();
-
- uno::Any const request(xRequest->getRequest());
- task::DocumentPasswordRequest2 passwordRequest;
- if (request >>= passwordRequest)
+ if (m_pLOKit->hasOptionalFeature((passwordRequest.IsRequestPasswordToModify)
+ ? LOK_FEATURE_DOCUMENT_PASSWORD_TO_MODIFY
+ : LOK_FEATURE_DOCUMENT_PASSWORD))
{
- if (m_pLOKit->hasOptionalFeature((passwordRequest.IsRequestPasswordToModify)
- ? LOK_FEATURE_DOCUMENT_PASSWORD_TO_MODIFY
- : LOK_FEATURE_DOCUMENT_PASSWORD))
- {
- OString const url(passwordRequest.Name.toUtf8());
- m_pLOKit->mpCallback(passwordRequest.IsRequestPasswordToModify
- ? LOK_CALLBACK_DOCUMENT_PASSWORD_TO_MODIFY
- : LOK_CALLBACK_DOCUMENT_PASSWORD,
- url.getStr(),
- m_pLOKit->mpCallbackData);
-
- // block until SetPassword is called
- m_havePassword.wait();
- m_havePassword.reset();
- }
+ OString const url(passwordRequest.Name.toUtf8());
+ m_pLOKit->mpCallback(passwordRequest.IsRequestPasswordToModify
+ ? LOK_CALLBACK_DOCUMENT_PASSWORD_TO_MODIFY
+ : LOK_CALLBACK_DOCUMENT_PASSWORD,
+ url.getStr(),
+ m_pLOKit->mpCallbackData);
+
+ // block until SetPassword is called
+ m_havePassword.wait();
+ m_havePassword.reset();
+ }
- for (sal_Int32 i = 0; i < rContinuations.getLength(); ++i)
+ for (sal_Int32 i = 0; i < rContinuations.getLength(); ++i)
+ {
+ if (m_usePassword)
{
- if (m_usePassword)
+ if (passwordRequest.IsRequestPasswordToModify)
{
- if (passwordRequest.IsRequestPasswordToModify)
- {
- uno::Reference<task::XInteractionPassword2> const xIPW2(
- rContinuations[i], uno::UNO_QUERY);
- xIPW2->setPasswordToModify(m_Password);
- xIPW2->select();
- }
- else
- {
- uno::Reference<task::XInteractionPassword> const xIPW(
- rContinuations[i], uno::UNO_QUERY);
- if (xIPW.is())
- {
- xIPW->setPassword(m_Password);
- xIPW->select();
- }
- }
+ uno::Reference<task::XInteractionPassword2> const xIPW2(rContinuations[i], uno::UNO_QUERY);
+ xIPW2->setPasswordToModify(m_Password);
+ xIPW2->select();
}
else
{
- if (passwordRequest.IsRequestPasswordToModify)
+ uno::Reference<task::XInteractionPassword> const xIPW(rContinuations[i], uno::UNO_QUERY);
+ if (xIPW.is())
{
- uno::Reference<task::XInteractionPassword2> const xIPW2(
- rContinuations[i], uno::UNO_QUERY);
- xIPW2->setRecommendReadOnly(true);
- xIPW2->select();
+ xIPW->setPassword(m_Password);
+ xIPW->select();
}
- else
+ }
+ }
+ else
+ {
+ if (passwordRequest.IsRequestPasswordToModify)
+ {
+ uno::Reference<task::XInteractionPassword2> const xIPW2(rContinuations[i], uno::UNO_QUERY);
+ xIPW2->setRecommendReadOnly(true);
+ xIPW2->select();
+ }
+ else
+ {
+ uno::Reference<task::XInteractionAbort> const xAbort(rContinuations[i], uno::UNO_QUERY);
+ if (xAbort.is())
{
- uno::Reference<task::XInteractionAbort> const xAbort(
- rContinuations[i], uno::UNO_QUERY);
- if (xAbort.is())
- {
- xAbort->select();
- }
+ xAbort->select();
}
}
}
- return sal_True;
}
+ return sal_True;
+}
+
+sal_Bool SAL_CALL LOKInteractionHandler::handleInteractionRequest(
+ const uno::Reference<task::XInteractionRequest>& xRequest)
+throw (uno::RuntimeException, std::exception)
+{
+ uno::Sequence<uno::Reference<task::XInteractionContinuation>> const &rContinuations = xRequest->getContinuations();
+
+ uno::Any const request(xRequest->getRequest());
+ task::DocumentPasswordRequest2 passwordRequest;
+ if (request >>= passwordRequest)
+ return handlePasswordRequest(rContinuations, passwordRequest);
// TODO: add LOK api that allows handling this for real, for the moment we
// just set the interaction as 'Approved'
diff --git a/desktop/source/lib/lokinteractionhandler.hxx b/desktop/source/lib/lokinteractionhandler.hxx
index 85a71da7efae..e21d7570f253 100644
--- a/desktop/source/lib/lokinteractionhandler.hxx
+++ b/desktop/source/lib/lokinteractionhandler.hxx
@@ -25,6 +25,7 @@
#include <com/sun/star/lang/XInitialization.hpp>
#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/task/DocumentPasswordRequest2.hpp>
#include <com/sun/star/task/InteractionHandler.hpp>
namespace desktop { struct LibLibreOffice_Impl; }
@@ -50,6 +51,8 @@ private:
LOKInteractionHandler(const LOKInteractionHandler&) = delete;
LOKInteractionHandler& operator=(const LOKInteractionHandler&) = delete;
+ sal_Bool handlePasswordRequest(const css::uno::Sequence<css::uno::Reference<css::task::XInteractionContinuation>> &rContinuations, const css::task::DocumentPasswordRequest2& passwordRequest);
+
public:
void SetPassword(char const* pPassword);