summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorLC <mathew1800@gmail.com>2020-07-19 17:35:34 -0400
committerGitHub <noreply@github.com>2020-07-19 17:35:34 -0400
commitae2348023ba0e554f209c8a5aab35f853b41b802 (patch)
tree4c6bab5d54151fdf60b3db25581b3abc0edd962b /Source/Core
parentd48056c1cda5759ffed0918e0ccc50157b5f2908 (diff)
parentfe5e92f706be7e52b84d9a1d94781612e5146f59 (diff)
Merge pull request #8964 from JosJuice/list-wad-file-type
DolphinQt: Show WAD as "WAD" instead of "" in file format column
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/DolphinQt/GameList/GameListModel.cpp7
-rw-r--r--Source/Core/UICommon/GameFile.cpp34
-rw-r--r--Source/Core/UICommon/GameFile.h2
3 files changed, 31 insertions, 12 deletions
diff --git a/Source/Core/DolphinQt/GameList/GameListModel.cpp b/Source/Core/DolphinQt/GameList/GameListModel.cpp
index 8ffcd70198..99cd631e92 100644
--- a/Source/Core/DolphinQt/GameList/GameListModel.cpp
+++ b/Source/Core/DolphinQt/GameList/GameListModel.cpp
@@ -168,12 +168,7 @@ QVariant GameListModel::data(const QModelIndex& index, int role) const
break;
case COL_FILE_FORMAT:
if (role == Qt::DisplayRole || role == SORT_ROLE)
- {
- if (game.ShouldShowFileFormatDetails())
- return QString::fromStdString(DiscIO::GetName(game.GetBlobType(), true));
- else
- return {};
- }
+ return QString::fromStdString(game.GetFileFormatName());
break;
case COL_BLOCK_SIZE:
if (role == Qt::DisplayRole)
diff --git a/Source/Core/UICommon/GameFile.cpp b/Source/Core/UICommon/GameFile.cpp
index 25892bca67..b28d54e944 100644
--- a/Source/Core/UICommon/GameFile.cpp
+++ b/Source/Core/UICommon/GameFile.cpp
@@ -336,14 +336,17 @@ void GameFile::DoState(PointerWrap& p)
m_custom_cover.DoState(p);
}
-bool GameFile::IsElfOrDol() const
+std::string GameFile::GetExtension() const
{
- if (m_file_path.size() < 4)
- return false;
+ std::string extension;
+ SplitPath(m_file_path, nullptr, nullptr, &extension);
+ return extension;
+}
- std::string name_end = m_file_path.substr(m_file_path.size() - 4);
- std::transform(name_end.begin(), name_end.end(), name_end.begin(), ::tolower);
- return name_end == ".elf" || name_end == ".dol";
+bool GameFile::IsElfOrDol() const
+{
+ const std::string extension = GetExtension();
+ return extension == ".elf" || extension == ".dol";
}
bool GameFile::ReadXMLMetadata(const std::string& path)
@@ -592,6 +595,25 @@ bool GameFile::ShouldShowFileFormatDetails() const
}
}
+std::string GameFile::GetFileFormatName() const
+{
+ switch (m_platform)
+ {
+ case DiscIO::Platform::WiiWAD:
+ return "WAD";
+ case DiscIO::Platform::ELFOrDOL:
+ {
+ std::string extension = GetExtension();
+ std::transform(extension.begin(), extension.end(), extension.begin(), ::toupper);
+
+ // substr removes the dot
+ return extension.substr(std::min<size_t>(1, extension.size()));
+ }
+ default:
+ return DiscIO::GetName(m_blob_type, true);
+ }
+}
+
const GameBanner& GameFile::GetBannerImage() const
{
return m_custom_banner.empty() ? m_volume_banner : m_custom_banner;
diff --git a/Source/Core/UICommon/GameFile.h b/Source/Core/UICommon/GameFile.h
index 3450111238..dcf33ee677 100644
--- a/Source/Core/UICommon/GameFile.h
+++ b/Source/Core/UICommon/GameFile.h
@@ -89,6 +89,7 @@ public:
u64 GetBlockSize() const { return m_block_size; }
const std::string& GetCompressionMethod() const { return m_compression_method; }
bool ShouldShowFileFormatDetails() const;
+ std::string GetFileFormatName() const;
const std::string& GetApploaderDate() const { return m_apploader_date; }
u64 GetFileSize() const { return m_file_size; }
u64 GetVolumeSize() const { return m_volume_size; }
@@ -115,6 +116,7 @@ private:
const std::map<DiscIO::Language, std::string>& strings);
const std::string&
LookupUsingConfigLanguage(const std::map<DiscIO::Language, std::string>& strings) const;
+ std::string GetExtension() const;
bool IsElfOrDol() const;
bool ReadXMLMetadata(const std::string& path);
bool ReadPNGBanner(const std::string& path);