DeviceItem * PlatformUdisks2::buildDevice(QVariantMap &blockProperties, QVariantMap &driveProperties) { DeviceItem *devItem = new DeviceItem; QString path = blockProperties.value("path").toString(); devItem->setUDI(path.mid(path.lastIndexOf("/") + 1)); qDebug() << devItem->getUDI(); isMounted(devItem->getUDI()); devItem->setPath(path); devItem->setIsRemovable(driveProperties.value("removable").toBool()); devItem->setSize(blockProperties.value("size").toLongLong()); devItem->setModelString(driveProperties.value("model").toString()); QString vendor = driveProperties.value("vendor").toString(); if (vendor == "") { if (mKioskMode) devItem->setVendorString("SUSE Studio USB Key"); else devItem->setVendorString("Unknown Device"); } else { devItem->setVendorString(vendor); } QString newDisplayString = QString("%1 %2 - %3 (%4 MB)") .arg(devItem->getVendorString()) .arg(devItem->getModelString()) .arg(devItem->getPath()) .arg(devItem->getSize() / 1048576); devItem->setDisplayString(newDisplayString); if (mKioskMode) { if((devItem->getSize() / 1048576) > 200000) { delete devItem; return(NULL); } } // If a device is 0 megs we might as well just not list it if ((devItem->getSize() / 1048576) > 0) { itemList << devItem; } else { delete devItem; devItem = NULL; } return(devItem); }
void MainWindow::write() { if (file.isEmpty()) { QMessageBox msgBox; msgBox.setText(tr("Please select an image to use.")); msgBox.exec(); return; } DeviceItem *item = pPlatform->findDeviceInList(deviceComboBox->currentText()); if (item != NULL) { if (pPlatform->isMounted(item->getUDI())) { // We won't let them nuke a mounted device QMessageBox msgBox; msgBox.setText(tr("This device is already mounted, and I will not write to a mounted device. Would you like me to attempt to unmount it?")); #if (QT_VERSION >= 0x040400) msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::No); msgBox.setDefaultButton(QMessageBox::No); #else msgBox.setButtonText(QMessageBox::Yes, tr("Yes")); msgBox.setButtonText(QMessageBox::No, tr("No")); #endif switch (msgBox.exec()) { case QMessageBox::Yes: { if (!pPlatform->unmountDevice(item->getUDI())) { QMessageBox failedBox; failedBox.setText(tr("Unmount failed. I will not write to this device.")); failedBox.exec(); return; } break; } case QMessageBox::No: return; default: break; } } QMessageBox msgBox; QString messageString; if (item->isRemovable()) messageString = tr("This will overwrite the contents of ") + item->getPath() + tr(". Are you sure you want to continue?"); else messageString = item->getPath() + tr(" is a non-removable hard drive, and this will overwrite the contents. Are you <b>sure</b> you want to continue?"); msgBox.setText(messageString); #if (QT_VERSION >= 0x040400) msgBox.setStandardButtons(QMessageBox::Cancel | QMessageBox::Ok); msgBox.setDefaultButton(QMessageBox::Cancel); #else msgBox.setButtonText(QMessageBox::Cancel, tr("Cancel")); msgBox.setButtonText(QMessageBox::Ok, tr("Ok")); #endif switch (msgBox.exec()) { case QMessageBox::Ok: { pPlatform->writeData(item->getPath(), file, item->getSize()); break; } default: break; } } }
DeviceItem * PlatformUdisks::getNewDevice(QString devicePath) { QString path, model, vendor; DeviceItem *devItem = new DeviceItem; path = getPath(devicePath); if (path == "") return(NULL); if (!getIsDrive(devicePath)) return(NULL); model = getModel(devicePath); vendor = getVendor(devicePath); devItem->setUDI(devicePath); devItem->setPath(path); devItem->setIsRemovable(getIsRemovable(devicePath)); devItem->setSize(getSize(devicePath)); devItem->setModelString(model); if (vendor == "") { if (mKioskMode) devItem->setVendorString("SUSE Studio USB Key"); else devItem->setVendorString("Unknown Device"); } else { devItem->setVendorString(vendor); } QString newDisplayString = QString("%1 %2 - %3 (%4 MB)") .arg(devItem->getVendorString()) .arg(devItem->getModelString()) .arg(devItem->getPath()) .arg(devItem->getSize() / 1048576); devItem->setDisplayString(newDisplayString); if (mKioskMode) { if((devItem->getSize() / 1048576) > 200000) { delete devItem; return(NULL); } } // If a device is 0 megs we might as well just not list it if ((devItem->getSize() / 1048576) > 0) { itemList << devItem; } else { delete devItem; devItem = NULL; } return(devItem); }