diff options
author | Jan Holesovsky <kendy@collabora.com> | 2016-02-02 11:54:35 +0100 |
---|---|---|
committer | Jan Holesovsky <kendy@collabora.com> | 2016-02-03 10:33:04 +0100 |
commit | ad680b8600aac8c26996b3af2d1414c3c0ebe4ee (patch) | |
tree | ef0ac6797b15ba18575c9be1afb78ea97d116c5d /desktop | |
parent | 483d0e85fad6f8f787ada28bc16242c43f7496b4 (diff) |
lok interaction handler: Move password handling to an own method.
Change-Id: I1b3cfdef5f4f81c9138ad5600e43755841df5d75
Diffstat (limited to 'desktop')
-rw-r--r-- | desktop/source/lib/lokinteractionhandler.cxx | 110 | ||||
-rw-r--r-- | desktop/source/lib/lokinteractionhandler.hxx | 3 |
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); |