Move DiscIO enums to a new file

At first there weren't many enums in Volume.h, but the number has been
growing, and I'm planning to add one more for regions. To not make
Volume.h too large, and to avoid needing to include Volume.h in code
that doesn't use volume objects, I'm moving the enums to a new file.
I'm also turning them into enum classes while I'm at it.
This commit is contained in:
JosJuice
2016-07-06 20:33:05 +02:00
parent baf9abe911
commit 0a15aaaa12
49 changed files with 665 additions and 574 deletions

View File

@ -13,6 +13,8 @@
#include <QPushButton>
#include <QTextEdit>
#include "DiscIO/Blob.h"
#include "DiscIO/Enums.h"
#include "DolphinQt2/Config/InfoWidget.h"
InfoWidget::InfoWidget(const GameFile& game) : m_game(game)
@ -71,7 +73,7 @@ QGroupBox* InfoWidget::CreateBannerDetails()
CreateLanguageSelector();
layout->addRow(tr("Show Language:"), m_language_selector);
if (m_game.GetPlatformID() == DiscIO::IVolume::GAMECUBE_DISC)
if (m_game.GetPlatformID() == DiscIO::Platform::GAMECUBE_DISC)
{
layout->addRow(tr("Short Name:"), m_short_name);
layout->addRow(tr("Short Maker:"), m_short_maker);
@ -79,7 +81,7 @@ QGroupBox* InfoWidget::CreateBannerDetails()
layout->addRow(tr("Long Maker:"), m_long_maker);
layout->addRow(tr("Description:"), m_description);
}
else if (m_game.GetPlatformID() == DiscIO::IVolume::WII_DISC)
else if (m_game.GetPlatformID() == DiscIO::Platform::WII_DISC)
{
layout->addRow(tr("Name:"), m_long_name);
}
@ -123,11 +125,11 @@ QLineEdit* InfoWidget::CreateValueDisplay(const QString& value)
void InfoWidget::CreateLanguageSelector()
{
m_language_selector = new QComboBox();
QList<DiscIO::IVolume::ELanguage> languages = m_game.GetAvailableLanguages();
QList<DiscIO::Language> languages = m_game.GetAvailableLanguages();
for (int i = 0; i < languages.count(); i++)
{
DiscIO::IVolume::ELanguage language = languages.at(i);
m_language_selector->addItem(m_game.GetLanguage(language), language);
DiscIO::Language language = languages.at(i);
m_language_selector->addItem(m_game.GetLanguage(language), static_cast<int>(language));
}
if (m_language_selector->count() == 1)
m_language_selector->setDisabled(true);
@ -137,8 +139,8 @@ void InfoWidget::CreateLanguageSelector()
void InfoWidget::ChangeLanguage()
{
DiscIO::IVolume::ELanguage language =
static_cast<DiscIO::IVolume::ELanguage>(m_language_selector->currentData().toInt());
DiscIO::Language language =
static_cast<DiscIO::Language>(m_language_selector->currentData().toInt());
m_short_name->setText(m_game.GetShortName(language));
m_short_maker->setText(m_game.GetShortMaker(language));
m_long_name->setText(m_game.GetLongName(language));

View File

@ -10,6 +10,9 @@
#include "Common/FileUtil.h"
#include "Core/ConfigManager.h"
#include "DiscIO/Blob.h"
#include "DiscIO/Enums.h"
#include "DiscIO/Volume.h"
#include "DiscIO/VolumeCreator.h"
#include "DolphinQt2/GameList/GameFile.h"
#include "DolphinQt2/Resources.h"
@ -18,15 +21,15 @@
static const int CACHE_VERSION = 13; // Last changed in PR #3261
static const int DATASTREAM_VERSION = QDataStream::Qt_5_5;
QList<DiscIO::IVolume::ELanguage> GameFile::GetAvailableLanguages() const
QList<DiscIO::Language> GameFile::GetAvailableLanguages() const
{
return m_long_names.keys();
}
static QMap<DiscIO::IVolume::ELanguage, QString>
ConvertLanguageMap(const std::map<DiscIO::IVolume::ELanguage, std::string>& map)
static QMap<DiscIO::Language, QString>
ConvertLanguageMap(const std::map<DiscIO::Language, std::string>& map)
{
QMap<DiscIO::IVolume::ELanguage, QString> result;
QMap<DiscIO::Language, QString> result;
for (auto entry : map)
result.insert(entry.first, QString::fromStdString(entry.second).trimmed());
return result;
@ -169,9 +172,9 @@ bool GameFile::TryLoadElfDol()
return false;
m_revision = 0;
m_long_names[DiscIO::IVolume::LANGUAGE_ENGLISH] = m_file_name;
m_platform = DiscIO::IVolume::ELF_DOL;
m_country = DiscIO::IVolume::COUNTRY_UNKNOWN;
m_long_names[DiscIO::Language::LANGUAGE_ENGLISH] = m_file_name;
m_platform = DiscIO::Platform::ELF_DOL;
m_country = DiscIO::Country::COUNTRY_UNKNOWN;
m_blob_type = DiscIO::BlobType::DIRECTORY;
m_raw_size = m_size;
m_banner = Resources::GetMisc(Resources::BANNER_MISSING);
@ -185,14 +188,14 @@ void GameFile::SaveCache()
// TODO
}
QString GameFile::GetBannerString(const QMap<DiscIO::IVolume::ELanguage, QString>& m) const
QString GameFile::GetBannerString(const QMap<DiscIO::Language, QString>& m) const
{
// Try the settings language, then English, then just pick one.
if (m.isEmpty())
return QString();
bool wii = m_platform != DiscIO::IVolume::GAMECUBE_DISC;
DiscIO::IVolume::ELanguage current_lang;
bool wii = m_platform != DiscIO::Platform::GAMECUBE_DISC;
DiscIO::Language current_lang;
if (wii)
current_lang = Settings().GetWiiSystemLanguage();
else
@ -200,8 +203,8 @@ QString GameFile::GetBannerString(const QMap<DiscIO::IVolume::ELanguage, QString
if (m.contains(current_lang))
return m[current_lang];
if (m.contains(DiscIO::IVolume::LANGUAGE_ENGLISH))
return m[DiscIO::IVolume::LANGUAGE_ENGLISH];
if (m.contains(DiscIO::Language::LANGUAGE_ENGLISH))
return m[DiscIO::Language::LANGUAGE_ENGLISH];
return m.first();
}
@ -209,13 +212,13 @@ QString GameFile::GetPlatform() const
{
switch (m_platform)
{
case DiscIO::IVolume::GAMECUBE_DISC:
case DiscIO::Platform::GAMECUBE_DISC:
return QObject::tr("GameCube");
case DiscIO::IVolume::WII_DISC:
case DiscIO::Platform::WII_DISC:
return QObject::tr("Wii");
case DiscIO::IVolume::WII_WAD:
case DiscIO::Platform::WII_WAD:
return QObject::tr("Wii Channel");
case DiscIO::IVolume::ELF_DOL:
case DiscIO::Platform::ELF_DOL:
return QObject::tr("ELF/DOL");
default:
return QObject::tr("Unknown");
@ -226,60 +229,60 @@ QString GameFile::GetCountry() const
{
switch (m_country)
{
case DiscIO::IVolume::COUNTRY_EUROPE:
case DiscIO::Country::COUNTRY_EUROPE:
return QObject::tr("Europe");
case DiscIO::IVolume::COUNTRY_JAPAN:
case DiscIO::Country::COUNTRY_JAPAN:
return QObject::tr("Japan");
case DiscIO::IVolume::COUNTRY_USA:
case DiscIO::Country::COUNTRY_USA:
return QObject::tr("USA");
case DiscIO::IVolume::COUNTRY_AUSTRALIA:
case DiscIO::Country::COUNTRY_AUSTRALIA:
return QObject::tr("Australia");
case DiscIO::IVolume::COUNTRY_FRANCE:
case DiscIO::Country::COUNTRY_FRANCE:
return QObject::tr("France");
case DiscIO::IVolume::COUNTRY_GERMANY:
case DiscIO::Country::COUNTRY_GERMANY:
return QObject::tr("Germany");
case DiscIO::IVolume::COUNTRY_ITALY:
case DiscIO::Country::COUNTRY_ITALY:
return QObject::tr("Italy");
case DiscIO::IVolume::COUNTRY_KOREA:
case DiscIO::Country::COUNTRY_KOREA:
return QObject::tr("Korea");
case DiscIO::IVolume::COUNTRY_NETHERLANDS:
case DiscIO::Country::COUNTRY_NETHERLANDS:
return QObject::tr("Netherlands");
case DiscIO::IVolume::COUNTRY_RUSSIA:
case DiscIO::Country::COUNTRY_RUSSIA:
return QObject::tr("Russia");
case DiscIO::IVolume::COUNTRY_SPAIN:
case DiscIO::Country::COUNTRY_SPAIN:
return QObject::tr("Spain");
case DiscIO::IVolume::COUNTRY_TAIWAN:
case DiscIO::Country::COUNTRY_TAIWAN:
return QObject::tr("Taiwan");
case DiscIO::IVolume::COUNTRY_WORLD:
case DiscIO::Country::COUNTRY_WORLD:
return QObject::tr("World");
default:
return QObject::tr("Unknown");
}
}
QString GameFile::GetLanguage(DiscIO::IVolume::ELanguage lang) const
QString GameFile::GetLanguage(DiscIO::Language lang) const
{
switch (lang)
{
case DiscIO::IVolume::LANGUAGE_JAPANESE:
case DiscIO::Language::LANGUAGE_JAPANESE:
return QObject::tr("Japanese");
case DiscIO::IVolume::LANGUAGE_ENGLISH:
case DiscIO::Language::LANGUAGE_ENGLISH:
return QObject::tr("English");
case DiscIO::IVolume::LANGUAGE_GERMAN:
case DiscIO::Language::LANGUAGE_GERMAN:
return QObject::tr("German");
case DiscIO::IVolume::LANGUAGE_FRENCH:
case DiscIO::Language::LANGUAGE_FRENCH:
return QObject::tr("French");
case DiscIO::IVolume::LANGUAGE_SPANISH:
case DiscIO::Language::LANGUAGE_SPANISH:
return QObject::tr("Spanish");
case DiscIO::IVolume::LANGUAGE_ITALIAN:
case DiscIO::Language::LANGUAGE_ITALIAN:
return QObject::tr("Italian");
case DiscIO::IVolume::LANGUAGE_DUTCH:
case DiscIO::Language::LANGUAGE_DUTCH:
return QObject::tr("Dutch");
case DiscIO::IVolume::LANGUAGE_SIMPLIFIED_CHINESE:
case DiscIO::Language::LANGUAGE_SIMPLIFIED_CHINESE:
return QObject::tr("Simplified Chinese");
case DiscIO::IVolume::LANGUAGE_TRADITIONAL_CHINESE:
case DiscIO::Language::LANGUAGE_TRADITIONAL_CHINESE:
return QObject::tr("Traditional Chinese");
case DiscIO::IVolume::LANGUAGE_KOREAN:
case DiscIO::Language::LANGUAGE_KOREAN:
return QObject::tr("Korean");
default:
return QObject::tr("Unknown");

View File

@ -9,7 +9,16 @@
#include <QPixmap>
#include <QString>
#include "DiscIO/Volume.h"
#include "Common/CommonTypes.h"
namespace DiscIO
{
enum class BlobType;
enum class Country;
enum class Language;
enum class Platform;
class IVolume;
}
// TODO cache
class GameFile final
@ -36,26 +45,26 @@ public:
QString GetIssues() const { return m_issues; }
int GetRating() const { return m_rating; }
QString GetApploaderDate() const { return m_apploader_date; }
DiscIO::IVolume::EPlatform GetPlatformID() const { return m_platform; }
DiscIO::Platform GetPlatformID() const { return m_platform; }
QString GetPlatform() const;
DiscIO::IVolume::ECountry GetCountryID() const { return m_country; }
DiscIO::Country GetCountryID() const { return m_country; }
QString GetCountry() const;
DiscIO::BlobType GetBlobType() const { return m_blob_type; }
// Banner details
QString GetLanguage(DiscIO::IVolume::ELanguage lang) const;
QList<DiscIO::IVolume::ELanguage> GetAvailableLanguages() const;
QString GetLanguage(DiscIO::Language lang) const;
QList<DiscIO::Language> GetAvailableLanguages() const;
QString GetShortName() const { return GetBannerString(m_short_names); }
QString GetShortMaker() const { return GetBannerString(m_short_makers); }
QString GetLongName() const { return GetBannerString(m_long_names); }
QString GetLongMaker() const { return GetBannerString(m_long_makers); }
QString GetDescription() const { return GetBannerString(m_descriptions); }
QString GetShortName(DiscIO::IVolume::ELanguage lang) const { return m_short_names[lang]; }
QString GetShortMaker(DiscIO::IVolume::ELanguage lang) const { return m_short_makers[lang]; }
QString GetLongName(DiscIO::IVolume::ELanguage lang) const { return m_long_names[lang]; }
QString GetLongMaker(DiscIO::IVolume::ELanguage lang) const { return m_long_makers[lang]; }
QString GetDescription(DiscIO::IVolume::ELanguage lang) const { return m_descriptions[lang]; }
QString GetShortName(DiscIO::Language lang) const { return m_short_names[lang]; }
QString GetShortMaker(DiscIO::Language lang) const { return m_short_makers[lang]; }
QString GetLongName(DiscIO::Language lang) const { return m_long_names[lang]; }
QString GetLongMaker(DiscIO::Language lang) const { return m_long_makers[lang]; }
QString GetDescription(DiscIO::Language lang) const { return m_descriptions[lang]; }
private:
QString GetBannerString(const QMap<DiscIO::IVolume::ELanguage, QString>& m) const;
QString GetBannerString(const QMap<DiscIO::Language, QString>& m) const;
QString GetCacheFileName() const;
void ReadBanner(const DiscIO::IVolume& volume);
@ -80,15 +89,15 @@ private:
QString m_maker_id;
u16 m_revision = 0;
QString m_internal_name;
QMap<DiscIO::IVolume::ELanguage, QString> m_short_names;
QMap<DiscIO::IVolume::ELanguage, QString> m_long_names;
QMap<DiscIO::IVolume::ELanguage, QString> m_short_makers;
QMap<DiscIO::IVolume::ELanguage, QString> m_long_makers;
QMap<DiscIO::IVolume::ELanguage, QString> m_descriptions;
QMap<DiscIO::Language, QString> m_short_names;
QMap<DiscIO::Language, QString> m_long_names;
QMap<DiscIO::Language, QString> m_short_makers;
QMap<DiscIO::Language, QString> m_long_makers;
QMap<DiscIO::Language, QString> m_descriptions;
QString m_company;
u8 m_disc_number = 0;
DiscIO::IVolume::EPlatform m_platform;
DiscIO::IVolume::ECountry m_country;
DiscIO::Platform m_platform;
DiscIO::Country m_country;
DiscIO::BlobType m_blob_type;
u64 m_raw_size = 0;
QPixmap m_banner;

View File

@ -8,6 +8,8 @@
#include <QMenu>
#include <QUrl>
#include "DiscIO/Enums.h"
#include "DolphinQt2/Config/PropertiesDialog.h"
#include "DolphinQt2/GameList/GameList.h"
#include "DolphinQt2/GameList/ListProxyModel.h"
@ -104,8 +106,8 @@ void GameList::MakeListView()
void GameList::ShowContextMenu(const QPoint&)
{
QMenu* menu = new QMenu(this);
DiscIO::IVolume::EPlatform platform = GameFile(GetSelectedGame()).GetPlatformID();
if (platform == DiscIO::IVolume::GAMECUBE_DISC || platform == DiscIO::IVolume::WII_DISC)
DiscIO::Platform platform = GameFile(GetSelectedGame()).GetPlatformID();
if (platform == DiscIO::Platform::GAMECUBE_DISC || platform == DiscIO::Platform::WII_DISC)
{
menu->addAction(tr("Properties"), this, SLOT(OpenProperties()));
menu->addAction(tr("Open Wiki Page"), this, SLOT(OpenWiki()));

View File

@ -38,7 +38,7 @@ QVariant GameListModel::data(const QModelIndex& index, int role) const
case COL_SIZE:
return game->GetFileSize();
case COL_COUNTRY:
return game->GetCountryID();
return static_cast<int>(game->GetCountryID());
case COL_RATING:
return game->GetRating();
}

View File

@ -101,12 +101,12 @@ void Settings::SetWiiNAND(const QString& path)
SConfig::GetInstance().SaveSettings();
}
DiscIO::IVolume::ELanguage Settings::GetWiiSystemLanguage() const
DiscIO::Language Settings::GetWiiSystemLanguage() const
{
return SConfig::GetInstance().GetCurrentLanguage(true);
}
DiscIO::IVolume::ELanguage Settings::GetGCSystemLanguage() const
DiscIO::Language Settings::GetGCSystemLanguage() const
{
return SConfig::GetInstance().GetCurrentLanguage(false);
}

View File

@ -6,7 +6,10 @@
#include <QSettings>
#include "DiscIO/Volume.h"
namespace DiscIO
{
enum class Language;
}
// UI settings to be stored in the config directory.
class Settings final : public QSettings
@ -34,8 +37,8 @@ public:
void SetApploader(const QString& path);
QString GetWiiNAND() const;
void SetWiiNAND(const QString& path);
DiscIO::IVolume::ELanguage GetWiiSystemLanguage() const;
DiscIO::IVolume::ELanguage GetGCSystemLanguage() const;
DiscIO::Language GetWiiSystemLanguage() const;
DiscIO::Language GetGCSystemLanguage() const;
bool GetPreferredView() const;
void SetPreferredView(bool table);