Add new features

Support change language in Settings
Support customized start arguments
Strech data section in MF_dataWidget and key section in MF_keyWidget
This commit is contained in:
wh201906
2021-02-14 22:47:56 +08:00
parent 5330ed8d14
commit 83445c7eef
11 changed files with 303 additions and 205 deletions
+38 -13
View File
@@ -22,6 +22,7 @@ MainWindow::MainWindow(QWidget *parent):
this->addAction(checkUpdate);
settings = new QSettings("GUIsettings.ini", QSettings::IniFormat);
settings->setIniCodec("UTF-8");
pm3Thread = new QThread(this);
pm3 = new PM3Process(pm3Thread);
@@ -32,7 +33,7 @@ MainWindow::MainWindow(QWidget *parent):
mifare = new Mifare(ui, util, this);
keyEventFilter = new MyEventFilter(QEvent::KeyRelease);
resizeEventFilter = new MyEventFilter(QEvent::Resize);
// hide unused tabs
ui->funcTab->removeTab(1);
@@ -66,7 +67,7 @@ void MainWindow::on_PM3_refreshPortButton_clicked()
QStringList serialList;
foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts())
{
qDebug() << info.isBusy() << info.isNull() << info.portName();
qDebug() << info.isBusy() << info.isNull() << info.portName() << info.description();
serial.setPort(info);
if(serial.open(QIODevice::ReadWrite))
@@ -89,8 +90,9 @@ void MainWindow::on_PM3_connectButton_clicked()
QMessageBox::information(NULL, tr("Info"), tr("Plz choose a port first"), QMessageBox::Ok);
else
{
QStringList args = ui->Set_Client_startArgsEdit->text().replace("<port>", port).split(' ');
saveClientPath(ui->PM3_pathEdit->text());
emit connectPM3(ui->PM3_pathEdit->text(), port);
emit connectPM3(ui->PM3_pathEdit->text(), port, args);
}
QProcess proc;
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
@@ -240,6 +242,20 @@ void MainWindow::on_Raw_CMDEdit_keyPressed(QObject* obj_addr, QEvent& event)
// *****************************************************
// ******************** mifare ********************
void MainWindow::on_MF_keyWidget_resized(QObject* obj_addr, QEvent& event)
{
if(obj_addr == ui->MF_keyWidget && event.type() == QEvent::Resize)
{
QTableWidget* widget = (QTableWidget*)obj_addr;
int keyItemWidth = widget->width();
keyItemWidth -= widget->verticalScrollBar()->width();
keyItemWidth -= 2 * widget->frameWidth();
keyItemWidth -= widget->horizontalHeader()->sectionSize(0);
widget->horizontalHeader()->resizeSection(1, keyItemWidth / 2);
widget->horizontalHeader()->resizeSection(2, keyItemWidth / 2);
}
}
void MainWindow::MF_onTypeChanged(int id, bool st)
{
typeBtnGroup->blockSignals(true);
@@ -860,6 +876,8 @@ void MainWindow::uiInit()
connect(ui->Raw_CMDEdit, &QLineEdit::editingFinished, this, &MainWindow::sendMSG);
ui->Raw_CMDEdit->installEventFilter(keyEventFilter);
connect(keyEventFilter, &MyEventFilter::eventHappened, this, &MainWindow::on_Raw_CMDEdit_keyPressed);
ui->MF_keyWidget->installEventFilter(resizeEventFilter);
connect(resizeEventFilter, &MyEventFilter::eventHappened, this, &MainWindow::on_MF_keyWidget_resized);
connectStatusBar = new QLabel(this);
programStatusBar = new QLabel(this);
@@ -904,7 +922,7 @@ void MainWindow::uiInit()
settings->beginGroup("UI_grpbox_preference");
QStringList boxNames = settings->allKeys();
QGroupBox* boxptr;
QGroupBox * boxptr;
foreach(QString name, boxNames)
{
boxptr = this->findChild<QGroupBox*>(name);
@@ -932,7 +950,8 @@ void MainWindow::uiInit()
settings->endGroup();
settings->beginGroup("Client_forceButtonsEnabled");
ui->Set_Client_forceEnabledBox->setChecked(settings->value("state", false).toBool());
keepButtonsEnabled = settings->value("state", false).toBool();
ui->Set_Client_forceEnabledBox->setChecked(keepButtonsEnabled);
settings->endGroup();
ui->MF_RW_keyTypeBox->addItem("A", Mifare::KEY_A);
@@ -1036,13 +1055,13 @@ void MainWindow::setState(bool st)
{
setStatusBar(programStatusBar, tr("Idle"));
}
ui->MF_attackGroupBox->setEnabled(st);
ui->MF_normalGroupBox->setEnabled(st);
ui->MF_UIDGroupBox->setEnabled(st);
ui->MF_simGroupBox->setEnabled(st);
ui->MF_sniffGroupBox->setEnabled(st);
ui->Raw_CMDEdit->setEnabled(st);
ui->Raw_sendCMDButton->setEnabled(st);
ui->MF_attackGroupBox->setEnabled(st || keepButtonsEnabled);
ui->MF_normalGroupBox->setEnabled(st || keepButtonsEnabled);
ui->MF_UIDGroupBox->setEnabled(st || keepButtonsEnabled);
ui->MF_simGroupBox->setEnabled(st || keepButtonsEnabled);
ui->MF_sniffGroupBox->setEnabled(st || keepButtonsEnabled);
ui->Raw_CMDEdit->setEnabled(st || keepButtonsEnabled);
ui->Raw_sendCMDButton->setEnabled(st || keepButtonsEnabled);
}
void MainWindow::on_GroupBox_clicked(bool checked)
@@ -1136,8 +1155,14 @@ void MainWindow::on_Set_Client_startArgsEdit_editingFinished()
void MainWindow::on_Set_Client_forceEnabledBox_stateChanged(int arg1)
{
settings->beginGroup("Client_forceButtonsEnabled");
settings->setValue("state", arg1 == Qt::Checked);
keepButtonsEnabled = (arg1 == Qt::Checked);
settings->setValue("state", keepButtonsEnabled);
settings->endGroup();
}
void MainWindow::on_Set_GUI_setLanguageButton_clicked()
{
Util::chooseLanguage(settings, this);
}
+7 -1
View File
@@ -21,6 +21,7 @@
#include <QSettings>
#include <QPushButton>
#include <QProcessEnvironment>
#include <QScrollBar>
#include "common/myeventfilter.h"
#include "common/pm3process.h"
@@ -52,6 +53,7 @@ public slots:
void onPM3StateChanged(bool st, const QString& info);
void MF_onTypeChanged(int id, bool st);
void on_Raw_CMDEdit_keyPressed(QObject *obj_addr, QEvent &event);
void on_MF_keyWidget_resized(QObject *obj_addr, QEvent &event);
private slots:
void on_PM3_connectButton_clicked();
@@ -170,6 +172,8 @@ private slots:
void on_Set_Client_envClearButton_clicked();
void on_Set_GUI_setLanguageButton_clicked();
private:
Ui::MainWindow* ui;
QButtonGroup* typeBtnGroup;
@@ -182,6 +186,7 @@ private:
QAction* checkUpdate;
QSettings* settings;
MyEventFilter* keyEventFilter;
MyEventFilter* resizeEventFilter;
QString stashedCMDEditText;
int stashedIndex = -1;
@@ -190,6 +195,7 @@ private:
PM3Process* pm3;
bool pm3state;
bool keepButtonsEnabled;
QThread* pm3Thread;
Mifare* mifare;
@@ -204,7 +210,7 @@ private:
void setState(bool st);
void saveClientPath(const QString& path);
signals:
void connectPM3(const QString& path, const QString& port);
void connectPM3(const QString& path, const QString& port, const QStringList args);
void killPM3();
void setSerialListener(const QString& name, bool state);
};
+21 -10
View File
@@ -120,7 +120,7 @@
</sizepolicy>
</property>
<property name="currentIndex">
<number>4</number>
<number>0</number>
</property>
<widget class="QWidget" name="mifareTab">
<attribute name="title">
@@ -1559,7 +1559,7 @@
</attribute>
<column>
<property name="text">
<string>Key</string>
<string>Variable</string>
</property>
</column>
<column>
@@ -1714,17 +1714,28 @@ or &quot;-p &lt;port&gt; -f&quot;</string>
<string>GUI</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_11">
<item>
<widget class="QLabel" name="label_16">
<property name="text">
<string>Language</string>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_17">
<item>
<widget class="QComboBox" name="Set_GUI_languageBox"/>
<widget class="QLabel" name="label_16">
<property name="text">
<string>Language: </string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="Set_GUI_setLanguageButton">
<property name="text">
<string>Choose Language</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_17">
<property name="text">
<string>(Restart this app to use new language)</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_9">