DocPage Organizer: Undo/Redo

This commit is contained in:
Jakub Melka
2021-08-01 11:19:14 +02:00
parent 089f7244f0
commit 7a40427d10
8 changed files with 403 additions and 0 deletions

View File

@ -60,6 +60,8 @@ MainWindow::MainWindow(QWidget* parent) :
ui->actionRemoveSelection->setData(int(Operation::RemoveSelection));
ui->actionReplaceSelection->setData(int(Operation::ReplaceSelection));
ui->actionRestoreRemovedItems->setData(int(Operation::RestoreRemovedItems));
ui->actionUndo->setData(int(Operation::Undo));
ui->actionRedo->setData(int(Operation::Redo));
ui->actionCut->setData(int(Operation::Cut));
ui->actionCopy->setData(int(Operation::Copy));
ui->actionPaste->setData(int(Operation::Paste));
@ -96,6 +98,8 @@ MainWindow::MainWindow(QWidget* parent) :
mainToolbar->addSeparator();
mainToolbar->addActions({ ui->actionCloneSelection, ui->actionRemoveSelection });
mainToolbar->addSeparator();
mainToolbar->addActions({ ui->actionUndo, ui->actionRedo });
mainToolbar->addSeparator();
mainToolbar->addActions({ ui->actionCut, ui->actionCopy, ui->actionPaste });
mainToolbar->addSeparator();
mainToolbar->addActions({ ui->actionGroup, ui->actionUngroup });
@ -303,6 +307,12 @@ bool MainWindow::canPerformOperation(Operation operation) const
case Operation::RestoreRemovedItems:
return !m_model->isTrashBinEmpty();
case Operation::Undo:
return m_model->canUndo();
case Operation::Redo:
return m_model->canRedo();
case Operation::Cut:
case Operation::Copy:
return isSelected;
@ -417,6 +427,18 @@ void MainWindow::performOperation(Operation operation)
break;
}
case Operation::Undo:
{
m_model->undo();
break;
}
case Operation::Redo:
{
m_model->redo();
break;
}
case Operation::Cut:
case Operation::Copy:
{