/* * 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 * */ #ifndef CRYINCLUDE_EDITOR_LEVELFILEDIALOG_H #define CRYINCLUDE_EDITOR_LEVELFILEDIALOG_H #pragma once #if !defined(Q_MOC_RUN) #include #include #endif namespace Ui { class LevelFileDialog; } class LevelTreeModel; class LevelTreeModelFilter; class CLevelFileDialog : public QDialog { Q_OBJECT public: explicit CLevelFileDialog(bool openDialog, QWidget* parent = nullptr); ~CLevelFileDialog(); QString GetFileName() const; static bool CheckLevelFolder(const QString folder, QStringList* levelFiles = nullptr); protected Q_SLOTS: void OnOK(); void OnCancel(); void OnTreeSelectionChanged(); void OnNewFolder(); void OnFilterChanged(); void OnNameChanged(); protected: void ReloadTree(); bool ValidateSaveLevelPath(QString& errorMessage) const; bool ValidateLevelPath(const QString& folder) const; void SaveLastUsedLevelPath(); void LoadLastUsedLevelPath(); private: bool eventFilter(QObject* watched, QEvent* event) override; QString NameForIndex(const QModelIndex& index) const; bool IsValidLevelSelected(); QString GetLevelPath() const; QString GetEnteredPath() const; QString GetFileName(QString levelPath); QScopedPointer ui; QString m_fileName; QString m_filter; const bool m_bOpenDialog; LevelTreeModel* const m_model; LevelTreeModelFilter* const m_filterModel; }; #endif // CRYINCLUDE_EDITOR_LEVELFILEDIALOG_H