Use supported disc image extensions list.

This commit is contained in:
Jean-Philip Desjardins 2020-10-04 11:47:32 -04:00 committed by jpd002
parent 8f02b23b65
commit 4843758933
7 changed files with 51 additions and 7 deletions

View file

@ -126,6 +126,8 @@ set(QT_SOURCES
PreferenceDefs.h
QStringUtils.cpp
QStringUtils.h
QtUtils.cpp
QtUtils.h
vfsmanagerdialog.cpp
vfsmanagerdialog.h
vfsmodel.cpp

19
Source/ui_qt/QtUtils.cpp Normal file
View file

@ -0,0 +1,19 @@
#include "QtUtils.h"
#include "DiskUtils.h"
#include <QStringList>
QString QtUtils::GetDiscImageFormatsFilter()
{
std::string fileFilter;
const auto& extensions = DiskUtils::GetSupportedExtensions();
for(auto extensionIterator = extensions.begin();
extensionIterator != extensions.end(); extensionIterator++)
{
if(extensionIterator != extensions.begin())
{
fileFilter += " ";
}
fileFilter += "*" + *extensionIterator;
}
return QString::asprintf("Disc images(%s)", fileFilter.c_str());
}

8
Source/ui_qt/QtUtils.h Normal file
View file

@ -0,0 +1,8 @@
#pragma once
#include <QString>
namespace QtUtils
{
QString GetDiscImageFormatsFilter();
}

View file

@ -17,6 +17,7 @@
#include "http/HttpClientFactory.h"
#include "string_format.h"
#include "QStringUtils.h"
#include "QtUtils.h"
#include "ui_shared/BootablesProcesses.h"
#include "ui_shared/BootablesDbClient.h"
@ -128,9 +129,14 @@ void BootableListDialog::showEvent(QShowEvent* ev)
void BootableListDialog::on_add_games_button_clicked()
{
QStringList filters;
filters.push_back(QtUtils::GetDiscImageFormatsFilter());
filters.push_back("ELF files (*.elf)");
filters.push_back("All files (*)");
QFileDialog dialog(this);
dialog.setFileMode(QFileDialog::ExistingFile);
dialog.setNameFilter(tr("All supported types(*.iso *.bin *.isz *.cso *.elf);;UltraISO Compressed Disk Images (*.isz);;CISO Compressed Disk Images (*.cso);;ELF files (*.elf);;All files (*.*)"));
dialog.setNameFilters(filters);
if(dialog.exec())
{
auto filePath = QStringToPath(dialog.selectedFiles().first()).parent_path();

View file

@ -5,6 +5,7 @@
#include "S3FileBrowser.h"
#include "ui_shared/BootablesProcesses.h"
#include "ui_shared/StatsManager.h"
#include "QtUtils.h"
#include "openglwindow.h"
#include "GSH_OpenGLQt.h"
@ -271,10 +272,14 @@ void MainWindow::outputWindow_resized()
void MainWindow::on_actionBoot_DiscImage_triggered()
{
QStringList filters;
filters.push_back(QtUtils::GetDiscImageFormatsFilter());
filters.push_back("All files (*)");
QFileDialog dialog(this);
dialog.setDirectory(PathToQString(m_lastPath));
dialog.setFileMode(QFileDialog::ExistingFile);
dialog.setNameFilter(tr("All supported types(*.iso *.bin *.isz *.cso);;UltraISO Compressed Disk Images (*.isz);;CISO Compressed Disk Images (*.cso);;All files (*.*)"));
dialog.setNameFilters(filters);
if(dialog.exec())
{
auto filePath = QStringToPath(dialog.selectedFiles().first());

View file

@ -4,6 +4,7 @@
#include <QFileDialog>
#include <QMessageBox>
#include "QStringUtils.h"
#include "QtUtils.h"
VFSDiscSelectorDialog::VFSDiscSelectorDialog(fs::path path, CCdrom0Device::BINDINGTYPE m_nBindingType, QWidget* parent)
: QDialog(parent)
@ -33,9 +34,13 @@ VFSDiscSelectorDialog::~VFSDiscSelectorDialog()
void VFSDiscSelectorDialog::on_iso_browse_button_clicked()
{
QStringList filters;
filters.push_back(QtUtils::GetDiscImageFormatsFilter());
filters.push_back("All files (*)");
QFileDialog dialog(this);
dialog.setFileMode(QFileDialog::ExistingFile);
dialog.setNameFilter(tr("All supported types(*.iso *.bin *.isz *.cso);;UltraISO Compressed Disk Images (*.isz);;CISO Compressed Disk Images (*.cso);;All files (*.*)"));
dialog.setNameFilters(filters);
if(dialog.exec())
{
m_path = QStringToPath(dialog.selectedFiles().first());

View file

@ -43,12 +43,11 @@ bool IsBootableExecutablePath(const fs::path& filePath)
bool IsBootableDiscImagePath(const fs::path& filePath)
{
const auto& supportedExtensions = DiskUtils::GetSupportedExtensions();
auto extension = filePath.extension().string();
std::transform(extension.begin(), extension.end(), extension.begin(), ::tolower);
return (extension == ".iso") ||
(extension == ".isz") ||
(extension == ".cso") ||
(extension == ".bin");
auto extensionIterator = supportedExtensions.find(extension);
return extensionIterator != std::end(supportedExtensions);
}
bool TryRegisteringBootable(const fs::path& path)