Skip to content

Commit

Permalink
Moved MessageBox creation and option to create export folder
Browse files Browse the repository at this point in the history
  • Loading branch information
Puxtril committed Aug 12, 2024
1 parent 19ced48 commit 00a04c0
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 8 deletions.
6 changes: 6 additions & 0 deletions include/ui/UIPicker.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,9 @@ class UiPicker : public QObject, private Ui_WindowPicker
QDialog m_additionalSettingsDialog;
Ui_AdditionalSettings m_additionalSettings;

QMessageBox m_invalidCacheFolderBox;
QMessageBox m_invalidExportFolderBox;

public:
UiPicker(QObject *parent = nullptr);
virtual ~UiPicker() {}
Expand All @@ -30,6 +33,7 @@ class UiPicker : public QObject, private Ui_WindowPicker
void connect(QDialog *WindowPicker, QMainWindow* mainWindow, UiExporter* exporter);

private:
void setupMessageBoxes();
void addShaderFormatOptions();
void addTextureFormatOptions();
void loadSettings();
Expand All @@ -43,11 +47,13 @@ class UiPicker : public QObject, private Ui_WindowPicker
WarframeExporter::Shader::ShaderExportType shaderExportType,
WarframeExporter::Texture::TextureExportType textureExportType
);
void retryLoadPickerOptions();

public slots:
void parsePickerOptions();
void browseCacheWindows();
void browseExportPath();
void createExportFolderAndLoad(QAbstractButton *button);
void additionalSettingsClicked();
void additionalSettingsClosed();
void additionalSettingsCancelled();
Expand Down
56 changes: 48 additions & 8 deletions src/ui/UIPicker.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ UiPicker::setupUi(QDialog *WindowPicker)

Ui_WindowPicker::setupUi(WindowPicker);
WindowPicker->setWindowFlag(Qt::WindowContextHelpButtonHint, true);
setupMessageBoxes();
addShaderFormatOptions();
addTextureFormatOptions();
loadSettings();
Expand All @@ -32,6 +33,29 @@ UiPicker::connect(QDialog *WindowPicker, QMainWindow* mainWindow, UiExporter* ex
QObject::connect(this, &UiPicker::pickerDone, &UiSettings::getInstance(), &UiSettings::setSettings);
QObject::connect(this->CacheWindowsBrowse, &QPushButton::clicked, this, &UiPicker::browseCacheWindows);
QObject::connect(this->ExportPathBrowse, &QPushButton::clicked, this, &UiPicker::browseExportPath);

QObject::connect(&this->m_invalidExportFolderBox, &QMessageBox::buttonClicked, this, &UiPicker::createExportFolderAndLoad);
QObject::connect(this, &UiPicker::retryLoadPickerOptions, this, &UiPicker::parsePickerOptions);
}

void
UiPicker::setupMessageBoxes()
{
m_invalidCacheFolderBox.setWindowTitle("Error");
m_invalidCacheFolderBox.setText("Cache.Windows folder is invalid");
m_invalidCacheFolderBox.setIcon(QMessageBox::Critical);
m_invalidCacheFolderBox.setFixedSize(500, 200);
m_invalidCacheFolderBox.setModal(true);
m_invalidCacheFolderBox.setVisible(false);

m_invalidExportFolderBox.setText("Export folder doesn't exist, create?");
m_invalidExportFolderBox.setWindowTitle("Error");
m_invalidExportFolderBox.setIcon(QMessageBox::Question);
m_invalidExportFolderBox.setFixedSize(500, 200);
m_invalidExportFolderBox.setModal(true);
m_invalidExportFolderBox.setVisible(false);

m_invalidExportFolderBox.addButton(QMessageBox::Cancel);
}

void
Expand Down Expand Up @@ -106,21 +130,15 @@ UiPicker::parsePickerOptions()
std::filesystem::path cachePath(cachePathStr);
if (!std::filesystem::is_directory(cachePath))
{
QMessageBox errBox;
errBox.critical(nullptr, "Error", "Cache.Windows folder is invalid");
errBox.setFixedSize(500, 200);
errBox.show();
m_invalidCacheFolderBox.show();
return;
}

std::string exportPathStr = this->ExportPathInput->text().toUtf8().constData();
std::filesystem::path exportPath(exportPathStr);
if (!std::filesystem::is_directory(exportPath))
{
QMessageBox errBox;
errBox.critical(nullptr, "Error", "Export folder is invalid");
errBox.setFixedSize(500, 200);
errBox.show();
m_invalidExportFolderBox.show();
return;
}

Expand Down Expand Up @@ -178,6 +196,28 @@ UiPicker::browseExportPath()
}
}

void
UiPicker::createExportFolderAndLoad(QAbstractButton *button)
{
if (m_invalidExportFolderBox.standardButton(button) != QMessageBox::Ok)
return;

std::string exportPathStr = this->ExportPathInput->text().toUtf8().constData();
std::filesystem::path exportPath(exportPathStr);
try
{
std::filesystem::create_directories(exportPath);
}
catch (std::exception& ex)
{
QMessageBox errBox;
errBox.critical(nullptr, "Error creating folder", ex.what());
return;
}

emit retryLoadPickerOptions();
}

void
UiPicker::additionalSettingsClicked()
{
Expand Down

0 comments on commit 00a04c0

Please sign in to comment.