/* * 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 "PathValidator.h" #include #include #include namespace O3DE::ProjectManager { PathValidator::PathValidator(PathMode pathMode, QWidget* parent) : QValidator(parent) , m_pathMode(pathMode) { } void PathValidator::setAllowEmpty(bool allowEmpty) { m_allowEmpty = allowEmpty; } void PathValidator::setPathMode(PathMode pathMode) { m_pathMode = pathMode; } QValidator::State PathValidator::validate(QString &text, int &) const { if(text.isEmpty()) { return m_allowEmpty ? QValidator::Acceptable : QValidator::Intermediate; } QFileInfo pathInfo(text); if(!pathInfo.dir().exists()) { return QValidator::Intermediate; } switch(m_pathMode) { case PathMode::AnyFile://acceptable, as long as it's not an directoy return pathInfo.isDir() ? QValidator::Intermediate : QValidator::Acceptable; case PathMode::ExistingFile://must be an existing file return pathInfo.exists() && pathInfo.isFile() ? QValidator::Acceptable : QValidator::Intermediate; case PathMode::ExistingFolder://must be an existing folder return pathInfo.exists() && pathInfo.isDir() ? QValidator::Acceptable : QValidator::Intermediate; default: Q_UNREACHABLE(); } return QValidator::Invalid; } } // namespace O3DE::ProjectManager