diff options
-rw-r--r-- | sfx2/source/doc/doctemplates.cxx | 21 | ||||
-rw-r--r-- | unotools/source/ucbhelper/xtempfile.cxx | 6 |
2 files changed, 14 insertions, 13 deletions
diff --git a/sfx2/source/doc/doctemplates.cxx b/sfx2/source/doc/doctemplates.cxx index 9ac236b3b4f4..cbdbe676f6f1 100644 --- a/sfx2/source/doc/doctemplates.cxx +++ b/sfx2/source/doc/doctemplates.cxx @@ -40,6 +40,7 @@ #include <com/sun/star/beans/XPropertySetInfo.hpp> #include <com/sun/star/beans/XPropertyContainer.hpp> #include <com/sun/star/beans/StringPair.hpp> +#include <com/sun/star/ucb/SimpleFileAccess.hpp> #include <com/sun/star/util/theMacroExpander.hpp> #include <com/sun/star/util/theOfficeInstallationDirectories.hpp> #include <com/sun/star/configuration/theDefaultProvider.hpp> @@ -231,7 +232,7 @@ class SfxDocTplService_Impl const OUString& aNewGroupName ); void RemoveUINamesForTemplateDir_Impl( const OUString& aUserPath, std::u16string_view aGroupName ); - bool WriteUINamesForTemplateDir_Impl( const OUString& aUserPath, + bool WriteUINamesForTemplateDir_Impl( std::u16string_view aUserPath, const std::vector< beans::StringPair >& aUINames ); OUString CreateNewGroupFsys( const OUString& rGroupName, Content& aGroup ); @@ -1264,7 +1265,7 @@ void SfxDocTplService_Impl::RemoveUINamesForTemplateDir_Impl( const OUString& aU } -bool SfxDocTplService_Impl::WriteUINamesForTemplateDir_Impl( const OUString& aUserPath, +bool SfxDocTplService_Impl::WriteUINamesForTemplateDir_Impl( std::u16string_view aUserPath, const std::vector< beans::StringPair >& aUINames ) { bool bResult = false; @@ -1273,10 +1274,7 @@ bool SfxDocTplService_Impl::WriteUINamesForTemplateDir_Impl( const OUString& aUs io::TempFile::create(mxContext), uno::UNO_SET_THROW ); - OUString aTempURL = xTempFile->getUri(); - - uno::Reference< io::XStream > xStream( xTempFile ); - uno::Reference< io::XOutputStream > xOutStream = xStream->getOutputStream(); + uno::Reference< io::XOutputStream > xOutStream = xTempFile->getOutputStream(); if ( !xOutStream.is() ) throw uno::RuntimeException(); @@ -1287,17 +1285,14 @@ bool SfxDocTplService_Impl::WriteUINamesForTemplateDir_Impl( const OUString& aUs } catch( uno::Exception& ) {} - Content aTargetContent( aUserPath, maCmdEnv, comphelper::getProcessComponentContext() ); - Content aSourceContent( aTempURL, maCmdEnv, comphelper::getProcessComponentContext() ); - aTargetContent.transferContent( aSourceContent, - InsertOperation::Copy, - "groupuinames.xml", - ucb::NameClash::OVERWRITE, - "text/xml" ); + uno::Reference < ucb::XSimpleFileAccess3 > xAccess(ucb::SimpleFileAccess::create(mxContext)); + xAccess->writeFile(OUString::Concat(aUserPath) + "groupuinames.xml", xTempFile->getInputStream()); + bResult = true; } catch ( uno::Exception& ) { + TOOLS_WARN_EXCEPTION("sfx.doc", ""); } return bResult; diff --git a/unotools/source/ucbhelper/xtempfile.cxx b/unotools/source/ucbhelper/xtempfile.cxx index a8ace5da6725..a5772d8ba0c7 100644 --- a/unotools/source/ucbhelper/xtempfile.cxx +++ b/unotools/source/ucbhelper/xtempfile.cxx @@ -218,6 +218,12 @@ void SAL_CALL OTempFileService::closeOutput( ) throw css::io::NotConnectedException ( OUString(), static_cast < css::uno::XWeak * > (this ) ); mbOutClosed = true; + if (mpStream) + { + // so that if you then open the InputStream, you can read the content + mpStream->FlushBuffer(); + mpStream->Seek(0); + } if ( mbInClosed ) { |