1*859212d1SAndrew Rist /**************************************************************
2cdf0e10cSrcweir *
3*859212d1SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one
4*859212d1SAndrew Rist * or more contributor license agreements. See the NOTICE file
5*859212d1SAndrew Rist * distributed with this work for additional information
6*859212d1SAndrew Rist * regarding copyright ownership. The ASF licenses this file
7*859212d1SAndrew Rist * to you under the Apache License, Version 2.0 (the
8*859212d1SAndrew Rist * "License"); you may not use this file except in compliance
9*859212d1SAndrew Rist * with the License. You may obtain a copy of the License at
10cdf0e10cSrcweir *
11*859212d1SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0
12cdf0e10cSrcweir *
13*859212d1SAndrew Rist * Unless required by applicable law or agreed to in writing,
14*859212d1SAndrew Rist * software distributed under the License is distributed on an
15*859212d1SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*859212d1SAndrew Rist * KIND, either express or implied. See the License for the
17*859212d1SAndrew Rist * specific language governing permissions and limitations
18*859212d1SAndrew Rist * under the License.
19cdf0e10cSrcweir *
20*859212d1SAndrew Rist *************************************************************/
21*859212d1SAndrew Rist
22*859212d1SAndrew Rist
23cdf0e10cSrcweir
24cdf0e10cSrcweir #include "com/sun/star/beans/XPropertyAccess.hpp"
25cdf0e10cSrcweir #include "com/sun/star/container/XContainerQuery.hpp"
26cdf0e10cSrcweir #include "com/sun/star/container/XNameContainer.hpp"
27cdf0e10cSrcweir #include "com/sun/star/document/AmbigousFilterRequest.hpp"
28cdf0e10cSrcweir #include "com/sun/star/document/FilterOptionsRequest.hpp"
29cdf0e10cSrcweir #include "com/sun/star/document/NoSuchFilterRequest.hpp"
30cdf0e10cSrcweir #include "com/sun/star/document/XImporter.hpp"
31cdf0e10cSrcweir #include "com/sun/star/document/XInteractionFilterOptions.hpp"
32cdf0e10cSrcweir #include "com/sun/star/document/XInteractionFilterSelect.hpp"
33cdf0e10cSrcweir #include "com/sun/star/lang/XMultiServiceFactory.hpp"
34cdf0e10cSrcweir #include "com/sun/star/task/XInteractionAbort.hpp"
35cdf0e10cSrcweir #include "com/sun/star/task/XInteractionRequest.hpp"
36cdf0e10cSrcweir #include "com/sun/star/ui/dialogs/XExecutableDialog.hpp"
37cdf0e10cSrcweir
38cdf0e10cSrcweir #include "vos/mutex.hxx"
39cdf0e10cSrcweir #include "comphelper/sequenceashashmap.hxx"
40cdf0e10cSrcweir #include "vcl/svapp.hxx"
41cdf0e10cSrcweir
42cdf0e10cSrcweir #include "getcontinuations.hxx"
43cdf0e10cSrcweir #include "fltdlg.hxx"
44cdf0e10cSrcweir
45cdf0e10cSrcweir #include "iahndl.hxx"
46cdf0e10cSrcweir
47cdf0e10cSrcweir using namespace com::sun::star;
48cdf0e10cSrcweir
49cdf0e10cSrcweir namespace {
50cdf0e10cSrcweir
51cdf0e10cSrcweir void
executeFilterDialog(Window * pParent,rtl::OUString const & rURL,uui::FilterNameList const & rFilters,rtl::OUString & rFilter)52cdf0e10cSrcweir executeFilterDialog(
53cdf0e10cSrcweir Window * pParent ,
54cdf0e10cSrcweir rtl::OUString const & rURL ,
55cdf0e10cSrcweir uui::FilterNameList const & rFilters,
56cdf0e10cSrcweir rtl::OUString & rFilter )
57cdf0e10cSrcweir SAL_THROW((uno::RuntimeException))
58cdf0e10cSrcweir {
59cdf0e10cSrcweir try
60cdf0e10cSrcweir {
61cdf0e10cSrcweir vos::OGuard aGuard(Application::GetSolarMutex());
62cdf0e10cSrcweir
63cdf0e10cSrcweir std::auto_ptr< ResMgr > xManager(
64cdf0e10cSrcweir ResMgr::CreateResMgr(CREATEVERSIONRESMGR_NAME(uui)));
65cdf0e10cSrcweir
66cdf0e10cSrcweir std::auto_ptr< uui::FilterDialog > xDialog(
67cdf0e10cSrcweir new uui::FilterDialog(pParent, xManager.get()));
68cdf0e10cSrcweir
69cdf0e10cSrcweir xDialog->SetURL(rURL);
70cdf0e10cSrcweir xDialog->ChangeFilters(&rFilters);
71cdf0e10cSrcweir
72cdf0e10cSrcweir uui::FilterNameListPtr pSelected = rFilters.end();
73cdf0e10cSrcweir if( xDialog->AskForFilter( pSelected ) )
74cdf0e10cSrcweir {
75cdf0e10cSrcweir rFilter = pSelected->sInternal;
76cdf0e10cSrcweir }
77cdf0e10cSrcweir }
78cdf0e10cSrcweir catch (std::bad_alloc const &)
79cdf0e10cSrcweir {
80cdf0e10cSrcweir throw uno::RuntimeException(
81cdf0e10cSrcweir rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("out of memory")),
82cdf0e10cSrcweir uno::Reference< uno::XInterface >());
83cdf0e10cSrcweir }
84cdf0e10cSrcweir }
85cdf0e10cSrcweir
86cdf0e10cSrcweir void
handleNoSuchFilterRequest_(Window * pParent,uno::Reference<lang::XMultiServiceFactory> const & xServiceFactory,document::NoSuchFilterRequest const & rRequest,uno::Sequence<uno::Reference<task::XInteractionContinuation>> const & rContinuations)87cdf0e10cSrcweir handleNoSuchFilterRequest_(
88cdf0e10cSrcweir Window * pParent,
89cdf0e10cSrcweir uno::Reference< lang::XMultiServiceFactory > const & xServiceFactory,
90cdf0e10cSrcweir document::NoSuchFilterRequest const & rRequest,
91cdf0e10cSrcweir uno::Sequence< uno::Reference< task::XInteractionContinuation > > const &
92cdf0e10cSrcweir rContinuations )
93cdf0e10cSrcweir SAL_THROW((uno::RuntimeException))
94cdf0e10cSrcweir {
95cdf0e10cSrcweir uno::Reference< task::XInteractionAbort > xAbort;
96cdf0e10cSrcweir uno::Reference< document::XInteractionFilterSelect > xFilterTransport;
97cdf0e10cSrcweir getContinuations(rContinuations, &xAbort, &xFilterTransport);
98cdf0e10cSrcweir
99cdf0e10cSrcweir // check neccessary ressources - if they don't exist - abort or
100cdf0e10cSrcweir // break this operation
101cdf0e10cSrcweir if (!xAbort.is())
102cdf0e10cSrcweir return;
103cdf0e10cSrcweir
104cdf0e10cSrcweir if (!xFilterTransport.is())
105cdf0e10cSrcweir {
106cdf0e10cSrcweir xAbort->select();
107cdf0e10cSrcweir return;
108cdf0e10cSrcweir }
109cdf0e10cSrcweir
110cdf0e10cSrcweir uno::Reference< container::XContainerQuery > xFilterContainer;
111cdf0e10cSrcweir try
112cdf0e10cSrcweir {
113cdf0e10cSrcweir xFilterContainer.set( xServiceFactory->createInstance(
114cdf0e10cSrcweir ::rtl::OUString::createFromAscii(
115cdf0e10cSrcweir "com.sun.star.document.FilterFactory") ),
116cdf0e10cSrcweir uno::UNO_QUERY );
117cdf0e10cSrcweir }
118cdf0e10cSrcweir catch ( uno::Exception const & )
119cdf0e10cSrcweir {
120cdf0e10cSrcweir }
121cdf0e10cSrcweir
122cdf0e10cSrcweir if (!xFilterContainer.is())
123cdf0e10cSrcweir {
124cdf0e10cSrcweir xAbort->select();
125cdf0e10cSrcweir return;
126cdf0e10cSrcweir }
127cdf0e10cSrcweir
128cdf0e10cSrcweir uui::FilterNameList lNames;
129cdf0e10cSrcweir
130cdf0e10cSrcweir // Note: We look for all filters here which match the following criteria:
131cdf0e10cSrcweir // - they are import filters as minimum (of course they can
132cdf0e10cSrcweir // support export too)
133cdf0e10cSrcweir // - we don't show any filter which are flaged as "don't show it
134cdf0e10cSrcweir // at the UI" or "they are not installed"
135cdf0e10cSrcweir // - we ignore filters, which have not set any valid
136cdf0e10cSrcweir // DocumentService (e.g. our pure graphic filters)
137cdf0e10cSrcweir // - we show it sorted by her UIName's
138cdf0e10cSrcweir // - We don't use the order flag or prefer default filters.
139cdf0e10cSrcweir // (Because this list shows all filters and the user should
140cdf0e10cSrcweir // find his filter vry easy by his UIName ...)
141cdf0e10cSrcweir // - We use "_query_all" here ... but we filter graphic filters
142cdf0e10cSrcweir // out by using DocumentService property later!
143cdf0e10cSrcweir uno::Reference< container::XEnumeration > xFilters
144cdf0e10cSrcweir = xFilterContainer->createSubSetEnumerationByQuery(
145cdf0e10cSrcweir ::rtl::OUString::createFromAscii(
146cdf0e10cSrcweir "_query_all:sort_prop=uiname:iflags=1:eflags=143360"));
147cdf0e10cSrcweir while (xFilters->hasMoreElements())
148cdf0e10cSrcweir {
149cdf0e10cSrcweir try
150cdf0e10cSrcweir {
151cdf0e10cSrcweir ::comphelper::SequenceAsHashMap lProps(xFilters->nextElement());
152cdf0e10cSrcweir uui::FilterNamePair aPair;
153cdf0e10cSrcweir
154cdf0e10cSrcweir aPair.sInternal = lProps.getUnpackedValueOrDefault(
155cdf0e10cSrcweir rtl::OUString::createFromAscii("Name"), ::rtl::OUString());
156cdf0e10cSrcweir aPair.sUI = lProps.getUnpackedValueOrDefault(
157cdf0e10cSrcweir rtl::OUString::createFromAscii("UIName"), ::rtl::OUString());
158cdf0e10cSrcweir if ( (!aPair.sInternal.Len()) || (!aPair.sUI.Len() ) )
159cdf0e10cSrcweir {
160cdf0e10cSrcweir continue;
161cdf0e10cSrcweir }
162cdf0e10cSrcweir lNames.push_back( aPair );
163cdf0e10cSrcweir }
164cdf0e10cSrcweir catch(const uno::RuntimeException&)
165cdf0e10cSrcweir {
166cdf0e10cSrcweir throw;
167cdf0e10cSrcweir }
168cdf0e10cSrcweir catch(const uno::Exception&)
169cdf0e10cSrcweir {
170cdf0e10cSrcweir continue;
171cdf0e10cSrcweir }
172cdf0e10cSrcweir }
173cdf0e10cSrcweir
174cdf0e10cSrcweir // no list available for showing
175cdf0e10cSrcweir // -> abort operation
176cdf0e10cSrcweir if (lNames.size()<1)
177cdf0e10cSrcweir {
178cdf0e10cSrcweir xAbort->select();
179cdf0e10cSrcweir return;
180cdf0e10cSrcweir }
181cdf0e10cSrcweir
182cdf0e10cSrcweir // let the user select the right filter
183cdf0e10cSrcweir rtl::OUString sSelectedFilter;
184cdf0e10cSrcweir executeFilterDialog( pParent,
185cdf0e10cSrcweir rRequest.URL,
186cdf0e10cSrcweir lNames,
187cdf0e10cSrcweir sSelectedFilter );
188cdf0e10cSrcweir
189cdf0e10cSrcweir // If he doesn't select anyone
190cdf0e10cSrcweir // -> abort operation
191cdf0e10cSrcweir if (sSelectedFilter.getLength()<1)
192cdf0e10cSrcweir {
193cdf0e10cSrcweir xAbort->select();
194cdf0e10cSrcweir return;
195cdf0e10cSrcweir }
196cdf0e10cSrcweir
197cdf0e10cSrcweir // otherwhise set it for return
198cdf0e10cSrcweir xFilterTransport->setFilter( sSelectedFilter );
199cdf0e10cSrcweir xFilterTransport->select();
200cdf0e10cSrcweir }
201cdf0e10cSrcweir
202cdf0e10cSrcweir void
handleAmbigousFilterRequest_(Window * pParent,uno::Reference<lang::XMultiServiceFactory> const & xServiceFactory,document::AmbigousFilterRequest const & rRequest,uno::Sequence<uno::Reference<task::XInteractionContinuation>> const & rContinuations)203cdf0e10cSrcweir handleAmbigousFilterRequest_(
204cdf0e10cSrcweir Window * pParent,
205cdf0e10cSrcweir uno::Reference< lang::XMultiServiceFactory > const & xServiceFactory,
206cdf0e10cSrcweir document::AmbigousFilterRequest const & rRequest,
207cdf0e10cSrcweir uno::Sequence<
208cdf0e10cSrcweir uno::Reference<
209cdf0e10cSrcweir task::XInteractionContinuation > > const & rContinuations)
210cdf0e10cSrcweir SAL_THROW((uno::RuntimeException))
211cdf0e10cSrcweir {
212cdf0e10cSrcweir uno::Reference< task::XInteractionAbort > xAbort;
213cdf0e10cSrcweir uno::Reference< document::XInteractionFilterSelect > xFilterTransport;
214cdf0e10cSrcweir getContinuations(rContinuations, &xAbort, &xFilterTransport);
215cdf0e10cSrcweir
216cdf0e10cSrcweir uui::FilterNameList lNames;
217cdf0e10cSrcweir
218cdf0e10cSrcweir uno::Reference< container::XNameContainer > xFilterContainer;
219cdf0e10cSrcweir try
220cdf0e10cSrcweir {
221cdf0e10cSrcweir xFilterContainer.set( xServiceFactory->createInstance(
222cdf0e10cSrcweir ::rtl::OUString::createFromAscii(
223cdf0e10cSrcweir "com.sun.star.document.FilterFactory") ),
224cdf0e10cSrcweir uno::UNO_QUERY );
225cdf0e10cSrcweir }
226cdf0e10cSrcweir catch ( uno::Exception & )
227cdf0e10cSrcweir {
228cdf0e10cSrcweir }
229cdf0e10cSrcweir
230cdf0e10cSrcweir if( xFilterContainer.is() )
231cdf0e10cSrcweir {
232cdf0e10cSrcweir uno::Any aPackedSet ;
233cdf0e10cSrcweir uno::Sequence< beans::PropertyValue > lProps ;
234cdf0e10cSrcweir sal_Int32 nStep ;
235cdf0e10cSrcweir uui::FilterNamePair aPair ;
236cdf0e10cSrcweir
237cdf0e10cSrcweir try
238cdf0e10cSrcweir {
239cdf0e10cSrcweir aPackedSet = xFilterContainer->getByName( rRequest.SelectedFilter );
240cdf0e10cSrcweir }
241cdf0e10cSrcweir catch(const container::NoSuchElementException&)
242cdf0e10cSrcweir {
243cdf0e10cSrcweir aPackedSet.clear();
244cdf0e10cSrcweir }
245cdf0e10cSrcweir aPackedSet >>= lProps;
246cdf0e10cSrcweir for( nStep=0; nStep<lProps.getLength(); ++nStep )
247cdf0e10cSrcweir {
248cdf0e10cSrcweir if( lProps[nStep].Name.compareToAscii("UIName") == 0 )
249cdf0e10cSrcweir {
250cdf0e10cSrcweir ::rtl::OUString sTemp;
251cdf0e10cSrcweir lProps[nStep].Value >>= sTemp;
252cdf0e10cSrcweir aPair.sUI = sTemp;
253cdf0e10cSrcweir aPair.sInternal = rRequest.SelectedFilter;
254cdf0e10cSrcweir lNames.push_back( aPair );
255cdf0e10cSrcweir break;
256cdf0e10cSrcweir }
257cdf0e10cSrcweir }
258cdf0e10cSrcweir
259cdf0e10cSrcweir try
260cdf0e10cSrcweir {
261cdf0e10cSrcweir aPackedSet = xFilterContainer->getByName( rRequest.DetectedFilter );
262cdf0e10cSrcweir }
263cdf0e10cSrcweir catch(const container::NoSuchElementException&)
264cdf0e10cSrcweir {
265cdf0e10cSrcweir aPackedSet.clear();
266cdf0e10cSrcweir }
267cdf0e10cSrcweir aPackedSet >>= lProps;
268cdf0e10cSrcweir for( nStep=0; nStep<lProps.getLength(); ++nStep )
269cdf0e10cSrcweir {
270cdf0e10cSrcweir if( lProps[nStep].Name.compareToAscii("UIName") == 0 )
271cdf0e10cSrcweir {
272cdf0e10cSrcweir ::rtl::OUString sTemp;
273cdf0e10cSrcweir lProps[nStep].Value >>= sTemp;
274cdf0e10cSrcweir aPair.sUI = sTemp;
275cdf0e10cSrcweir aPair.sInternal = rRequest.DetectedFilter;
276cdf0e10cSrcweir lNames.push_back( aPair );
277cdf0e10cSrcweir break;
278cdf0e10cSrcweir }
279cdf0e10cSrcweir }
280cdf0e10cSrcweir }
281cdf0e10cSrcweir
282cdf0e10cSrcweir if( xAbort.is() && xFilterTransport.is() )
283cdf0e10cSrcweir {
284cdf0e10cSrcweir if( lNames.size() < 1 )
285cdf0e10cSrcweir {
286cdf0e10cSrcweir xAbort->select();
287cdf0e10cSrcweir }
288cdf0e10cSrcweir else
289cdf0e10cSrcweir {
290cdf0e10cSrcweir rtl::OUString sFilter;
291cdf0e10cSrcweir executeFilterDialog( pParent,
292cdf0e10cSrcweir rRequest.URL,
293cdf0e10cSrcweir lNames,
294cdf0e10cSrcweir sFilter );
295cdf0e10cSrcweir
296cdf0e10cSrcweir if( sFilter.getLength() > 0 )
297cdf0e10cSrcweir {
298cdf0e10cSrcweir xFilterTransport->setFilter( sFilter );
299cdf0e10cSrcweir xFilterTransport->select();
300cdf0e10cSrcweir }
301cdf0e10cSrcweir else
302cdf0e10cSrcweir xAbort->select();
303cdf0e10cSrcweir }
304cdf0e10cSrcweir }
305cdf0e10cSrcweir }
306cdf0e10cSrcweir
307cdf0e10cSrcweir void
handleFilterOptionsRequest_(uno::Reference<lang::XMultiServiceFactory> const & xServiceFactory,document::FilterOptionsRequest const & rRequest,uno::Sequence<uno::Reference<task::XInteractionContinuation>> const & rContinuations)308cdf0e10cSrcweir handleFilterOptionsRequest_(
309cdf0e10cSrcweir uno::Reference< lang::XMultiServiceFactory > const & xServiceFactory,
310cdf0e10cSrcweir document::FilterOptionsRequest const & rRequest,
311cdf0e10cSrcweir uno::Sequence< uno::Reference< task::XInteractionContinuation > > const &
312cdf0e10cSrcweir rContinuations)
313cdf0e10cSrcweir SAL_THROW((uno::RuntimeException))
314cdf0e10cSrcweir {
315cdf0e10cSrcweir uno::Reference< task::XInteractionAbort > xAbort;
316cdf0e10cSrcweir uno::Reference< document::XInteractionFilterOptions > xFilterOptions;
317cdf0e10cSrcweir getContinuations(rContinuations, &xAbort, &xFilterOptions);
318cdf0e10cSrcweir
319cdf0e10cSrcweir uno::Reference< container::XNameAccess > xFilterCFG;
320cdf0e10cSrcweir try
321cdf0e10cSrcweir {
322cdf0e10cSrcweir xFilterCFG.set( xServiceFactory->createInstance(
323cdf0e10cSrcweir ::rtl::OUString::createFromAscii(
324cdf0e10cSrcweir "com.sun.star.document.FilterFactory" ) ),
325cdf0e10cSrcweir uno::UNO_QUERY );
326cdf0e10cSrcweir }
327cdf0e10cSrcweir catch ( uno::Exception const & )
328cdf0e10cSrcweir {
329cdf0e10cSrcweir }
330cdf0e10cSrcweir
331cdf0e10cSrcweir if( xFilterCFG.is() && rRequest.rProperties.getLength() )
332cdf0e10cSrcweir {
333cdf0e10cSrcweir try
334cdf0e10cSrcweir {
335cdf0e10cSrcweir ::rtl::OUString aFilterName;
336cdf0e10cSrcweir sal_Int32 nPropCount = rRequest.rProperties.getLength();
337cdf0e10cSrcweir for( sal_Int32 ind = 0; ind < nPropCount; ++ind )
338cdf0e10cSrcweir {
339cdf0e10cSrcweir rtl::OUString tmp = rRequest.rProperties[ind].Name;
340cdf0e10cSrcweir if( rRequest.rProperties[ind].Name.equals(
341cdf0e10cSrcweir ::rtl::OUString::createFromAscii("FilterName")) )
342cdf0e10cSrcweir {
343cdf0e10cSrcweir rRequest.rProperties[ind].Value >>= aFilterName;
344cdf0e10cSrcweir break;
345cdf0e10cSrcweir }
346cdf0e10cSrcweir }
347cdf0e10cSrcweir
348cdf0e10cSrcweir uno::Sequence < beans::PropertyValue > aProps;
349cdf0e10cSrcweir if ( xFilterCFG->getByName( aFilterName ) >>= aProps )
350cdf0e10cSrcweir {
351cdf0e10cSrcweir sal_Int32 nPropertyCount = aProps.getLength();
352cdf0e10cSrcweir for( sal_Int32 nProperty=0;
353cdf0e10cSrcweir nProperty < nPropertyCount;
354cdf0e10cSrcweir ++nProperty )
355cdf0e10cSrcweir if( aProps[nProperty].Name.equals(
356cdf0e10cSrcweir ::rtl::OUString::createFromAscii("UIComponent")) )
357cdf0e10cSrcweir {
358cdf0e10cSrcweir ::rtl::OUString aServiceName;
359cdf0e10cSrcweir aProps[nProperty].Value >>= aServiceName;
360cdf0e10cSrcweir if( aServiceName.getLength() )
361cdf0e10cSrcweir {
362cdf0e10cSrcweir uno::Reference<
363cdf0e10cSrcweir ui::dialogs::XExecutableDialog > xFilterDialog(
364cdf0e10cSrcweir xServiceFactory->createInstance(
365cdf0e10cSrcweir aServiceName ),
366cdf0e10cSrcweir uno::UNO_QUERY );
367cdf0e10cSrcweir uno::Reference< beans::XPropertyAccess >
368cdf0e10cSrcweir xFilterProperties( xFilterDialog,
369cdf0e10cSrcweir uno::UNO_QUERY );
370cdf0e10cSrcweir
371cdf0e10cSrcweir if( xFilterDialog.is() && xFilterProperties.is() )
372cdf0e10cSrcweir {
373cdf0e10cSrcweir uno::Reference<
374cdf0e10cSrcweir document::XImporter > xImporter(
375cdf0e10cSrcweir xFilterDialog, uno::UNO_QUERY );
376cdf0e10cSrcweir if( xImporter.is() )
377cdf0e10cSrcweir xImporter->setTargetDocument(
378cdf0e10cSrcweir uno::Reference< lang::XComponent >(
379cdf0e10cSrcweir rRequest.rModel, uno::UNO_QUERY ) );
380cdf0e10cSrcweir
381cdf0e10cSrcweir xFilterProperties->setPropertyValues(
382cdf0e10cSrcweir rRequest.rProperties );
383cdf0e10cSrcweir
384cdf0e10cSrcweir if( xFilterDialog->execute() )
385cdf0e10cSrcweir {
386cdf0e10cSrcweir xFilterOptions->setFilterOptions(
387cdf0e10cSrcweir xFilterProperties->getPropertyValues() );
388cdf0e10cSrcweir xFilterOptions->select();
389cdf0e10cSrcweir return;
390cdf0e10cSrcweir }
391cdf0e10cSrcweir }
392cdf0e10cSrcweir }
393cdf0e10cSrcweir break;
394cdf0e10cSrcweir }
395cdf0e10cSrcweir }
396cdf0e10cSrcweir }
397cdf0e10cSrcweir catch( container::NoSuchElementException& )
398cdf0e10cSrcweir {
399cdf0e10cSrcweir // the filter name is unknown
400cdf0e10cSrcweir }
401cdf0e10cSrcweir catch( uno::Exception& )
402cdf0e10cSrcweir {
403cdf0e10cSrcweir }
404cdf0e10cSrcweir }
405cdf0e10cSrcweir
406cdf0e10cSrcweir xAbort->select();
407cdf0e10cSrcweir }
408cdf0e10cSrcweir
409cdf0e10cSrcweir } // namespace
410cdf0e10cSrcweir
411cdf0e10cSrcweir bool
handleNoSuchFilterRequest(uno::Reference<task::XInteractionRequest> const & rRequest)412cdf0e10cSrcweir UUIInteractionHelper::handleNoSuchFilterRequest(
413cdf0e10cSrcweir uno::Reference< task::XInteractionRequest > const & rRequest)
414cdf0e10cSrcweir SAL_THROW((uno::RuntimeException))
415cdf0e10cSrcweir {
416cdf0e10cSrcweir uno::Any aAnyRequest(rRequest->getRequest());
417cdf0e10cSrcweir
418cdf0e10cSrcweir document::NoSuchFilterRequest aNoSuchFilterRequest;
419cdf0e10cSrcweir if (aAnyRequest >>= aNoSuchFilterRequest)
420cdf0e10cSrcweir {
421cdf0e10cSrcweir handleNoSuchFilterRequest_(getParentProperty(),
422cdf0e10cSrcweir m_xServiceFactory,
423cdf0e10cSrcweir aNoSuchFilterRequest,
424cdf0e10cSrcweir rRequest->getContinuations());
425cdf0e10cSrcweir return true;
426cdf0e10cSrcweir }
427cdf0e10cSrcweir return false;
428cdf0e10cSrcweir }
429cdf0e10cSrcweir
430cdf0e10cSrcweir bool
handleAmbigousFilterRequest(uno::Reference<task::XInteractionRequest> const & rRequest)431cdf0e10cSrcweir UUIInteractionHelper::handleAmbigousFilterRequest(
432cdf0e10cSrcweir uno::Reference< task::XInteractionRequest > const & rRequest)
433cdf0e10cSrcweir SAL_THROW((uno::RuntimeException))
434cdf0e10cSrcweir {
435cdf0e10cSrcweir uno::Any aAnyRequest(rRequest->getRequest());
436cdf0e10cSrcweir
437cdf0e10cSrcweir document::AmbigousFilterRequest aAmbigousFilterRequest;
438cdf0e10cSrcweir if (aAnyRequest >>= aAmbigousFilterRequest)
439cdf0e10cSrcweir {
440cdf0e10cSrcweir handleAmbigousFilterRequest_(getParentProperty(),
441cdf0e10cSrcweir m_xServiceFactory,
442cdf0e10cSrcweir aAmbigousFilterRequest,
443cdf0e10cSrcweir rRequest->getContinuations());
444cdf0e10cSrcweir return true;
445cdf0e10cSrcweir }
446cdf0e10cSrcweir return false;
447cdf0e10cSrcweir }
448cdf0e10cSrcweir
449cdf0e10cSrcweir bool
handleFilterOptionsRequest(uno::Reference<task::XInteractionRequest> const & rRequest)450cdf0e10cSrcweir UUIInteractionHelper::handleFilterOptionsRequest(
451cdf0e10cSrcweir uno::Reference< task::XInteractionRequest > const & rRequest)
452cdf0e10cSrcweir SAL_THROW((uno::RuntimeException))
453cdf0e10cSrcweir {
454cdf0e10cSrcweir uno::Any aAnyRequest(rRequest->getRequest());
455cdf0e10cSrcweir
456cdf0e10cSrcweir document::FilterOptionsRequest aFilterOptionsRequest;
457cdf0e10cSrcweir if (aAnyRequest >>= aFilterOptionsRequest)
458cdf0e10cSrcweir {
459cdf0e10cSrcweir handleFilterOptionsRequest_(m_xServiceFactory,
460cdf0e10cSrcweir aFilterOptionsRequest,
461cdf0e10cSrcweir rRequest->getContinuations());
462cdf0e10cSrcweir return true;
463cdf0e10cSrcweir }
464cdf0e10cSrcweir return false;
465cdf0e10cSrcweir }
466cdf0e10cSrcweir
467cdf0e10cSrcweir
468