summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sfx2/source/doc/doctemplates.cxx21
-rw-r--r--unotools/source/ucbhelper/xtempfile.cxx6
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 )
{