1*cdf0e10cSrcweir /*************************************************************************
2*cdf0e10cSrcweir  *
3*cdf0e10cSrcweir  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4*cdf0e10cSrcweir  *
5*cdf0e10cSrcweir  * Copyright 2000, 2010 Oracle and/or its affiliates.
6*cdf0e10cSrcweir  *
7*cdf0e10cSrcweir  * OpenOffice.org - a multi-platform office productivity suite
8*cdf0e10cSrcweir  *
9*cdf0e10cSrcweir  * This file is part of OpenOffice.org.
10*cdf0e10cSrcweir  *
11*cdf0e10cSrcweir  * OpenOffice.org is free software: you can redistribute it and/or modify
12*cdf0e10cSrcweir  * it under the terms of the GNU Lesser General Public License version 3
13*cdf0e10cSrcweir  * only, as published by the Free Software Foundation.
14*cdf0e10cSrcweir  *
15*cdf0e10cSrcweir  * OpenOffice.org is distributed in the hope that it will be useful,
16*cdf0e10cSrcweir  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17*cdf0e10cSrcweir  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18*cdf0e10cSrcweir  * GNU Lesser General Public License version 3 for more details
19*cdf0e10cSrcweir  * (a copy is included in the LICENSE file that accompanied this code).
20*cdf0e10cSrcweir  *
21*cdf0e10cSrcweir  * You should have received a copy of the GNU Lesser General Public License
22*cdf0e10cSrcweir  * version 3 along with OpenOffice.org.  If not, see
23*cdf0e10cSrcweir  * <http://www.openoffice.org/license.html>
24*cdf0e10cSrcweir  * for a copy of the LGPLv3 License.
25*cdf0e10cSrcweir  *
26*cdf0e10cSrcweir  ************************************************************************/
27*cdf0e10cSrcweir 
28*cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
29*cdf0e10cSrcweir #include "precompiled_framework.hxx"
30*cdf0e10cSrcweir 
31*cdf0e10cSrcweir //_________________________________________________________________________________________________________________
32*cdf0e10cSrcweir //	my own includes
33*cdf0e10cSrcweir //_________________________________________________________________________________________________________________
34*cdf0e10cSrcweir #include <comphelper/interaction.hxx>
35*cdf0e10cSrcweir #include <framework/interaction.hxx>
36*cdf0e10cSrcweir #include <general.h>
37*cdf0e10cSrcweir 
38*cdf0e10cSrcweir using namespace ::com::sun::star;
39*cdf0e10cSrcweir 
40*cdf0e10cSrcweir namespace framework{
41*cdf0e10cSrcweir 
42*cdf0e10cSrcweir /*-************************************************************************************************************//**
43*cdf0e10cSrcweir     @short          declaration of special continuation for filter selection
44*cdf0e10cSrcweir     @descr          Sometimes filter detection during loading document failed. Then we need a possibility
45*cdf0e10cSrcweir                     to ask user for his decision. These continuation transport selected filter by user to
46*cdf0e10cSrcweir                     code user of interaction.
47*cdf0e10cSrcweir 
48*cdf0e10cSrcweir     @attention      This implementation could be used one times only. We don't support a resetable continuation yet!
49*cdf0e10cSrcweir                     Why? Normaly interaction should show a filter selection dialog and ask user for his decision.
50*cdf0e10cSrcweir                     He can select any filter - then instances of these class will be called by handler ... or user
51*cdf0e10cSrcweir                     close dialog without any selection. Then another continuation should be slected by handler to
52*cdf0e10cSrcweir                     abort continuations ... Retrying isn't very usefull here ... I think.
53*cdf0e10cSrcweir 
54*cdf0e10cSrcweir     @implements     XInteractionFilterSelect
55*cdf0e10cSrcweir 
56*cdf0e10cSrcweir     @base           ImplInheritanceHelper1
57*cdf0e10cSrcweir                     ContinuationBase
58*cdf0e10cSrcweir 
59*cdf0e10cSrcweir     @devstatus      ready to use
60*cdf0e10cSrcweir     @threadsafe     no (used on once position only!)
61*cdf0e10cSrcweir *//*-*************************************************************************************************************/
62*cdf0e10cSrcweir class ContinuationFilterSelect : public comphelper::OInteraction< ::com::sun::star::document::XInteractionFilterSelect >
63*cdf0e10cSrcweir {
64*cdf0e10cSrcweir     // c++ interface
65*cdf0e10cSrcweir     public:
66*cdf0e10cSrcweir         ContinuationFilterSelect();
67*cdf0e10cSrcweir 
68*cdf0e10cSrcweir     // uno interface
69*cdf0e10cSrcweir     public:
70*cdf0e10cSrcweir         virtual void            SAL_CALL setFilter( const ::rtl::OUString& sFilter ) throw( ::com::sun::star::uno::RuntimeException );
71*cdf0e10cSrcweir         virtual ::rtl::OUString SAL_CALL getFilter(                                ) throw( ::com::sun::star::uno::RuntimeException );
72*cdf0e10cSrcweir 
73*cdf0e10cSrcweir     // member
74*cdf0e10cSrcweir     private:
75*cdf0e10cSrcweir         ::rtl::OUString m_sFilter;
76*cdf0e10cSrcweir 
77*cdf0e10cSrcweir };  // class ContinuationFilterSelect
78*cdf0e10cSrcweir 
79*cdf0e10cSrcweir 
80*cdf0e10cSrcweir //---------------------------------------------------------------------------------------------------------
81*cdf0e10cSrcweir // initialize continuation with right start values
82*cdf0e10cSrcweir //---------------------------------------------------------------------------------------------------------
83*cdf0e10cSrcweir ContinuationFilterSelect::ContinuationFilterSelect()
84*cdf0e10cSrcweir     : m_sFilter( ::rtl::OUString() )
85*cdf0e10cSrcweir {
86*cdf0e10cSrcweir }
87*cdf0e10cSrcweir 
88*cdf0e10cSrcweir //---------------------------------------------------------------------------------------------------------
89*cdf0e10cSrcweir // handler should use it after selection to set user specified filter for transport
90*cdf0e10cSrcweir //---------------------------------------------------------------------------------------------------------
91*cdf0e10cSrcweir void SAL_CALL ContinuationFilterSelect::setFilter( const ::rtl::OUString& sFilter ) throw( css::uno::RuntimeException )
92*cdf0e10cSrcweir {
93*cdf0e10cSrcweir     m_sFilter = sFilter;
94*cdf0e10cSrcweir }
95*cdf0e10cSrcweir 
96*cdf0e10cSrcweir //---------------------------------------------------------------------------------------------------------
97*cdf0e10cSrcweir // read access to transported filter
98*cdf0e10cSrcweir //---------------------------------------------------------------------------------------------------------
99*cdf0e10cSrcweir ::rtl::OUString SAL_CALL ContinuationFilterSelect::getFilter() throw( css::uno::RuntimeException )
100*cdf0e10cSrcweir {
101*cdf0e10cSrcweir     return m_sFilter;
102*cdf0e10cSrcweir }
103*cdf0e10cSrcweir 
104*cdf0e10cSrcweir class RequestFilterSelect_Impl : public ::cppu::WeakImplHelper1< ::com::sun::star::task::XInteractionRequest >
105*cdf0e10cSrcweir {
106*cdf0e10cSrcweir public:
107*cdf0e10cSrcweir     RequestFilterSelect_Impl( const ::rtl::OUString& sURL );
108*cdf0e10cSrcweir     sal_Bool        isAbort  () const;
109*cdf0e10cSrcweir     ::rtl::OUString getFilter() const;
110*cdf0e10cSrcweir 
111*cdf0e10cSrcweir public:
112*cdf0e10cSrcweir     virtual ::com::sun::star::uno::Any SAL_CALL getRequest() throw( ::com::sun::star::uno::RuntimeException );
113*cdf0e10cSrcweir     virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionContinuation > > SAL_CALL getContinuations() throw( ::com::sun::star::uno::RuntimeException );
114*cdf0e10cSrcweir 
115*cdf0e10cSrcweir private:
116*cdf0e10cSrcweir     ::com::sun::star::uno::Any                                                                                                 m_aRequest      ;
117*cdf0e10cSrcweir     ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionContinuation > >    m_lContinuations;
118*cdf0e10cSrcweir     comphelper::OInteractionAbort* m_pAbort;
119*cdf0e10cSrcweir     ContinuationFilterSelect* m_pFilter;
120*cdf0e10cSrcweir };
121*cdf0e10cSrcweir 
122*cdf0e10cSrcweir //---------------------------------------------------------------------------------------------------------
123*cdf0e10cSrcweir // initialize instance with all neccessary informations
124*cdf0e10cSrcweir // We use it without any further checks on our member then ...!
125*cdf0e10cSrcweir //---------------------------------------------------------------------------------------------------------
126*cdf0e10cSrcweir RequestFilterSelect_Impl::RequestFilterSelect_Impl( const ::rtl::OUString& sURL )
127*cdf0e10cSrcweir {
128*cdf0e10cSrcweir 	::rtl::OUString temp;
129*cdf0e10cSrcweir 	css::uno::Reference< css::uno::XInterface > temp2;
130*cdf0e10cSrcweir     css::document::NoSuchFilterRequest aFilterRequest( temp                             ,
131*cdf0e10cSrcweir                                                        temp2							,
132*cdf0e10cSrcweir                                                        sURL                                          );
133*cdf0e10cSrcweir     m_aRequest <<= aFilterRequest;
134*cdf0e10cSrcweir 
135*cdf0e10cSrcweir     m_pAbort  = new comphelper::OInteractionAbort;
136*cdf0e10cSrcweir     m_pFilter = new ContinuationFilterSelect;
137*cdf0e10cSrcweir 
138*cdf0e10cSrcweir     m_lContinuations.realloc( 2 );
139*cdf0e10cSrcweir     m_lContinuations[0] = css::uno::Reference< css::task::XInteractionContinuation >( m_pAbort  );
140*cdf0e10cSrcweir     m_lContinuations[1] = css::uno::Reference< css::task::XInteractionContinuation >( m_pFilter );
141*cdf0e10cSrcweir }
142*cdf0e10cSrcweir 
143*cdf0e10cSrcweir //---------------------------------------------------------------------------------------------------------
144*cdf0e10cSrcweir // return abort state of interaction
145*cdf0e10cSrcweir // If it is true, return value of method "getFilter()" will be unspecified then!
146*cdf0e10cSrcweir //---------------------------------------------------------------------------------------------------------
147*cdf0e10cSrcweir sal_Bool RequestFilterSelect_Impl::isAbort() const
148*cdf0e10cSrcweir {
149*cdf0e10cSrcweir     return m_pAbort->wasSelected();
150*cdf0e10cSrcweir }
151*cdf0e10cSrcweir 
152*cdf0e10cSrcweir //---------------------------------------------------------------------------------------------------------
153*cdf0e10cSrcweir // return user selected filter
154*cdf0e10cSrcweir // Return value valid for non aborted interaction only. Please check "isAbort()" before you call these ony!
155*cdf0e10cSrcweir //---------------------------------------------------------------------------------------------------------
156*cdf0e10cSrcweir ::rtl::OUString RequestFilterSelect_Impl::getFilter() const
157*cdf0e10cSrcweir {
158*cdf0e10cSrcweir     return m_pFilter->getFilter();
159*cdf0e10cSrcweir }
160*cdf0e10cSrcweir 
161*cdf0e10cSrcweir //---------------------------------------------------------------------------------------------------------
162*cdf0e10cSrcweir // handler call it to get type of request
163*cdf0e10cSrcweir // Is hard coded to "please select filter" here. see ctor for further informations.
164*cdf0e10cSrcweir //---------------------------------------------------------------------------------------------------------
165*cdf0e10cSrcweir css::uno::Any SAL_CALL RequestFilterSelect_Impl::getRequest() throw( css::uno::RuntimeException )
166*cdf0e10cSrcweir {
167*cdf0e10cSrcweir     return m_aRequest;
168*cdf0e10cSrcweir }
169*cdf0e10cSrcweir 
170*cdf0e10cSrcweir //---------------------------------------------------------------------------------------------------------
171*cdf0e10cSrcweir // handler call it to get possible continuations
172*cdf0e10cSrcweir // We support "abort/select_filter" only here.
173*cdf0e10cSrcweir // After interaction we support read access on these continuations on our c++ interface to
174*cdf0e10cSrcweir // return user decision.
175*cdf0e10cSrcweir //---------------------------------------------------------------------------------------------------------
176*cdf0e10cSrcweir css::uno::Sequence< css::uno::Reference< css::task::XInteractionContinuation > > SAL_CALL RequestFilterSelect_Impl::getContinuations() throw( css::uno::RuntimeException )
177*cdf0e10cSrcweir {
178*cdf0e10cSrcweir     return m_lContinuations;
179*cdf0e10cSrcweir }
180*cdf0e10cSrcweir 
181*cdf0e10cSrcweir 
182*cdf0e10cSrcweir RequestFilterSelect::RequestFilterSelect( const ::rtl::OUString& sURL )
183*cdf0e10cSrcweir {
184*cdf0e10cSrcweir     pImp = new RequestFilterSelect_Impl( sURL );
185*cdf0e10cSrcweir     pImp->acquire();
186*cdf0e10cSrcweir }
187*cdf0e10cSrcweir 
188*cdf0e10cSrcweir RequestFilterSelect::~RequestFilterSelect()
189*cdf0e10cSrcweir {
190*cdf0e10cSrcweir     pImp->release();
191*cdf0e10cSrcweir }
192*cdf0e10cSrcweir 
193*cdf0e10cSrcweir 
194*cdf0e10cSrcweir //---------------------------------------------------------------------------------------------------------
195*cdf0e10cSrcweir // return abort state of interaction
196*cdf0e10cSrcweir // If it is true, return value of method "getFilter()" will be unspecified then!
197*cdf0e10cSrcweir //---------------------------------------------------------------------------------------------------------
198*cdf0e10cSrcweir sal_Bool RequestFilterSelect::isAbort() const
199*cdf0e10cSrcweir {
200*cdf0e10cSrcweir     return pImp->isAbort();
201*cdf0e10cSrcweir }
202*cdf0e10cSrcweir 
203*cdf0e10cSrcweir //---------------------------------------------------------------------------------------------------------
204*cdf0e10cSrcweir // return user selected filter
205*cdf0e10cSrcweir // Return value valid for non aborted interaction only. Please check "isAbort()" before you call these ony!
206*cdf0e10cSrcweir //---------------------------------------------------------------------------------------------------------
207*cdf0e10cSrcweir ::rtl::OUString RequestFilterSelect::getFilter() const
208*cdf0e10cSrcweir {
209*cdf0e10cSrcweir     return pImp->getFilter();
210*cdf0e10cSrcweir }
211*cdf0e10cSrcweir 
212*cdf0e10cSrcweir uno::Reference < task::XInteractionRequest > RequestFilterSelect::GetRequest()
213*cdf0e10cSrcweir {
214*cdf0e10cSrcweir     return uno::Reference < task::XInteractionRequest > (pImp);
215*cdf0e10cSrcweir }
216*cdf0e10cSrcweir 
217*cdf0e10cSrcweir /*
218*cdf0e10cSrcweir class RequestAmbigousFilter_Impl : public ::cppu::WeakImplHelper1< ::com::sun::star::task::XInteractionRequest >
219*cdf0e10cSrcweir {
220*cdf0e10cSrcweir public:
221*cdf0e10cSrcweir     RequestAmbigousFilter_Impl( const ::rtl::OUString& sURL            ,
222*cdf0e10cSrcweir                             const ::rtl::OUString& sSelectedFilter ,
223*cdf0e10cSrcweir                             const ::rtl::OUString& sDetectedFilter );
224*cdf0e10cSrcweir     sal_Bool        isAbort  () const;
225*cdf0e10cSrcweir     ::rtl::OUString getFilter() const;
226*cdf0e10cSrcweir 
227*cdf0e10cSrcweir     virtual ::com::sun::star::uno::Any SAL_CALL getRequest () throw( ::com::sun::star::uno::RuntimeException );
228*cdf0e10cSrcweir     virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionContinuation > > SAL_CALL getContinuations() throw( ::com::sun::star::uno::RuntimeException );
229*cdf0e10cSrcweir 
230*cdf0e10cSrcweir     ::com::sun::star::uno::Any                                                                                                 m_aRequest      ;
231*cdf0e10cSrcweir     ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionContinuation > >    m_lContinuations;
232*cdf0e10cSrcweir     ContinuationAbort*                                                                                                         m_pAbort        ;
233*cdf0e10cSrcweir     ContinuationFilterSelect*                                                                                                  m_pFilter       ;
234*cdf0e10cSrcweir };
235*cdf0e10cSrcweir 
236*cdf0e10cSrcweir RequestAmbigousFilter::RequestAmbigousFilter( const ::rtl::OUString& sURL, const ::rtl::OUString& sSelectedFilter,
237*cdf0e10cSrcweir     const ::rtl::OUString& sDetectedFilter )
238*cdf0e10cSrcweir {
239*cdf0e10cSrcweir     pImp = new RequestAmbigousFilter_Impl( sURL, sSelectedFilter, sDetectedFilter );
240*cdf0e10cSrcweir     pImp->acquire();
241*cdf0e10cSrcweir }
242*cdf0e10cSrcweir 
243*cdf0e10cSrcweir RequestAmbigousFilter::~RequestAmbigousFilter()
244*cdf0e10cSrcweir {
245*cdf0e10cSrcweir     pImp->release();
246*cdf0e10cSrcweir }
247*cdf0e10cSrcweir 
248*cdf0e10cSrcweir sal_Bool RequestAmbigousFilter::isAbort() const
249*cdf0e10cSrcweir {
250*cdf0e10cSrcweir     return pImp->isAbort();
251*cdf0e10cSrcweir }
252*cdf0e10cSrcweir 
253*cdf0e10cSrcweir //---------------------------------------------------------------------------------------------------------
254*cdf0e10cSrcweir // return user selected filter
255*cdf0e10cSrcweir // Return value valid for non aborted interaction only. Please check "isAbort()" before you call these ony!
256*cdf0e10cSrcweir //---------------------------------------------------------------------------------------------------------
257*cdf0e10cSrcweir ::rtl::OUString RequestAmbigousFilter::getFilter() const
258*cdf0e10cSrcweir {
259*cdf0e10cSrcweir     return pImp->getFilter();
260*cdf0e10cSrcweir }
261*cdf0e10cSrcweir 
262*cdf0e10cSrcweir uno::Reference < task::XInteractionRequest > RequestAmbigousFilter::GetRequest()
263*cdf0e10cSrcweir {
264*cdf0e10cSrcweir     return uno::Reference < task::XInteractionRequest > (pImp);
265*cdf0e10cSrcweir }
266*cdf0e10cSrcweir 
267*cdf0e10cSrcweir //---------------------------------------------------------------------------------------------------------
268*cdf0e10cSrcweir // initialize instance with all neccessary informations
269*cdf0e10cSrcweir // We use it without any further checks on our member then ...!
270*cdf0e10cSrcweir //---------------------------------------------------------------------------------------------------------
271*cdf0e10cSrcweir RequestAmbigousFilter_Impl::RequestAmbigousFilter_Impl( const ::rtl::OUString& sURL            ,
272*cdf0e10cSrcweir                                               const ::rtl::OUString& sSelectedFilter ,
273*cdf0e10cSrcweir                                               const ::rtl::OUString& sDetectedFilter )
274*cdf0e10cSrcweir {
275*cdf0e10cSrcweir 	::rtl::OUString temp;
276*cdf0e10cSrcweir 	css::uno::Reference< css::uno::XInterface > temp2;
277*cdf0e10cSrcweir     css::document::AmbigousFilterRequest aFilterRequest( temp                             ,
278*cdf0e10cSrcweir                                                          temp2 ,
279*cdf0e10cSrcweir                                                          sURL                                          ,
280*cdf0e10cSrcweir                                                          sSelectedFilter                               ,
281*cdf0e10cSrcweir                                                          sDetectedFilter                               );
282*cdf0e10cSrcweir     m_aRequest <<= aFilterRequest;
283*cdf0e10cSrcweir 
284*cdf0e10cSrcweir     m_pAbort  = new ContinuationAbort       ;
285*cdf0e10cSrcweir     m_pFilter = new ContinuationFilterSelect;
286*cdf0e10cSrcweir 
287*cdf0e10cSrcweir     m_lContinuations.realloc( 2 );
288*cdf0e10cSrcweir     m_lContinuations[0] = css::uno::Reference< css::task::XInteractionContinuation >( m_pAbort  );
289*cdf0e10cSrcweir     m_lContinuations[1] = css::uno::Reference< css::task::XInteractionContinuation >( m_pFilter );
290*cdf0e10cSrcweir }
291*cdf0e10cSrcweir 
292*cdf0e10cSrcweir //---------------------------------------------------------------------------------------------------------
293*cdf0e10cSrcweir // return abort state of interaction
294*cdf0e10cSrcweir // If it is true, return value of method "getFilter()" will be unspecified then!
295*cdf0e10cSrcweir //---------------------------------------------------------------------------------------------------------
296*cdf0e10cSrcweir sal_Bool RequestAmbigousFilter_Impl::isAbort() const
297*cdf0e10cSrcweir {
298*cdf0e10cSrcweir     return m_pAbort->isSelected();
299*cdf0e10cSrcweir }
300*cdf0e10cSrcweir 
301*cdf0e10cSrcweir //---------------------------------------------------------------------------------------------------------
302*cdf0e10cSrcweir // return user selected filter
303*cdf0e10cSrcweir // Return value valid for non aborted interaction only. Please check "isAbort()" before you call these ony!
304*cdf0e10cSrcweir //---------------------------------------------------------------------------------------------------------
305*cdf0e10cSrcweir ::rtl::OUString RequestAmbigousFilter_Impl::getFilter() const
306*cdf0e10cSrcweir {
307*cdf0e10cSrcweir     return m_pFilter->getFilter();
308*cdf0e10cSrcweir }
309*cdf0e10cSrcweir 
310*cdf0e10cSrcweir //---------------------------------------------------------------------------------------------------------
311*cdf0e10cSrcweir // handler call it to get type of request
312*cdf0e10cSrcweir // Is hard coded to "please select filter" here. see ctor for further informations.
313*cdf0e10cSrcweir //---------------------------------------------------------------------------------------------------------
314*cdf0e10cSrcweir css::uno::Any SAL_CALL RequestAmbigousFilter_Impl::getRequest() throw( css::uno::RuntimeException )
315*cdf0e10cSrcweir {
316*cdf0e10cSrcweir     return m_aRequest;
317*cdf0e10cSrcweir }
318*cdf0e10cSrcweir 
319*cdf0e10cSrcweir //---------------------------------------------------------------------------------------------------------
320*cdf0e10cSrcweir // handler call it to get possible continuations
321*cdf0e10cSrcweir // We support "abort/select_filter" only here.
322*cdf0e10cSrcweir // After interaction we support read access on these continuations on our c++ interface to
323*cdf0e10cSrcweir // return user decision.
324*cdf0e10cSrcweir //---------------------------------------------------------------------------------------------------------
325*cdf0e10cSrcweir css::uno::Sequence< css::uno::Reference< css::task::XInteractionContinuation > > SAL_CALL RequestAmbigousFilter_Impl::getContinuations() throw( css::uno::RuntimeException )
326*cdf0e10cSrcweir {
327*cdf0e10cSrcweir     return m_lContinuations;
328*cdf0e10cSrcweir }
329*cdf0e10cSrcweir */
330*cdf0e10cSrcweir 
331*cdf0e10cSrcweir class InteractionRequest_Impl : public ::cppu::WeakImplHelper1< ::com::sun::star::task::XInteractionRequest >
332*cdf0e10cSrcweir {
333*cdf0e10cSrcweir     uno::Any m_aRequest;
334*cdf0e10cSrcweir     uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionContinuation > > m_lContinuations;
335*cdf0e10cSrcweir 
336*cdf0e10cSrcweir public:
337*cdf0e10cSrcweir     InteractionRequest_Impl( const ::com::sun::star::uno::Any& aRequest,
338*cdf0e10cSrcweir         const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionContinuation > > lContinuations )
339*cdf0e10cSrcweir     {
340*cdf0e10cSrcweir         m_aRequest = aRequest;
341*cdf0e10cSrcweir         m_lContinuations = lContinuations;
342*cdf0e10cSrcweir     }
343*cdf0e10cSrcweir 
344*cdf0e10cSrcweir     virtual uno::Any SAL_CALL getRequest() throw( uno::RuntimeException );
345*cdf0e10cSrcweir     virtual uno::Sequence< uno::Reference< task::XInteractionContinuation > > SAL_CALL getContinuations()
346*cdf0e10cSrcweir             throw( uno::RuntimeException );
347*cdf0e10cSrcweir };
348*cdf0e10cSrcweir 
349*cdf0e10cSrcweir uno::Any SAL_CALL InteractionRequest_Impl::getRequest() throw( uno::RuntimeException )
350*cdf0e10cSrcweir {
351*cdf0e10cSrcweir     return m_aRequest;
352*cdf0e10cSrcweir }
353*cdf0e10cSrcweir 
354*cdf0e10cSrcweir uno::Sequence< uno::Reference< task::XInteractionContinuation > > SAL_CALL InteractionRequest_Impl::getContinuations()
355*cdf0e10cSrcweir     throw( uno::RuntimeException )
356*cdf0e10cSrcweir {
357*cdf0e10cSrcweir     return m_lContinuations;
358*cdf0e10cSrcweir }
359*cdf0e10cSrcweir 
360*cdf0e10cSrcweir uno::Reference < task::XInteractionRequest > InteractionRequest::CreateRequest(
361*cdf0e10cSrcweir     const uno::Any& aRequest, const uno::Sequence< uno::Reference< task::XInteractionContinuation > > lContinuations )
362*cdf0e10cSrcweir {
363*cdf0e10cSrcweir     return new InteractionRequest_Impl( aRequest, lContinuations );
364*cdf0e10cSrcweir }
365*cdf0e10cSrcweir 
366*cdf0e10cSrcweir }       //  namespace framework
367