32 #include <com/sun/star/document/XDocumentPropertiesSupplier.hpp>
33 #include <com/sun/star/frame/XModel.hpp>
43 maStatsUpdateIdle( i_rSwdoc )
55 if (isEnableSetModified)
95 std::numeric_limits<tools::Long>::max(), bFields)) {}
122 nChars -= (
mpDocStat->nChar - nOldChars);
137 std::vector<SwFormatField*> vFields;
139 for(
auto pFormatField : vFields)
141 const auto pField =
static_cast<SwPostItField const*
>(pFormatField->GetField());
142 mpDocStat->nAllPara += pField->GetNumberOfParagraphs();
149 css::uno::Sequence < css::beans::NamedValue > aStat(
mpDocStat->nPage ? 8 : 7);
151 aStat[n].Name =
"TableCount";
152 aStat[n++].Value <<=
static_cast<sal_Int32
>(
mpDocStat->nTable);
153 aStat[n].Name =
"ImageCount";
154 aStat[n++].Value <<=
static_cast<sal_Int32
>(
mpDocStat->nGrf);
155 aStat[n].Name =
"ObjectCount";
156 aStat[n++].Value <<=
static_cast<sal_Int32
>(
mpDocStat->nOLE);
159 aStat[n].Name =
"PageCount";
160 aStat[n++].Value <<=
static_cast<sal_Int32
>(
mpDocStat->nPage);
162 aStat[n].Name =
"ParagraphCount";
163 aStat[n++].Value <<=
static_cast<sal_Int32
>(
mpDocStat->nPara);
164 aStat[n].Name =
"WordCount";
165 aStat[n++].Value <<=
static_cast<sal_Int32
>(
mpDocStat->nWord);
166 aStat[n].Name =
"CharacterCount";
167 aStat[n++].Value <<=
static_cast<sal_Int32
>(
mpDocStat->nChar);
168 aStat[n].Name =
"NonWhitespaceCharacterCount";
169 aStat[n++].Value <<=
static_cast<sal_Int32
>(
mpDocStat->nCharExcludingSpaces);
175 const uno::Reference<document::XDocumentPropertiesSupplier> xDPS(
176 pObjShell->GetModel(), uno::UNO_QUERY_THROW);
177 const uno::Reference<document::XDocumentProperties> xDocProps(
178 xDPS->getDocumentProperties());
184 auto aViewGuard(pObjShell->LockAllViews());
185 xDocProps->setDocumentStatistics(aStat);
186 if (!bDocWasModified)
204 if (IncrementalDocStatCalculate(32000))
#define LINK(Instance, Class, Member)
Instances of SwFields and those derived from it occur 0 to n times.
SwDocIdle maStatsUpdateIdle
const SwDocStat & GetUpdatedDocStat(bool bCompleteAsync, bool bFields) override
Updates the document statistics if the document has been modified and returns a reference to the resu...
const OUString & GetText() const
virtual const SwRootFrame * GetCurrentLayout() const =0
SwDocShell * GetDocShell()
virtual void SetModified()=0
Must be called manually at changes of format.
bool IncrementalDocStatCalculate(tools::Long nChars, bool bFields=true)
continue computing a chunk of document statistics
SwSectionNode is derived from SwStartNode.
Dialog to specify the properties of date form field.
void GatherFields(std::vector< SwFormatField * > &rvFormatFields, bool bCollectOnlyInDocNodes=true) const
void UpdateFields() const
IDocumentFieldsAccess const & getIDocumentFieldsAccess() const
virtual ~DocumentStatisticsManager() override
SwNodeType GetNodeType() const
IMPL_LINK(DocumentStatisticsManager, DoIdleStatsUpdate, Timer *, pIdle, void)
virtual void Start() override
void SetDebugName(const char *pDebugName)
virtual bool IsModified() const =0
Changes of document?
void DocInfoChgd(bool isEnableSetModified) override
DocInfo has changed (notify via DocShell): make required fields update.
IDocumentState const & getIDocumentState() const
void UpdateDocStat(bool bCompleteAsync, bool bFields) override
Updates the internal document's statistics.
std::unique_ptr< SwDocStat > mpDocStat
void SetDocStatModified(bool bSet)
IDocumentLayoutAccess const & getIDocumentLayoutAccess() const
const SwDocStat & GetDocStat() const override
Document - Statistics.
SwTextNode is a paragraph in the document model.
DocumentStatisticsManager(SwDoc &i_rSwdoc)
SwTableNode is derived from SwStartNode.
void SetInvokeHandler(const Link< Timer *, void > &rLink)
bool CountWords(SwDocStat &rStat, sal_Int32 nStart, sal_Int32 nEnd) const
count words in given range - returns true if we refreshed out count
void SetPriority(TaskPriority ePriority)
const SwView * GetView() const
virtual SwFieldType * GetSysFieldType(const SwFieldIds eWhich) const =0
void SetDocStat(const SwDocStat &rStat) override
Set the document statistics.
sal_uInt16 GetPageNum() const
virtual void ResetModified()=0
Base class of the Writer document model elements.