Unify ISOFile (wx) with GameFile (Qt) and put it in UICommon
The original reason I wanted to do this was so that we can replace the Android-specific code with this in the future, but of course, just deduplicating between DolphinWX and DolphinQt2 is nice too. Fixes: - DolphinQt2 showing the wrong size for split WBFS disc images. - DolphinQt2 being case sensitive when checking if a file is a DOL/ELF. - DolphinQt2 not detecting when a Wii banner has become available after the game list cache was created. Removes: - DolphinWX's ability to load PNGs as custom banners. But it was already rather broken (see https://bugs.dolphin-emu.org/issues/10365 and https://bugs.dolphin-emu.org/issues/10366). The reason I removed this was because PNG decoding relied on wx code and we don't have any good non-wx/Qt code for loading PNG files right now (let's not use SOIL), but we should be able to use libpng directly to implement PNG loading in the future. - DolphinQt2's ability to ignore a cached game if the last modified time differs. We currently don't have a non-wx/Qt way to get the time.
This commit is contained in:
1 parent
1add238a28
commit
1f1dae367d
67 files changed
+1373
-1736
No files matched your search
@@ -28,7 +28,6 @@
|
||||
#include "DiscIO/Enums.h"
|
||||
#include "DiscIO/Filesystem.h"
|
||||
#include "DiscIO/Volume.h"
|
||||
#include "DolphinWX/ISOFile.h"
|
||||
#include "DolphinWX/WxUtils.h"
|
||||
|
||||
namespace
|
||||
|
||||
@@ -54,12 +54,12 @@
|
||||
#include "DolphinWX/DolphinSlider.h"
|
||||
#include "DolphinWX/Frame.h"
|
||||
#include "DolphinWX/Globals.h"
|
||||
#include "DolphinWX/ISOFile.h"
|
||||
#include "DolphinWX/ISOProperties/FilesystemPanel.h"
|
||||
#include "DolphinWX/ISOProperties/InfoPanel.h"
|
||||
#include "DolphinWX/Main.h"
|
||||
#include "DolphinWX/PatchAddEdit.h"
|
||||
#include "DolphinWX/WxUtils.h"
|
||||
#include "UICommon/GameFile.h"
|
||||
|
||||
// A warning message displayed on the ARCodes and GeckoCodes pages when cheats are
|
||||
// disabled globally to explain why turning cheats on does not work.
|
||||
@@ -190,15 +190,15 @@ EVT_BUTTON(ID_ADDPATCH, CISOProperties::PatchButtonClicked)
|
||||
EVT_BUTTON(ID_REMOVEPATCH, CISOProperties::PatchButtonClicked)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
CISOProperties::CISOProperties(const GameListItem& game_list_item, wxWindow* parent, wxWindowID id,
|
||||
const wxString& title, const wxPoint& position, const wxSize& size,
|
||||
long style)
|
||||
CISOProperties::CISOProperties(const UICommon::GameFile& game_list_item, wxWindow* parent,
|
||||
wxWindowID id, const wxString& title, const wxPoint& position,
|
||||
const wxSize& size, long style)
|
||||
: wxDialog(parent, id, title, position, size, style), m_open_gamelist_item(game_list_item)
|
||||
{
|
||||
Bind(DOLPHIN_EVT_CHANGE_ISO_PROPERTIES_TITLE, &CISOProperties::OnChangeTitle, this);
|
||||
|
||||
// Load ISO data
|
||||
m_open_iso = DiscIO::CreateVolumeFromFilename(m_open_gamelist_item.GetFileName());
|
||||
m_open_iso = DiscIO::CreateVolumeFromFilename(m_open_gamelist_item.GetFilePath());
|
||||
|
||||
m_game_id = m_open_iso->GetGameID();
|
||||
|
||||
|
||||
@@ -15,8 +15,8 @@
|
||||
#include <wx/treebase.h>
|
||||
|
||||
#include "Common/IniFile.h"
|
||||
#include "DolphinWX/ISOFile.h"
|
||||
#include "DolphinWX/PatchAddEdit.h"
|
||||
#include "UICommon/GameFile.h"
|
||||
|
||||
class ActionReplayCodesPanel;
|
||||
class CheatWarningMessage;
|
||||
@@ -52,9 +52,9 @@ wxDECLARE_EVENT(DOLPHIN_EVT_CHANGE_ISO_PROPERTIES_TITLE, wxCommandEvent);
|
||||
class CISOProperties : public wxDialog
|
||||
{
|
||||
public:
|
||||
CISOProperties(const GameListItem& game_list_item, wxWindow* parent, wxWindowID id = wxID_ANY,
|
||||
const wxString& title = _("Properties"), const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
CISOProperties(const UICommon::GameFile& game_list_item, wxWindow* parent,
|
||||
wxWindowID id = wxID_ANY, const wxString& title = _("Properties"),
|
||||
const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
|
||||
long style = wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER);
|
||||
virtual ~CISOProperties();
|
||||
|
||||
@@ -141,7 +141,7 @@ private:
|
||||
void OnCheatCodeToggled(wxCommandEvent& event);
|
||||
void OnChangeTitle(wxCommandEvent& event);
|
||||
|
||||
const GameListItem m_open_gamelist_item;
|
||||
const UICommon::GameFile m_open_gamelist_item;
|
||||
|
||||
IniFile m_gameini_default;
|
||||
IniFile m_gameini_local;
|
||||
|
||||
@@ -32,9 +32,9 @@
|
||||
#include "Core/IOS/ES/Formats.h"
|
||||
#include "DiscIO/Enums.h"
|
||||
#include "DiscIO/Volume.h"
|
||||
#include "DolphinWX/ISOFile.h"
|
||||
#include "DolphinWX/ISOProperties/ISOProperties.h"
|
||||
#include "DolphinWX/WxUtils.h"
|
||||
#include "UICommon/GameFile.h"
|
||||
|
||||
namespace
|
||||
{
|
||||
@@ -142,7 +142,7 @@ int FindPreferredLanguageIndex(DiscIO::Language preferred_language,
|
||||
}
|
||||
} // Anonymous namespace
|
||||
|
||||
InfoPanel::InfoPanel(wxWindow* parent, wxWindowID id, const GameListItem& item,
|
||||
InfoPanel::InfoPanel(wxWindow* parent, wxWindowID id, const UICommon::GameFile& item,
|
||||
const std::unique_ptr<DiscIO::Volume>& opened_iso)
|
||||
: wxPanel{parent, id}, m_game_list_item{item}, m_opened_iso{opened_iso}
|
||||
{
|
||||
@@ -209,8 +209,8 @@ void InfoPanel::LoadBannerDetails()
|
||||
|
||||
void InfoPanel::LoadBannerImage()
|
||||
{
|
||||
const auto& banner_image = m_game_list_item.GetBannerImage();
|
||||
const auto banner_min_size = m_banner->GetMinSize();
|
||||
const wxImage banner_image = WxUtils::ToWxImage(m_game_list_item.GetBannerImage());
|
||||
const wxSize banner_min_size = m_banner->GetMinSize();
|
||||
|
||||
if (banner_image.IsOk())
|
||||
{
|
||||
@@ -337,7 +337,7 @@ void InfoPanel::OnComputeMD5(wxCommandEvent& WXUNUSED(event))
|
||||
wxPD_ELAPSED_TIME | wxPD_ESTIMATED_TIME |
|
||||
wxPD_REMAINING_TIME | wxPD_SMOOTH);
|
||||
|
||||
const auto result = MD5::MD5Sum(m_game_list_item.GetFileName(), [&progress_dialog](int progress) {
|
||||
const auto result = MD5::MD5Sum(m_game_list_item.GetFilePath(), [&progress_dialog](int progress) {
|
||||
return progress_dialog.Update(progress);
|
||||
});
|
||||
|
||||
@@ -367,7 +367,7 @@ void InfoPanel::OnSaveBannerImage(wxCommandEvent& WXUNUSED(event))
|
||||
|
||||
if (dialog.ShowModal() == wxID_OK)
|
||||
{
|
||||
m_game_list_item.GetBannerImage().SaveFile(dialog.GetPath());
|
||||
WxUtils::ToWxImage(m_game_list_item.GetBannerImage()).SaveFile(dialog.GetPath());
|
||||
}
|
||||
|
||||
Raise();
|
||||
@@ -375,16 +375,16 @@ void InfoPanel::OnSaveBannerImage(wxCommandEvent& WXUNUSED(event))
|
||||
|
||||
void InfoPanel::ChangeBannerDetails(DiscIO::Language language)
|
||||
{
|
||||
const auto name = StrToWxStr(m_game_list_item.GetName(language));
|
||||
const auto name = StrToWxStr(m_game_list_item.GetLongName(language));
|
||||
const auto comment = StrToWxStr(m_game_list_item.GetDescription(language));
|
||||
const auto maker = StrToWxStr(m_game_list_item.GetCompany());
|
||||
const auto maker = StrToWxStr(m_game_list_item.GetLongMaker(language));
|
||||
|
||||
m_name->SetValue(name);
|
||||
m_comment->SetValue(comment);
|
||||
m_maker->SetValue(maker);
|
||||
|
||||
std::string path, filename, extension;
|
||||
SplitPath(m_game_list_item.GetFileName(), &path, &filename, &extension);
|
||||
SplitPath(m_game_list_item.GetFilePath(), &path, &filename, &extension);
|
||||
|
||||
// Real disk drives don't have filenames on Windows
|
||||
if (filename.empty() && extension.empty())
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
#include <memory>
|
||||
#include <wx/panel.h>
|
||||
|
||||
class GameListItem;
|
||||
class wxButton;
|
||||
class wxChoice;
|
||||
class wxStaticBitmap;
|
||||
@@ -16,14 +15,19 @@ class wxTextCtrl;
|
||||
|
||||
namespace DiscIO
|
||||
{
|
||||
class Volume;
|
||||
enum class Language;
|
||||
class Volume;
|
||||
}
|
||||
|
||||
namespace UICommon
|
||||
{
|
||||
class GameFile;
|
||||
}
|
||||
|
||||
class InfoPanel final : public wxPanel
|
||||
{
|
||||
public:
|
||||
InfoPanel(wxWindow* parent, wxWindowID id, const GameListItem& item,
|
||||
InfoPanel(wxWindow* parent, wxWindowID id, const UICommon::GameFile& item,
|
||||
const std::unique_ptr<DiscIO::Volume>& opened_iso);
|
||||
|
||||
private:
|
||||
@@ -37,6 +41,7 @@ private:
|
||||
void LoadGUIData();
|
||||
void LoadISODetails();
|
||||
void LoadBannerDetails();
|
||||
wxImage ConvertBannerImage();
|
||||
void LoadBannerImage();
|
||||
|
||||
wxStaticBoxSizer* CreateISODetailsSizer();
|
||||
@@ -52,7 +57,7 @@ private:
|
||||
|
||||
void EmitTitleChangeEvent(const wxString& new_title);
|
||||
|
||||
const GameListItem& m_game_list_item;
|
||||
const UICommon::GameFile& m_game_list_item;
|
||||
const std::unique_ptr<DiscIO::Volume>& m_opened_iso;
|
||||
|
||||
wxTextCtrl* m_internal_name;
|
||||
|
||||
Reference in new issue
Block a user