void QHiMDWinDetection::remove_himddevice(QString path) { int index = -1; QHiMDDevice * dev = static_cast<QHiMDDevice *>(find_by_path(path)); if (!dev) return; index = dlist.indexOf(dev); if(dev->isOpen()) dev->close(); if(dev->name() != "disc image") { if(dev->MdChange() != NULL) unregister_mediaChange((HDEVNOTIFY)dev->MdChange()); if(dev->deviceHandle() != NULL) CloseHandle(dev->deviceHandle()); } delete dev; dev = NULL; dlist.removeAt(index); emit deviceListChanged(dlist); }
void QHiMDMainWindow::on_action_Connect_triggered() { int index; QHiMDDevice *dev; QString HiMDDirectory; HiMDDirectory = settings.value("lastImageDirectory", QDir::rootPath()).toString(); HiMDDirectory = QFileDialog::getExistingDirectory(this, tr("Select directory of HiMD Medium"), HiMDDirectory, QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks); if(HiMDDirectory.isEmpty()) return; index = ui->himd_devices->findText("disc image", Qt::MatchContains); ui->himd_devices->setCurrentIndex(index); // index of disk image device dev = (QHiMDDevice *)ui->himd_devices->itemData(index).value<void *>(); dev->setPath(HiMDDirectory); ui->himd_devices->setItemText(index, QString((dev->name() + " at " + dev->path() ))); open_device(dev); }