WIP: enchance device pairing process

- Introduced devicePasswordProtected signal in AppContext to notify when a device is password protected.
- Modified DeviceManagerWidget to handle devicePasswordProtected signal and update pending device state accordingly.
- Enhanced DevicePendingWidget to display appropriate messages based on device lock status.
This commit is contained in:
uncor3
2025-10-01 15:10:40 +00:00
parent 94f85bd8fe
commit 6bbad2a3b6
6 changed files with 47 additions and 12 deletions
+23 -4
View File
@@ -1,6 +1,7 @@
#include "devicemanagerwidget.h"
#include "appcontext.h"
#include "devicemenuwidget.h"
#include "devicependingwidget.h"
#include <QDebug>
DeviceManagerWidget::DeviceManagerWidget(QWidget *parent)
@@ -23,7 +24,13 @@ DeviceManagerWidget::DeviceManagerWidget(QWidget *parent)
connect(AppContext::sharedInstance(), &AppContext::devicePairPending, this,
[this](const QString &udid) {
addPendingDevice(udid);
addPendingDevice(udid, false);
emit updateNoDevicesConnected();
});
connect(AppContext::sharedInstance(), &AppContext::devicePasswordProtected,
this, [this](const QString &udid) {
addPendingDevice(udid, true);
emit updateNoDevicesConnected();
});
@@ -99,12 +106,24 @@ void DeviceManagerWidget::addDevice(iDescriptorDevice *device)
// }
}
void DeviceManagerWidget::addPendingDevice(const QString &udid)
void DeviceManagerWidget::addPendingDevice(const QString &udid, bool locked)
{
qDebug() << "Adding pending device:" << udid;
if (m_pendingDeviceWidgets.contains(udid.toStdString()) && !locked) {
qDebug() << "Pending device already exists, moving to next state:"
<< udid;
m_pendingDeviceWidgets[udid.toStdString()].first->next();
return;
} else if (m_pendingDeviceWidgets.contains(udid.toStdString()) && locked) {
// Already exists and still locked, do nothing
qDebug()
<< "Pending device already exists and is locked, doing nothing:"
<< udid;
return;
}
DevicePendingWidget *pendingWidget = new DevicePendingWidget(this);
qDebug() << "Created pending widget for:" << udid << "Locked:" << locked;
DevicePendingWidget *pendingWidget = new DevicePendingWidget(locked, this);
m_stackedWidget->addWidget(pendingWidget);
m_pendingDeviceWidgets[udid.toStdString()] =
std::pair{pendingWidget, m_sidebar->addPendingToSidebar(udid)};