You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
o3de/Code/Editor/Util/AutoDirectoryRestoreFileDia...

66 lines
1.8 KiB
C++

/*
* Copyright (c) Contributors to the Open 3D Engine Project.
* For complete copyright and license terms please see the LICENSE at the root of this distribution.
*
* SPDX-License-Identifier: Apache-2.0 OR MIT
*
*/
#include "EditorDefs.h"
#include "AutoDirectoryRestoreFileDialog.h"
// Qt
#include <QMessageBox>
CAutoDirectoryRestoreFileDialog::CAutoDirectoryRestoreFileDialog(
QFileDialog::AcceptMode acceptMode,
QFileDialog::FileMode fileMode,
const QString& defaultSuffix,
const QString& directory /* = {} */,
const QString& filter /* = {} */,
QFileDialog::Options options /* = {} */,
const QString& caption /* = {} */,
QWidget* parent /* = nullptr */)
: QFileDialog(parent, caption, QString(""), filter)
{
char resolvedPath[AZ_MAX_PATH_LEN] = { 0 };
AZ::IO::FileIOBase::GetDirectInstance()->ResolvePath(directory.toUtf8().data(), resolvedPath, AZ_MAX_PATH_LEN);
setDirectory(QString::fromUtf8(resolvedPath));
setAcceptMode(acceptMode);
setDefaultSuffix(defaultSuffix);
setFileMode(fileMode);
setOptions(options);
}
int CAutoDirectoryRestoreFileDialog::exec()
{
int result = -1;
while ((result = QFileDialog::exec()) == QDialog::Accepted)
{
bool problem = false;
foreach(const QString&fileName, selectedFiles())
{
QFileInfo info(fileName);
if (!AZ::StringFunc::Path::IsValid(info.fileName().toStdString().c_str()))
{
QMessageBox::warning(this, tr("Error"), tr("Please select a valid file name (standard English alphanumeric characters only)"));
problem = true;
break;
}
}
if (!problem)
{
return result;
}
}
return result;
}
#include <Util/moc_AutoDirectoryRestoreFileDialog.cpp>