25#include <com/sun/star/uno/Any.h>
35#include <com/sun/star/beans/PropertyValue.hpp>
36#include <com/sun/star/beans/XPropertySet.hpp>
37#include <com/sun/star/beans/XPropertySetInfo.hpp>
38#include <com/sun/star/document/XTypeDetection.hpp>
39#include <com/sun/star/document/DocumentProperties.hpp>
40#include <com/sun/star/document/XDocumentPropertiesSupplier.hpp>
41#include <com/sun/star/frame/Desktop.hpp>
42#include <com/sun/star/frame/DocumentTemplates.hpp>
43#include <com/sun/star/frame/XDocumentTemplates.hpp>
44#include <com/sun/star/io/IOException.hpp>
45#include <com/sun/star/io/XPersist.hpp>
46#include <com/sun/star/lang/XLocalizable.hpp>
47#include <com/sun/star/sdbc/XResultSet.hpp>
48#include <com/sun/star/sdbc/XRow.hpp>
49#include <com/sun/star/ucb/ContentCreationException.hpp>
50#include <com/sun/star/ucb/NameClash.hpp>
51#include <com/sun/star/ucb/TransferInfo.hpp>
52#include <com/sun/star/ucb/XContent.hpp>
53#include <com/sun/star/ucb/XContentAccess.hpp>
54#include <com/sun/star/ucb/AnyCompareFactory.hpp>
55#include <com/sun/star/ucb/NumberedSortingInfo.hpp>
76#include <sfx2/strings.hrc>
85constexpr OUStringLiteral
TITLE =
u"Title";
100class DocTempl_EntryData_Impl
113 DocTempl_EntryData_Impl( RegionData_Impl* pParent,
114 const OUString& rTitle );
117 const OUString& GetTargetURL();
118 const OUString& GetHierarchyURL();
121 void SetTargetURL(
const OUString& rURL ) {
maTargetURL = rURL; }
122 void SetHierarchyURL(
const OUString& rURL) {
maOwnURL = rURL; }
124 int Compare( std::u16string_view rTitle )
const;
138 std::vector<std::unique_ptr<DocTempl_EntryData_Impl>> maEntries;
143 size_t GetEntryPos( std::u16string_view rTitle,
144 bool& rFound )
const;
150 void SetHierarchyURL(
const OUString& rURL) {
maOwnURL = rURL; }
152 DocTempl_EntryData_Impl* GetEntry(
size_t nIndex )
const;
153 DocTempl_EntryData_Impl* GetEntry( std::u16string_view rName )
const;
156 const OUString& GetHierarchyURL();
158 size_t GetCount()
const;
162 void AddEntry(
const OUString& rTitle,
163 const OUString& rTargetURL,
164 const size_t *pPos );
165 void DeleteEntry(
size_t nIndex );
167 int Compare( RegionData_Impl
const * pCompareWith )
const;
180 std::vector<std::unique_ptr<RegionData_Impl>>
maRegions;
202 void AddRegion( std::unique_lock<std::mutex>& rGuard,
203 const OUString& rTitle,
212 RegionData_Impl*
GetRegion( std::u16string_view rName )
const;
213 RegionData_Impl*
GetRegion(
size_t nIndex )
const;
224class DocTemplLocker_Impl
229 : m_aDocTempl( aDocTempl )
234 ~DocTemplLocker_Impl()
246 const OUString& rPropName,
247 OUString& rPropValue );
266 DocTemplLocker_Impl aLocker( *pImp );
268 if ( pImp->Construct() )
270 RegionData_Impl *pData1 = pImp->GetRegion( nIdx );
273 return pData1->GetTitle();
299 DocTemplLocker_Impl aLocker( *pImp );
301 if ( pImp->Construct() )
303 RegionData_Impl *
pData = pImp->GetRegion( nIdx );
306 return pData->GetTitle();
324 DocTemplLocker_Impl aLocker( *
pImp );
326 if ( !
pImp->Construct() )
329 return pImp->GetRegionCount();
348 DocTemplLocker_Impl aLocker( *pImp );
350 if ( !pImp->Construct() )
353 RegionData_Impl *
pData = pImp->GetRegion( nRegion );
358 return pData->GetCount();
378 DocTemplLocker_Impl aLocker( *pImp );
380 if ( pImp->Construct() )
382 RegionData_Impl *pRegion = pImp->GetRegion( nRegion );
386 DocTempl_EntryData_Impl *pEntry = pRegion->GetEntry( nIdx );
388 return pEntry->GetTitle();
411 DocTemplLocker_Impl aLocker( *pImp );
413 if ( !pImp->Construct() )
416 RegionData_Impl *pRegion = pImp->GetRegion( nRegion );
420 DocTempl_EntryData_Impl *pEntry = pRegion->GetEntry( nIdx );
422 return pEntry->GetTargetURL();
430 std::u16string_view aTitle )
432 DocTemplLocker_Impl aLocker( *
pImp );
446 uno::Reference< XCommandEnvironment > aCmdEnv;
466 static constexpr rtl::OUStringConstExpr aTemplateNames[] =
544 if (rString == aTemplateNames[
i])
553 sal_uInt16 nTargetRegion,
554 sal_uInt16 nTargetIdx,
555 sal_uInt16 nSourceRegion,
556 sal_uInt16 nSourceIdx,
585 DocTemplLocker_Impl aLocker( *
pImp );
587 if ( !
pImp->Construct() )
591 if( nSourceIdx == USHRT_MAX )
594 if ( nSourceRegion == nTargetRegion )
596 SAL_WARN(
"sfx.doc",
"Don't know, what to do!" );
600 RegionData_Impl *pSourceRgn =
pImp->GetRegion( nSourceRegion );
604 DocTempl_EntryData_Impl *pSource = pSourceRgn->GetEntry( nSourceIdx );
608 RegionData_Impl *pTargetRgn =
pImp->GetRegion( nTargetRegion );
612 const OUString aTitle = pSource->GetTitle();
614 uno::Reference< XDocumentTemplates > xTemplates =
pImp->getDocTemplates();
616 if ( xTemplates->addTemplate( pTargetRgn->GetTitle(),
618 pSource->GetTargetURL() ) )
621 if ( aNewTargetURL.isEmpty() )
627 bool bDeleted = xTemplates->removeTemplate( pSourceRgn->GetTitle(),
628 pSource->GetTitle() );
630 pSourceRgn->DeleteEntry( nSourceIdx );
633 if ( xTemplates->removeTemplate( pTargetRgn->GetTitle(), aTitle ) )
643 size_t temp_nTargetIdx = nTargetIdx;
644 pTargetRgn->AddEntry( aTitle, aNewTargetURL, &temp_nTargetIdx );
658 sal_uInt16 nTargetRegion,
659 sal_uInt16 nTargetIdx,
660 sal_uInt16 nSourceRegion,
661 sal_uInt16 nSourceIdx
678 DocTemplLocker_Impl aLocker( *
pImp );
681 nSourceRegion, nSourceIdx,
true );
687 sal_uInt16 nTargetRegion,
688 sal_uInt16 nTargetIdx,
689 sal_uInt16 nSourceRegion,
690 sal_uInt16 nSourceIdx
708 DocTemplLocker_Impl aLocker( *
pImp );
711 nSourceRegion, nSourceIdx,
false );
719 std::u16string_view rName
738 DocTemplLocker_Impl aLocker( *pImp );
740 if ( ! pImp->Construct() )
743 RegionData_Impl *pSourceRgn = pImp->GetRegion( nRegion );
747 DocTempl_EntryData_Impl *pSource = pSourceRgn->GetEntry( nIdx );
759 uno::Reference< XCommandEnvironment > aCmdEnv;
766 TransferInfo aTransferInfo;
767 aTransferInfo.MoveData =
false;
768 aTransferInfo.SourceURL = pSource->GetTargetURL();
769 aTransferInfo.NewTitle = aTitle;
770 aTransferInfo.NameClash = NameClash::RENAME;
772 Any aArg( aTransferInfo );
775 catch ( ContentCreationException& )
810 DocTemplLocker_Impl aLocker( *
pImp );
812 if ( !
pImp->Construct() )
815 RegionData_Impl *pTargetRgn =
pImp->GetRegion( nRegion );
820 uno::Reference< XDocumentTemplates > xTemplates =
pImp->getDocTemplates();
821 if ( !xTemplates.is() )
825 bool bTemplateAdded =
false;
827 if(
pImp->GetTitleFromURL( rName, aTitle ) )
829 bTemplateAdded = xTemplates->addTemplate( pTargetRgn->GetTitle(), aTitle, rName );
833 uno::Reference< XDesktop2 > xDesktop = Desktop::create( ::comphelper::getProcessComponentContext() );
838 uno::Reference< XDocumentPropertiesSupplier > xDocPropsSupplier;
839 uno::Reference< XStorable > xStorable;
849 xDocPropsSupplier.set( xStorable, UNO_QUERY );
858 if( xDocPropsSupplier.is() )
860 uno::Reference< XDocumentProperties > xDocProps
861 = xDocPropsSupplier->getDocumentProperties();
862 if (xDocProps.is() ) {
863 aTitle = xDocProps->getTitle();
867 if( aTitle.isEmpty() )
876 bTemplateAdded = xTemplates->storeTemplate( pTargetRgn->GetTitle(), aTitle, xStorable );
889 uno::Reference< XCommandEnvironment > aCmdEnv;
897 if ( nIdx == USHRT_MAX )
903 size_t temp_nIdx = nIdx;
904 pTargetRgn->AddEntry( aTitle, aTemplName, &temp_nIdx );
910 SAL_WARN(
"sfx.doc",
"CopyFrom(): The content should contain target URL!" );
915 SAL_WARN(
"sfx.doc",
"CopyFrom(): The content just was created!" );
946 DocTemplLocker_Impl aLocker( *
pImp );
952 if ( !
pImp->Construct() )
955 RegionData_Impl *pRegion =
pImp->GetRegion( nRegion );
961 uno::Reference< XDocumentTemplates > xTemplates =
pImp->getDocTemplates();
963 if ( nIdx == USHRT_MAX )
965 bRet = xTemplates->removeGroup( pRegion->GetTitle() );
967 pImp->DeleteRegion( nRegion );
971 DocTempl_EntryData_Impl *pEntry = pRegion->GetEntry( nIdx );
976 bRet = xTemplates->removeTemplate( pRegion->GetTitle(),
977 pEntry->GetTitle() );
979 pRegion->DeleteEntry( nIdx );
988 const OUString& rText,
1006 DocTemplLocker_Impl aLocker( *
pImp );
1008 if ( !
pImp->Construct() )
1011 RegionData_Impl *pRegion =
pImp->GetRegion( rText );
1016 uno::Reference< XDocumentTemplates > xTemplates =
pImp->getDocTemplates();
1018 if ( xTemplates->addGroup( rText ) )
1020 return pImp->InsertRegion( std::make_unique<RegionData_Impl>(
pImp.
get(), rText ), nRegion );
1028 DocTemplLocker_Impl aLocker( *
pImp );
1030 if ( !
pImp->Construct() )
1033 RegionData_Impl *pRegion =
pImp->GetRegion( nSourceRegion );
1039 pRegion->AddEntry( rName, rPath, &
pos );
1047 DocTemplLocker_Impl aLocker( *
pImp );
1049 if ( !
pImp->Construct() )
1052 RegionData_Impl *pRegion =
pImp->GetRegion( nRegion );
1057 uno::Reference< XDocumentTemplates > xTemplates =
pImp->getDocTemplates();
1059 if ( nIdx == USHRT_MAX )
1061 if ( pRegion->GetTitle() == rName )
1065 if ( xTemplates->renameGroup( pRegion->GetTitle(), rName ) )
1067 pRegion->SetTitle( rName );
1068 pRegion->SetHierarchyURL(
"" );
1074 DocTempl_EntryData_Impl *pEntry = pRegion->GetEntry( nIdx );
1079 if ( pEntry->GetTitle() == rName )
1082 if ( xTemplates->renameTemplate( pRegion->GetTitle(),
1086 pEntry->SetTitle( rName );
1087 pEntry->SetTargetURL(
"" );
1088 pEntry->SetHierarchyURL(
"" );
1099 std::u16string_view rRegion,
1100 std::u16string_view rName,
1119 DocTemplLocker_Impl aLocker( *
pImp );
1122 if ( rName.empty() )
1125 if ( !
pImp->Construct() )
1128 DocTempl_EntryData_Impl* pEntry =
nullptr;
1131 for ( sal_uInt16
i = 0;
i <
nCount; ++
i )
1133 RegionData_Impl *pRegion =
pImp->GetRegion(
i );
1136 ( rRegion.empty() || ( rRegion == pRegion->GetTitle() ) ) )
1138 pEntry = pRegion->GetEntry( rName );
1142 rPath = pEntry->GetTargetURL();
1148 return ( pEntry !=
nullptr );
1154 std::u16string_view rPath,
1174 DocTemplLocker_Impl aLocker( *pImp );
1176 if ( ! pImp->Construct() )
1182 aFullPath.
SetURL( rPath );
1185 const sal_uInt16
nCount = GetRegionCount();
1189 RegionData_Impl *
pData = pImp->GetRegion(
i );
1192 const sal_uInt16 nChildCount =
pData->GetCount();
1194 for ( sal_uInt16 j=0; j<nChildCount; ++j )
1196 DocTempl_EntryData_Impl *pEntry =
pData->GetEntry( j );
1197 if ( pEntry && pEntry->GetTargetURL() == aPath )
1199 rRegion =
pData->GetTitle();
1200 rName = pEntry->GetTitle();
1239 if ( ::svt::TemplateFolderCache(
true ).needsUpdate() )
1241 if (
pImp->Construct() )
1248 pImp->ReInitFromComponent();
1251DocTempl_EntryData_Impl::DocTempl_EntryData_Impl( RegionData_Impl* pParent,
1252 const OUString& rTitle )
1259int DocTempl_EntryData_Impl::Compare( std::u16string_view rTitle )
const
1261 return maTitle.compareTo( rTitle );
1265const OUString& DocTempl_EntryData_Impl::GetHierarchyURL()
1271 aTemplateObj.insertName(
GetTitle(),
false,
1283const OUString& DocTempl_EntryData_Impl::GetTargetURL()
1287 uno::Reference< XCommandEnvironment > aCmdEnv;
1296 SAL_WARN(
"sfx.doc",
"GetTargetURL(): Could not create hierarchy content!" );
1311size_t RegionData_Impl::GetEntryPos( std::u16string_view rTitle,
bool& rFound )
const
1313 const size_t nCount = maEntries.size();
1317 auto &
pData = maEntries[
i ];
1319 if (
pData->Compare( rTitle ) == 0 )
1331void RegionData_Impl::AddEntry(
const OUString& rTitle,
1332 const OUString& rTargetURL,
1333 const size_t *pPos )
1336 aLinkObj.insertName( rTitle,
false,
1341 bool bFound =
false;
1342 size_t nPos = GetEntryPos( rTitle, bFound );
1350 auto pEntry = std::make_unique<DocTempl_EntryData_Impl>(
1352 pEntry->SetTargetURL( rTargetURL );
1353 pEntry->SetHierarchyURL( aLinkURL );
1354 if (
nPos < maEntries.size() ) {
1355 auto it = maEntries.begin();
1356 std::advance( it,
nPos );
1357 maEntries.insert( it, std::move(pEntry) );
1360 maEntries.push_back( std::move(pEntry) );
1364size_t RegionData_Impl::GetCount()
const
1366 return maEntries.size();
1370const OUString& RegionData_Impl::GetHierarchyURL()
1376 aRegionObj.insertName(
GetTitle(),
false,
1388DocTempl_EntryData_Impl* RegionData_Impl::GetEntry( std::u16string_view rName )
const
1390 bool bFound =
false;
1394 return maEntries[
nPos ].get();
1399DocTempl_EntryData_Impl* RegionData_Impl::GetEntry(
size_t nIndex )
const
1401 if ( nIndex < maEntries.size() )
1402 return maEntries[
nIndex ].get();
1407void RegionData_Impl::DeleteEntry(
size_t nIndex )
1409 if ( nIndex < maEntries.size() )
1411 auto it = maEntries.begin();
1412 std::advance( it, nIndex );
1413 maEntries.erase( it );
1418int RegionData_Impl::Compare( RegionData_Impl
const * pCompare )
const
1420 return maTitle.compareTo( pCompare->maTitle );
1425: mbConstructed( false )
1439 std::unique_lock aGuard(
maMutex );
1446 std::unique_lock aGuard(
maMutex );
1465 if(
pData->GetTitle() == rName )
1477 std::advance( it,
nIndex );
1486 const OUString& rTitle,
1489 auto pRegion = std::make_unique<RegionData_Impl>(
this, rTitle );
1490 auto pRegionTmp = pRegion.get();
1492 if ( !
InsertRegion( std::move(pRegion),
size_t(-1) ) )
1498 uno::Reference< XResultSet > xResultSet;
1506 if ( !xResultSet.is() )
1509 uno::Reference< XRow > xRow( xResultSet, UNO_QUERY );
1513 while ( xResultSet->next() )
1515 pRegionTmp->AddEntry( xRow->getString( 1 ), xRow->getString( 2 ),
nullptr );
1524 uno::Reference< XResultSet > xResultSet;
1525 Sequence< OUString > aProps {
TITLE };
1529 xResultSet = rTemplRoot.createSortedCursor(
1542 if ( !xResultSet.is() )
1545 uno::Reference< XCommandEnvironment > aCmdEnv;
1546 uno::Reference< XContentAccess > xContentAccess( xResultSet, UNO_QUERY );
1547 uno::Reference< XRow > xRow( xResultSet, UNO_QUERY );
1551 while ( xResultSet->next() )
1553 const OUString aId = xContentAccess->queryContentIdentifierString();
1556 AddRegion( rGuard, xRow->getString( 1 ), aContent );
1565 std::unique_lock aGuard(
maMutex );
1570 uno::Reference< XComponentContext > xContext = ::comphelper::getProcessComponentContext();
1572 uno::Reference< XPersist > xInfo( document::DocumentProperties::create(xContext), UNO_QUERY );
1575 mxTemplates = frame::DocumentTemplates::create(xContext);
1577 uno::Reference< XLocalizable > xLocalizable(
mxTemplates, UNO_QUERY );
1579 m_rCompareFactory = AnyCompareFactory::createWithLocale(xContext, xLocalizable->getLocale());
1581 uno::Reference < XContent > aRootContent =
mxTemplates->getContent();
1582 uno::Reference < XCommandEnvironment > aCmdEnv;
1584 if ( ! aRootContent.is() )
1588 maRootURL = aRootContent->getIdentifier()->getContentIdentifier();
1591 Content aTemplRoot( aRootContent, aCmdEnv, xContext );
1601 if ( xTemplates.is() )
1603 uno::Reference < XContent > aRootContent = xTemplates->getContent();
1604 uno::Reference < XCommandEnvironment > aCmdEnv;
1607 std::unique_lock aGuard(
maMutex);
1617 if ( pRegion->Compare( pNew.get() ) == 0 )
1620 size_t newPos =
nPos;
1627 std::advance( it, newPos );
1628 maRegions.emplace( it, std::move(pNew) );
1631 maRegions.emplace_back( std::move(pNew) );
1644 DBG_ASSERT( xTemplates.is(),
"SfxDocTemplate_Impl::Rescan:invalid template instance!" );
1645 if ( xTemplates.is() )
1647 xTemplates->update();
1649 uno::Reference < XContent > aRootContent = xTemplates->getContent();
1650 uno::Reference < XCommandEnvironment > aCmdEnv;
1653 std::unique_lock aGuard(
maMutex);
1659 TOOLS_WARN_EXCEPTION(
"sfx.doc",
"SfxDocTemplate_Impl::Rescan: caught an exception while doing the update" );
1682 uno::Reference< XPropertySet > aPropSet(
mxInfo, UNO_QUERY );
1683 if ( aPropSet.is() )
1685 Any aValue = aPropSet->getPropertyValue(
TITLE );
1690 catch ( UnknownPropertyException& ) {}
1694 if ( aTitle.isEmpty() )
1697 aURL.CutExtension();
1708 std::unique_lock aGuard(
maMutex );
1716 const OUString& rPropName,
1717 OUString& rPropValue )
1719 bool bGotProperty =
false;
1724 uno::Reference< XPropertySetInfo > aPropInfo = rContent.getProperties();
1727 if ( !aPropInfo.is() || !aPropInfo->hasPropertyByName( rPropName ) )
1733 Any aAnyValue = rContent.getPropertyValue( rPropName );
1734 aAnyValue >>= rPropValue;
1742 bGotProperty =
true;
1747 return bGotProperty;
static OUString GetStandardGroupString()
void SetSmartProtocol(INetProtocol eTheSmartScheme)
OUString GetMainURL(DecodeMechanism eMechanism, rtl_TextEncoding eCharset=RTL_TEXTENCODING_UTF8) const
bool insertName(std::u16string_view rTheName, bool bAppendFinalSlash=false, sal_Int32 nIndex=LAST_SEGMENT, EncodeMechanism eMechanism=EncodeMechanism::WasEncoded, rtl_TextEncoding eCharset=RTL_TEXTENCODING_UTF8)
bool SetURL(std::u16string_view rTheAbsURIRef, EncodeMechanism eMechanism=EncodeMechanism::WasEncoded, rtl_TextEncoding eCharset=RTL_TEXTENCODING_UTF8)
size_t GetRegionCount() const
const uno::Reference< XDocumentTemplates > & getDocTemplates() const
uno::Reference< XPersist > mxInfo
void ReInitFromComponent()
void CreateFromHierarchy(std::unique_lock< std::mutex > &rGuard, Content &rTemplRoot)
std::vector< std::unique_ptr< RegionData_Impl > > maRegions
void AddRegion(std::unique_lock< std::mutex > &rGuard, const OUString &rTitle, Content &rContent)
uno::Reference< XAnyCompareFactory > m_rCompareFactory
bool GetTitleFromURL(const OUString &rURL, OUString &aTitle)
RegionData_Impl * GetRegion(std::u16string_view rName) const
bool InsertRegion(std::unique_ptr< RegionData_Impl > pData, size_t nPos)
virtual ~SfxDocTemplate_Impl() override
const OUString & GetRootURL() const
void DeleteRegion(size_t nIndex)
uno::Reference< XDocumentTemplates > mxTemplates
OUString GetPath(sal_uInt16 nRegion, sal_uInt16 nIdx) const
OUString GetRegionName(sal_uInt16 nIdx) const
static OUString ConvertResourceString(const OUString &rString)
Convert a template name to its localised pair if it exists.
bool CopyTo(sal_uInt16 nRegion, sal_uInt16 nIdx, std::u16string_view rName) const
bool InsertTemplate(sal_uInt16 nSourceRegion, sal_uInt16 nIdx, const OUString &rName, const OUString &rPath)
void Update()
updates the configuration where the document templates structure is stored.
bool InsertDir(const OUString &rText, sal_uInt16 nRegion)
bool GetFull(std::u16string_view rRegion, std::u16string_view rName, OUString &rPath)
bool GetLogicNames(std::u16string_view rPath, OUString &rRegion, OUString &rName) const
SAL_DLLPRIVATE bool CopyOrMove(sal_uInt16 nTargetRegion, sal_uInt16 nTargetIdx, sal_uInt16 nSourceRegion, sal_uInt16 nSourceIdx, bool bMove)
sal_uInt16 GetRegionCount() const
bool CopyFrom(sal_uInt16 nRegion, sal_uInt16 nIdx, OUString &rName)
void ReInitFromComponent()
tools::SvRef< SfxDocTemplate_Impl > pImp
sal_uInt16 GetCount(sal_uInt16 nRegion) const
bool SetName(const OUString &rName, sal_uInt16 nRegion, sal_uInt16 nIdx)
Change the name of an entry or a directory.
bool Delete(sal_uInt16 nRegion, sal_uInt16 nIdx)
bool Copy(sal_uInt16 nTargetRegion, sal_uInt16 nTargetIdx, sal_uInt16 nSourceRegion, sal_uInt16 nSourceIdx)
bool Move(sal_uInt16 nTargetRegion, sal_uInt16 nTargetIdx, sal_uInt16 nSourceRegion, sal_uInt16 nSourceIdx)
OUString GetFullRegionName(sal_uInt16 nIdx) const
OUString GetTemplateTargetURLFromComponent(std::u16string_view aGroupName, std::u16string_view aTitle)
OUString GetName(sal_uInt16 nRegion, sal_uInt16 nIdx) const
void makeAbsoluteURL(OUString &rURL)
static bool propertyCanContainOfficeDir(std::u16string_view rPropName)
OUString SubstituteVariable(const OUString &rVar) const
#define DBG_ASSERT(sCon, aError)
#define TOOLS_WARN_EXCEPTION(area, stream)
virtual void SetTitle(const OUString &rNewTitle) override
RegionData_Impl * mpParent
constexpr OUStringLiteral COMMAND_TRANSFER
SfxObjectShellLock mxObjShell
constexpr OUStringLiteral TITLE
static bool getTextProperty_Impl(Content &rContent, const OUString &rPropName, OUString &rPropValue)
static SfxDocTemplate_Impl * gpTemplateData
constexpr OUStringLiteral TARGET_URL
#define SAL_WARN(area, stream)
#define SAL_N_ELEMENTS(arr)
std::unique_ptr< sal_Int32[]> pData
Reference< XComponentContext > getProcessComponentContext()
css::beans::PropertyValue makePropertyValue(const OUString &rName, T &&rValue)
UNOTOOLS_DLLPUBLIC bool GetTitle(OUString const &url, OUString *title)
OUString SfxResId(TranslateId aId)
constexpr OUStringLiteral STR_TEMPLATE_NAME13_DEF
constexpr OUStringLiteral STR_TEMPLATE_NAME1_DEF
constexpr OUStringLiteral STR_TEMPLATE_NAME30_DEF
constexpr OUStringLiteral STR_TEMPLATE_NAME10_DEF
constexpr OUStringLiteral STR_TEMPLATE_NAME16_DEF
constexpr OUStringLiteral STR_TEMPLATE_NAME31_DEF
constexpr OUStringLiteral STR_TEMPLATE_NAME23_DEF
constexpr OUStringLiteral STR_TEMPLATE_NAME4_DEF
constexpr OUStringLiteral STR_TEMPLATE_NAME25_DEF
constexpr OUStringLiteral STR_TEMPLATE_NAME19_DEF
constexpr OUStringLiteral STR_TEMPLATE_NAME3_DEF
constexpr OUStringLiteral STR_TEMPLATE_NAME17_DEF
constexpr OUStringLiteral STR_TEMPLATE_NAME26_DEF
constexpr OUStringLiteral STR_TEMPLATE_NAME28_DEF
constexpr OUStringLiteral STR_TEMPLATE_NAME18_DEF
constexpr OUStringLiteral STR_TEMPLATE_NAME12_DEF
constexpr OUStringLiteral STR_TEMPLATE_NAME7_DEF
constexpr OUStringLiteral STR_TEMPLATE_NAME32_DEF
constexpr OUStringLiteral STR_TEMPLATE_NAME11_DEF
constexpr OUStringLiteral STR_TEMPLATE_NAME9_DEF
constexpr OUStringLiteral STR_TEMPLATE_NAME27_DEF
constexpr OUStringLiteral STR_TEMPLATE_NAME24_DEF
constexpr OUStringLiteral STR_TEMPLATE_NAME22_DEF
constexpr OUStringLiteral STR_TEMPLATE_NAME2_DEF
constexpr OUStringLiteral STR_TEMPLATE_NAME20_DEF
constexpr OUStringLiteral STR_TEMPLATE_NAME29_DEF
constexpr OUStringLiteral STR_TEMPLATE_NAME6_DEF
constexpr OUStringLiteral STR_TEMPLATE_NAME5_DEF
constexpr OUStringLiteral STR_TEMPLATE_NAME21_DEF
constexpr OUStringLiteral STR_TEMPLATE_NAME8_DEF
constexpr OUStringLiteral STR_TEMPLATE_NAME14_DEF
constexpr OUStringLiteral STR_TEMPLATE_NAME33_DEF
constexpr OUStringLiteral STR_TEMPLATE_NAME15_DEF