/* * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or * its licensors. * * For complete copyright and license terms please see the LICENSE at the root of this * distribution (the "License"). All use of this software is governed by the License, * or, if provided, by the license below or the license accompanying this file. Do not * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * */ #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