adding initial project layout
This commit is contained in:
parent
8404376c6b
commit
27474060e1
340 changed files with 61084 additions and 0 deletions
115
externals/qhexedit/commands.cpp
vendored
Normal file
115
externals/qhexedit/commands.cpp
vendored
Normal file
|
@ -0,0 +1,115 @@
|
|||
#include "commands.h"
|
||||
|
||||
CharCommand::CharCommand(XByteArray * xData, Cmd cmd, int charPos, char newChar, QUndoCommand *parent)
|
||||
: QUndoCommand(parent)
|
||||
{
|
||||
_xData = xData;
|
||||
_charPos = charPos;
|
||||
_newChar = newChar;
|
||||
_cmd = cmd;
|
||||
}
|
||||
|
||||
bool CharCommand::mergeWith(const QUndoCommand *command)
|
||||
{
|
||||
const CharCommand *nextCommand = static_cast<const CharCommand *>(command);
|
||||
bool result = false;
|
||||
|
||||
if (_cmd != remove)
|
||||
{
|
||||
if (nextCommand->_cmd == replace)
|
||||
if (nextCommand->_charPos == _charPos)
|
||||
{
|
||||
_newChar = nextCommand->_newChar;
|
||||
result = true;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
void CharCommand::undo()
|
||||
{
|
||||
switch (_cmd)
|
||||
{
|
||||
case insert:
|
||||
_xData->remove(_charPos, 1);
|
||||
break;
|
||||
case replace:
|
||||
_xData->replace(_charPos, _oldChar);
|
||||
_xData->setDataChanged(_charPos, _wasChanged);
|
||||
break;
|
||||
case remove:
|
||||
_xData->insert(_charPos, _oldChar);
|
||||
_xData->setDataChanged(_charPos, _wasChanged);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void CharCommand::redo()
|
||||
{
|
||||
switch (_cmd)
|
||||
{
|
||||
case insert:
|
||||
_xData->insert(_charPos, _newChar);
|
||||
break;
|
||||
case replace:
|
||||
_oldChar = _xData->data()[_charPos];
|
||||
_wasChanged = _xData->dataChanged(_charPos);
|
||||
_xData->replace(_charPos, _newChar);
|
||||
break;
|
||||
case remove:
|
||||
_oldChar = _xData->data()[_charPos];
|
||||
_wasChanged = _xData->dataChanged(_charPos);
|
||||
_xData->remove(_charPos, 1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
ArrayCommand::ArrayCommand(XByteArray * xData, Cmd cmd, int baPos, QByteArray newBa, int len, QUndoCommand *parent)
|
||||
: QUndoCommand(parent)
|
||||
{
|
||||
_cmd = cmd;
|
||||
_xData = xData;
|
||||
_baPos = baPos;
|
||||
_newBa = newBa;
|
||||
_len = len;
|
||||
}
|
||||
|
||||
void ArrayCommand::undo()
|
||||
{
|
||||
switch (_cmd)
|
||||
{
|
||||
case insert:
|
||||
_xData->remove(_baPos, _newBa.length());
|
||||
break;
|
||||
case replace:
|
||||
_xData->replace(_baPos, _oldBa);
|
||||
_xData->setDataChanged(_baPos, _wasChanged);
|
||||
break;
|
||||
case remove:
|
||||
_xData->insert(_baPos, _oldBa);
|
||||
_xData->setDataChanged(_baPos, _wasChanged);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void ArrayCommand::redo()
|
||||
{
|
||||
switch (_cmd)
|
||||
{
|
||||
case insert:
|
||||
_xData->insert(_baPos, _newBa);
|
||||
break;
|
||||
case replace:
|
||||
_oldBa = _xData->data().mid(_baPos, _len);
|
||||
_wasChanged = _xData->dataChanged(_baPos, _len);
|
||||
_xData->replace(_baPos, _newBa);
|
||||
break;
|
||||
case remove:
|
||||
_oldBa = _xData->data().mid(_baPos, _len);
|
||||
_wasChanged = _xData->dataChanged(_baPos, _len);
|
||||
_xData->remove(_baPos, _len);
|
||||
break;
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue