AutoDirectoryRestoreFileDialog.cpp 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. /*
  2. * Copyright (c) Contributors to the Open 3D Engine Project.
  3. * For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. *
  5. * SPDX-License-Identifier: Apache-2.0 OR MIT
  6. *
  7. */
  8. #include "EditorDefs.h"
  9. #include "AutoDirectoryRestoreFileDialog.h"
  10. // Qt
  11. #include <QMessageBox>
  12. CAutoDirectoryRestoreFileDialog::CAutoDirectoryRestoreFileDialog(
  13. QFileDialog::AcceptMode acceptMode,
  14. QFileDialog::FileMode fileMode,
  15. const QString& defaultSuffix,
  16. const QString& directory /* = {} */,
  17. const QString& filter /* = {} */,
  18. QFileDialog::Options options /* = {} */,
  19. const QString& caption /* = {} */,
  20. QWidget* parent /* = nullptr */)
  21. : QFileDialog(parent, caption, QString(""), filter)
  22. {
  23. char resolvedPath[AZ_MAX_PATH_LEN] = { 0 };
  24. AZ::IO::FileIOBase::GetDirectInstance()->ResolvePath(directory.toUtf8().data(), resolvedPath, AZ_MAX_PATH_LEN);
  25. setDirectory(QString::fromUtf8(resolvedPath));
  26. setAcceptMode(acceptMode);
  27. setDefaultSuffix(defaultSuffix);
  28. setFileMode(fileMode);
  29. setOptions(options);
  30. }
  31. int CAutoDirectoryRestoreFileDialog::exec()
  32. {
  33. int result = -1;
  34. while ((result = QFileDialog::exec()) == QDialog::Accepted)
  35. {
  36. bool problem = false;
  37. foreach(const QString&fileName, selectedFiles())
  38. {
  39. QFileInfo info(fileName);
  40. if (!AZ::StringFunc::Path::IsValid(info.fileName().toStdString().c_str()))
  41. {
  42. QMessageBox::warning(this, tr("Error"), tr("Please select a valid file name (standard English alphanumeric characters only)"));
  43. problem = true;
  44. break;
  45. }
  46. }
  47. if (!problem)
  48. {
  49. return result;
  50. }
  51. }
  52. return result;
  53. }
  54. #include <Util/moc_AutoDirectoryRestoreFileDialog.cpp>