summaryrefslogtreecommitdiff
path: root/cui/source/dialogs/plfilter.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'cui/source/dialogs/plfilter.cxx')
-rw-r--r--cui/source/dialogs/plfilter.cxx100
1 files changed, 47 insertions, 53 deletions
diff --git a/cui/source/dialogs/plfilter.cxx b/cui/source/dialogs/plfilter.cxx
index 678db753ad3b..ff6816026c4e 100644
--- a/cui/source/dialogs/plfilter.cxx
+++ b/cui/source/dialogs/plfilter.cxx
@@ -35,6 +35,7 @@
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
#include <com/sun/star/plugin/PluginDescription.hpp>
+#include <com/sun/star/plugin/PluginManager.hpp>
#include <com/sun/star/plugin/XPluginManager.hpp>
using namespace std;
@@ -57,69 +58,62 @@ typedef map< String, StrSet, ltstr > FilterMap;
//==================================================================================================
void fillNetscapePluginFilters( Sequence< rtl::OUString >& rPluginNames, Sequence< rtl::OUString >& rPluginTypes )
{
- Reference< XMultiServiceFactory > xMan( ::comphelper::getProcessServiceFactory() );
- Reference< XPluginManager > xPMgr( xMan->createInstance(
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.plugin.PluginManager") ) ), UNO_QUERY );
+ Reference< XComponentContext > xContext = comphelper::getProcessComponentContext();
+ Reference< XPluginManager > xPMgr( PluginManager::create(xContext) );
- if ( xPMgr.is() )
+ FilterMap aMap;
+
+ // sum up the mimetypes: one description, multiple extensions
+
+ Sequence<PluginDescription > aDescriptions( xPMgr->getPluginDescriptions() );
+ const PluginDescription * pDescriptions = aDescriptions.getConstArray();
+ for ( sal_uInt32 nPos = aDescriptions.getLength(); nPos--; )
{
- FilterMap aMap;
+ const PluginDescription & rDescr = pDescriptions[nPos];
- // sum up the mimetypes: one description, multiple extensions
+ StrSet& rTypes = aMap[ rDescr.Description ];
+ String aExtension( rDescr.Extension );
- Sequence<PluginDescription > aDescriptions( xPMgr->getPluginDescriptions() );
- const PluginDescription * pDescriptions = aDescriptions.getConstArray();
- for ( sal_uInt32 nPos = aDescriptions.getLength(); nPos--; )
+ for ( sal_uInt16 nCnt = comphelper::string::getTokenCount(aExtension, ';'); nCnt--; )
+ {
+ // no default plugins anymore
+ String aExt( aExtension.GetToken( nCnt, ';' ) );
+ if ( aExt.CompareToAscii( "*.*" ) != COMPARE_EQUAL )
+ rTypes.insert( aExt );
+ }
+ }
+
+ rPluginNames = Sequence< rtl::OUString >( aMap.size() );
+ rPluginTypes = Sequence< rtl::OUString >( aMap.size() );
+ rtl::OUString* pPluginNames = rPluginNames.getArray();
+ rtl::OUString* pPluginTypes = rPluginTypes.getArray();
+ int nIndex = 0;
+ for ( FilterMap::iterator iPos = aMap.begin(); iPos != aMap.end(); ++iPos )
+ {
+ String aText( (*iPos).first );
+ String aType;
+ StrSet& rTypes = (*iPos).second;
+ StrSet::iterator i = rTypes.begin();
+ while ( i != rTypes.end() )
{
- const PluginDescription & rDescr = pDescriptions[nPos];
-
- StrSet& rTypes = aMap[ rDescr.Description ];
- String aExtension( rDescr.Extension );
-
- for ( sal_uInt16 nCnt = comphelper::string::getTokenCount(aExtension, ';'); nCnt--; )
- {
- // no default plugins anymore
- String aExt( aExtension.GetToken( nCnt, ';' ) );
- if ( aExt.CompareToAscii( "*.*" ) != COMPARE_EQUAL )
- rTypes.insert( aExt );
- }
+ aType += (*i);
+ ++i;
+ if ( i != rTypes.end() )
+ aType += ';';
}
- rPluginNames = Sequence< rtl::OUString >( aMap.size() );
- rPluginTypes = Sequence< rtl::OUString >( aMap.size() );
- rtl::OUString* pPluginNames = rPluginNames.getArray();
- rtl::OUString* pPluginTypes = rPluginTypes.getArray();
- int nIndex = 0;
- for ( FilterMap::iterator iPos = aMap.begin(); iPos != aMap.end(); ++iPos )
+ if ( aType.Len() )
{
- String aText( (*iPos).first );
- String aType;
- StrSet& rTypes = (*iPos).second;
- StrSet::iterator i = rTypes.begin();
- while ( i != rTypes.end() )
- {
- aType += (*i);
- ++i;
- if ( i != rTypes.end() )
- aType += ';';
- }
-
- if ( aType.Len() )
- {
- aText += String::CreateFromAscii( " (" );
- aText += aType;
- aText += ')';
- pPluginNames[nIndex] = aText;
- pPluginTypes[nIndex] = aType;
- nIndex++;
- }
+ aText += String::CreateFromAscii( " (" );
+ aText += aType;
+ aText += ')';
+ pPluginNames[nIndex] = aText;
+ pPluginTypes[nIndex] = aType;
+ nIndex++;
}
- rPluginNames.realloc( nIndex );
- rPluginTypes.realloc( nIndex );
}
- else
- ShowServiceNotAvailableError( NULL,
- String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "com.sun.star.plugin.PluginManager" ) ), sal_True );
+ rPluginNames.realloc( nIndex );
+ rPluginTypes.realloc( nIndex );
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */