Using macro expansion function for the remaining config entries.

Macro Expansion function is used in 'CustomAnimationPreset.cxx'
& 'TransitionPreset.cxx' to avoid code redundancy.Also appropriate
changes are to made to 'getExpandedFilePath' function.

Change-Id: I6b6ae068db3499fe2de2e78a884f9e0737577651
Reviewed-on: https://gerrit.libreoffice.org/5910
Reviewed-by: Thorsten Behrens <thb@documentfoundation.org>
Tested-by: Thorsten Behrens <thb@documentfoundation.org>
This commit is contained in:
Vishv Brahmbhatt 2013-09-11 00:44:36 +05:30 committed by Thorsten Behrens
parent 8b3cbc7115
commit 6fc6494aa9
5 changed files with 10 additions and 71 deletions

View file

@ -10,29 +10,17 @@
#include <comphelper/expandmacro.hxx>
#include <com/sun/star/uno/Reference.hxx>
#include <com/sun/star/uno/XComponentContext.hpp>
#include <com/sun/star/util/theMacroExpander.hpp>
#include <rtl/ustring.hxx>
#include <rtl/uri.hxx>
#include <osl/file.h>
#include <comphelper/processfactory.hxx>
#include <rtl/bootstrap.hxx>
using namespace ::com::sun::star;
using namespace ::com::sun::star::uno;
using ::com::sun::star::lang::XMultiServiceFactory;
namespace comphelper
{
rtl::OUString getExpandedFilePath(const rtl::OUString& filepath)
{
const Reference<XComponentContext> xContext( ::comphelper::getProcessComponentContext() );
return getExpandedFilePath(filepath, xContext);
}
rtl::OUString getExpandedFilePath(const rtl::OUString& filepath, const Reference<XComponentContext>& xContext)
{
Reference< util::XMacroExpander > xMacroExpander = util::theMacroExpander::get( xContext );
rtl::OUString aFilename = filepath;
if( aFilename.startsWith( "vnd.sun.star.expand:" ) )
@ -44,16 +32,10 @@ namespace comphelper
aMacro = rtl::Uri::decode( aMacro, rtl_UriDecodeWithCharset, RTL_TEXTENCODING_UTF8 );
// expand macro string
aFilename = xMacroExpander->expandMacros( aMacro );
}
rtl::Bootstrap::expandMacros( aMacro);
if( aFilename.startsWith( "file://" ) )
{
rtl::OUString aSysPath;
if( osl_getSystemPathFromFileURL( aFilename.pData, &aSysPath.pData ) == osl_File_E_None )
aFilename = aSysPath;
aFilename = aMacro;
}
return aFilename;
}
}

View file

@ -29,29 +29,8 @@ namespace comphelper
@param path to operate on. Both system file path and file URIs are accepted.
@return macro-expanded system file path.
@return macro-expanded file URI.
*/
COMPHELPER_DLLPUBLIC rtl::OUString getExpandedFilePath(const rtl::OUString& filepath);
/**
A helper function to get expanded version of macro for filepaths.
If the given path is prefixed by "vnd.sun.star.expand:", this
function substitutes contained macro references. It then always
returns a system file path, if necessary converting file
URIs. Example:
vnd.sun.star.expand:$BRAND_BASE_DIR/$BRAND_SHARE_SUBDIR gets
converted to e.g. /usr/lib64/libreoffice/share.
Use this version if you have a local reference of a component
context at hand, saves us the extra lookup.
@param path to operate on. Both system file path and file URIs are accepted.
@param xContext refers to the component context of the process.
@return macro-expanded system file path.
*/
COMPHELPER_DLLPUBLIC rtl::OUString getExpandedFilePath(const rtl::OUString& filepath,
const ::com::sun::star::uno::Reference<css::uno::XComponentContext>& xContext);
}
#endif

View file

@ -33,6 +33,7 @@
#include <comphelper/string.hxx>
#include <unotools/pathoptions.hxx>
#include <tools/stream.hxx>
#include <comphelper/expandmacro.hxx>
#include <tools/debug.hxx>
#include <rtl/uri.hxx>
@ -291,8 +292,6 @@ Reference< XAnimationNode > implImportEffects( const Reference< XMultiServiceFac
return xRootNode;
}
#define EXPAND_PROTOCOL "vnd.sun.star.expand:"
void CustomAnimationPresets::importEffects()
{
try
@ -324,16 +323,7 @@ void CustomAnimationPresets::importEffects()
for( sal_Int32 i=0; i<aFiles.getLength(); ++i )
{
OUString aURL = aFiles[i];
if( aURL.startsWith( EXPAND_PROTOCOL ) )
{
// cut protocol
OUString aMacro( aURL.copy( sizeof ( EXPAND_PROTOCOL ) -1 ) );
// decode uric class chars
aMacro = rtl::Uri::decode( aMacro, rtl_UriDecodeWithCharset, RTL_TEXTENCODING_UTF8 );
// expand macro string
aURL = xMacroExpander->expandMacros( aMacro );
}
OUString aURL = ::comphelper::getExpandedFilePath(aFiles[i]);
mxRootNode = implImportEffects( xServiceFactory, aURL );

View file

@ -31,6 +31,7 @@
#include <comphelper/processfactory.hxx>
#include <unotools/pathoptions.hxx>
#include <tools/stream.hxx>
#include <comphelper/expandmacro.hxx>
#include <rtl/uri.hxx>
#include <rtl/instance.hxx>
@ -134,8 +135,6 @@ bool TransitionPreset::importTransitionsFile( TransitionPresetList& rList,
return true;
}
#define EXPAND_PROTOCOL "vnd.sun.star.expand:"
bool TransitionPreset::importTransitionPresetList( TransitionPresetList& rList )
{
bool bRet = false;
@ -174,16 +173,7 @@ bool TransitionPreset::importTransitionPresetList( TransitionPresetList& rList )
for( sal_Int32 i=0; i<aFiles.getLength(); ++i )
{
OUString aURL = aFiles[i];
if( aURL.startsWith( EXPAND_PROTOCOL ) )
{
// cut protocol
OUString aMacro( aURL.copy( sizeof ( EXPAND_PROTOCOL ) -1 ) );
// decode uric class chars
aMacro = rtl::Uri::decode( aMacro, rtl_UriDecodeWithCharset, RTL_TEXTENCODING_UTF8 );
// expand macro string
aURL = xMacroExpander->expandMacros( aMacro );
}
OUString aURL = ::comphelper::getExpandedFilePath(aFiles[i]);
bRet |= importTransitionsFile( rList,
xServiceFactory,

View file

@ -1000,8 +1000,7 @@ void SdDrawDocument::InitLayoutVector()
rtl::OUString sFilename;
for( sal_Int32 i=0; i < aFiles.getLength(); ++i )
{
rtl::OUString filepath = aFiles[i];
sFilename= ::comphelper::getExpandedFilePath(filepath,xContext);
sFilename = ::comphelper::getExpandedFilePath(aFiles[i]);
// load layout file into DOM
Reference< XMultiServiceFactory > xServiceFactory(
@ -1030,8 +1029,7 @@ void SdDrawDocument::InitObjectVector()
rtl::OUString sFilename;
for( sal_Int32 i=0; i < aFiles.getLength(); ++i )
{
rtl::OUString filepath = aFiles[i];
sFilename= ::comphelper::getExpandedFilePath(filepath,xContext);
sFilename = ::comphelper::getExpandedFilePath(aFiles[i]);
// load presentation object file into DOM
Reference< XMultiServiceFactory > xServiceFactory(