bool BLocalDocumentDriver::getSaveAsFileName(QWidget *parent, const QString &fileName, QString &newName, QTextCodec *&codec, BeQt::LineFeed &lineFeed) { if (!editor()) return false; B_D(BLocalDocumentDriver); BExtendedFileDialog bfd(d->codecsComboBoxStyle, parent); bfd.restoreState(d->fileDialogState); if (!bfd.restoreGeometry(d->fileDialogGeometry)) bfd.resize(700, 400); bfd.setFileTypes(editor()->fileTypes()); bfd.selectCodec(codec); bfd.setAcceptMode(BExtendedFileDialog::AcceptSave); bfd.setFileMode(QFileDialog::AnyFile); QString dir = QFileInfo(fileName).path(); if (dir != "." && QDir(dir).exists()) bfd.setDirectory(dir); //TODO: Maybe should improve (needs testing) else if (d->fileDialogState.isEmpty()) bfd.setDirectory(d->defaultDir); bfd.selectFile(fileName); //bfd.selectLineFeed(lineFeed); int ret = bfd.exec(); d->fileDialogState = bfd.saveState(); d->fileDialogGeometry = bfd.saveGeometry(); if (BExtendedFileDialog::Accepted != ret) return false; newName = bfd.selectedFiles().first(); codec = bfd.selectedCodec(); lineFeed = bfd.selectedLineFeed(); return true; }
bool BLocalDocumentDriver::getOpenFileNames(QWidget *parent, QStringList &fileNames, QTextCodec *&codec) { if (!editor()) return false; B_D(BLocalDocumentDriver); BExtendedFileDialog bfd(d->codecsComboBoxStyle, parent); bfd.restoreState(d->fileDialogState); if (!bfd.restoreGeometry(d->fileDialogGeometry)) bfd.resize(700, 400); if (d->fileDialogState.isEmpty()) bfd.setDirectory(d->defaultDir); bfd.setFileTypes(editor()->fileTypes()); bfd.selectFileType(d->lastFileType ? d->lastFileType : editor()->preferredFileType()); if (codec) bfd.selectCodec(codec); bfd.setAcceptMode(BExtendedFileDialog::AcceptOpen); bfd.setFileMode(QFileDialog::ExistingFiles); int ret = bfd.exec(); d->fileDialogState = bfd.saveState(); d->fileDialogGeometry = bfd.saveGeometry(); d->lastFileType = bfd.selectedFileType(); if (BExtendedFileDialog::Accepted != ret) return false; fileNames = bfd.selectedFiles(); codec = bfd.selectedCodec(); return true; }
void ImageImporter::importFiles(QFileInfoList* lstFiles, const QString& baseFolder, const QString& subfolder, const QString& fileName, bool lowercaseFileNames, bool moveFiles, DlgImageImporterStatus* dlgStatus) { QRegExp re(m_txtSourceFilename->text(), !m_chkIgnoreCase->isChecked()); if (!re.isValid()) { dlgStatus->appendErrorMessage(i18n("Invalid Regular Expression!")); dlgStatus->setCurrentMode(DlgImageImporterStatus::ModeAbort, i18n("Aborted!")); return; } //check if the basedir exists QDir bfd(baseFolder); if (!bfd.exists()) { if (!ImageImporter::mkpath(bfd.absPath())) { dlgStatus->appendErrorMessage(i18n("Could not create base path!")); dlgStatus->setCurrentMode(DlgImageImporterStatus::ModeAbort, i18n("Aborted!")); return; } } QFileInfo* fi; for ( fi = lstFiles->first(); fi; fi = lstFiles->next() ) { dlgStatus->incProgress(); QString sf = replaceStrings( subfolder, fi, re ); if (sf.isEmpty()) { dlgStatus->appendErrorMessage(QString(i18n("Image \'%1\' does not contain exif data, skipping!")) .arg(fi->absFilePath())); continue; } QString fn = replaceStrings( fileName, fi, re ); if (lowercaseFileNames) { fn = fn.lower(); } //now check if the directories exists ... or create them... QDir sfd(bfd.absPath() + "/" + sf); if (!sfd.exists()) { if (!ImageImporter::mkpath(sfd.absPath())) { dlgStatus->appendErrorMessage(QString(i18n("Could not create subfolder for image \'%1\'")) .arg(fi->absFilePath())); continue; } } QFileInfo toFile(sfd.absPath() + "/" + fn); if (toFile.exists()) { dlgStatus->appendErrorMessage(QString(i18n("Image \'%1\' already exists, not imported!")) .arg(fi->absFilePath())); continue; } if (moveFiles) { ImageImporter::move_file( fi->absFilePath(), toFile.absFilePath() ); } else { ImageImporter::copy_file( fi->absFilePath(), toFile.absFilePath() ); } if (dlgStatus->wasCanceled()) { return; } } }