notepad--/hexcmprangewin.cpp

83 lines
1.7 KiB
C++
Executable File

#include "hexcmprangewin.h"
#include <QLineEdit>
#include <QMessageBox>
HexCmpRangeWin::HexCmpRangeWin(QWidget *parent)
: QDialog(parent), m_isCancel(true)
{
ui.setupUi(this);
connect(ui.leftStartPos, &QLineEdit::textChanged, this, &HexCmpRangeWin::slot_asyncStartPos);
connect(ui.leftCmpLens, &QLineEdit::textChanged, this, &HexCmpRangeWin::slot_asyncLenPos);
}
HexCmpRangeWin::~HexCmpRangeWin()
{
}
void HexCmpRangeWin::slot_ok()
{
m_isCancel = false;
close();
}
//通过左边的值同步右边。右边不同步左边,加速用户输入
void HexCmpRangeWin::slot_asyncStartPos(const QString& text)
{
ui.rightStartPos->setText(text);
}
void HexCmpRangeWin::slot_asyncLenPos(const QString& text)
{
ui.rightCmpLens->setText(text);
}
//如果取消,则不返回任何有效范围值;错误值也是
const int MAX_CMP_LENS = 1024 * 1024 * 10;
void HexCmpRangeWin::getRange(bool & isCancel, qint64 & leftStartPos, int & leftCmpLen, qint64 & rightStartPos, int & rightCmpLen)
{
isCancel = m_isCancel;
if (isCancel)
{
return;
}
bool ok = false;
bool ok1 = false;
bool ok2 = false;
bool ok3 = false;
leftStartPos = ui.leftStartPos->text().toULongLong(&ok);
leftCmpLen = ui.leftCmpLens->text().toInt(&ok1);
rightStartPos = ui.rightStartPos->text().toULongLong(&ok2);
rightCmpLen = ui.rightCmpLens->text().toInt(&ok3);
if (!ok || !ok1 || !ok2 || !ok3)
{
isCancel = true;
leftStartPos = -1;
rightStartPos = -1;
leftCmpLen = 0;
rightCmpLen = 0;
QMessageBox::warning(this, tr("Error"), tr("StartPos or cmpare lens value error."));
return;
}
if (leftCmpLen > MAX_CMP_LENS)
{
leftCmpLen = MAX_CMP_LENS;
}
if (rightCmpLen > MAX_CMP_LENS)
{
rightCmpLen = MAX_CMP_LENS;
}
}