1 /*
2  *  SPDX-FileCopyrightText: 2012 Sebastian Gottfried <sebastiangottfried@web.de>
3  *
4  *  SPDX-License-Identifier: GPL-2.0-or-later
5  */
6 
7 #include "abstracteditor.h"
8 
9 #include <QMap>
10 #include <QUndoStack>
11 #include <QUndoGroup>
12 
AbstractEditor(QWidget * parent)13 AbstractEditor::AbstractEditor(QWidget* parent):
14     QWidget(parent),
15     m_undoGroup(0),
16     m_undoStacks(new QMap<QString,QUndoStack*>),
17     m_currentUndoStack(0)
18 {
19 }
20 
~AbstractEditor()21 AbstractEditor::~AbstractEditor()
22 {
23     delete m_undoStacks;
24 }
25 
undoGroup() const26 QUndoGroup* AbstractEditor::undoGroup() const
27 {
28     return m_undoGroup;
29 }
30 
setUndoGroup(QUndoGroup * undoGroup)31 void AbstractEditor::setUndoGroup(QUndoGroup* undoGroup)
32 {
33     m_undoGroup = undoGroup;
34 }
35 
initUndoStack(const QString & undoStackId)36 void AbstractEditor::initUndoStack(const QString& undoStackId)
37 {
38     if (m_undoStacks->contains(undoStackId))
39     {
40         m_currentUndoStack = m_undoStacks->value(undoStackId);
41     }
42     else
43     {
44         m_currentUndoStack = new QUndoStack(this);
45         m_undoStacks->insert(undoStackId, m_currentUndoStack);
46         undoGroup()->addStack(m_currentUndoStack);
47     }
48 
49     undoGroup()->setActiveStack(m_currentUndoStack);
50 }
51 
clearUndoStack(const QString & undoStackId)52 void AbstractEditor::clearUndoStack(const QString& undoStackId)
53 {
54     if (m_undoStacks->contains(undoStackId))
55     {
56         m_undoStacks->value(undoStackId)->clear();
57     }
58 }
59 
currentUndoStack() const60 QUndoStack* AbstractEditor::currentUndoStack() const
61 {
62     return m_currentUndoStack;
63 }
64