23#include <com/sun/star/lang/IllegalArgumentException.hpp>
24#include <com/sun/star/system/SystemShellExecute.hpp>
25#include <com/sun/star/system/SystemShellExecuteException.hpp>
26#include <com/sun/star/system/SystemShellExecuteFlags.hpp>
27#include <com/sun/star/frame/DispatchResultState.hpp>
37 return "com.sun.star.comp.framework.MailToDispatcher";
83 css::uno::Reference< css::frame::XDispatch > xDispatcher;
84 if (
aURL.Complete.startsWith(
"mailto:"))
92css::uno::Sequence< css::uno::Reference< css::frame::XDispatch > > SAL_CALL
MailToDispatcher::queryDispatches(
const css::uno::Sequence< css::frame::DispatchDescriptor >& lDescriptor )
94 sal_Int32
nCount = lDescriptor.getLength();
95 css::uno::Sequence< css::uno::Reference< css::frame::XDispatch > > lDispatcher(
nCount );
96 auto lDispatcherRange = asNonConstRange(lDispatcher);
100 lDescriptor[
i].FeatureURL,
101 lDescriptor[
i].FrameName,
102 lDescriptor[
i].SearchFlags);
119 const css::uno::Sequence< css::beans::PropertyValue >& )
123 css::uno::Reference< css::frame::XNotifyingDispatch > xSelfHold(
this);
141 const css::uno::Sequence< css::beans::PropertyValue >& ,
142 const css::uno::Reference< css::frame::XDispatchResultListener >& xListener )
147 css::uno::Reference< css::frame::XNotifyingDispatch > xThis(
this);
152 css::frame::DispatchResultEvent
aEvent;
154 aEvent.State = css::frame::DispatchResultState::SUCCESS;
156 aEvent.State = css::frame::DispatchResultState::FAILURE;
159 xListener->dispatchFinished(
aEvent );
179 bool bSuccess =
false;
181 css::uno::Reference< css::system::XSystemShellExecute > xSystemShellExecute = css::system::SystemShellExecute::create(
m_xContext );
188 xSystemShellExecute->execute(
aURL.Complete, OUString(), css::system::SystemShellExecuteFlags::URIS_ONLY );
191 catch (
const css::lang::IllegalArgumentException&)
194 catch (
const css::system::SystemShellExecuteException&)
213 const css::util::URL& )
219 const css::util::URL& )
226extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
228 css::uno::XComponentContext* context, css::uno::Sequence<css::uno::Any>
const& )
constexpr OUStringLiteral sServiceName
protocol handler for "mailto:" URLs @descr It's a special dispatch object which is used registered fo...
MailToDispatcher(css::uno::Reference< css::uno::XComponentContext > xContext)
standard ctor @descr This initializes a new instance of this class with needed information for work.
virtual void SAL_CALL removeStatusListener(const css::uno::Reference< css::frame::XStatusListener > &xListener, const css::util::URL &aURL) override
virtual css::uno::Reference< css::frame::XDispatch > SAL_CALL queryDispatch(const css::util::URL &aURL, const OUString &sTarget, sal_Int32 nFlags) override
decide if this dispatch implementation can be used for requested URL or not @descr A protocol handler...
bool implts_dispatch(const css::util::URL &aURL)
threadsafe helper for dispatch calls @descr We support two interfaces for the same process - dispatch...
virtual void SAL_CALL addStatusListener(const css::uno::Reference< css::frame::XStatusListener > &xListener, const css::util::URL &aURL) override
add/remove listener for state events @descr Because we use an external process to forward such mail U...
virtual css::uno::Sequence< css::uno::Reference< css::frame::XDispatch > > SAL_CALL queryDispatches(const css::uno::Sequence< css::frame::DispatchDescriptor > &lDescriptor) override
do the same like dispatch() but for multiple requests at the same time
css::uno::Reference< css::uno::XComponentContext > m_xContext
reference to global uno service manager which had created us
virtual void SAL_CALL dispatch(const css::util::URL &aURL, const css::uno::Sequence< css::beans::PropertyValue > &lArguments) override
dispatch URL with arguments @descr We use threadsafe internal method to do so.
virtual void SAL_CALL dispatchWithNotification(const css::util::URL &aURL, const css::uno::Sequence< css::beans::PropertyValue > &lArguments, const css::uno::Reference< css::frame::XDispatchResultListener > &xListener) override
dispatch with guaranteed notifications about success @descr We use threadsafe internal method to do s...
virtual ~MailToDispatcher() override
standard dtor
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override
virtual sal_Bool SAL_CALL supportsService(const OUString &sServiceName) override
virtual OUString SAL_CALL getImplementationName() override
css::uno::Reference< css::uno::XComponentContext > m_xContext
SAL_DLLPUBLIC_EXPORT css::uno::XInterface * framework_MailToDispatcher_get_implementation(css::uno::XComponentContext *context, css::uno::Sequence< css::uno::Any > const &)
bool CPPUHELPER_DLLPUBLIC supportsService(css::lang::XServiceInfo *implementation, rtl::OUString const &name)
constexpr OUStringLiteral SERVICENAME_PROTOCOLHANDLER