Kaydet (Commit) 49152948 authored tarafından Oliver Specht's avatar Oliver Specht

tdf#94570: document statistic of none odf files fixed

The fix allows first time calculation of the document statistic.

Change-Id: I54d2f208fa75e6c3502c27678b85a9995d4daec5
Reviewed-on: https://gerrit.libreoffice.org/23589Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarOliver Specht <oliver.specht@cib.de>
üst 4bb27034
...@@ -41,7 +41,7 @@ void DocumentStateManager::SetModified() ...@@ -41,7 +41,7 @@ void DocumentStateManager::SetModified()
{ {
m_rDoc.GetDocumentLayoutManager().ClearSwLayouterEntries(); m_rDoc.GetDocumentLayoutManager().ClearSwLayouterEntries();
mbModified = true; mbModified = true;
m_rDoc.GetDocumentStatisticsManager().GetDocStat().bModified = true; m_rDoc.GetDocumentStatisticsManager().SetDocStatModified( true );
if( m_rDoc.GetOle2Link().IsSet() ) if( m_rDoc.GetOle2Link().IsSet() )
{ {
mbInCallModified = true; mbInCallModified = true;
...@@ -60,7 +60,7 @@ void DocumentStateManager::ResetModified() ...@@ -60,7 +60,7 @@ void DocumentStateManager::ResetModified()
// Bit 1: -> new state // Bit 1: -> new state
bool bOldModified = mbModified; bool bOldModified = mbModified;
mbModified = false; mbModified = false;
m_rDoc.GetDocumentStatisticsManager().GetDocStat().bModified = false; m_rDoc.GetDocumentStatisticsManager().SetDocStatModified( false );
m_rDoc.GetIDocumentUndoRedo().SetUndoNoModifiedPosition(); m_rDoc.GetIDocumentUndoRedo().SetUndoNoModifiedPosition();
if( bOldModified && m_rDoc.GetOle2Link().IsSet() ) if( bOldModified && m_rDoc.GetOle2Link().IsSet() )
{ {
......
...@@ -70,7 +70,8 @@ namespace sw ...@@ -70,7 +70,8 @@ namespace sw
{ {
DocumentStatisticsManager::DocumentStatisticsManager( SwDoc& i_rSwdoc ) : m_rDoc( i_rSwdoc ), DocumentStatisticsManager::DocumentStatisticsManager( SwDoc& i_rSwdoc ) : m_rDoc( i_rSwdoc ),
mpDocStat( new SwDocStat ) mpDocStat( new SwDocStat ),
mbInitialized( false )
{ {
maStatsUpdateTimer.SetTimeout( 1 ); maStatsUpdateTimer.SetTimeout( 1 );
maStatsUpdateTimer.SetPriority( SchedulerPriority::LOWEST ); maStatsUpdateTimer.SetPriority( SchedulerPriority::LOWEST );
...@@ -92,14 +93,14 @@ const SwDocStat& DocumentStatisticsManager::GetDocStat() const ...@@ -92,14 +93,14 @@ const SwDocStat& DocumentStatisticsManager::GetDocStat() const
return *mpDocStat; return *mpDocStat;
} }
SwDocStat& DocumentStatisticsManager::GetDocStat() void DocumentStatisticsManager::SetDocStatModified(bool bSet)
{ {
return *mpDocStat; mpDocStat->bModified = bSet;
} }
const SwDocStat& DocumentStatisticsManager::GetUpdatedDocStat( bool bCompleteAsync, bool bFields ) const SwDocStat& DocumentStatisticsManager::GetUpdatedDocStat( bool bCompleteAsync, bool bFields )
{ {
if( mpDocStat->bModified ) if( mpDocStat->bModified || !mbInitialized)
{ {
UpdateDocStat( bCompleteAsync, bFields ); UpdateDocStat( bCompleteAsync, bFields );
} }
...@@ -109,11 +110,12 @@ const SwDocStat& DocumentStatisticsManager::GetUpdatedDocStat( bool bCompleteAsy ...@@ -109,11 +110,12 @@ const SwDocStat& DocumentStatisticsManager::GetUpdatedDocStat( bool bCompleteAsy
void DocumentStatisticsManager::SetDocStat( const SwDocStat& rStat ) void DocumentStatisticsManager::SetDocStat( const SwDocStat& rStat )
{ {
*mpDocStat = rStat; *mpDocStat = rStat;
mbInitialized = true;
} }
void DocumentStatisticsManager::UpdateDocStat( bool bCompleteAsync, bool bFields ) void DocumentStatisticsManager::UpdateDocStat( bool bCompleteAsync, bool bFields )
{ {
if( mpDocStat->bModified ) if( mpDocStat->bModified || !mbInitialized)
{ {
if (!bCompleteAsync) if (!bCompleteAsync)
{ {
...@@ -131,6 +133,7 @@ void DocumentStatisticsManager::UpdateDocStat( bool bCompleteAsync, bool bFields ...@@ -131,6 +133,7 @@ void DocumentStatisticsManager::UpdateDocStat( bool bCompleteAsync, bool bFields
// returns true while there is more to do // returns true while there is more to do
bool DocumentStatisticsManager::IncrementalDocStatCalculate(long nChars, bool bFields) bool DocumentStatisticsManager::IncrementalDocStatCalculate(long nChars, bool bFields)
{ {
mbInitialized = true;
mpDocStat->Reset(); mpDocStat->Reset();
mpDocStat->nPara = 0; // default is 1! mpDocStat->nPara = 0; // default is 1!
......
...@@ -37,11 +37,10 @@ public: ...@@ -37,11 +37,10 @@ public:
void DocInfoChgd(bool isEnableSetModified) override; void DocInfoChgd(bool isEnableSetModified) override;
const SwDocStat &GetDocStat() const override; const SwDocStat &GetDocStat() const override;
SwDocStat & GetDocStat(); //Non const version of the above, not part of the interface. void SetDocStatModified(bool bSet);
const SwDocStat &GetUpdatedDocStat(bool bCompleteAsync = false, bool bFields = true) override; const SwDocStat &GetUpdatedDocStat(bool bCompleteAsync = false, bool bFields = true) override;
void SetDocStat(const SwDocStat& rStat) override; void SetDocStat(const SwDocStat& rStat) override;
void UpdateDocStat(bool bCompleteAsync = false, bool bFields = true) override; void UpdateDocStat(bool bCompleteAsync = false, bool bFields = true) override;
virtual ~DocumentStatisticsManager(); virtual ~DocumentStatisticsManager();
private: private:
...@@ -64,6 +63,7 @@ private: ...@@ -64,6 +63,7 @@ private:
SwDocStat *mpDocStat; //< Statistics information. SwDocStat *mpDocStat; //< Statistics information.
bool mbInitialized; // allow first time update
Timer maStatsUpdateTimer; //< Timer for asynchronous stats calculation Timer maStatsUpdateTimer; //< Timer for asynchronous stats calculation
}; };
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment