Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Merge pull request #8964 from JosJuice/list-wad-file-type
DolphinQt: Show WAD as "WAD" instead of "" in file format column
  • Loading branch information
lioncash committed Jul 19, 2020
2 parents d48056c + fe5e92f commit ae23480
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 12 deletions.
7 changes: 1 addition & 6 deletions Source/Core/DolphinQt/GameList/GameListModel.cpp
Expand Up @@ -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)
Expand Down
34 changes: 28 additions & 6 deletions Source/Core/UICommon/GameFile.cpp
Expand Up @@ -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)
Expand Down Expand Up @@ -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;
Expand Down
2 changes: 2 additions & 0 deletions Source/Core/UICommon/GameFile.h
Expand Up @@ -89,6 +89,7 @@ class GameFile final
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; }
Expand All @@ -115,6 +116,7 @@ class GameFile final
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);
Expand Down

0 comments on commit ae23480

Please sign in to comment.