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); } +std::string GameFile::GetExtension() const +{ + std::string extension; + SplitPath(m_file_path, nullptr, nullptr, &extension); + return extension; +} + bool GameFile::IsElfOrDol() const { - if (m_file_path.size() < 4) - return false; - - 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"; + 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(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& strings); const std::string& LookupUsingConfigLanguage(const std::map& strings) const; + std::string GetExtension() const; bool IsElfOrDol() const; bool ReadXMLMetadata(const std::string& path); bool ReadPNGBanner(const std::string& path);