Fix a small bug

This commit is contained in:
wh201906
2020-08-08 11:23:17 +08:00
parent 41bbcd2c4a
commit fbe8a5e51d
4 changed files with 56 additions and 22 deletions
+42 -12
View File
@@ -833,21 +833,51 @@ void Mifare::data_syncWithKeyWidget(bool syncAll, int sector, KeyType keyType)
ui->MF_keyWidget->blockSignals(false);
}
void Mifare::data_clearData()
void Mifare::data_clearData(bool clearAll)
{
dataList->clear();
for(int i = 0; i < cardType.block_size; i++)
dataList->append("");
if(clearAll)
{
dataList->clear();
}
int delta = cardType.block_size - dataList->length() ;
if(delta >= 0)
{
for(int i = 0; i < delta; i++)
dataList->append("");
}
else if(delta < 0)
{
for(int i = 0; i < -delta; i++)
dataList->removeLast();
}
}
void Mifare::data_clearKey()
void Mifare::data_clearKey(bool clearAll)
{
keyAList->clear();
keyBList->clear();
for(int i = 0; i < cardType.sector_size; i++)
if(clearAll)
{
keyAList->append("");
keyBList->append("");
keyAList->clear();
keyBList->clear();
}
int delta = cardType.sector_size - keyAList->length() ;
if(delta >= 0)
{
for(int i = 0; i < delta; i++)
{
keyAList->append("");
keyBList->append("");
}
}
else if(delta < 0)
{
for(int i = 0; i < -delta; i++)
{
keyAList->removeLast();
keyBList->removeLast();
}
}
}
@@ -912,8 +942,8 @@ void Mifare::setCardType(int type)
cardType = card_2k;
else if(type == 4)
cardType = card_4k;
data_clearKey();
data_clearData();
data_clearKey(false);
data_clearData(false);
}
}
+7 -7
View File
@@ -46,11 +46,11 @@ public:
struct CardType
{
int type;
int sector_size;
int block_size;
int blk[40];
int blks[40];
quint8 type;
quint8 sector_size;
quint16 block_size;
quint8 blk[40];
quint8 blks[40];
};
enum AccessType
@@ -70,8 +70,8 @@ public:
static const AccessType trailerReadCondition[8][3];
static const AccessType trailerWriteCondition[8][3];
void data_clearData();
void data_clearKey();
void data_clearData(bool clearAll = true);
void data_clearKey(bool clearAll = true);
static bool data_isKeyValid(const QString& key);
static Mifare::DataType data_isDataValid(const QString& data);
void data_syncWithDataWidget(bool syncAll = true, int block = 0);