summaryrefslogtreecommitdiff
path: root/sfx2/source/doc/doctemplates.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sfx2/source/doc/doctemplates.cxx')
-rw-r--r--sfx2/source/doc/doctemplates.cxx150
1 files changed, 82 insertions, 68 deletions
diff --git a/sfx2/source/doc/doctemplates.cxx b/sfx2/source/doc/doctemplates.cxx
index abc48c5a80..ee0571c30f 100644
--- a/sfx2/source/doc/doctemplates.cxx
+++ b/sfx2/source/doc/doctemplates.cxx
@@ -1,3 +1,4 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -29,14 +30,12 @@
#include "precompiled_sfx2.hxx"
#include "doctemplates.hxx"
-#include <vos/mutex.hxx>
+#include <osl/mutex.hxx>
#include <tools/debug.hxx>
#include <tools/urlobj.hxx>
#include <rtl/ustring.hxx>
#include <rtl/ustrbuf.hxx>
-#ifndef _SV_RESARY_HXX
#include <tools/resary.hxx>
-#endif
#include <vcl/svapp.hxx>
#include <vcl/wrkwin.hxx>
#include <comphelper/sequenceashashmap.hxx>
@@ -72,6 +71,8 @@
#include <sfx2/docfile.hxx>
#include "doc.hrc"
+#include <vector>
+
//-----------------------------------------------------------------------------
//=============================================================================
@@ -123,6 +124,8 @@ using namespace ::rtl;
using namespace ::ucbhelper;
using namespace ::comphelper;
+using ::std::vector;
+
//=============================================================================
class WaitWindow_Impl : public WorkWindow
@@ -148,13 +151,13 @@ struct NamePair_Impl
OUString maLongName;
};
-DECLARE_LIST( NameList_Impl, NamePair_Impl* )
-
class Updater_Impl;
-class GroupList_Impl;
class DocTemplates_EntryData_Impl;
class GroupData_Impl;
+typedef vector< NamePair_Impl* > NameList_Impl;
+typedef vector< GroupData_Impl* > GroupList_Impl;
+
//=============================================================================
#include <com/sun/star/task/XInteractionHandler.hpp>
#include <com/sun/star/ucb/XProgressHandler.hpp>
@@ -305,7 +308,7 @@ public:
//=============================================================================
-class Updater_Impl : public ::vos::OThread
+class Updater_Impl : public ::osl::Thread
{
private:
SfxDocTplService_Impl *mpDocTemplates;
@@ -359,8 +362,7 @@ public:
class GroupData_Impl
{
- DECLARE_LIST( EntryList_Impl, DocTemplates_EntryData_Impl* )
- EntryList_Impl maEntries;
+ vector< DocTemplates_EntryData_Impl* > maEntries;
OUString maTitle;
OUString maHierarchyURL;
OUString maTargetURL;
@@ -376,8 +378,8 @@ public:
void setHierarchyURL( const OUString& rURL ) { maHierarchyURL = rURL; }
void setTargetURL( const OUString& rURL ) { maTargetURL = rURL; }
- sal_Bool getInUse() { return mbInUse; }
- sal_Bool getInHierarchy() { return mbInHierarchy; }
+ sal_Bool getInUse() const { return mbInUse; }
+ sal_Bool getInHierarchy() const { return mbInHierarchy; }
const OUString& getHierarchyURL() const { return maHierarchyURL; }
const OUString& getTargetURL() const { return maTargetURL; }
const OUString& getTitle() const { return maTitle; }
@@ -386,12 +388,10 @@ public:
const OUString& rTargetURL,
const OUString& rType,
const OUString& rHierURL );
- ULONG count() { return maEntries.Count(); }
- DocTemplates_EntryData_Impl* getEntry( ULONG nPos ) { return maEntries.GetObject( nPos ); }
+ size_t count() { return maEntries.size(); }
+ DocTemplates_EntryData_Impl* getEntry( size_t nPos ) { return maEntries[ nPos ]; }
};
-DECLARE_LIST( GroupList_Impl, GroupData_Impl* )
-
//=============================================================================
//=============================================================================
//=============================================================================
@@ -472,7 +472,7 @@ void SfxDocTplService_Impl::init_Impl()
if ( bNeedsUpdate )
{
aGuard.clear();
- ::vos::OClearableGuard aSolarGuard( Application::GetSolarMutex() );
+ SolarMutexClearableGuard aSolarGuard;
WaitWindow_Impl* pWin = new WaitWindow_Impl();
@@ -482,7 +482,7 @@ void SfxDocTplService_Impl::init_Impl()
update( sal_True );
anotherGuard.clear();
- ::vos::OGuard aSecondSolarGuard( Application::GetSolarMutex() );
+ SolarMutexGuard aSecondSolarGuard;
delete pWin;
}
@@ -542,7 +542,7 @@ void SfxDocTplService_Impl::getDefaultLocale()
// -----------------------------------------------------------------------
void SfxDocTplService_Impl::readFolderList()
{
- ::vos::OGuard aGuard( Application::GetSolarMutex() );
+ SolarMutexGuard aGuard;
ResStringArray aShortNames( SfxResId( TEMPLATE_SHORT_NAMES_ARY ) );
ResStringArray aLongNames( SfxResId( TEMPLATE_LONG_NAMES_ARY ) );
@@ -557,7 +557,7 @@ void SfxDocTplService_Impl::readFolderList()
pPair->maShortName = aShortNames.GetString( i );
pPair->maLongName = aLongNames.GetString( i );
- maNames.Insert( pPair, LIST_APPEND );
+ maNames.push_back( pPair );
}
}
@@ -565,17 +565,15 @@ void SfxDocTplService_Impl::readFolderList()
OUString SfxDocTplService_Impl::getLongName( const OUString& rShortName )
{
OUString aRet;
- NamePair_Impl *pPair = maNames.First();
- while ( pPair )
+ for ( size_t i = 0, n = maNames.size(); i < n; ++i )
{
+ NamePair_Impl* pPair = maNames[ i ];
if ( pPair->maShortName == rShortName )
{
aRet = pPair->maLongName;
break;
}
- else
- pPair = maNames.Next();
}
if ( !aRet.getLength() )
@@ -704,7 +702,7 @@ sal_Bool SfxDocTplService_Impl::getTitleFromURL( const OUString& rURL, OUString&
uno::Reference< container::XNameAccess > xTypeDetection( mxType, uno::UNO_QUERY_THROW );
SequenceAsHashMap aTypeProps( xTypeDetection->getByName( aDocType ) );
aType = aTypeProps.getUnpackedValueOrDefault(
- ::rtl::OUString::createFromAscii( "MediaType" ),
+ ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("MediaType")),
::rtl::OUString() );
}
catch( uno::Exception& )
@@ -1152,9 +1150,14 @@ SfxDocTplService_Impl::~SfxDocTplService_Impl()
if ( mpUpdater )
{
- mpUpdater->kill();
+ mpUpdater->terminate();
+ mpUpdater->join();
delete mpUpdater;
}
+
+ for ( size_t i = 0, n = maNames.size(); i < n; ++i )
+ delete maNames[ i ];
+ maNames.clear();
}
//-----------------------------------------------------------------------------
@@ -1235,9 +1238,9 @@ void SfxDocTplService_Impl::doUpdate()
}
// now check the list
- GroupData_Impl *pGroup = aGroupList.First();
- while ( pGroup )
+ for( size_t j = 0, n = aGroupList.size(); j < n; ++j )
{
+ GroupData_Impl *pGroup = aGroupList[ j ];
if ( pGroup->getInUse() )
{
if ( pGroup->getInHierarchy() )
@@ -1248,8 +1251,8 @@ void SfxDocTplService_Impl::doUpdate()
OUString( RTL_CONSTASCII_USTRINGPARAM( TARGET_DIR_URL ) ),
makeAny( pGroup->getTargetURL() ) );
- ULONG nCount = pGroup->count();
- for ( ULONG i=0; i<nCount; i++ )
+ size_t nCount = pGroup->count();
+ for ( size_t i=0; i<nCount; i++ )
{
DocTemplates_EntryData_Impl *pData = pGroup->getEntry( i );
if ( ! pData->getInUse() )
@@ -1275,10 +1278,10 @@ void SfxDocTplService_Impl::doUpdate()
removeFromHierarchy( pGroup ); // delete group from hierarchy
delete pGroup;
- pGroup = aGroupList.Next();
}
+ aGroupList.clear();
- aValue <<= sal_False;
+ aValue <<= sal_False;
setProperty( maRootContent, aPropName, aValue );
}
@@ -1387,11 +1390,11 @@ sal_Bool SfxDocTplService_Impl::WriteUINamesForTemplateDir_Impl( const ::rtl::OU
sal_Bool bResult = sal_False;
try {
uno::Reference< beans::XPropertySet > xTempFile(
- mxFactory->createInstance( ::rtl::OUString::createFromAscii( "com.sun.star.io.TempFile" ) ),
+ mxFactory->createInstance( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.io.TempFile")) ),
uno::UNO_QUERY_THROW );
::rtl::OUString aTempURL;
- uno::Any aUrl = xTempFile->getPropertyValue( ::rtl::OUString::createFromAscii( "Uri" ) );
+ uno::Any aUrl = xTempFile->getPropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Uri")) );
aUrl >>= aTempURL;
uno::Reference< io::XStream > xStream( xTempFile, uno::UNO_QUERY_THROW );
@@ -1600,7 +1603,7 @@ sal_Bool SfxDocTplService_Impl::removeGroup( const OUString& rGroupName )
uno::Reference< XResultSet > xResultSet;
Sequence< OUString > aProps( 1 );
- aProps[0] = OUString::createFromAscii( TARGET_URL );
+ aProps[0] = OUString(RTL_CONSTASCII_USTRINGPARAM( TARGET_URL ));
try
{
@@ -1717,7 +1720,7 @@ sal_Bool SfxDocTplService_Impl::renameGroup( const OUString& rOldName,
uno::Reference< XResultSet > xResultSet;
Sequence< OUString > aProps( 1 );
- aProps[0] = OUString::createFromAscii( TARGET_URL );
+ aProps[0] = OUString(RTL_CONSTASCII_USTRINGPARAM( TARGET_URL ));
ResultSetInclude eInclude = INCLUDE_DOCUMENTS_ONLY;
xResultSet = aGroup.createCursor( aProps, eInclude );
@@ -1823,7 +1826,7 @@ sal_Bool SfxDocTplService_Impl::storeTemplate( const OUString& rGroupName,
// get document service name
uno::Reference< frame::XModuleManager > xModuleManager(
xFactory->createInstance(
- ::rtl::OUString::createFromAscii( "com.sun.star.frame.ModuleManager" ) ),
+ ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.frame.ModuleManager")) ),
uno::UNO_QUERY_THROW );
sDocServiceName = xModuleManager->identify( uno::Reference< uno::XInterface >( rStorable, uno::UNO_QUERY ) );
if ( !sDocServiceName.getLength() )
@@ -1834,18 +1837,18 @@ sal_Bool SfxDocTplService_Impl::storeTemplate( const OUString& rGroupName,
uno::Reference< lang::XMultiServiceFactory > xConfigProvider(
xFactory->createInstance(
- ::rtl::OUString::createFromAscii( "com.sun.star.configuration.ConfigurationProvider" ) ),
+ ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.configuration.ConfigurationProvider")) ),
uno::UNO_QUERY_THROW );
uno::Sequence< uno::Any > aArgs( 1 );
beans::PropertyValue aPathProp;
- aPathProp.Name = ::rtl::OUString::createFromAscii( "nodepath" );
+ aPathProp.Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("nodepath"));
aPathProp.Value <<= ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "/org.openoffice.Setup/Office/Factories/" ) );
aArgs[0] <<= aPathProp;
uno::Reference< container::XNameAccess > xSOFConfig(
xConfigProvider->createInstanceWithArguments(
- ::rtl::OUString::createFromAscii( "com.sun.star.configuration.ConfigurationAccess" ),
+ ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.configuration.ConfigurationAccess")),
aArgs ),
uno::UNO_QUERY_THROW );
@@ -1861,13 +1864,13 @@ sal_Bool SfxDocTplService_Impl::storeTemplate( const OUString& rGroupName,
// find the related type name
::rtl::OUString aTypeName;
uno::Reference< container::XNameAccess > xFilterFactory(
- xFactory->createInstance( ::rtl::OUString::createFromAscii( "com.sun.star.document.FilterFactory" ) ),
+ xFactory->createInstance( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.document.FilterFactory")) ),
uno::UNO_QUERY_THROW );
uno::Sequence< beans::PropertyValue > aFilterData;
xFilterFactory->getByName( aFilterName ) >>= aFilterData;
for ( sal_Int32 nInd = 0; nInd < aFilterData.getLength(); nInd++ )
- if ( aFilterData[nInd].Name.equalsAscii( "Type" ) )
+ if ( aFilterData[nInd].Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "Type" ) ) )
aFilterData[nInd].Value >>= aTypeName;
if ( !aTypeName.getLength() )
@@ -1878,16 +1881,16 @@ sal_Bool SfxDocTplService_Impl::storeTemplate( const OUString& rGroupName,
mxType.is() ?
uno::Reference< container::XNameAccess >( mxType, uno::UNO_QUERY_THROW ) :
uno::Reference< container::XNameAccess >(
- xFactory->createInstance( ::rtl::OUString::createFromAscii( "com.sun.star.document.TypeDetection" ) ),
+ xFactory->createInstance( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.document.TypeDetection")) ),
uno::UNO_QUERY_THROW );
SequenceAsHashMap aTypeProps( xTypeDetection->getByName( aTypeName ) );
uno::Sequence< ::rtl::OUString > aAllExt =
- aTypeProps.getUnpackedValueOrDefault( ::rtl::OUString::createFromAscii( "Extensions" ), Sequence< ::rtl::OUString >() );
+ aTypeProps.getUnpackedValueOrDefault( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Extensions")), Sequence< ::rtl::OUString >() );
if ( !aAllExt.getLength() )
throw uno::RuntimeException();
- ::rtl::OUString aMediaType = aTypeProps.getUnpackedValueOrDefault( ::rtl::OUString::createFromAscii( "MediaType" ), ::rtl::OUString() );
+ ::rtl::OUString aMediaType = aTypeProps.getUnpackedValueOrDefault( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("MediaType")), ::rtl::OUString() );
::rtl::OUString aExt = aAllExt[0];
if ( !aMediaType.getLength() || !aExt.getLength() )
@@ -1913,9 +1916,9 @@ sal_Bool SfxDocTplService_Impl::storeTemplate( const OUString& rGroupName,
// store template
uno::Sequence< PropertyValue > aStoreArgs( 2 );
- aStoreArgs[0].Name = ::rtl::OUString::createFromAscii( "FilterName" );
+ aStoreArgs[0].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("FilterName"));
aStoreArgs[0].Value <<= aFilterName;
- aStoreArgs[1].Name = ::rtl::OUString::createFromAscii( "DocumentTitle" );
+ aStoreArgs[1].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DocumentTitle"));
aStoreArgs[1].Value <<= rTemplateName;
::rtl::OUString aCurrentDocumentURL = rStorable->getLocation();
@@ -2432,9 +2435,9 @@ void SfxDocTplService_Impl::addHierGroup( GroupList_Impl& rList,
uno::Reference< XResultSet > xResultSet;
Sequence< OUString > aProps(3);
- aProps[0] = OUString::createFromAscii( TITLE );
- aProps[1] = OUString::createFromAscii( TARGET_URL );
- aProps[2] = OUString::createFromAscii( PROPERTY_TYPE );
+ aProps[0] = OUString(RTL_CONSTASCII_USTRINGPARAM( TITLE ));
+ aProps[1] = OUString(RTL_CONSTASCII_USTRINGPARAM( TARGET_URL ));
+ aProps[2] = OUString(RTL_CONSTASCII_USTRINGPARAM( PROPERTY_TYPE ));
try
{
@@ -2453,7 +2456,7 @@ void SfxDocTplService_Impl::addHierGroup( GroupList_Impl& rList,
GroupData_Impl *pGroup = new GroupData_Impl( rTitle );
pGroup->setHierarchy( sal_True );
pGroup->setHierarchyURL( rOwnURL );
- rList.Insert( pGroup );
+ rList.push_back( pGroup );
uno::Reference< XContentAccess > xContentAccess( xResultSet, UNO_QUERY );
uno::Reference< XRow > xRow( xResultSet, UNO_QUERY );
@@ -2518,15 +2521,20 @@ void SfxDocTplService_Impl::addFsysGroup( GroupList_Impl& rList,
if ( !aTitle.getLength() )
return;
- GroupData_Impl *pGroup = rList.First();
-
- while ( pGroup && pGroup->getTitle() != aTitle )
- pGroup = rList.Next();
+ GroupData_Impl* pGroup = NULL;
+ for ( size_t i = 0, n = rList.size(); i < n; ++i )
+ {
+ if ( rList[ i ]->getTitle() == aTitle )
+ {
+ pGroup = rList[ i ];
+ break;
+ }
+ }
if ( !pGroup )
{
pGroup = new GroupData_Impl( aTitle );
- rList.Insert( pGroup );
+ rList.push_back( pGroup );
}
if ( bWriteableGroup )
@@ -2538,7 +2546,7 @@ void SfxDocTplService_Impl::addFsysGroup( GroupList_Impl& rList,
Content aContent;
uno::Reference< XResultSet > xResultSet;
Sequence< OUString > aProps(1);
- aProps[0] = OUString::createFromAscii( TITLE );
+ aProps[0] = OUString(RTL_CONSTASCII_USTRINGPARAM( TITLE ));
try
{
@@ -2606,7 +2614,7 @@ void SfxDocTplService_Impl::createFromContent( GroupList_Impl& rList,
uno::Reference< XResultSet > xResultSet;
Sequence< OUString > aProps(1);
- aProps[0] = OUString::createFromAscii( TITLE );
+ aProps[0] = OUString(RTL_CONSTASCII_USTRINGPARAM( TITLE ));
try
{
@@ -2760,12 +2768,9 @@ GroupData_Impl::GroupData_Impl( const OUString& rTitle )
// -----------------------------------------------------------------------
GroupData_Impl::~GroupData_Impl()
{
- DocTemplates_EntryData_Impl *pData = maEntries.First();
- while ( pData )
- {
- delete pData;
- pData = maEntries.Next();
- }
+ for ( size_t i = 0, n = maEntries.size(); i < n; ++i )
+ delete maEntries[ i ];
+ maEntries.clear();
}
// -----------------------------------------------------------------------
@@ -2774,12 +2779,20 @@ DocTemplates_EntryData_Impl* GroupData_Impl::addEntry( const OUString& rTitle,
const OUString& rType,
const OUString& rHierURL )
{
- DocTemplates_EntryData_Impl *pData = maEntries.First();
+ DocTemplates_EntryData_Impl* pData = NULL;
+ bool EntryFound = false;
- while ( pData && pData->getTitle() != rTitle )
- pData = maEntries.Next();
+ for ( size_t i = 0, n = maEntries.size(); i < n; ++i )
+ {
+ pData = maEntries[ i ];
+ if ( pData->getTitle() == rTitle )
+ {
+ EntryFound = true;
+ break;
+ }
+ }
- if ( !pData )
+ if ( !EntryFound )
{
pData = new DocTemplates_EntryData_Impl( rTitle );
pData->setTargetURL( rTargetURL );
@@ -2789,7 +2802,7 @@ DocTemplates_EntryData_Impl* GroupData_Impl::addEntry( const OUString& rTitle,
pData->setHierarchyURL( rHierURL );
pData->setHierarchy( sal_True );
}
- maEntries.Insert( pData );
+ maEntries.push_back( pData );
}
else
{
@@ -2896,3 +2909,4 @@ void SfxURLRelocator_Impl::makeAbsoluteURL( rtl::OUString & rURL )
}
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */