summaryrefslogtreecommitdiff
path: root/sc/source/ui/namedlg/namemgrtable.cxx
diff options
context:
space:
mode:
authorMarkus Mohrhard <markus.mohrhard@googlemail.com>2011-11-20 08:22:02 +0100
committerMarkus Mohrhard <markus.mohrhard@googlemail.com>2011-11-23 06:25:32 +0100
commit42bb6baae411dcef47fbe8555412960be2c0dfad (patch)
tree547f04e789bc2b9ad9eef903ab6ba7ffd2c411d2 /sc/source/ui/namedlg/namemgrtable.cxx
parentb5a509e21704e6dba31eabac689c35efd8dda973 (diff)
ManageNames: make Multiselection work in the table
Diffstat (limited to 'sc/source/ui/namedlg/namemgrtable.cxx')
-rw-r--r--sc/source/ui/namedlg/namemgrtable.cxx55
1 files changed, 39 insertions, 16 deletions
diff --git a/sc/source/ui/namedlg/namemgrtable.cxx b/sc/source/ui/namedlg/namemgrtable.cxx
index 40309d8f4ed7..5528efb2b168 100644
--- a/sc/source/ui/namedlg/namemgrtable.cxx
+++ b/sc/source/ui/namedlg/namemgrtable.cxx
@@ -35,6 +35,7 @@
#include "namedlg.hrc"
#include "namedlg.hxx"
#include "viewdata.hxx"
+#include "globalnames.hxx"
#include "sfx2/app.hxx"
@@ -83,6 +84,7 @@ ScRangeManagerTable::ScRangeManagerTable( Window* pWindow, ScRangeName* pGlobalR
Show();
maHeaderBar.Show();
+ SetSelectionMode(MULTIPLE_SELECTION);
}
void ScRangeManagerTable::addEntry(const ScRangeNameLine& rLine)
@@ -94,32 +96,28 @@ void ScRangeManagerTable::addEntry(const ScRangeNameLine& rLine)
void ScRangeManagerTable::GetCurrentLine(ScRangeNameLine& rLine)
{
SvLBoxEntry* pCurrentEntry = GetCurEntry();
- rLine.aName = GetEntryText( pCurrentEntry, 0);
- rLine.aExpression = GetEntryText(pCurrentEntry, 1);
- rLine.aScope = GetEntryText(pCurrentEntry, 2);
+ GetLine(rLine, pCurrentEntry);
+}
+
+void ScRangeManagerTable::GetLine(ScRangeNameLine& rLine, SvLBoxEntry* pEntry)
+{
+ rLine.aName = GetEntryText( pEntry, 0);
+ rLine.aExpression = GetEntryText(pEntry, 1);
+ rLine.aScope = GetEntryText(pEntry, 2);
}
void ScRangeManagerTable::UpdateEntries()
{
Clear();
- for (ScRangeName::iterator itr = mpGlobalRangeName->begin();
- itr != mpGlobalRangeName->end(); ++itr)
- {
- if (!itr->HasType(RT_DATABASE) && !itr->HasType(RT_SHARED))
- {
- ScRangeNameLine aLine;
- aLine.aName = itr->GetName();
- aLine.aScope = maGlobalString;
- itr->GetSymbol(aLine.aExpression);
- addEntry(aLine);
- }
- }
for (std::map<rtl::OUString, ScRangeName*>::iterator itr = maTabRangeNames.begin();
itr != maTabRangeNames.end(); ++itr)
{
ScRangeName* pLocalRangeName = itr->second;
ScRangeNameLine aLine;
- aLine.aScope = itr->first;
+ if (itr->first == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(STR_GLOBAL_RANGE_NAME)))
+ aLine.aScope = maGlobalString;
+ else
+ aLine.aScope = itr->first;
for (ScRangeName::iterator it = pLocalRangeName->begin();
it != pLocalRangeName->end(); ++it)
{
@@ -133,6 +131,31 @@ void ScRangeManagerTable::UpdateEntries()
}
}
+void ScRangeManagerTable::DeleteSelectedEntries()
+{
+ RemoveSelection();
+}
+
+bool ScRangeManagerTable::IsMultiSelection()
+{
+ return GetSelectionCount() > 1;
+}
+
+std::vector<ScRangeNameLine> ScRangeManagerTable::GetSelectedEntries()
+{
+ std::vector<ScRangeNameLine> aSelectedEntries;
+ for (SvLBoxEntry* pEntry = FirstSelected(); pEntry != LastSelected(); pEntry = NextSelected(pEntry))
+ {
+ ScRangeNameLine aLine;
+ GetLine( aLine, pEntry );
+ aSelectedEntries.push_back(aLine);
+ }
+ SvLBoxEntry* pEntry = LastSelected();
+ ScRangeNameLine aLine;
+ GetLine( aLine, pEntry );
+ aSelectedEntries.push_back(aLine);
+ return aSelectedEntries;
+}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */