QFileInfoList CDspHaClusterHelper::getReport() { QFileInfoList output; QFileInfo p("/usr/bin/vstorage-make-report"); if (!p.exists()) return output; QDir d("/etc/vstorage/clusters"); if (!d.exists()) return output; QStringList a = d.entryList(QDir::NoDotAndDotDot | QDir::Dirs); foreach (QString x, a) { QTemporaryFile t; t.setFileTemplate(QString("%1/pstorage.%2.XXXXXX.tgz") .arg(QDir::tempPath()).arg(x)); if (!t.open()) { WRITE_TRACE(DBG_FATAL, "QTemporaryFile::open() error: %s", QSTR2UTF8(t.errorString())); continue; } QString b, c = QString("%1 -f %2 \"%3\"").arg(p.filePath()).arg(t.fileName()).arg(x); if (!HostUtils::RunCmdLineUtility(c, b, -1) || t.size() == 0) { t.close(); continue; } t.setAutoRemove(false); output.append(QFileInfo(t.fileName())); t.close(); }
Result StoragePoolControlThread::getStoragePoolXMLDesc() { Result result; QString name = task.object; bool read = false; char *Returns = NULL; virStoragePoolPtr storagePool = virStoragePoolLookupByName( *task.srcConnPtr, name.toUtf8().data()); if ( storagePool!=NULL ) { Returns = (virStoragePoolGetXMLDesc(storagePool, VIR_STORAGE_XML_INACTIVE)); if ( Returns==NULL ) result.err = sendConnErrors(); else read = true; virStoragePoolFree(storagePool); } else result.err = sendConnErrors(); QTemporaryFile f; f.setAutoRemove(false); f.setFileTemplate(QString("%1%2XML_Desc-XXXXXX.xml") .arg(QDir::tempPath()).arg(QDir::separator())); read = f.open(); if (read) f.write(Returns); result.fileName.append(f.fileName()); f.close(); if ( Returns!=NULL ) free(Returns); result.msg.append(QString("'<b>%1</b>' StoragePool %2 XML'ed") .arg(name).arg((read)?"":"don't")); result.name = name; result.result = read; return result; }
void SnapshotActionDialog::showSnapsotXMLDesc() { if ( snapshotTree->currentIndex().isValid() ) { TreeItem *item = static_cast<TreeItem*>( snapshotTree->currentIndex().internalPointer()); if ( NULL!=item ) { // flags: extra flags; not used yet, so callers should always pass 0 virDomainSnapshotPtr snapShot = virDomainSnapshotLookupByName( domain, item->data(0).toByteArray().data(), 0); char *xmlDesc = virDomainSnapshotGetXMLDesc(snapShot, 0); if ( NULL!=xmlDesc ) { QTemporaryFile f; f.setAutoRemove(false); f.setFileTemplate( QString("%1%2XML_Desc-XXXXXX.xml") .arg(QDir::tempPath()) .arg(QDir::separator())); bool read = f.open(); if (read) f.write(xmlDesc); QString xml = f.fileName(); f.close(); free(xmlDesc); QDesktopServices::openUrl(QUrl(xml)); }; }; }; }
bool DatabaseSettingsWidget::checkDatabasePath() { QString dbFolder = databasePath(); qCDebug(DIGIKAM_DATABASE_LOG) << "Database directory is : " << dbFolder; if (dbFolder.isEmpty()) { QMessageBox::information(qApp->activeWindow(), qApp->applicationName(), i18n("You must select a folder for digiKam to " "store information and metadata in a database file.")); return false; } QDir targetPath(dbFolder); if (!targetPath.exists()) { int rc = QMessageBox::question(qApp->activeWindow(), i18n("Create Database Folder?"), i18n("<p>The folder to put your database in does not seem to exist:</p>" "<p><b>%1</b></p>" "Would you like digiKam to create it for you?", dbFolder)); if (rc == QMessageBox::No) { return false; } if (!targetPath.mkpath(dbFolder)) { QMessageBox::information(qApp->activeWindow(), i18n("Create Database Folder Failed"), i18n("<p>digiKam could not create the folder to host your database file.\n" "Please select a different location.</p>" "<p><b>%1</b></p>", dbFolder)); return false; } } QFileInfo path(dbFolder); #ifdef _WIN32 // Work around bug #189168 QTemporaryFile temp; temp.setFileTemplate(dbFolder + QLatin1String("XXXXXX")); if (!temp.open()) #else if (!path.isWritable()) #endif { QMessageBox::information(qApp->activeWindow(), i18n("No Database Write Access"), i18n("<p>You do not seem to have write access " "for the folder to host the database file.<br/>" "Please select a different location.</p>" "<p><b>%1</b></p>", dbFolder)); return false; } return true; }
void QWpsDrawer::newTempWps() { QTemporaryFile tmpWps; tmpWps.setAutoRemove(false); tmpWps.setFileTemplate(QDir::tempPath()+"/XXXXXXXXXX.wps"); if (tmpWps.open()) { QString tmpDir = tmpWps.fileName().left(tmpWps.fileName().length()-4); if (QDir::temp().mkpath(tmpDir)) { mTmpWpsString = tmpDir; DEBUGF3(QString("Created :"+mTmpWpsString).toAscii()); } } }
QStringList StoragePoolControlThread::getStoragePoolXMLDesc() { QStringList result; QString name = args.first(); /* virStoragePoolPtr *storagePool; unsigned int flags = VIR_CONNECT_LIST_STORAGE_POOLS_ACTIVE | VIR_CONNECT_LIST_STORAGE_POOLS_INACTIVE; int ret = virConnectListAllStoragePools( currWorkConnect, &storagePool, flags); if ( ret<0 ) { sendConnErrors(); free(storagePool); return result; }; //qDebug()<<QString(virConnectGetURI(currWorkConnect)); int i = 0; */ bool read = false; char *Returns = NULL; /* while ( storagePool[i] != NULL ) { QString currNetName = QString( virStoragePoolGetName(storagePool[i]) ); if ( !read && currNetName==name ) { Returns = (virStoragePoolGetXMLDesc(storagePool[i], VIR_STORAGE_XML_INACTIVE)); if ( Returns==NULL ) sendGlobalErrors(); else read = true; }; virStoragePoolFree(storagePool[i]); i++; }; free(storagePool); */ virStoragePoolPtr storagePool = virStoragePoolLookupByName(currWorkConnect, name.toUtf8().data()); if ( storagePool!=NULL ) { Returns = (virStoragePoolGetXMLDesc(storagePool, VIR_STORAGE_XML_INACTIVE)); if ( Returns==NULL ) sendConnErrors(); else read = true; virStoragePoolFree(storagePool); } else sendConnErrors(); QTemporaryFile f; f.setAutoRemove(false); f.setFileTemplate(QString("%1%2XML_Desc-XXXXXX.xml").arg(QDir::tempPath()).arg(QDir::separator())); read = f.open(); if (read) f.write(Returns); result.append(f.fileName()); f.close(); free(Returns); result.append(QString("'<b>%1</b>' StoragePool %2 XML'ed").arg(name).arg((read)?"":"don't")); return result; }
QString ClangStaticAnalyzerRunner::createLogFile(const QString &filePath) const { const QString fileName = QFileInfo(filePath).fileName(); const QString fileTemplate = m_clangLogFileDir + QLatin1String("/report-") + fileName + QLatin1String("-XXXXXX.plist"); QTemporaryFile temporaryFile; temporaryFile.setAutoRemove(false); temporaryFile.setFileTemplate(fileTemplate); if (temporaryFile.open()) { temporaryFile.close(); return temporaryFile.fileName(); } return QString(); }
QString MakeTempDir(const QString template_name) { QString path; { QTemporaryFile tempfile; if (!template_name.isEmpty()) tempfile.setFileTemplate(template_name); tempfile.open(); path = tempfile.fileName(); } QDir d; d.mkdir(path); return path; }
bool ItemEditor::start() { // create temp file const QString tmpFileName = QString("CopyQ.XXXXXX") + getFileSuffixFromMime(m_mime); QString tmpPath = QDir( QDir::tempPath() ).absoluteFilePath(tmpFileName); QTemporaryFile tmpfile; tmpfile.setFileTemplate(tmpPath); tmpfile.setPermissions(QFile::ReadOwner | QFile::WriteOwner | QFile::ExeOwner); if ( !tmpfile.open() ) { printError( tr("Failed to open temporary file (%1) for editing item in external editor!") .arg(tmpfile.fileName()) ); return false; } // write text to temp file tmpfile.write(m_data); tmpfile.flush(); // monitor file m_info.setFile( tmpfile.fileName() ); m_lastmodified = m_info.lastModified(); m_lastSize = m_info.size(); m_timer->start(500); connect( m_timer, SIGNAL(timeout()), this, SLOT(onTimer()) ); // create editor process m_editor = new QProcess(this); connect( m_editor, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(close()) ); connect( m_editor, SIGNAL(error(QProcess::ProcessError)), this, SLOT(onError()) ); // use native path for filename to edit and escape all backslashes const QString nativeFilePath = QDir::toNativeSeparators(m_info.filePath()); QString cmd = m_editorcmd.arg('"' + nativeFilePath + '"'); cmd.replace("\\", "\\\\"); // execute editor m_editor->start(cmd); tmpfile.setAutoRemove(false); tmpfile.close(); return true; }
QString Repository::Git::GitUtils::makeTmpFileFromCommand( QString command, QString filepath ) { bool ok = true; // Ulozim si current working directory QString cwd = QDir::currentPath(); // Nastavim absolutnu cestu k temp file ako template a zakazem automaticke mazanie QTemporaryFile tempFile; tempFile.setFileTemplate( QDir::toNativeSeparators( QDir::tempPath() + "/" + "qXXXXXX" ) ); tempFile.setAutoRemove( false ); // Ak sa nepodarilo vytvorit temp subor, tak nastavim flag "ok" na false a vypisem chybu if ( !tempFile.open() ) { qDebug() << "Nepodarilo sa vytvorit tmp subor"; ok = false; } // Ak sa podarilo vytvorit temp subor, tak zmenim current working directory if ( ok ) { ok = changeDir( filepath ); } // Ak sa podarilo zmenit current working directory, tak skontroluje existenciu git repozitara if ( ok ) { ok = existGit( filepath ); } // Ak existuje na danej ceste git repozitar, tak vykonam command a vystup ulozim do temp suboru if ( ok ) { QProcess process; process.setStandardOutputFile( QDir::toNativeSeparators( tempFile.fileName() ) ); process.start( command ); process.waitForFinished(); process.close(); process.terminate(); } // Vratim povodny current working directory, ak sa nepodari zmenit, vypisem do konzoly if ( !changeDir( cwd ) ) { qDebug() << "Nepodarilo sa vratit na povodny current working directory"; } // Vratim absolutnu cestu k temp suboru return tempFile.fileName(); }
int main() { QTemporaryFile file; file.setFileTemplate(file.fileTemplate() + ".jpg"); const int N = 100; for(int j = 0 ; j < N ; j++) { file.open(); QImage img(800, 600, QImage::Format_RGB32); img.save(&file); file.close(); QString address = file.fileName(); cv::Mat image = cv::imread(address.toStdString(),0); PD_Classifier_VEC.push_back(image); } while (!PD_Classifier_VEC.empty()) PD(); cv::waitKey(); return 0; }
Result StorageVolControlThread::getStorageVolXMLDesc() { Result result; result.name = QString("%1_%2").arg(task.srcConName).arg(currPoolName); QString name = task.object; if (currStoragePool!=NULL) { virStoragePoolFree(currStoragePool); currStoragePool = NULL; }; currStoragePool = virStoragePoolLookupByName( *task.srcConnPtr, currPoolName.toUtf8().data()); bool read = false; char *Returns = NULL; // flags: extra flags; not used yet, so callers should always pass 0 unsigned int flags = 0; virStorageVol *storageVol = virStorageVolLookupByName( currStoragePool, name.toUtf8().data()); if ( storageVol!=NULL ) { Returns = virStorageVolGetXMLDesc(storageVol, flags); if ( Returns==NULL ) result.err = sendConnErrors(); else read = true; virStorageVolFree(storageVol); } else result.err = sendConnErrors(); QTemporaryFile f; f.setAutoRemove(false); f.setFileTemplate(QString("%1%2XML_Desc-XXXXXX.xml") .arg(QDir::tempPath()).arg(QDir::separator())); read = f.open(); if (read) f.write(Returns); result.fileName.append(f.fileName()); f.close(); if ( Returns!=NULL ) free(Returns); result.msg.append(QString("'<b>%1</b>' StorageVol %2 XML'ed") .arg(name).arg((read)?"":"don't")); result.result = read; return result; }
// KF5 TODO: add override keyword void accept () { // The report template is just too large to pass it via GET, so we use a local proxy page to pass it in a POST request QTemporaryFile proxy; proxy.setFileTemplate (QDir::tempPath () + "/rkwardbugXXXXXX.html"); // Force .html-suffix, as it appears to be required on Windows proxy.setAutoRemove (false); proxy.open (); QTextStream out (&proxy); out << "<html><head><title>Relaying to " SUBMIT_ADDRESS "</title></head><body onLoad=\"document.getElementById('form').submit();\">\n"; out << "<h1>" + i18n ("Forwarding you to the KDE bugtracking system") + "</h1>\n"; out << "<p>" + i18n ("You are now being forwarded to the KDE bugtracking system. Should you continue to see this page for more than a few seconds (e.g. if JavaScript is disabled), please click \"Proceed\", below.") + "</p>\n"; out << "<form name=\"form\" id=\"form\" action=\"" SUBMIT_ADDRESS "\" method=\"POST\">\n"; out << "<input name=\"product\" type=\"hidden\" value=\"rkward\"/>\n"; out << "<input name=\"component\" type=\"hidden\" value=\"general\"/>\n"; out << "<input name=\"version\" type=\"hidden\" value=\"" RKWARD_VERSION "\"/>\n"; out << "<input name=\"comment\" type=\"hidden\" value=\"" << Qt::escape (report_template) << "\"/>\n"; out << "<input type=\"submit\" value=\"" << i18n ("Proceed") << "\"/>\n"; out << "</form></body></html>"; proxy.close (); KToolInvocation::invokeBrowser (QUrl::fromLocalFile (proxy.fileName ()).toEncoded ()); KDialog::accept (); }
Result NetControlThread::getVirtNetXMLDesc() { Result result; QString name = task.object; result.name = name; bool read = false; char *Returns = nullptr; if ( task.srcConnPtr==nullptr ) { result.result = false; result.err = "Connection pointer is NULL."; return result; }; virNetworkPtr network = virNetworkLookupByName( *task.srcConnPtr, name.toUtf8().data()); if ( network!=nullptr ) { Returns = virNetworkGetXMLDesc( network, VIR_NETWORK_XML_INACTIVE); if ( Returns==nullptr ) result.err = sendConnErrors(); else read = true; virNetworkFree(network); } else result.err = sendConnErrors(); QTemporaryFile f; f.setAutoRemove(false); f.setFileTemplate( QString("%1%2XML_Desc-XXXXXX.xml") .arg(QDir::tempPath()).arg(QDir::separator())); read = f.open(); if (read) f.write(Returns); result.fileName.append(f.fileName()); f.close(); if ( Returns!=nullptr ) free(Returns); result.result = read; result.msg.append(QString("'<b>%1</b>' Network %2 XML'ed") .arg(name).arg((read)?"":"don't")); return result; }
PRL_RESULT Stunnel::certificate(QTemporaryFile& dst_) const { dst_.setFileTemplate(QString("%1/crt.XXXXXX.pem").arg(QDir::tempPath())); return prepare(dst_, m_certificate); }
PRL_RESULT Stunnel::key(QTemporaryFile& dst_) const { dst_.setFileTemplate(QString("%1/key.XXXXXX.pem").arg(QDir::tempPath())); return prepare(dst_, m_key); }
void autofix(QString originalFileName, int numFiles, QSize size) { std::cout << "Autofixing " << numFiles << size.width() << "x" << size.height() << " thumbnails of " << originalFileName.toLocal8Bit().constData() << "\n"; QEventLoop loop; QTime time; Quill::setTemporaryFilePath(QDir::homePath() + Strings::testsTempDir); Quill::setPreviewSize(0, size); QString fileName[numFiles]; QuillFile *quillFile[numFiles]; for (int i=0; i<numFiles; i++) { { // Needed for the life of the QTemporaryFile QTemporaryFile file; file.setFileTemplate(QDir::homePath() + Strings::testsTempFilePattern); file.open(); fileName[i] = file.fileName(); file.close(); } QFile::remove(fileName[i]); QFile::copy(originalFileName, fileName[i]); } time.start(); for (int i=0; i<numFiles; i++) { quillFile[i] = new QuillFile(fileName[i], Strings::jpegMimeType); QObject::connect(quillFile[i], SIGNAL(imageAvailable(const QuillImageList)), &loop, SLOT(quit())); } int initTime = time.elapsed(); for (int i=0; i<numFiles; i++) quillFile[i]->setDisplayLevel(0); int displayLevelTime = time.elapsed(); do loop.exec(); while (Quill::isCalculationInProgress()); int prepareTime = time.elapsed(); for (int i=0; i<numFiles; i++) if (quillFile[i]->image(0).isNull()) { std::cout<<"Error: not all images are loaded!\n"; return; } time.restart(); for (int i=0; i<numFiles; i++) { QuillImageFilter *filter = QuillImageFilterFactory::createImageFilter(QuillImageFilter::Name_AutoLevels); quillFile[i]->runFilter(filter); } do loop.exec(); while (Quill::isCalculationInProgress()); int finalTime = time.elapsed(); for (int i=0; i<numFiles; i++) if (quillFile[i]->image(0).isNull()) { std::cout<<"Error: not all images are edited!\n"; return; } std::cout << "Initialize " << numFiles << " QuillFiles: " << initTime << "ms" << "\n"; std::cout << "Set display levels of " << numFiles << " QuillFiles: " << displayLevelTime - initTime << "ms" << "\n"; std::cout << "Total prepare " << numFiles << " QuillFiles: " << prepareTime << "ms" << "\n"; std::cout << "Use case edit response for " << numFiles << " QuillFiles: " << finalTime << "ms" << "\n"; for (int i=0; i<numFiles; i++) { delete quillFile[i]; QFile::remove(fileName[i]); } }
//we save the changes to the destination file void Dialog::on_pbApply_clicked() { QString from,to; QString desktopTypeVal="Application"; if (DF.type == XDGDesktop::APP) { desktopTypeVal="Application"; } else if (DF.type == XDGDesktop::LINK) { desktopTypeVal="Link"; } else if (DF.type == XDGDesktop::DIR) { desktopTypeVal="Dir"; } textReplace(inMemoryFile, desktopTypeVal, desktopType, "Type"); if (ui->lName->isModified()) { textReplace(inMemoryFile, DF.name, ui->lName->text(), "Name");} if (ui->lComment->isModified()) { textReplace(inMemoryFile, DF.comment, ui->lComment->text(), "Comment");} if (ui->lCommand->isModified()) { textReplace(inMemoryFile, DF.exec, ui->lCommand->text(),"Exec");} if (desktopType=="link") { //incase of "link" layout WorkingDir is corresponding to the URL if (ui->lWorkingDir->isModified()) { textReplace(inMemoryFile, DF.url, ui->lWorkingDir->text(),"URL");} } else { if (ui->lWorkingDir->isModified()) { textReplace(inMemoryFile, DF.path, ui->lWorkingDir->text(),"Path");} } if (ui->cbStartupNotification->isChecked() != DF.startupNotify) { if (DF.startupNotify) {from="true"; to="false";} else {from="false"; to="true";} textReplace(inMemoryFile, from, to,"StartupNotify"); } if (ui->cbRunInTerminal->isChecked() != DF.useTerminal) { if (DF.useTerminal) {from="true"; to="false";} else {from="false"; to="true";} textReplace(inMemoryFile, from, to,"Terminal"); } if (!iconFileName.isEmpty()) { from=DF.icon; to=iconFileName; textReplace(inMemoryFile, from, to,"Icon"); } QFile file(desktopFileName); if (file.open(QFile::ReadWrite)) { file.seek(0); file.write(inMemoryFile.toUtf8()); file.resize(file.pos());//remove possible trailing lines file.close(); } else { //problem to write to the disk QMessageBox::critical(this, tr("Problem to write to disk"), tr("We have a problem to write the adapted desktop file to the disk. Can you re-try the modification after solving the issue with the disk ?")); } //hack required to update the icon on the desktop QTemporaryFile tempFile ; tempFile.setAutoRemove(false); tempFile.setFileTemplate("/tmp/lumina-XXXXXX"); tempFile.open(); tempFile.close(); QString cmd = "mv"; cmd = cmd + " " + desktopFileName + " " + tempFile.fileName(); int ret = LUtils::runCmd(cmd); if (ret !=0 ) { qDebug() << "Problem to execute:" << cmd; QMessageBox::critical(this, tr("Problem to write to disk"), tr("We have a problem to execute the following command:") + cmd); } cmd = "mv"; cmd = cmd + " " + tempFile.fileName() + " " + desktopFileName; ret = LUtils::runCmd(cmd); if (ret !=0 ) { qDebug() << "Problem to execute:" << cmd; QMessageBox::critical(this, tr("Problem to write to disk"), tr("We have a problem to execute the following command:") + cmd); } }
void redeye(QString originalFileName, int numFiles, QSize size, QPoint center, int radius) { std::cout << "Removing red eyes from " << numFiles << size.width() << "x" << size.height() << " thumbnails of " << originalFileName.toLocal8Bit().constData() << " at point " << center.x() << "x" << center.y() << " with tolerance " << radius << "\n"; QEventLoop loop; QTime time; Quill::setTemporaryFilePath(QDir::homePath() + Strings::testsTempDir); Quill::setPreviewSize(0, size); QString fileName[numFiles]; QuillFile *quillFile[numFiles]; for (int i=0; i<numFiles; i++) { { // Needed for the life of the QTemporaryFile QTemporaryFile file; file.setFileTemplate(QDir::homePath() + Strings::testsTempFilePattern); file.open(); fileName[i] = file.fileName(); file.close(); } QFile::remove(fileName[i]); QFile::copy(originalFileName, fileName[i]); } time.start(); for (int i=0; i<numFiles; i++) { quillFile[i] = new QuillFile(fileName[i], Strings::jpegMimeType); QObject::connect(quillFile[i], SIGNAL(imageAvailable(const QuillImageList)), &loop, SLOT(quit())); } int initTime = time.elapsed(); for (int i=0; i<numFiles; i++) quillFile[i]->setDisplayLevel(0); int displayLevelTime = time.elapsed(); do loop.exec(); while (Quill::isCalculationInProgress()); int prepareTime = time.elapsed(); for (int i=0; i<numFiles; i++) if (quillFile[i]->image(0).isNull()) { std::cout<<"Error: not all images are loaded!\n"; return; } QImage beforeEdit = quillFile[0]->image(0); time.restart(); for (int i=0; i<numFiles; i++) { QuillImageFilter *filter = QuillImageFilterFactory::createImageFilter(QuillImageFilter::Name_RedEyeDetection); filter->setOption(QuillImageFilter::Radius, QVariant(radius)); filter->setOption(QuillImageFilter::Center, QVariant(center)); quillFile[i]->runFilter(filter); } do loop.exec(); while (Quill::isCalculationInProgress()); int finalTime = time.elapsed(); for (int i=0; i<numFiles; i++) if (quillFile[i]->image(0).isNull()) { std::cout<<"Error: not all images are edited!\n"; return; } std::cout << "Initialize " << numFiles << " QuillFiles: " << initTime << "ms"; std::cout << "Set display levels of " << numFiles << " QuillFiles: " << displayLevelTime - initTime << "ms" << "\n"; std::cout << "Total prepare " << numFiles << " QuillFiles: " << prepareTime << "ms" << "\n"; std::cout << "Use case edit response for " << numFiles << " QuillFiles: " << finalTime << "ms" << "\n"; int differences = compare(quillFile[0]->image(0), beforeEdit); std::cout << differences << " pixels were changed by the edit." << "\n"; for (int i=0; i<numFiles; i++) { delete quillFile[i]; QFile::remove(fileName[i]); } }
bool CollectionPage::checkRootAlbum(QString& rootAlbumFolder) { rootAlbumFolder = d->rootAlbumPathRequester->lineEdit()->text(); qCDebug(DIGIKAM_GENERAL_LOG) << "Root album is : " << rootAlbumFolder; if (rootAlbumFolder.isEmpty()) { QMessageBox::information(this, qApp->applicationName(), i18n("You must select a folder for digiKam to " "use as the root album. All of your images will go there.")); return false; } #ifndef _WIN32 if (!QDir::isAbsolutePath(rootAlbumFolder)) { rootAlbumFolder.prepend(QDir::homePath()); } #endif /* if (QUrl::fromLocalFile(rootAlbumFolder).equals(QUrl::fromLocalFile(QDir::homePath()), QUrl::CompareWithoutFragment)) { QMessageBox::information(this, qApp->applicationName(), i18n("digiKam will not use your home folder as the " "root album. Please select another location.")); return false; } */ QDir targetPath(rootAlbumFolder); if (!targetPath.exists()) { int rc = QMessageBox::question(this, i18n("Create Root Album Folder?"), i18n("<p>The folder to use as the root album path does not exist:</p>" "<p><b>%1</b></p>" "Would you like digiKam to create it for you?", rootAlbumFolder)); if (rc == QMessageBox::No) { return false; } if (!targetPath.mkpath(rootAlbumFolder)) { QMessageBox::information(this, i18n("Create Root Album Folder Failed"), i18n("<p>digiKam could not create the folder to use as the root album.\n" "Please select a different location.</p>" "<p><b>%1</b></p>", rootAlbumFolder)); return false; } } QFileInfo path(rootAlbumFolder); #ifdef _WIN32 // Work around bug #189168 QTemporaryFile temp; temp.setFileTemplate(rootAlbumFolder + QLatin1String("XXXXXX")); if (!temp.open()) #else if (!path.isWritable()) #endif { QMessageBox::information(this, qApp->applicationName(), i18n("You do not seem to have write access for the folder " "selected to be the root album.\n" "Warning: Without write access, items cannot be edited.")); } return true; }
void generateThumbs(QString originalFileName, int n, QSize size, QSize minimumSize, QString mimeType, QString flavor) { std::cout << "Generating " << n <<" "<< flavor.toAscii().constData() << size.width() << "x" << size.height() << " thumbnails for " << originalFileName.toLocal8Bit().constData() << " MIME " << mimeType.toAscii().constData() << "\n"; QEventLoop loop; QTime time; Quill::setTemporaryFilePath(QDir::homePath() + Strings::testsTempDir); Quill::setPreviewSize(0, size); Quill::setMinimumPreviewSize(0, minimumSize); Quill::setThumbnailFlavorName(0, flavor); Quill::setThumbnailExtension(Strings::jpeg); Quill::setThumbnailCreationEnabled(false); int numFiles = n; QString fileName[numFiles]; QuillFile *quillFile[numFiles]; for (int i=0; i<numFiles; i++) { { // Needed for the life of the QTemporaryFile QTemporaryFile file; file.setFileTemplate(QDir::homePath() + Strings::testsTempFilePattern); file.open(); fileName[i] = file.fileName(); file.close(); } QFile::remove(fileName[i]); QFile::copy(originalFileName, fileName[i]); } time.start(); for (int i=0; i<numFiles; i++) { quillFile[i] = new QuillFile(fileName[i], mimeType); QObject::connect(quillFile[i], SIGNAL(imageAvailable(const QuillImageList)), &loop, SLOT(quit())); } int initTime = time.elapsed(); for (int i=0; i<numFiles; i++) quillFile[i]->setDisplayLevel(0); int displayLevelTime = time.elapsed(); do loop.exec(); while (Quill::isCalculationInProgress()); int finalTime = time.elapsed(); for (int i=0; i<numFiles; i++) if (quillFile[i]->image(0).isNull()) { std::cout<<"Error: not all images are loaded!\n"; return; } std::cout << "Initialize " << numFiles << " QuillFiles: " << initTime << "ms" << "\n"; std::cout << "Set display levels of " << numFiles << " QuillFiles: " << displayLevelTime - initTime << "ms" << "\n"; std::cout << "Use case generate " << numFiles << " thumbnails: " << finalTime << "ms" << "\n"; for (int i=0; i<numFiles; i++) { delete quillFile[i]; QFile::remove(fileName[i]); } }
/** * generate layout and apply it to the given diagram. * * @return true if generating succeeded */ bool LayoutGenerator::generate(UMLScene *scene, const QString &variant) { QTemporaryFile in; QTemporaryFile out; QTemporaryFile xdotOut; if (!isEnabled()) { uWarning() << "Could not apply autolayout because graphviz installation has not been found."; return false; } #ifdef LAYOUTGENERATOR_DEBUG in.setAutoRemove(false); out.setAutoRemove(false); xdotOut.setAutoRemove(false); #endif // generate filenames in.open(); in.close(); out.open(); out.close(); xdotOut.open(); xdotOut.close(); #ifdef LAYOUTGENERATOR_DEBUG qDebug() << textViewer() << in.fileName(); qDebug() << textViewer() << out.fileName(); qDebug() << textViewer() << xdotOut.fileName(); #endif if (!createDotFile(scene, in.fileName(), variant)) return false; QString executable = m_dotPath + QLatin1Char('/') + m_generator; QProcess p; QStringList args; args << QLatin1String("-o") << out.fileName() << QLatin1String("-Tplain-ext") << in.fileName(); p.start(executable, args); p.waitForFinished(); args.clear(); args << QLatin1String("-o") << xdotOut.fileName() << QLatin1String("-Txdot") << in.fileName(); p.start(executable, args); p.waitForFinished(); #ifdef LAYOUTGENERATOR_DEBUG QTemporaryFile pngFile; pngFile.setAutoRemove(false); pngFile.setFileTemplate(QDir::tempPath() + QLatin1String("/umbrello-layoutgenerator-XXXXXX.png")); pngFile.open(); pngFile.close(); qDebug() << pngViewer() << pngFile.fileName(); args.clear(); args << QLatin1String("-o") << pngFile.fileName() << QLatin1String("-Tpng") << in.fileName(); p.start(executable, args); p.waitForFinished(); #endif #ifndef USE_XDOT if (!readGeneratedDotFile(out.fileName())) #else if (!readGeneratedDotFile(xdotOut.fileName())) #endif return false; return true; }