mirror of
https://github.com/GerbilSoft/rvthtool.git
synced 2025-06-18 19:45:35 -04:00
[qrvthtool] SelectDeviceDialog.cpp: Mask the device serial number here, too.
Add ConfigStore as a constructor parameter. QRvtHToolWindow's ConfigStore object must be passed here. Listen for the option change, even though it shouldn't be possible for the option to change while the dialog is open. QRvtHToolWindow::on_actionOpenDevice_triggered(): - Pass the ConfigStore to SelectDeviceDialog. - Also pass `this` as parent to ensure that the user realizes the window is modal. On KDE, this dims the main window. Previously, the main window wouldn't be dimmed, but it wouldn't be usable while SelectDeviceDialog was open.
This commit is contained in:
parent
54b78ac69d
commit
1d0f8e86ef
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<!-- Copyright 2018-2022 David Korth <gerbilsoft@gerbilsoft.com> -->
|
<!-- Copyright 2018-2025 David Korth <gerbilsoft@gerbilsoft.com> -->
|
||||||
|
|
||||||
<component type="desktop-application">
|
<component type="desktop-application">
|
||||||
<id>com.gerbilsoft.qrvthtool</id>
|
<id>com.gerbilsoft.qrvthtool</id>
|
||||||
@ -38,6 +38,7 @@
|
|||||||
<icon type="local" width="16" height="16">/usr/share/icons/hicolor/16x16/apps/qrvthtool.png</icon>
|
<icon type="local" width="16" height="16">/usr/share/icons/hicolor/16x16/apps/qrvthtool.png</icon>
|
||||||
<content_rating type="oars-1.1"/>
|
<content_rating type="oars-1.1"/>
|
||||||
<releases>
|
<releases>
|
||||||
|
<release version="2.0" date="2025-06-16"/>
|
||||||
<release version="1.1.1" date="2018-09-17"/>
|
<release version="1.1.1" date="2018-09-17"/>
|
||||||
<release version="1.1" date="2018-09-17"/>
|
<release version="1.1" date="2018-09-17"/>
|
||||||
<release version="1.0" date="2018-06-07"/>
|
<release version="1.0" date="2018-06-07"/>
|
||||||
|
@ -1120,7 +1120,8 @@ void QRvtHToolWindow::on_actionOpenDiskImage_triggered(void)
|
|||||||
void QRvtHToolWindow::on_actionOpenDevice_triggered(void)
|
void QRvtHToolWindow::on_actionOpenDevice_triggered(void)
|
||||||
{
|
{
|
||||||
// Prompt the user to select a device.
|
// Prompt the user to select a device.
|
||||||
SelectDeviceDialog *const selectDeviceDialog = new SelectDeviceDialog();
|
Q_D(QRvtHToolWindow);
|
||||||
|
SelectDeviceDialog *const selectDeviceDialog = new SelectDeviceDialog(d->cfg, this);
|
||||||
selectDeviceDialog->setObjectName(QStringLiteral("selectDeviceDialog"));
|
selectDeviceDialog->setObjectName(QStringLiteral("selectDeviceDialog"));
|
||||||
int ret = selectDeviceDialog->exec();
|
int ret = selectDeviceDialog->exec();
|
||||||
if (ret == QDialog::Accepted) {
|
if (ret == QDialog::Accepted) {
|
||||||
|
@ -32,13 +32,16 @@
|
|||||||
#include <QPushButton>
|
#include <QPushButton>
|
||||||
#include <QMetaMethod>
|
#include <QMetaMethod>
|
||||||
|
|
||||||
|
// Configuration
|
||||||
|
#include "config/ConfigStore.hpp"
|
||||||
|
|
||||||
/** SelectDeviceDialogPrivate **/
|
/** SelectDeviceDialogPrivate **/
|
||||||
|
|
||||||
#include "ui_SelectDeviceDialog.h"
|
#include "ui_SelectDeviceDialog.h"
|
||||||
class SelectDeviceDialogPrivate
|
class SelectDeviceDialogPrivate
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
explicit SelectDeviceDialogPrivate(SelectDeviceDialog *q);
|
explicit SelectDeviceDialogPrivate(ConfigStore *cfg, SelectDeviceDialog *q);
|
||||||
~SelectDeviceDialogPrivate();
|
~SelectDeviceDialogPrivate();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
@ -50,6 +53,9 @@ private:
|
|||||||
public:
|
public:
|
||||||
Ui::SelectDeviceDialog ui;
|
Ui::SelectDeviceDialog ui;
|
||||||
|
|
||||||
|
// Configuration
|
||||||
|
ConfigStore *const cfg;
|
||||||
|
|
||||||
// RVT-H Reader icon
|
// RVT-H Reader icon
|
||||||
QIcon rvthReaderIcon;
|
QIcon rvthReaderIcon;
|
||||||
|
|
||||||
@ -95,8 +101,9 @@ public:
|
|||||||
const RvtH_QueryEntry *entry, RvtH_Listen_State_e state, void *userdata);
|
const RvtH_QueryEntry *entry, RvtH_Listen_State_e state, void *userdata);
|
||||||
};
|
};
|
||||||
|
|
||||||
SelectDeviceDialogPrivate::SelectDeviceDialogPrivate(SelectDeviceDialog *q)
|
SelectDeviceDialogPrivate::SelectDeviceDialogPrivate(ConfigStore *cfg, SelectDeviceDialog *q)
|
||||||
: q_ptr(q)
|
: q_ptr(q)
|
||||||
|
, cfg(cfg)
|
||||||
, sel_device(nullptr)
|
, sel_device(nullptr)
|
||||||
, listener(nullptr)
|
, listener(nullptr)
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
@ -108,6 +115,10 @@ SelectDeviceDialogPrivate::SelectDeviceDialogPrivate(SelectDeviceDialog *q)
|
|||||||
|
|
||||||
// Set the window icon.
|
// Set the window icon.
|
||||||
q->setWindowIcon(rvthReaderIcon);
|
q->setWindowIcon(rvthReaderIcon);
|
||||||
|
|
||||||
|
// Configuration signals
|
||||||
|
cfg->registerChangeNotification(QLatin1String("maskDeviceSerialNumbers"),
|
||||||
|
q, SLOT(maskDeviceSerialNumbers_cfg_slot(QVariant)));
|
||||||
}
|
}
|
||||||
|
|
||||||
SelectDeviceDialogPrivate::~SelectDeviceDialogPrivate()
|
SelectDeviceDialogPrivate::~SelectDeviceDialogPrivate()
|
||||||
@ -128,10 +139,32 @@ SelectDeviceDialogPrivate::~SelectDeviceDialogPrivate()
|
|||||||
*/
|
*/
|
||||||
void SelectDeviceDialogPrivate::addDevice(const DeviceQueryData &queryData)
|
void SelectDeviceDialogPrivate::addDevice(const DeviceQueryData &queryData)
|
||||||
{
|
{
|
||||||
|
const bool mask = cfg->get(QLatin1String("maskDeviceSerialNumbers")).toBool();
|
||||||
|
|
||||||
// Create the string.
|
// Create the string.
|
||||||
QString text = queryData.device_name + QChar(L'\n') +
|
QString text = queryData.device_name + QChar(L'\n');
|
||||||
queryData.usb_serial + QChar(L'\n') +
|
if (mask) {
|
||||||
formatSize(static_cast<off64_t>(queryData.size));
|
// Mask the last 5 digits.
|
||||||
|
// TODO: qsizetype?
|
||||||
|
QString qs_full_serial = queryData.usb_serial;
|
||||||
|
const int size = static_cast<int>(qs_full_serial.size());
|
||||||
|
if (size > 5) {
|
||||||
|
for (int i = size - 5; i < size; i++) {
|
||||||
|
qs_full_serial[i] = QChar(L'x');
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Mask the entire thing?
|
||||||
|
qs_full_serial = QString(size, QChar(L'x'));
|
||||||
|
}
|
||||||
|
|
||||||
|
text += qs_full_serial;
|
||||||
|
} else {
|
||||||
|
// Show the full serial number.
|
||||||
|
text += queryData.usb_serial;
|
||||||
|
}
|
||||||
|
|
||||||
|
text += QChar(L'\n');
|
||||||
|
text += formatSize(static_cast<off64_t>(queryData.size));
|
||||||
|
|
||||||
// Create the QListWidgetItem.
|
// Create the QListWidgetItem.
|
||||||
// TODO: Verify that QListWidget takes ownership.
|
// TODO: Verify that QListWidget takes ownership.
|
||||||
@ -251,12 +284,12 @@ void SelectDeviceDialogPrivate::rvth_listener_callback(
|
|||||||
|
|
||||||
/** SelectDeviceDialog **/
|
/** SelectDeviceDialog **/
|
||||||
|
|
||||||
SelectDeviceDialog::SelectDeviceDialog(QWidget *parent)
|
SelectDeviceDialog::SelectDeviceDialog(ConfigStore *cfg, QWidget *parent)
|
||||||
: super(parent,
|
: super(parent,
|
||||||
Qt::WindowSystemMenuHint |
|
Qt::WindowSystemMenuHint |
|
||||||
Qt::WindowTitleHint |
|
Qt::WindowTitleHint |
|
||||||
Qt::WindowCloseButtonHint)
|
Qt::WindowCloseButtonHint)
|
||||||
, d_ptr(new SelectDeviceDialogPrivate(this))
|
, d_ptr(new SelectDeviceDialogPrivate(cfg, this))
|
||||||
{
|
{
|
||||||
Q_D(SelectDeviceDialog);
|
Q_D(SelectDeviceDialog);
|
||||||
d->ui.setupUi(this);
|
d->ui.setupUi(this);
|
||||||
@ -534,3 +567,13 @@ void SelectDeviceDialog::deviceStateChanged(const DeviceQueryData &queryData, Rv
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* "Mask Device Serial Numbers" option was changed by the configuration.
|
||||||
|
* @param mask If true, mask device serial numbers.
|
||||||
|
*/
|
||||||
|
void SelectDeviceDialog::maskDeviceSerialNumbers_cfg_slot(const QVariant &mask)
|
||||||
|
{
|
||||||
|
Q_D(SelectDeviceDialog);
|
||||||
|
d->refreshDeviceList();
|
||||||
|
}
|
||||||
|
@ -14,6 +14,9 @@
|
|||||||
#include "librvth/query.h"
|
#include "librvth/query.h"
|
||||||
Q_DECLARE_METATYPE(RvtH_Listen_State_e)
|
Q_DECLARE_METATYPE(RvtH_Listen_State_e)
|
||||||
|
|
||||||
|
// Configuration
|
||||||
|
class ConfigStore;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Convert a TCHAR string to QString.
|
* Convert a TCHAR string to QString.
|
||||||
* @param str TCHAR string
|
* @param str TCHAR string
|
||||||
@ -77,7 +80,7 @@ Q_OBJECT
|
|||||||
typedef QDialog super;
|
typedef QDialog super;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit SelectDeviceDialog(QWidget *parent = nullptr);
|
explicit SelectDeviceDialog(ConfigStore *cfg, QWidget *parent = nullptr);
|
||||||
virtual ~SelectDeviceDialog();
|
virtual ~SelectDeviceDialog();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
@ -149,4 +152,13 @@ protected slots:
|
|||||||
* @param state Device state
|
* @param state Device state
|
||||||
*/
|
*/
|
||||||
void deviceStateChanged(const DeviceQueryData &queryData, RvtH_Listen_State_e state);
|
void deviceStateChanged(const DeviceQueryData &queryData, RvtH_Listen_State_e state);
|
||||||
|
|
||||||
|
protected slots:
|
||||||
|
/** Configuration slots **/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* "Mask Device Serial Numbers" option was changed by the configuration.
|
||||||
|
* @param mask If true, mask device serial numbers.
|
||||||
|
*/
|
||||||
|
void maskDeviceSerialNumbers_cfg_slot(const QVariant &mask);
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user