Implement insert and overwrite editing modes

This commit is contained in:
G.K.MacGregor
2021-02-14 17:35:11 +00:00
parent 917f4fa7d6
commit 27ad6701b4
6 changed files with 111 additions and 53 deletions

View File

@@ -144,6 +144,11 @@ void TeletextWidget::timerEvent(QTimerEvent *event)
QWidget::timerEvent(event);
}
void TeletextWidget::setInsertMode(bool insertMode)
{
m_insertMode = insertMode;
}
void TeletextWidget::toggleReveal(bool revealOn)
{
m_pageRender.setReveal(revealOn);
@@ -330,7 +335,10 @@ void TeletextWidget::keyPressEvent(QKeyEvent *event)
}
switch (event->key()) {
case Qt::Key_Backspace:
backspaceEvent();
m_teletextDocument->undoStack()->push(new BackspaceKeyCommand(m_teletextDocument, m_insertMode));
break;
case Qt::Key_Tab:
m_teletextDocument->undoStack()->push(new TypeCharacterCommand(m_teletextDocument, 0x20, true));
break;
case Qt::Key_Delete:
m_teletextDocument->undoStack()->push(new DeleteKeyCommand(m_teletextDocument));
@@ -383,8 +391,7 @@ void TeletextWidget::keyPressEvent(QKeyEvent *event)
void TeletextWidget::setCharacter(unsigned char newCharacter)
{
QUndoCommand *overwriteCharacterCommand = new OverwriteCharacterCommand(m_teletextDocument, newCharacter);
m_teletextDocument->undoStack()->push(overwriteCharacterCommand);
m_teletextDocument->undoStack()->push(new TypeCharacterCommand(m_teletextDocument, newCharacter, m_insertMode));
}
void TeletextWidget::toggleCharacterBit(unsigned char bitToToggle)
@@ -393,12 +400,6 @@ void TeletextWidget::toggleCharacterBit(unsigned char bitToToggle)
m_teletextDocument->undoStack()->push(toggleMosaicBitCommand);
}
void TeletextWidget::backspaceEvent()
{
QUndoCommand *backspaceCommand = new BackspaceCommand(m_teletextDocument);
m_teletextDocument->undoStack()->push(backspaceCommand);
}
QPair<int, int> TeletextWidget::mouseToRowAndColumn(const QPoint &mousePosition)
{
int row = mousePosition.y() / 10;