summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
authorMarkus Mohrhard <markus.mohrhard@googlemail.com>2011-09-24 04:29:37 +0200
committerMarkus Mohrhard <markus.mohrhard@googlemail.com>2011-09-24 16:09:43 +0200
commit3b6fc983f4c29dbe59f19a3451b12ac17b88286f (patch)
treedec89a76afe1b68a5d1bb1149e9760eb21b2c525 /sc
parente1de59eb4661397c888e7fab223710543c541e87 (diff)
show local range names in navigator
Diffstat (limited to 'sc')
-rw-r--r--sc/source/ui/navipi/content.cxx49
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);
}
}
}