void tst_QDirModel::initTestCase() { #if defined(Q_OS_ANDROID) && !defined(Q_OS_ANDROID_NO_SDK) QString dataPath = SRCDIR; QString resourceSourcePath = QStringLiteral(":/android_testdata"); QDirIterator it(resourceSourcePath, QDirIterator::Subdirectories); while (it.hasNext()) { it.next(); QFileInfo fileInfo = it.fileInfo(); if (!fileInfo.isDir()) { QString destination = dataPath + QLatin1Char('/') + fileInfo.filePath().mid(resourceSourcePath.length()); QFileInfo destinationFileInfo(destination); if (!destinationFileInfo.exists()) { QDir().mkpath(destinationFileInfo.path()); if (!QFile::copy(fileInfo.filePath(), destination)) qWarning("Failed to copy %s", qPrintable(fileInfo.filePath())); } } } #endif }
void tst_QTemporaryFile::initTestCase() { // For QTBUG_4796 QVERIFY(QDir("test-XXXXXX").exists() || QDir().mkdir("test-XXXXXX")); QCoreApplication::setApplicationName("tst_qtemporaryfile"); #if defined(Q_OS_ANDROID) && !defined(Q_OS_ANDROID_NO_SDK) QString sourceDir(":/android_testdata/"); QDirIterator it(sourceDir, QDirIterator::Subdirectories); while (it.hasNext()) { it.next(); QFileInfo sourceFileInfo = it.fileInfo(); if (!sourceFileInfo.isDir()) { QFileInfo destinationFileInfo(QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + QLatin1Char('/') + sourceFileInfo.filePath().mid(sourceDir.length())); if (!destinationFileInfo.exists()) { QVERIFY(QDir().mkpath(destinationFileInfo.path())); QVERIFY(QFile::copy(sourceFileInfo.filePath(), destinationFileInfo.filePath())); } } } #endif }
void FileSignAndEncryption::on_okButton2_clicked() { ui->warningLabel2->setText(""); if (ui->sourceFileEdit2->text().startsWith("~/") || ui->destinationFileEdit2->text().startsWith("~/")) { ui->warningLabel2->setText("Seul les chemins absolus sont autorisés."); return; } if (ui->sourceFileEdit2->text() == ui->destinationFileEdit2->text()) { ui->warningLabel2->setText("Vous ne pouvez pas utiliser le même fichier source et destination."); return; } QFile sourcefile(ui->sourceFileEdit2->text()); if (!sourcefile.exists()) { ui->warningLabel2->setText("Le fichier source n'existe pas."); return; } QFileInfo sourceFileInfo(sourcefile); if (!sourceFileInfo.isReadable()) { ui->warningLabel2->setText("Vous n'avez pas les droits de lecture sur le fichier source."); return; } QFile destinationfile(ui->destinationFileEdit2->text()); if (destinationfile.exists()) { if (!destinationfile.remove()) { ui->warningLabel2->setText("Impossible d'écraser le fichier existant. Veuillez modifier la destination."); return; } } QFileInfo destinationFileInfo(destinationfile); QFileInfo destinationDirInfo(destinationFileInfo.absoluteDir().path()); if (!destinationDirInfo.isWritable()) { ui->warningLabel2->setText("Vous n'avez pas les droits d'écriture sur le dossier destination."); return; } // On récupère l'indice des lignes selectionnées QModelIndexList selectedIndex = ui->tableWidgetRecipient2->selectionModel()->selectedIndexes(); QList<int> rowIndexes; for (QModelIndex index : selectedIndex) { if (!rowIndexes.contains(index.row())) { rowIndexes.append(index.row()); } } // On récupère l'indice des lignes selectionnées pour le signataire QModelIndexList selectedIndexSign = ui->tableWidgetSign->selectionModel()->selectedIndexes(); QList<int> rowIndexesSign; for (QModelIndex index : selectedIndexSign) { if (!rowIndexesSign.contains(index.row())) { rowIndexesSign.append(index.row()); } } if (rowIndexes.count() == 0) { ui->warningLabel2->setText("Vous devez sélectionner au moins un destinaire."); return; } if (rowIndexesSign.count() == 0) { ui->warningLabel2->setText("Vous devez sélectionner un signataire."); return; } /* Utilisé pour paramétré les intéractions car gpg est tellement * intelligent qu'il les demandes dans l'ordre inverse pour le cas anonyme */ QList<int> reverseRowIndexes; reverseRowIndexes.reserve(rowIndexes.size()); std::reverse_copy(rowIndexes.begin(), rowIndexes.end(), std::back_inserter(reverseRowIndexes)); QStringList opt; opt << "--command-fd=0" << "--status-fd=1" << "-a" << "--sign" << "--default-key " + ui->tableWidgetSign->item(rowIndexesSign[0], 0)->text() << "--output" << ui->destinationFileEdit2->text(); QString cmd = "-e"; QStringList arg; arg << ui->sourceFileEdit2->text(); QStringList interactions; if (ui->anonymousCheckBox->isChecked()) { for (int i : rowIndexes) { opt << "-R \"" + ui->tableWidgetRecipient2->item(i, 0)->text() + " <" + ui->tableWidgetRecipient2->item(i, 1)->text() + ">\""; } for (int i : reverseRowIndexes) { if (ui->tableWidgetRecipient2->item(i, 3)->text() == GpgObject::validityToStr(VALIDITY_NO_VALUE) || ui->tableWidgetRecipient2->item(i, 3)->text() == GpgObject::validityToStr(VALIDITY_UNDEFINED)) { interactions << "y"; } } } else { for (int i : rowIndexes) { interactions << ui->tableWidgetRecipient2->item(i, 0)->text() + " <" + ui->tableWidgetRecipient2->item(i, 1)->text() + ">"; if (ui->tableWidgetRecipient2->item(i, 3)->text() == GpgObject::validityToStr(VALIDITY_NO_VALUE) || ui->tableWidgetRecipient2->item(i, 3)->text() == GpgObject::validityToStr(VALIDITY_UNDEFINED)) { interactions << "y"; } } interactions << ""; } Action action(cmd, arg, opt, interactions); m_manager->setAction(action); connect(m_manager, &GPGManager::finished, this, &FileSignAndEncryption::onEncryptionCompleted); m_manager->execute(); }