From 2b345dfa2d19d80734462b7938ed0fefc62726f0 Mon Sep 17 00:00:00 2001 From: uncor3 Date: Sun, 5 Apr 2026 09:49:19 +0000 Subject: [PATCH] fix(devdiskimageswidget): add item selection handling and iOS 17 warnings --- src/devdiskimageswidget.cpp | 40 +++++++++++++++++++++++++++++++++++++ src/devdiskimageswidget.h | 1 + 2 files changed, 41 insertions(+) diff --git a/src/devdiskimageswidget.cpp b/src/devdiskimageswidget.cpp index 62cd614..c68148b 100644 --- a/src/devdiskimageswidget.cpp +++ b/src/devdiskimageswidget.cpp @@ -71,6 +71,9 @@ DevDiskImagesWidget::DevDiskImagesWidget(const QString &deviceUdid, [this](QListWidgetItem *item) { m_mountButton->setEnabled(item != nullptr); }); + + connect(m_imageListWidget, &QListWidget::itemSelectionChanged, this, + &DevDiskImagesWidget::onItemSelectionChanged); } void DevDiskImagesWidget::setupUi() @@ -593,6 +596,13 @@ void DevDiskImagesWidget::mountImage(const QString &version) return; } + if (device->ios_version >= 17) { + QMessageBox::warning(this, "Unsupported iOS Version", + "Mounting developer disk images is not supported " + "on iOS 17 and later."); + m_deviceComboBox->setEnabled(true); + return; + } auto *helper = new DevDiskImageHelper(device, this); connect(helper, &DevDiskImageHelper::finished, this, [this, helper]() { m_deviceComboBox->setEnabled(true); @@ -649,6 +659,13 @@ void DevDiskImagesWidget::checkMountedImage() return; } + if (device->ios_version >= 17) { + QMessageBox::warning(this, "Unsupported iOS Version", + "Checking mounted developer disk images is not " + "supported on iOS 17 and later."); + return; + } + connect( device->service_manager, &CXX::ServiceManager::mounted_image_retrieved, this, @@ -691,3 +708,26 @@ void DevDiskImagesWidget::checkMountedImage() Qt::SingleShotConnection); device->service_manager->get_mounted_image(); } + +void DevDiskImagesWidget::onItemSelectionChanged() +{ + QColor baseColor = QApplication::palette().color(QPalette::Window); + QColor highlightColor = QApplication::palette().color(QPalette::Highlight); + + for (int row = 0; row < m_imageListWidget->count(); ++row) { + auto *item = m_imageListWidget->item(row); + auto *w = m_imageListWidget->itemWidget(item); + if (!w) + continue; + + QColor bgColor = (row % 2 == 0) ? baseColor.lighter(110) : baseColor; + + if (item->isSelected()) { + bgColor = highlightColor; + } + + w->setStyleSheet( + QStringLiteral("QWidget#itemWidget { background-color: %1; }") + .arg(bgColor.name())); + } +} \ No newline at end of file diff --git a/src/devdiskimageswidget.h b/src/devdiskimageswidget.h index 68fcfee..f02cc89 100644 --- a/src/devdiskimageswidget.h +++ b/src/devdiskimageswidget.h @@ -53,6 +53,7 @@ private slots: void onMountButtonClicked(); void onImageListFetched(bool success, const QString &errorMessage = QString()); + void onItemSelectionChanged(); private: void setupUi();