summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
authorEike Rathke <erack@redhat.com>2015-09-02 19:57:16 +0200
committerEike Rathke <erack@redhat.com>2015-09-03 00:09:03 +0200
commite716e43c3ba2397ddcea8659981e9ebdadda639b (patch)
tree7e08e410f57bb3c4205741489e3b2ae5c1951893 /sc
parentb2e5de0b998fac091452190d0386b1d998900399 (diff)
TableRef: factor out and reuse SetTableColumnName()
Change-Id: Ie18530e3fd9d7028a0f36646c56b6ff4375e6b2d
Diffstat (limited to 'sc')
-rw-r--r--sc/source/core/tool/dbdata.cxx39
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);
+ }
}
}
}