summaryrefslogtreecommitdiff
path: root/sc/source/ui/undo/undorangename.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sc/source/ui/undo/undorangename.cxx')
-rw-r--r--sc/source/ui/undo/undorangename.cxx117
1 files changed, 117 insertions, 0 deletions
diff --git a/sc/source/ui/undo/undorangename.cxx b/sc/source/ui/undo/undorangename.cxx
new file mode 100644
index 000000000000..d384bc8b91d3
--- /dev/null
+++ b/sc/source/ui/undo/undorangename.cxx
@@ -0,0 +1,117 @@
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Initial Developer of the Original Code is
+ * Kohei Yoshida <kyoshida@novell.com> (Novell, Inc.)
+ * Portions created by the Initial Developer are Copyright (C) 2010 the
+ * Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sc.hxx"
+
+#include "undorangename.hxx"
+#include "globstr.hrc"
+#include "global.hxx"
+#include "docfunc.hxx"
+#include "sc.hrc"
+
+#include "sfx2/app.hxx"
+
+#include <memory>
+
+using ::std::auto_ptr;
+
+ScUndoAllRangeNames::ScUndoAllRangeNames(
+ ScDocShell* pDocSh,
+ const ScRangeName* pOldGlobal, const ScRangeName* pNewGlobal,
+ const ScRangeName::TabNameCopyMap &rOldLocal, const ScRangeName::TabNameCopyMap &rNewLocal) :
+ ScSimpleUndo(pDocSh)
+{
+ if (pOldGlobal)
+ maOldGlobalNames = *pOldGlobal;
+ if (pNewGlobal)
+ maNewGlobalNames = *pNewGlobal;
+
+ // Copy sheet-local names.
+ ScRangeName::TabNameCopyMap::const_iterator itr, itrEnd;
+ for (itr = rOldLocal.begin(), itrEnd = rOldLocal.end(); itr != itrEnd; ++itr)
+ {
+ auto_ptr<ScRangeName> p(new ScRangeName(*itr->second));
+ maOldLocalNames.insert(itr->first, p);
+ }
+
+ for (itr = rNewLocal.begin(), itrEnd = rNewLocal.end(); itr != itrEnd; ++itr)
+ {
+ auto_ptr<ScRangeName> p(new ScRangeName(*itr->second));
+ maNewLocalNames.insert(itr->first, p);
+ }
+}
+
+ScUndoAllRangeNames::~ScUndoAllRangeNames()
+{
+}
+
+void ScUndoAllRangeNames::Undo()
+{
+ DoChange(maOldGlobalNames, maOldLocalNames);
+}
+
+void ScUndoAllRangeNames::Redo()
+{
+ DoChange(maNewGlobalNames, maNewLocalNames);
+}
+
+void ScUndoAllRangeNames::Repeat(SfxRepeatTarget& /*rTarget*/)
+{
+}
+
+sal_Bool ScUndoAllRangeNames::CanRepeat(SfxRepeatTarget& /*rTarget*/) const
+{
+ return sal_False;
+}
+
+String ScUndoAllRangeNames::GetComment() const
+{
+ return ScGlobal::GetRscString(STR_UNDO_RANGENAMES);
+}
+
+void ScUndoAllRangeNames::DoChange(const ScRangeName& rGlobal, const ScRangeName::TabNameMap& rLocal)
+{
+ ScDocument& rDoc = *pDocShell->GetDocument();
+
+ rDoc.CompileNameFormula(true);
+
+ // Global names.
+ if (rGlobal.empty())
+ rDoc.SetRangeName(NULL);
+ else
+ rDoc.SetRangeName(new ScRangeName(rGlobal));
+
+ ScRangeName::TabNameCopyMap aCopy;
+ ScRangeName::copyLocalNames(rLocal, aCopy);
+ rDoc.SetAllTabRangeNames(aCopy);
+
+ rDoc.CompileNameFormula(true);
+
+ SFX_APP()->Broadcast(SfxSimpleHint(SC_HINT_AREAS_CHANGED));
+}
+