26#include <com/sun/star/frame/DocumentTemplates.hpp>
27#include <com/sun/star/frame/XDocumentTemplates.hpp>
28#include <com/sun/star/ucb/XContentAccess.hpp>
29#include <com/sun/star/sdbc/XResultSet.hpp>
30#include <com/sun/star/sdbc/XRow.hpp>
40constexpr OUStringLiteral
TITLE =
u"Title";
47 OUString sContentIdentifier,
48 const Reference<css::ucb::XCommandEnvironment>& rxFolderEnvironment)
50 msContentIdentifier(
std::move(sContentIdentifier)),
51 mxFolderEnvironment(rxFolderEnvironment)
54 OUString msContentIdentifier;
56 Reference<css::ucb::XCommandEnvironment> mxFolderEnvironment;
61 bool operator() (
const FolderDescriptor& r1,
const FolderDescriptor& r2)
const
62 {
return r1.mnPriority < r2.mnPriority; }
69int Classify (std::u16string_view rsURL)
75 else if (rsURL.find(u
"presnt") != std::u16string_view::npos)
79 else if (rsURL.find(u
"layout") != std::u16string_view::npos)
83 else if (rsURL.find(u
"educate") != std::u16string_view::npos)
87 else if (rsURL.find(u
"finance") != std::u16string_view::npos)
107 :
public ::std::multiset<FolderDescriptor,FolderDescriptor::Comparator>
112 : meState(INITIALIZE_SCANNING),
124 Reference< XComponentContext > xContext = ::comphelper::getProcessComponentContext();
125 Reference<frame::XDocumentTemplates> xTemplates = frame::DocumentTemplates::create(xContext);
154 Reference<css::ucb::XContentAccess> xContentAccess (
mxEntryResultSet, UNO_QUERY);
161 OUString sTitle (xRow->getString (1));
162 OUString sTargetURL (xRow->getString (2));
163 OUString sContentType (xRow->getString (3));
165 OUString aId = xContentAccess->queryContentIdentifierString();
176 || (sContentType ==
"application/vnd.stardivision.impress")
179 || (sContentType ==
"Impress 2.0"))
182 mpTemplateEntries.push_back(std::make_unique<TemplateEntry>(sLocalisedTitle, sTargetURL));
216 catch (css::uno::Exception&)
228 Reference<css::ucb::XContentAccess> xContentAccess (
mxFolderResultSet, UNO_QUERY);
236 OUString sTargetDir (xRow->getString (2));
237 OUString aId = xContentAccess->queryContentIdentifierString();
241 Classify(sTargetDir),
262 OUString aId (aDescriptor.msContentIdentifier);
static OUString ConvertResourceString(const OUString &rString)
State GatherFolderList()
Collect all available top-level folders in an ordered list which can then be processed by ScanFolder(...
State ScanEntry()
Scan one entry.
css::uno::Reference< css::ucb::XCommandEnvironment > mxEntryEnvironment
State
The current state determines which step will be executed next by RunNextStep().
@ INITIALIZE_FOLDER_SCANNING
::ucbhelper::Content maFolderContent
virtual ~TemplateScanner()
The destructor deletes any remaining entries of the local list of templates.
std::unique_ptr< FolderDescriptorList > mpFolderDescriptors
TemplateScanner()
Create a new template scanner and prepare but do not execute the scanning.
virtual bool HasNextStep() override
Implementation of the AsynchronousTask interface method.
State InitializeFolderScanning()
Initialize the scanning of folders.
css::uno::Reference< css::ucb::XContent > mxTemplateRoot
Set of state variables used by the methods InitializeFolderScanning(), GatherFolderList(),...
State GetTemplateRoot()
Obtain the root folder of the template folder hierarchy.
css::uno::Reference< css::sdbc::XResultSet > mxFolderResultSet
State InitializeEntryScanning()
Initialize the scanning of entries of a top-level folder.
State ScanFolder()
From the list of top-level folders collected by GatherFolderList() the one with highest priority is p...
virtual void RunNextStep() override
Implementation of the AsynchronousTask interface method.
css::uno::Reference< css::sdbc::XResultSet > mxEntryResultSet
css::uno::Reference< css::ucb::XCommandEnvironment > mxFolderEnvironment
::std::vector< std::unique_ptr< TemplateEntry > > mpTemplateEntries
css::uno::Reference< css::sdbc::XResultSet > createCursor(const css::uno::Sequence< OUString > &rPropertyNames, ResultSetInclude eMode=INCLUDE_FOLDERS_AND_DOCUMENTS)
constexpr OUStringLiteral TITLE
constexpr OUStringLiteral MIMETYPE_VND_SUN_XML_IMPRESS_ASCII
constexpr OUStringLiteral MIMETYPE_OASIS_OPENDOCUMENT_PRESENTATION_ASCII
constexpr OUStringLiteral MIMETYPE_OASIS_OPENDOCUMENT_PRESENTATION_TEMPLATE_ASCII
Reference< XComponentContext > getProcessComponentContext()