| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| #include "lc_filenameselectionservice.h" |
|
|
| #include <QFileDialog> |
| #include <QWidget> |
|
|
| #include "rs_settings.h" |
| #include "rs_system.h" |
|
|
| bool LC_FileNameSelectionService::doObtainFileName(QWidget* parent, QString& fileName, |
| bool forRead, |
| const QString& extensionStr, |
| const QString& defaultFileName, |
| const QString& captionForImport, const QString& captionForExport, |
| QString fileNameFilter) { |
| LC_GROUP("Export"); |
| QString defDir = LC_GET_STR("ExportSettingsDir", RS_SYSTEM->getHomeDir()); |
| LC_GROUP_END(); |
|
|
| bool useQtFileDialog = LC_GET_ONE_BOOL("Defaults","UseQtFileOpenDialog"); |
|
|
| const QString defaultExtension{extensionStr}; |
|
|
| const auto defaultFilter = fileNameFilter.arg(defaultExtension); |
| QFileDialog fileDlg(parent, forRead ? captionForImport : captionForExport); |
| fileDlg.setDefaultSuffix(defaultExtension); |
| fileDlg.setNameFilter(defaultFilter); |
| fileDlg.setFileMode(forRead ? QFileDialog::ExistingFile : QFileDialog::AnyFile); |
| fileDlg.selectNameFilter(defaultFilter); |
| fileDlg.setAcceptMode(forRead ? QFileDialog::AcceptOpen : QFileDialog::AcceptSave); |
| fileDlg.setOption(QFileDialog::DontUseNativeDialog, useQtFileDialog); |
| fileDlg.setDirectory(defDir); |
|
|
| QString fileNameForSelection = defaultFileName; |
| if (!defaultFileName.endsWith(extensionStr)) { |
| int dotIndex = defaultFileName.indexOf('.'); |
| fileNameForSelection = defaultFileName.left(dotIndex); |
| fileNameForSelection.append(".").append(extensionStr); |
|
|
| } |
| fileDlg.selectFile(fileNameForSelection); |
|
|
| bool proceed = false; |
| if (fileDlg.exec() == QDialog::Accepted) { |
| QStringList files = fileDlg.selectedFiles(); |
| if (!files.isEmpty()) { |
| fileName = files.front(); |
| QString extension = QString(".").append(extensionStr); |
| if (!fileName.endsWith(extension)) { |
| fileName = fileName +extension; |
| } |
| proceed = true; |
| } |
| } |
| return proceed; |
| } |
|
|