diff options
author | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2011-09-24 04:29:37 +0200 |
---|---|---|
committer | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2011-09-24 16:09:43 +0200 |
commit | 3b6fc983f4c29dbe59f19a3451b12ac17b88286f (patch) | |
tree | dec89a76afe1b68a5d1bb1149e9760eb21b2c525 /sc/source | |
parent | e1de59eb4661397c888e7fab223710543c541e87 (diff) |
show local range names in navigator
Diffstat (limited to 'sc/source')
-rw-r--r-- | sc/source/ui/navipi/content.cxx | 49 |
1 files changed, 35 insertions, 14 deletions
diff --git a/sc/source/ui/navipi/content.cxx b/sc/source/ui/navipi/content.cxx index 5c07de058916..25330e7ca78c 100644 --- a/sc/source/ui/navipi/content.cxx +++ b/sc/source/ui/navipi/content.cxx @@ -653,6 +653,18 @@ void ScContentTree::GetTableNames() } } +namespace { + +rtl::OUString createLocalRangeName(const rtl::OUString& rName, const rtl::OUString& rTableName) +{ + rtl::OUStringBuffer aString (rName); + aString.append(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" ("))); + aString.append(rTableName); + aString.append(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(")"))); + return aString.makeStringAndClear(); +} +} + void ScContentTree::GetAreaNames() { if ( nRootType && nRootType != SC_CONTENT_RANGENAME ) // ausgeblendet ? @@ -662,30 +674,39 @@ void ScContentTree::GetAreaNames() if (!pDoc) return; + ScRange aDummy; + std::set<rtl::OUString> aSet; ScRangeName* pRangeNames = pDoc->GetRangeName(); if (!pRangeNames->empty()) { - ScRange aDummy; ScRangeName::const_iterator itrBeg = pRangeNames->begin(), itrEnd = pRangeNames->end(); - std::vector<const ScRangeData*> aSortArray; for (ScRangeName::const_iterator itr = itrBeg; itr != itrEnd; ++itr) { if (itr->IsValidReference(aDummy)) - aSortArray.push_back(&(*itr)); + aSet.insert(itr->GetName()); } + } + for (SCTAB i = 0; i < pDoc->GetTableCount(); ++i) + { + ScRangeName* pLocalRangeName = pDoc->GetRangeName(i); + if (pLocalRangeName && !pLocalRangeName->empty()) + { + rtl::OUString aTableName; + pDoc->GetName(i, aTableName); + for (ScRangeName::const_iterator itr = pLocalRangeName->begin(); itr != pLocalRangeName->end(); ++itr) + { + if (itr->IsValidReference(aDummy)) + aSet.insert(createLocalRangeName(itr->GetName(), aTableName)); + } + } + } - if (!aSortArray.empty()) + if (!aSet.empty()) + { + for (std::set<rtl::OUString>::iterator itr = aSet.begin(); + itr != aSet.end(); ++itr) { -#ifndef ICC - size_t n = aSortArray.size(); - qsort( (void*)&aSortArray[0], n, sizeof(ScRangeData*), - &ScRangeData_QsortNameCompare ); -#else - qsort( (void*)&aSortArray[0], n, sizeof(ScRangeData*), - ICCQsortNameCompare ); -#endif - for (size_t i = 0; i < n; ++i) - InsertContent(SC_CONTENT_RANGENAME, aSortArray[i]->GetName()); + InsertContent(SC_CONTENT_RANGENAME, *itr); } } } |