diff options
author | Eike Rathke <erack@redhat.com> | 2015-09-02 19:57:16 +0200 |
---|---|---|
committer | Eike Rathke <erack@redhat.com> | 2015-09-03 00:09:03 +0200 |
commit | e716e43c3ba2397ddcea8659981e9ebdadda639b (patch) | |
tree | 7e08e410f57bb3c4205741489e3b2ae5c1951893 /sc | |
parent | b2e5de0b998fac091452190d0386b1d998900399 (diff) |
TableRef: factor out and reuse SetTableColumnName()
Change-Id: Ie18530e3fd9d7028a0f36646c56b6ff4375e6b2d
Diffstat (limited to 'sc')
-rw-r--r-- | sc/source/core/tool/dbdata.cxx | 39 |
1 files changed, 25 insertions, 14 deletions
diff --git a/sc/source/core/tool/dbdata.cxx b/sc/source/core/tool/dbdata.cxx index 82ee2c6e6fc2..156a2fd49abf 100644 --- a/sc/source/core/tool/dbdata.cxx +++ b/sc/source/core/tool/dbdata.cxx @@ -643,6 +643,23 @@ public: private: OUString maSearchName; }; + +/** Set a numbered table column name at given nIndex, preventing duplicates, + numbering starting at nCount. No check whether nIndex is valid. */ +void SetTableColumnName( ::std::vector<OUString>& rVec, size_t nIndex, const OUString& rName, sal_Int32 nCount ) +{ + do + { + OUString aStr( rName + OUString::number( nCount)); + auto it( ::std::find_if( rVec.begin(), rVec.end(), TableColumnNameSearch( aStr))); + if (it == rVec.end()) + { + rVec[nIndex] = aStr; + break; // do while + } + ++nCount; + } while(true); +} } void ScDBData::RefreshTableColumnNames( ScDocument* pDoc ) @@ -708,20 +725,7 @@ void ScDBData::RefreshTableColumnNames( ScDocument* pDoc ) for (size_t i=0, n=aNewNames.size(); i < n; ++i) { if (aNewNames[i].isEmpty()) - { - size_t nCount = i+1; - do - { - OUString aStr( aColumn + OUString::number( nCount)); - auto it( ::std::find_if( aNewNames.begin(), aNewNames.end(), TableColumnNameSearch( aStr))); - if (it == aNewNames.end()) - { - aNewNames[i] = aStr; - break; // do while - } - ++nCount; - } while(true); - } + SetTableColumnName( aNewNames, i, aColumn, i+1); } } @@ -760,6 +764,13 @@ void ScDBData::RefreshTableColumnNames( ScDocument* pDoc, const ScRange& rRange const OUString& rStr = pCell->getString( pDoc); if (!rStr.isEmpty()) maTableColumnNames[nCol-nStartCol] = rStr; + else + { + // Usually this is called for only a few positions of which + // most are not empty, so init from resource only if necessary. + OUString aColumn( ScGlobal::GetRscString(STR_COLUMN)); + SetTableColumnName( maTableColumnNames, nCol-nStartCol, aColumn, nCol-nStartCol+1); + } } } } |